/** * Returns all known classes that implement the given interface, directly and indirectly. This will all return classes that * implement sub interfaces of the interface, and sub classes of classes that implement the interface. (In short, it will * return every class that is assignable to the interface that is found in the index) * <p/> * This will only return classes, not interfaces. * * @param interfaceName The interface * @return All known implementors of the interface */ public Set<ClassInfo> getAllKnownImplementors(final DotName interfaceName) { final Set<ClassInfo> allKnown = new HashSet<ClassInfo>(); final Set<DotName> subInterfacesToProcess = new HashSet<DotName>(); final Set<DotName> processedClasses = new HashSet<DotName>(); subInterfacesToProcess.add(interfaceName); while (!subInterfacesToProcess.isEmpty()) { final Iterator<DotName> toProcess = subInterfacesToProcess.iterator(); DotName name = toProcess.next(); toProcess.remove(); processedClasses.add(name); getKnownImplementors(name, allKnown, subInterfacesToProcess, processedClasses); } return allKnown; }
/** * Returns all known classes that implement the given interface, directly and indirectly. This will all return classes that * implement sub interfaces of the interface, and sub classes of classes that implement the interface. (In short, it will * return every class that is assignable to the interface that is found in the index) * <p/> * This will only return classes, not interfaces. * * @param interfaceName The interface * @return All known implementors of the interface */ public Set<ClassInfo> getAllKnownImplementors(final DotName interfaceName) { final Set<ClassInfo> allKnown = new HashSet<ClassInfo>(); final Set<DotName> subInterfacesToProcess = new HashSet<DotName>(); final Set<DotName> processedClasses = new HashSet<DotName>(); subInterfacesToProcess.add(interfaceName); while (!subInterfacesToProcess.isEmpty()) { final Iterator<DotName> toProcess = subInterfacesToProcess.iterator(); DotName name = toProcess.next(); toProcess.remove(); processedClasses.add(name); getKnownImplementors(name, allKnown, subInterfacesToProcess, processedClasses); } return allKnown; }
/** * Returns all known classes that implement the given interface, directly and indirectly. This will all return classes that * implement sub interfaces of the interface, and sub classes of classes that implement the interface. (In short, it will * return every class that is assignable to the interface that is found in the index) * <p/> * This will only return classes, not interfaces. * * @param interfaceName The interface * @return All known implementors of the interface */ public Set<ClassInfo> getAllKnownImplementors(final DotName interfaceName) { final Set<ClassInfo> allKnown = new HashSet<ClassInfo>(); final Set<DotName> subInterfacesToProcess = new HashSet<DotName>(); final Set<DotName> processedClasses = new HashSet<DotName>(); subInterfacesToProcess.add(interfaceName); while (!subInterfacesToProcess.isEmpty()) { final Iterator<DotName> toProcess = subInterfacesToProcess.iterator(); DotName name = toProcess.next(); toProcess.remove(); processedClasses.add(name); getKnownImplementors(name, allKnown, subInterfacesToProcess, processedClasses); } return allKnown; }
/** * Returns all known classes that implement the given interface, directly and indirectly. This will all return classes that * implement sub interfaces of the interface, and sub classes of classes that implement the interface. (In short, it will * return every class that is assignable to the interface that is found in the index) * <p/> * This will only return classes, not interfaces. * * @param interfaceName The interface * @return All known implementors of the interface */ public Set<ClassInfo> getAllKnownImplementors(final DotName interfaceName) { final Set<ClassInfo> allKnown = new HashSet<ClassInfo>(); final Set<DotName> subInterfacesToProcess = new HashSet<DotName>(); final Set<DotName> processedClasses = new HashSet<DotName>(); subInterfacesToProcess.add(interfaceName); while (!subInterfacesToProcess.isEmpty()) { final Iterator<DotName> toProcess = subInterfacesToProcess.iterator(); DotName name = toProcess.next(); toProcess.remove(); processedClasses.add(name); getKnownImplementors(name, allKnown, subInterfacesToProcess, processedClasses); } return allKnown; }