in client/idrepo/console/src/main/java/org/apache/syncope/client/console/init/ClassPathScanImplementationLookup.java [153:242]
public void load() {
classes = new HashMap<>();
idRepoPages = new ArrayList<>();
idmPages = new ArrayList<>();
amPages = new ArrayList<>();
for (BeanDefinition bd : scanner().findCandidateComponents(getBasePackage())) {
try {
Class<?> clazz = ClassUtils.resolveClassName(
Objects.requireNonNull(bd.getBeanClassName()), ClassUtils.getDefaultClassLoader());
if (Modifier.isAbstract(clazz.getModifiers())) {
continue;
}
if (BaseExtPage.class.isAssignableFrom(clazz)) {
if (clazz.isAnnotationPresent(ExtPage.class)) {
addClass(BaseExtPage.class.getName(), clazz);
} else {
LOG.error("Could not find annotation {} in {}, ignoring",
ExtPage.class.getName(), clazz.getName());
}
} else if (BaseExtWidget.class.isAssignableFrom(clazz)) {
if (clazz.isAnnotationPresent(ExtWidget.class)) {
addClass(BaseExtWidget.class.getName(), clazz);
} else {
LOG.error("Could not find annotation {} in {}, ignoring",
ExtWidget.class.getName(), clazz.getName());
}
} else if (ExtAlertWidget.class.isAssignableFrom(clazz)) {
if (clazz.isAnnotationPresent(ExtWidget.class)) {
addClass(ExtAlertWidget.class.getName(), clazz);
} else {
LOG.error("Could not find annotation {} in {}, ignoring",
ExtAlertWidget.class.getName(), clazz.getName());
}
} else if (BasePage.class.isAssignableFrom(clazz)) {
if (clazz.isAnnotationPresent(IdMPage.class)) {
if (!clazz.getName().endsWith("Topology")
|| (clazz.getName().equals(props.getPage().get("topology").getName()))) {
idmPages.add((Class<? extends BasePage>) clazz);
}
} else if (clazz.isAnnotationPresent(AMPage.class)) {
amPages.add((Class<? extends BasePage>) clazz);
} else {
idRepoPages.add((Class<? extends BasePage>) clazz);
}
} else if (BaseSSOLoginFormPanel.class.isAssignableFrom(clazz)) {
addClass(BaseSSOLoginFormPanel.class.getName(), clazz);
} else if (BinaryPreviewer.class.isAssignableFrom(clazz)) {
addClass(BinaryPreviewer.class.getName(), clazz);
} else if (ReportConf.class.isAssignableFrom(clazz)) {
addClass(ReportConf.class.getName(), clazz);
} else if (AccountRuleConf.class.isAssignableFrom(clazz)) {
addClass(AccountRuleConf.class.getName(), clazz);
} else if (PasswordRuleConf.class.isAssignableFrom(clazz)) {
addClass(PasswordRuleConf.class.getName(), clazz);
} else {
contributors.forEach(contributor -> contributor.getLabel(clazz).
ifPresent(label -> addClass(label, clazz)));
}
} catch (Throwable t) {
LOG.warn("Could not inspect class {}", bd.getBeanClassName(), t);
}
}
idRepoPages = Collections.unmodifiableList(idRepoPages);
idmPages.sort(Comparator.comparing(o -> o.getAnnotation(IdMPage.class).priority()));
idmPages = Collections.unmodifiableList(idmPages);
amPages.sort(Comparator.comparing(o -> o.getAnnotation(AMPage.class).priority()));
amPages = Collections.unmodifiableList(amPages);
if (classes.containsKey(BaseExtPage.class.getName())) {
classes.get(BaseExtPage.class.getName()).
sort(Comparator.comparing(o -> o.getAnnotation(ExtPage.class).priority()));
}
if (classes.containsKey(BaseExtWidget.class.getName())) {
classes.get(BaseExtWidget.class.getName()).
sort(Comparator.comparing(o -> o.getAnnotation(ExtWidget.class).priority()));
}
if (classes.containsKey(ExtAlertWidget.class.getName())) {
classes.get(ExtAlertWidget.class.getName()).
sort(Comparator.comparing(o -> o.getAnnotation(ExtWidget.class).priority()));
}
classes.forEach((category, clazzes) -> LOG.debug("{} found: {}", category, clazzes));
}