public void load()

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));
    }