private static Collection<? extends Class<?>> getPackageTypes(String packageToPase, Collection<URL> urls) { Set<Class<?>> classes = new HashSet<>(); Reflections reflections = new Reflections(new ConfigurationBuilder() .setScanners(new SubTypesScanner(false /* exclude Object.class */), new ResourcesScanner(), new TypeElementsScanner()) .setUrls(urls) .filterInputsBy(new FilterBuilder().include(FilterBuilder.prefix(packageToPase)).exclude("java.*"))); Set<String> types; types = reflections.getStore().get("TypeElementsScanner").keySet(); for (String type: types) { Class<?> aClass = TypesHelper.loadClass(type, CLASS_LOADER); boolean wantedElement = StringUtils.startsWith(type, packageToPase); if (null != aClass && wantedElement) { logger.log(Level.INFO, "looking up for type: " + type); classes.add(aClass); } } return classes; }
/** filters results to contain only what is in a given set of packages */ public Packatainer(String[] packages, Class... classes) { this(new ConfigurationBuilder() .forPackages(packages) //.filterInputsBy(theClasses) //.setUrls(ClasspathHelper.forPackage("my.project.prefix")) .setScanners(new TypeElementsScanner().publicOnly().includeAnnotations(false).includeFields(false).includeMethods(false), new SubTypesScanner()), classes); }
@BeforeClass public static void generateAndSave() { Predicate<String> filter = new FilterBuilder().include("org.reflections.TestModel\\$.*"); Reflections reflections = new Reflections(new ConfigurationBuilder() .filterInputsBy(filter) .setScanners(new TypeElementsScanner().includeFields().publicOnly(false)) .setUrls(asList(ClasspathHelper.forClass(TestModel.class)))); //save String filename = ReflectionsTest.getUserDir() + "/src/test/java/org.reflections.MyTestModelStore"; reflections.save(filename, new JavaCodeSerializer()); }
/** * Creates an EntityScanner using the given Morphia instance with the given predicate. * * @param m the Morphia instance * @param predicate the Predicate to use when determining which classes to map. */ public EntityScanner(final Morphia m, final Predicate<String> predicate) { Predicate<String> localPredicate = predicate; if (localPredicate == null) { localPredicate = Predicates.alwaysTrue(); } Assert.parametersNotNull("m, predicate", m, localPredicate); final ConfigurationBuilder conf = new ConfigurationBuilder(); conf.setScanners(new TypeElementsScanner(), new TypeAnnotationsScanner()); final Set<URL> s = new HashSet<URL>(); s.addAll(ClasspathHelper.forClassLoader()); s.addAll(ClasspathHelper.forJavaClassPath()); final Iterator<URL> iterator = s.iterator(); while (iterator.hasNext()) { final URL url = iterator.next(); if (url.getPath().endsWith("jnilib")) { iterator.remove(); } } conf.setUrls(new ArrayList<URL>(s)); conf.filterInputsBy(localPredicate); conf.addScanners(new SubTypesScanner()); final Reflections r = new Reflections(conf); final Set<Class<?>> entities = r.getTypesAnnotatedWith(Entity.class); for (final Class<?> c : entities) { m.map(c); } }
public static ConfigurationBuilder getReflectionsConfiguration(String packageName) { return new ConfigurationBuilder() .addUrls(ClasspathHelper.forPackage(packageName)) .filterInputsBy(new FilterBuilder().include(FilterBuilder.prefix(packageName + "."))) .setScanners(new TypeElementsScanner(), new TypeAnnotationsScanner(), new SubTypesScanner()); }
public void execute() throws MojoExecutionException, MojoFailureException { // if (StringUtils.isEmpty(destinations)) { destinations = resolveOutputDirectory() + "/META-INF/reflections/" + getProject().getArtifactId() + "-reflections.xml"; } String outputDirectory = resolveOutputDirectory(); if (!new File(outputDirectory).exists()) { getLog().warn(String.format("Reflections plugin is skipping because %s was not found", outputDirectory)); return; } // ConfigurationBuilder config = new ConfigurationBuilder(); config.setUrls(parseUrls()); if (!isEmpty(includeExclude)) { config.filterInputsBy(FilterBuilder.parse(includeExclude)); } config.setScanners(!isEmpty(scanners) ? parseScanners() : new Scanner[]{new SubTypesScanner(), new TypeAnnotationsScanner()}); if (!isEmpty(serializer)) { try { Serializer serializerInstance = (Serializer) forName(serializer, "org.reflections.serializers").newInstance(); config.setSerializer(serializerInstance); if (serializerInstance instanceof JavaCodeSerializer) { int size = config.getScanners().size(); config.addScanners(new TypeElementsScanner()); if (size != config.getScanners().size()) { getLog().info("added type scanners for JavaCodeSerializer"); } } } catch (Exception ex) { throw new ReflectionsException("could not create serializer instance", ex); } } if (parallel != null && parallel.equals(Boolean.TRUE)) { config.useParallelExecutor(); } // if (Reflections.log == null) { try { Reflections.log = new MavenLogAdapter(getLog()); } catch (Error e) { //ignore } } Reflections reflections = new Reflections(config); reflections.save(destinations.trim()); }