All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.cpollet.maven.plugins.postman.backend.ClassScanner Maven / Gradle / Ivy

Go to download

A maven plugin to export JAX-RS annotated classes and methods to Postman collection

The newest version!
package net.cpollet.maven.plugins.postman.backend;

import io.github.lukehutch.fastclasspathscanner.FastClasspathScanner;
import lombok.AllArgsConstructor;

import javax.ws.rs.Path;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.List;

@AllArgsConstructor
public class ClassScanner {
    private final List paths;
    private final List packagesToScan;

    public List find() {
        List classes = new ArrayList<>();

        new FastClasspathScanner(packagesToScan.toArray(new String[0]))
                .overrideClassLoaders(classLoader())
                .matchClassesWithAnnotation(Path.class, classes::add)
                .scan();

        return classes;
    }

    private ClassLoader classLoader() {
        URL[] urls = paths.stream()
                .map(this::url)
                .toArray(URL[]::new);

        return new URLClassLoader(urls, getClass().getClassLoader());
    }

    private URL url(String path) {
        try {
            return new File(path).toURI().toURL();
        } catch (MalformedURLException e) {
            throw new RuntimeException(e);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy