public <T> List<Class<? extends T>> findSubclasses(Class<T> clazz) { if (clazz == null) throw new NullPointerException("class cannot be null"); classesNotLoaded.clear(); final ClassInfo classInfo = classInfos.get(clazz.getName()); List<Class<? extends T>> found = new LinkedList<Class<? extends T>>(); if (classInfo == null) return found; findSubclasses(classInfo, found, clazz); return found; }
public <T> List<Class<? extends T>> findSubclasses(Class<T> clazz) { if (clazz == null) throw new NullPointerException("class cannot be null"); classesNotLoaded.clear(); final ClassInfo classInfo = classInfos.get(clazz.getName()); List<Class<? extends T>> found = new ArrayList<Class<? extends T>>(); if (classInfo == null) return found; findSubclasses(classInfo, found, clazz); return found; }
public <T> List<Class<? extends T>> findSubclasses(Class<T> clazz) { if (clazz == null) throw new NullPointerException("class cannot be null"); classesNotLoaded.clear(); final ClassInfo classInfo = classInfos.get(clazz.getName()); List<Class<? extends T>> found = new LinkedList<Class<? extends T>>(); if (classInfo == null) return found; findSubclasses(classInfo, found, clazz); return found; }
private <T> void findSubclasses(ClassInfo classInfo, List<Class<? extends T>> found, Class<T> clazz) { for (ClassInfo subclassInfo : classInfo.subclassInfos) { try { found.add(subclassInfo.get().asSubclass(clazz)); } catch (ClassNotFoundException e) { classesNotLoaded.add(subclassInfo.getName()); } findSubclasses(subclassInfo, found, clazz); } }
private <T> void findSubclasses(ClassInfo classInfo, List<Class<? extends T>> found, Class<T> clazz) { for (ClassInfo subclassInfo : classInfo.subclassInfos) { try { found.add(subclassInfo.get().asSubclass(clazz)); } catch (ClassNotFoundException e) { classesNotLoaded.add(subclassInfo.getName()); } findSubclasses(subclassInfo, found, clazz); } }
private <T> void findSubclasses(ClassInfo classInfo, List<Class<? extends T>> found, Class<T> clazz) { for (ClassInfo subclassInfo : classInfo.subclassInfos) { try { found.add(subclassInfo.get().asSubclass(clazz)); } catch (ClassNotFoundException e) { classesNotLoaded.add(subclassInfo.getName()); } findSubclasses(subclassInfo, found, clazz); } }
private static void generatedJUnitEnvironment(final File generatedDir) throws MalformedURLException { final File file = new File(generatedDir, "generated_junit-environments.adoc"); try (final PrintStream stream = new PrintStream(new WriteIfDifferentStream(file))) { stream.println(); stream.println("NOTE: the configuration is read from system properties, environment variables, ...."); stream.println(); final File api = jarLocation(BaseEnvironmentProvider.class); final ClassLoader loader = Thread.currentThread().getContextClassLoader(); final AnnotationFinder finder = new AnnotationFinder( api.isDirectory() ? new FileArchive(loader, api) : new JarArchive(loader, api.toURI().toURL())); finder .link() .findSubclasses(BaseEnvironmentProvider.class) .stream() .filter(c -> !Modifier.isAbstract(c.getModifiers())) .sorted(Comparator.comparing(Class::getName)) .forEach(type -> { final BaseEnvironmentProvider environment; try { environment = BaseEnvironmentProvider.class.cast(type.getConstructor().newInstance()); } catch (final InstantiationException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) { throw new IllegalStateException(e); } stream.println(environment.getName() + ":: " + "__class: " + type.getSimpleName() + "_. "); }); stream.println(); } }