final Resource[] resources = resolver.getResources(packageSearchPath);
for (final Resource resource: resources) {
final MetadataReader reader = factory.getMetadataReader(resource);
final AnnotationMetadata metadata = reader.getAnnotationMetadata();
if (scanAllPackages && shouldSkip(metadata.getClassName())) {
continue;
}
for (Class< ? extends Annotation > annotation: annotations) {
boolean concreteClass = !metadata.isInterface() && !metadata.isAbstract();
if (metadata.isAnnotated(annotation.getName())) {
if (concreteClass) {
classes.get(annotation).add(
ClassLoaderUtils.loadClass(metadata.getClassName(), getClass()));
} else {
matchingInterfaces.get(annotation).add(metadata.getClassName());
}
} else if (concreteClass && metadata.getInterfaceNames().length > 0) {
nonMatchingClasses.put(metadata.getClassName(), metadata.getInterfaceNames());
}
}
}
}
for (Map.Entry<Class<? extends Annotation>, Collection<String>> e1 : matchingInterfaces.entrySet()) {