Example usage for org.springframework.context.annotation ClassPathScanningCandidateComponentProvider ClassPathScanningCandidateComponentProvider

List of usage examples for org.springframework.context.annotation ClassPathScanningCandidateComponentProvider ClassPathScanningCandidateComponentProvider

Introduction

In this page you can find the example usage for org.springframework.context.annotation ClassPathScanningCandidateComponentProvider ClassPathScanningCandidateComponentProvider.

Prototype

public ClassPathScanningCandidateComponentProvider(boolean useDefaultFilters) 

Source Link

Document

Create a ClassPathScanningCandidateComponentProvider with a StandardEnvironment .

Usage

From source file:org.alfresco.repo.dictionary.ModelUtils.java

/**
 * This method doesn't seem to work due to possible spring bug in 3.0.0?
 * https://jira.springsource.org/browse/SPR-6592?page=com.atlassian.jirafisheyeplugin%3Afisheye-issuepanel
 * /*from w  ww .  ja v  a2 s .com*/
 * @return
 */
@SuppressWarnings("unchecked")
public static HashMap<String, AbstractConstraint> getAllConstrainTypesAuto() {
    HashMap<String, AbstractConstraint> classList = new HashMap<String, AbstractConstraint>();

    ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(
            true);
    provider.addIncludeFilter(new AssignableTypeFilter(AbstractConstraint.class));

    // scan in org.example.package
    Set<BeanDefinition> components = provider
            .findCandidateComponents("org/alfresco/repo/dictionary/constraint");
    for (BeanDefinition component : components) {
        try {
            Class clazz = Class.forName(component.getBeanClassName());
            AbstractConstraint object = (AbstractConstraint) clazz.newInstance();
            String name = object.getType();
            classList.put(name, object);
        } catch (ClassNotFoundException e) {

        } catch (InstantiationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    return classList;
}

From source file:org.apache.syncope.client.console.init.ClassPathScanImplementationLookup.java

@SuppressWarnings("unchecked")
public void load() {
    pages = new ArrayList<>();
    previewers = new ArrayList<>();
    extPages = new ArrayList<>();
    extWidgets = new ArrayList<>();
    ssoLoginFormPanels = new ArrayList<>();
    reportletConfs = new HashMap<>();
    accountRuleConfs = new HashMap<>();
    passwordRuleConfs = new HashMap<>();
    pullCorrelationRuleConfs = new HashMap<>();

    ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(
            false);//from   w  w w.  j ava  2s.co  m
    scanner.addIncludeFilter(new AssignableTypeFilter(BasePage.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(AbstractBinaryPreviewer.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(BaseExtPage.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(BaseExtWidget.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(SSOLoginFormPanel.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(ReportletConf.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(AccountRuleConf.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(PasswordRuleConf.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(PullCorrelationRuleConf.class));

    scanner.findCandidateComponents(getBasePackage()).forEach(bd -> {
        try {
            Class<?> clazz = ClassUtils.resolveClassName(bd.getBeanClassName(),
                    ClassUtils.getDefaultClassLoader());
            boolean isAbsractClazz = Modifier.isAbstract(clazz.getModifiers());

            if (!isAbsractClazz) {
                if (BaseExtPage.class.isAssignableFrom(clazz)) {
                    if (clazz.isAnnotationPresent(ExtPage.class)) {
                        extPages.add((Class<? extends BaseExtPage>) 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)) {
                        extWidgets.add((Class<? extends BaseExtWidget>) clazz);
                    } else {
                        LOG.error("Could not find annotation {} in {}, ignoring", ExtWidget.class.getName(),
                                clazz.getName());
                    }
                } else if (BasePage.class.isAssignableFrom(clazz)) {
                    pages.add((Class<? extends BasePage>) clazz);
                } else if (AbstractBinaryPreviewer.class.isAssignableFrom(clazz)) {
                    previewers.add((Class<? extends AbstractBinaryPreviewer>) clazz);
                } else if (SSOLoginFormPanel.class.isAssignableFrom(clazz)) {
                    ssoLoginFormPanels.add((Class<? extends SSOLoginFormPanel>) clazz);
                } else if (ReportletConf.class.isAssignableFrom(clazz)) {
                    reportletConfs.put(clazz.getName(), (Class<? extends ReportletConf>) clazz);
                } else if (AccountRuleConf.class.isAssignableFrom(clazz)) {
                    accountRuleConfs.put(clazz.getName(), (Class<? extends AccountRuleConf>) clazz);
                } else if (PasswordRuleConf.class.isAssignableFrom(clazz)) {
                    passwordRuleConfs.put(clazz.getName(), (Class<? extends PasswordRuleConf>) clazz);
                } else if (PullCorrelationRuleConf.class.isAssignableFrom(clazz)) {
                    pullCorrelationRuleConfs.put(clazz.getName(),
                            (Class<? extends PullCorrelationRuleConf>) clazz);
                }
            }
        } catch (Throwable t) {
            LOG.warn("Could not inspect class {}", bd.getBeanClassName(), t);
        }
    });
    pages = Collections.unmodifiableList(pages);
    previewers = Collections.unmodifiableList(previewers);

    Collections.sort(extPages, (o1, o2) -> ObjectUtils.compare(o1.getAnnotation(ExtPage.class).priority(),
            o2.getAnnotation(ExtPage.class).priority()));
    extPages = Collections.unmodifiableList(extPages);

    Collections.sort(extWidgets, (o1, o2) -> ObjectUtils.compare(o1.getAnnotation(ExtWidget.class).priority(),
            o2.getAnnotation(ExtWidget.class).priority()));
    extWidgets = Collections.unmodifiableList(extWidgets);

    ssoLoginFormPanels = Collections.unmodifiableList(ssoLoginFormPanels);

    reportletConfs = Collections.unmodifiableMap(reportletConfs);
    accountRuleConfs = Collections.unmodifiableMap(accountRuleConfs);
    passwordRuleConfs = Collections.unmodifiableMap(passwordRuleConfs);
    pullCorrelationRuleConfs = Collections.unmodifiableMap(pullCorrelationRuleConfs);

    LOG.debug("Binary previewers found: {}", previewers);
    LOG.debug("Extension pages found: {}", extPages);
    LOG.debug("Extension widgets found: {}", extWidgets);
    LOG.debug("SSO Login pages found: {}", ssoLoginFormPanels);
    LOG.debug("Reportlet configurations found: {}", reportletConfs);
    LOG.debug("Account Rule configurations found: {}", accountRuleConfs);
    LOG.debug("Password Rule configurations found: {}", passwordRuleConfs);
    LOG.debug("Pull Correlation Rule configurations found: {}", pullCorrelationRuleConfs);
}

From source file:org.apache.syncope.client.console.init.ImplementationClassNamesLoader.java

@Override
@SuppressWarnings("unchecked")
public void load() {
    previewers = new ArrayList<>();
    extPanels = new ArrayList<>();

    ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(
            false);/*from ww w . jav  a  2  s  .  c  o m*/
    scanner.addIncludeFilter(new AssignableTypeFilter(AbstractBinaryPreviewer.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(AbstractExtensionPanel.class));

    for (BeanDefinition bd : scanner.findCandidateComponents(StringUtils.EMPTY)) {
        try {
            Class<?> clazz = ClassUtils.resolveClassName(bd.getBeanClassName(),
                    ClassUtils.getDefaultClassLoader());
            boolean isAbsractClazz = Modifier.isAbstract(clazz.getModifiers());

            if (AbstractBinaryPreviewer.class.isAssignableFrom(clazz) && !isAbsractClazz) {
                previewers.add((Class<? extends AbstractBinaryPreviewer>) clazz);
            } else if (AbstractExtensionPanel.class.isAssignableFrom(clazz) && !isAbsractClazz) {
                extPanels.add((Class<? extends AbstractExtensionPanel>) clazz);
            }

        } catch (Throwable t) {
            LOG.warn("Could not inspect class {}", bd.getBeanClassName(), t);
        }
    }
    previewers = Collections.unmodifiableList(previewers);
    extPanels = Collections.unmodifiableList(extPanels);

    LOG.debug("Binary previewers found: {}", previewers);
    LOG.debug("Extension panels found: {}", extPanels);
}

From source file:org.apache.syncope.core.logic.init.ClassPathScanImplementationLookup.java

@Override
@SuppressWarnings("unchecked")
public void load() {
    classNames = new EnumMap<>(Type.class);
    for (Type type : Type.values()) {
        classNames.put(type, new HashSet<String>());
    }//from ww  w  . ja  v  a  2 s. com

    reportletClasses = new HashMap<>();
    accountRuleClasses = new HashMap<>();
    passwordRuleClasses = new HashMap<>();

    ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(
            false);
    scanner.addIncludeFilter(new AssignableTypeFilter(Reportlet.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(AccountRule.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(PasswordRule.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(MappingItemTransformer.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(SchedTaskJobDelegate.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(ReconciliationFilterBuilder.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(LogicActions.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(PropagationActions.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(PullActions.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(PushActions.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(PullCorrelationRule.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(Validator.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(NotificationRecipientsProvider.class));

    for (BeanDefinition bd : scanner.findCandidateComponents(StringUtils.EMPTY)) {
        try {
            Class<?> clazz = ClassUtils.resolveClassName(bd.getBeanClassName(),
                    ClassUtils.getDefaultClassLoader());
            boolean isAbsractClazz = Modifier.isAbstract(clazz.getModifiers());

            if (Reportlet.class.isAssignableFrom(clazz) && !isAbsractClazz) {
                ReportletConfClass annotation = clazz.getAnnotation(ReportletConfClass.class);
                if (annotation == null) {
                    LOG.warn("Found Reportlet {} without declared configuration", clazz.getName());
                } else {
                    classNames.get(Type.REPORTLET_CONF).add(annotation.value().getName());
                    reportletClasses.put(annotation.value(), (Class<? extends Reportlet>) clazz);
                }
            }

            if (AccountRule.class.isAssignableFrom(clazz) && !isAbsractClazz) {
                AccountRuleConfClass annotation = clazz.getAnnotation(AccountRuleConfClass.class);
                if (annotation == null) {
                    LOG.warn("Found account policy rule {} without declared configuration", clazz.getName());
                } else {
                    classNames.get(Type.ACCOUNT_RULE_CONF).add(annotation.value().getName());
                    accountRuleClasses.put(annotation.value(), (Class<? extends AccountRule>) clazz);
                }
            }

            if (PasswordRule.class.isAssignableFrom(clazz) && !isAbsractClazz) {
                PasswordRuleConfClass annotation = clazz.getAnnotation(PasswordRuleConfClass.class);
                if (annotation == null) {
                    LOG.warn("Found password policy rule {} without declared configuration", clazz.getName());
                } else {
                    classNames.get(Type.PASSWORD_RULE_CONF).add(annotation.value().getName());
                    passwordRuleClasses.put(annotation.value(), (Class<? extends PasswordRule>) clazz);
                }
            }

            if (MappingItemTransformer.class.isAssignableFrom(clazz) && !isAbsractClazz
                    && !clazz.equals(JEXLMappingItemTransformerImpl.class)) {

                classNames.get(Type.MAPPING_ITEM_TRANSFORMER).add(clazz.getName());
            }

            if (SchedTaskJobDelegate.class.isAssignableFrom(clazz) && !isAbsractClazz
                    && !PullJobDelegate.class.isAssignableFrom(clazz)
                    && !PushJobDelegate.class.isAssignableFrom(clazz)
                    && !GroupMemberProvisionTaskJobDelegate.class.isAssignableFrom(clazz)) {

                classNames.get(Type.TASKJOBDELEGATE).add(bd.getBeanClassName());
            }

            if (ReconciliationFilterBuilder.class.isAssignableFrom(clazz) && !isAbsractClazz) {
                classNames.get(Type.RECONCILIATION_FILTER_BUILDER).add(bd.getBeanClassName());
            }

            if (LogicActions.class.isAssignableFrom(clazz) && !isAbsractClazz) {
                classNames.get(Type.LOGIC_ACTIONS).add(bd.getBeanClassName());
            }

            if (PropagationActions.class.isAssignableFrom(clazz) && !isAbsractClazz) {
                classNames.get(Type.PROPAGATION_ACTIONS).add(bd.getBeanClassName());
            }

            if (PullActions.class.isAssignableFrom(clazz) && !isAbsractClazz) {
                classNames.get(Type.PULL_ACTIONS).add(bd.getBeanClassName());
            }

            if (PushActions.class.isAssignableFrom(clazz) && !isAbsractClazz) {
                classNames.get(Type.PUSH_ACTIONS).add(bd.getBeanClassName());
            }

            if (PullCorrelationRule.class.isAssignableFrom(clazz) && !isAbsractClazz
                    && !PlainAttrsPullCorrelationRule.class.isAssignableFrom(clazz)) {
                classNames.get(Type.PULL_CORRELATION_RULE).add(bd.getBeanClassName());
            }

            if (Validator.class.isAssignableFrom(clazz) && !isAbsractClazz) {
                classNames.get(Type.VALIDATOR).add(bd.getBeanClassName());
            }

            if (NotificationRecipientsProvider.class.isAssignableFrom(clazz) && !isAbsractClazz) {
                classNames.get(Type.NOTIFICATION_RECIPIENTS_PROVIDER).add(bd.getBeanClassName());
            }
        } catch (Throwable t) {
            LOG.warn("Could not inspect class {}", bd.getBeanClassName(), t);
        }
    }
    classNames = Collections.unmodifiableMap(classNames);
    reportletClasses = Collections.unmodifiableMap(reportletClasses);
    accountRuleClasses = Collections.unmodifiableMap(accountRuleClasses);
    passwordRuleClasses = Collections.unmodifiableMap(passwordRuleClasses);

    LOG.debug("Implementation classes found: {}", classNames);
}

From source file:org.apache.syncope.core.logic.init.ImplementationClassNamesLoader.java

@Override
public void load() {
    classNames = new EnumMap<>(Type.class);
    for (Type type : Type.values()) {
        classNames.put(type, new HashSet<String>());
    }//from   ww w.j a  va  2s.co m

    ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(
            false);
    scanner.addIncludeFilter(new AssignableTypeFilter(Reportlet.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(TaskJob.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(SyncActions.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(PushActions.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(SyncCorrelationRule.class));
    // Remove once SYNCOPE-631 is done
    //scanner.addIncludeFilter(new AssignableTypeFilter(PushCorrelationRule.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(PropagationActions.class));
    scanner.addIncludeFilter(new AssignableTypeFilter(Validator.class));

    for (BeanDefinition bd : scanner.findCandidateComponents(StringUtils.EMPTY)) {
        try {
            Class<?> clazz = ClassUtils.resolveClassName(bd.getBeanClassName(),
                    ClassUtils.getDefaultClassLoader());
            boolean isAbsractClazz = Modifier.isAbstract(clazz.getModifiers());

            if (Reportlet.class.isAssignableFrom(clazz) && !isAbsractClazz) {
                classNames.get(Type.REPORTLET).add(clazz.getName());
            }

            if (TaskJob.class.isAssignableFrom(clazz) && !isAbsractClazz
                    && !SyncJob.class.isAssignableFrom(clazz) && !PushJob.class.isAssignableFrom(clazz)) {

                classNames.get(Type.TASKJOB).add(bd.getBeanClassName());
            }

            if (SyncActions.class.isAssignableFrom(clazz) && !isAbsractClazz) {
                classNames.get(Type.SYNC_ACTIONS).add(bd.getBeanClassName());
            }

            if (PushActions.class.isAssignableFrom(clazz) && !isAbsractClazz) {
                classNames.get(Type.PUSH_ACTIONS).add(bd.getBeanClassName());
            }

            if (SyncCorrelationRule.class.isAssignableFrom(clazz) && !isAbsractClazz) {
                classNames.get(Type.SYNC_CORRELATION_RULE).add(bd.getBeanClassName());
            }

            // Uncomment when SYNCOPE-631 is done
            /* if (PushCorrelationRule.class.isAssignableFrom(clazz) && !isAbsractClazz) {
             * classNames.get(Type.PUSH_CORRELATION_RULES).add(metadata.getClassName());
             * } */
            if (PropagationActions.class.isAssignableFrom(clazz) && !isAbsractClazz) {
                classNames.get(Type.PROPAGATION_ACTIONS).add(bd.getBeanClassName());
            }

            if (Validator.class.isAssignableFrom(clazz) && !isAbsractClazz) {
                classNames.get(Type.VALIDATOR).add(bd.getBeanClassName());
            }
        } catch (Throwable t) {
            LOG.warn("Could not inspect class {}", bd.getBeanClassName(), t);
        }
    }
    classNames = Collections.unmodifiableMap(classNames);

    LOG.debug("Implementation classes found: {}", classNames);
}

From source file:org.apache.usergrid.persistence.Schema.java

@SuppressWarnings("unchecked")
public void scanEntities() {
    synchronized (entitiesScanPath) {
        for (String path : entitiesScanPath) {
            ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(
                    true);//w  w  w .  jav a2 s  . c o  m
            provider.addIncludeFilter(new AssignableTypeFilter(TypedEntity.class));

            Set<BeanDefinition> components = provider.findCandidateComponents(path);
            for (BeanDefinition component : components) {
                try {
                    Class<?> cls = Class.forName(component.getBeanClassName());
                    if (Entity.class.isAssignableFrom(cls)) {
                        registerEntity((Class<? extends Entity>) cls);
                    }
                } catch (ClassNotFoundException e) {
                    logger.error("Unable to get entity class ", e);
                }
            }
            registerEntity(DynamicEntity.class);
        }
    }
}

From source file:org.craftercms.studio.impl.repository.mongodb.tools.RepoShell.java

/**
 * Using Spring's ClassPathScanningCandidateComponentProvider search for all Classes
 * that Extends {@link org.craftercms.studio.impl.repository.mongodb.tools.AbstractAction}
 * in the package <i>org.craftercms.studio.impl.repository.mongodb</i> and loads and register them.
 * @throws ClassNotFoundException If Class can't be found.
 * @throws IllegalAccessException If Class can't be access.
 * @throws InstantiationException If Class can't be Instantiated.
 * @throws ClassCastException If Class can't be cast to AbstractAction.
 *///from   www.j  av a 2  s .  c  o m
private void loadActions()
        throws ClassNotFoundException, IllegalAccessException, InstantiationException, ClassCastException {
    this.actionList = new FastList<>();
    ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(
            true);
    provider.addIncludeFilter(new AssignableTypeFilter(AbstractAction.class));

    Set<BeanDefinition> components = provider
            .findCandidateComponents("org.craftercms.studio.impl.repository" + "" + ".mongodb");
    for (BeanDefinition component : components) {
        actionList.add((AbstractAction) Class.forName(component.getBeanClassName()).newInstance());
    }
    actionList.add(new HelpAction(Collections.unmodifiableList(actionList)));
}

From source file:org.dd4t.databind.builder.BaseDataBinder.java

protected void scanAndLoadModels() {
    LOG.info("Init: scanning view models.");
    final ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(
            false);/*  w  w w .jav  a 2 s .co  m*/
    scanner.addIncludeFilter(new AnnotationTypeFilter(ViewModel.class));
    for (BeanDefinition bd : scanner.findCandidateComponents(this.viewModelPackageRoot)) {
        try {
            final Class clazz = Class.forName(bd.getBeanClassName());
            if (clazz != null) {
                LOG.debug("Loading class: " + clazz.getCanonicalName());
                final ViewModel viewModelParameters = (ViewModel) clazz.getAnnotation(ViewModel.class);

                if (hasProperModelInformation(viewModelParameters, clazz)) {
                    LOG.debug(
                            "Parameters: Viewmodel name(s):{}, Root Element name(s){}, Set Component: {}, Set raw: {} ",
                            new Object[] { viewModelParameters.viewModelNames(),
                                    viewModelParameters.rootElementNames(),
                                    viewModelParameters.setComponentObject(),
                                    viewModelParameters.setRawData() });
                    storeModelClass(viewModelParameters, clazz);
                }
            }
            LOG.info("Init: Done scanning view models.");
        } catch (ClassNotFoundException e) {
            LOG.error("Unexpected exception", e);
        }
    }
}

From source file:org.kaaproject.kaa.server.admin.services.KaaAdminServiceImpl.java

@Override
public void afterPropertiesSet() throws Exception {
    ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(
            false);//from   w  w w  .j a  v a 2  s .c  o m
    scanner.addIncludeFilter(new AnnotationTypeFilter(KaaPluginConfig.class));
    scanPluginsPackage(scanner, "org.kaaproject.kaa.server.appenders");
    scanPluginsPackage(scanner, "org.kaaproject.kaa.server.verifiers");
    if (!isEmpty(additionalPluginsScanPackage)) {
        scanPluginsPackage(scanner, additionalPluginsScanPackage);
    }
    simpleSchemaFormAvroConverter = new SimpleSchemaFormAvroConverter();
    commonSchemaFormAvroConverter = new SchemaFormAvroConverter();
    configurationSchemaFormAvroConverter = new ConfigurationSchemaFormAvroConverter();
    ecfSchemaFormAvroConverter = new EcfSchemaFormAvroConverter();
}