classNames.put(type, new HashSet<String>());
}
try {
for (Resource resource : resResolver.getResources("classpath*:**/*.class")) {
ClassMetadata metadata = factory.getMetadataReader(resource).getClassMetadata();
try {
Class<?> clazz = ClassUtils.forName(metadata.getClassName(), ClassUtils.getDefaultClassLoader());
Set<Class> interfaces = ClassUtils.getAllInterfacesForClassAsSet(clazz);
if (interfaces.contains(Reportlet.class) && !metadata.isAbstract()) {
classNames.get(Type.REPORTLET).add(clazz.getName());
}
if ((interfaces.contains(Job.class))
&& !metadata.isAbstract() && !SyncJob.class.getName().equals(metadata.getClassName())
&& !ReportJob.class.getName().equals(metadata.getClassName())
&& !NotificationJob.class.getName().equals(metadata.getClassName())) {
classNames.get(Type.JOB).add(metadata.getClassName());
}
if (interfaces.contains(SyncActions.class) && !metadata.isAbstract()) {
classNames.get(Type.SYNC_ACTIONS).add(metadata.getClassName());
}
if (interfaces.contains(SyncCorrelationRule.class) && !metadata.isAbstract()) {
classNames.get(Type.SYNC_CORRELATION_RULES).add(metadata.getClassName());
}
if (interfaces.contains(PropagationActions.class) && !metadata.isAbstract()) {
classNames.get(Type.PROPAGATION_ACTIONS).add(metadata.getClassName());
}
if (interfaces.contains(Validator.class) && !metadata.isAbstract()) {
classNames.get(Type.VALIDATOR).add(metadata.getClassName());
}
} catch (ClassNotFoundException e) {
LOG.warn("Could not load class {}", metadata.getClassName());
} catch (LinkageError e) {
LOG.warn("Could not link class {}", metadata.getClassName());
}
}
} catch (IOException e) {
LOG.error("While searching for implementatiom classes", e);
}