private Field toField() throws ClassNotFoundException { Class<?> clazz = this.declaringClass.get(); try { return clazz.getDeclaredField(name); } catch (NoSuchFieldException e) { throw new IllegalStateException(name, e); } } }
private Field toField() throws ClassNotFoundException { Class<?> clazz = this.declaringClass.get(); try { return clazz.getDeclaredField(name); } catch (NoSuchFieldException e) { throw new IllegalStateException(name, e); } } }
private Field toField() throws ClassNotFoundException { Class<?> clazz = this.declaringClass.get(); try { return clazz.getDeclaredField(name); } catch (NoSuchFieldException e) { throw new IllegalStateException(name, e); } } }
private <T> List<Class<? extends T>> _findSubclasses(Class<T> clazz) { if (clazz == null) throw new NullPointerException("class cannot be null"); List<Class<? extends T>> classes = new ArrayList<Class<? extends T>>(); for (ClassInfo classInfo : classInfos.values()) { try { if (clazz.getName().equals(classInfo.superType)) { if (clazz.isAssignableFrom(classInfo.get())) { classes.add(classInfo.get().asSubclass(clazz)); classes.addAll(_findSubclasses(classInfo.get().asSubclass(clazz))); } } } catch (ClassNotFoundException e) { classesNotLoaded.add(classInfo.getName()); } } return classes; }
private List<ClassInfo> collectImplementations(String interfaceName) { final List<ClassInfo> infos = new LinkedList<ClassInfo>(); for (ClassInfo classInfo : classInfos.values()) { if (classInfo.interfaces.contains(interfaceName)) { infos.add(classInfo); try { final Class clazz = classInfo.get(); if (clazz.isInterface() && !clazz.isAnnotation()) { infos.addAll(collectImplementations(classInfo.name)); } } catch (ClassNotFoundException ignore) { // we'll deal with this later } } } return infos; }
private void linkMetaAnnotations() { for (ClassInfo classInfo : classInfos.values().toArray(new ClassInfo[classInfos.size()])) { if (isMetaRoot(classInfo)) { try { metaroots.add((Class<? extends Annotation>) classInfo.get()); } catch (ClassNotFoundException e) { classesNotLoaded.add(classInfo.getName()); } } } for (Class<? extends Annotation> metaroot : metaroots) { List<Info> infoList = annotated.get(metaroot.getName()); for (Info info : infoList) { readClassDef(info.getName() + "$$"); } } }
private void linkMetaAnnotations() { for (ClassInfo classInfo : classInfos.values()) { if (isMetaRoot(classInfo)) { try { metaroots.add((Class<? extends Annotation>) classInfo.get()); } catch (ClassNotFoundException e) { classesNotLoaded.add(classInfo.getName()); } } } for (Class<? extends Annotation> metaroot : metaroots) { List<Info> infoList = annotated.get(metaroot.getName()); for (Info info : infoList) { readClassDef(info.getName() + "$$"); } } }
private List<ClassInfo> collectImplementations(String interfaceName) { final List<ClassInfo> infos = new LinkedList<ClassInfo>(); for (ClassInfo classInfo : classInfos.values()) { if (classInfo.interfaces.contains(interfaceName)) { infos.add(classInfo); try { final Class clazz = classInfo.get(); if (clazz.isInterface() && !clazz.isAnnotation()) { infos.addAll(collectImplementations(classInfo.name)); } } catch (ClassNotFoundException ignore) { // we'll deal with this later } } } return infos; }
private void linkMetaAnnotations() { for (ClassInfo classInfo : classInfos.values().toArray(new ClassInfo[classInfos.size()])) { if (isMetaRoot(classInfo)) { try { metaroots.add((Class<? extends Annotation>) classInfo.get()); } catch (ClassNotFoundException e) { classesNotLoaded.add(classInfo.getName()); } } } for (Class<? extends Annotation> metaroot : metaroots) { List<Info> infoList = annotated.get(metaroot.getName()); for (Info info : infoList) { readClassDef(info.getName() + "$$"); } } }
public List<Class<?>> findClassesInPackage(String packageName, boolean recursive) { classesNotLoaded.clear(); List<Class<?>> classes = new ArrayList<Class<?>>(); for (ClassInfo classInfo : classInfos.values()) { try { if (recursive && classInfo.getPackageName().startsWith(packageName)) { classes.add(classInfo.get()); } else if (classInfo.getPackageName().equals(packageName)) { classes.add(classInfo.get()); } } catch (ClassNotFoundException e) { classesNotLoaded.add(classInfo.getName()); } } return classes; }
public List<Class<?>> findClassesInPackage(String packageName, boolean recursive) { classesNotLoaded.clear(); List<Class<?>> classes = new LinkedList<Class<?>>(); for (ClassInfo classInfo : classInfos.values()) { try { if (recursive && classInfo.getPackageName().startsWith(packageName)) { classes.add(classInfo.get()); } else if (classInfo.getPackageName().equals(packageName)) { classes.add(classInfo.get()); } } catch (ClassNotFoundException e) { classesNotLoaded.add(classInfo.getName()); } } return classes; }
public List<Class<?>> findClassesInPackage(String packageName, boolean recursive) { classesNotLoaded.clear(); List<Class<?>> classes = new LinkedList<Class<?>>(); for (ClassInfo classInfo : classInfos.values()) { try { if (recursive && classInfo.getPackageName().startsWith(packageName)) { classes.add(classInfo.get()); } else if (classInfo.getPackageName().equals(packageName)) { classes.add(classInfo.get()); } } catch (ClassNotFoundException e) { classesNotLoaded.add(classInfo.getName()); } } return classes; }
public Package get() throws ClassNotFoundException { return (pkg != null) ? pkg : info.get().getPackage(); }
public Package get() throws ClassNotFoundException { return (pkg != null) ? pkg : info.get().getPackage(); }
public Package get() throws ClassNotFoundException { return (pkg != null) ? pkg : info.get().getPackage(); }
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); } }
public List<Annotated<Class<?>>> findAssignableTypes(final Class<?> supertype) { @SuppressWarnings({ "unchecked", "rawtypes" }) final List<Class<?>> assignableTypes = (List) (supertype.isInterface() ? Finder.this.findImplementations(supertype) : Finder.this.findSubclasses(supertype)); return assignableTypes.stream().map(Class::getName).map(classInfos::get) .<IncludesClassfile<Class<?>>> map(classInfo -> { try { return new IncludesClassfile<>(classInfo.get(), classfileAnnotationsFor(classInfo)); } catch (final ClassNotFoundException e) { return null; } }).filter(Objects::nonNull).collect(Collectors.toList()); }
private List<Annotated<Class<?>>> annotate(final Collection<? extends Info> infos) { return typed(ClassInfo.class, infos::stream).map(classInfo -> { try { return new IncludesClassfile<Class<?>>(classInfo.get(), classfileAnnotationsFor(classInfo)); } catch (ClassNotFoundException e1) { return null; } }).filter(Objects::nonNull).collect(Collectors.toList()); }