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

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

Introduction

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

Prototype

@Override
public void setResourceLoader(@Nullable ResourceLoader resourceLoader) 

Source Link

Document

Set the ResourceLoader to use for resource locations.

Usage

From source file:com.jk.annotations.AnnotationDetector.java

/**
 * Utility method to scan the given package and handler for the annotation
 * of the given class. Its uses the Spring annotation detector
 *
 * @param clas/*w ww  . j  a v  a2s.c  om*/
 *            the clas
 * @param basePackage
 *            the base package
 * @param handler
 *            the handler
 */
public static void scan(final Class<? extends Annotation> clas, final String[] basePackage,
        final AnnotationHandler handler) {
    final ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(
            false);
    scanner.setResourceLoader(
            new PathMatchingResourcePatternResolver(Thread.currentThread().getContextClassLoader()));
    scanner.addIncludeFilter(new AnnotationTypeFilter(clas));
    for (final String pck : basePackage) {
        for (final BeanDefinition bd : scanner.findCandidateComponents(pck)) {
            handler.handleAnnotationFound(bd.getBeanClassName());
        }
    }
}

From source file:natalia.dymnikova.cluster.scheduler.impl.requirements.ComputeMemberRequirementsBuilder.java

private Entry<Field, Set<ScannedGenericBeanDefinition>> scan(TypeFilterWithField filter) {
    final ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(
            false, scannerEnvironment);//ww w  .  j  a va2  s. c o m

    scanner.setResourceLoader(resourcePatternResolver);
    scanner.setMetadataReaderFactory(metadataReaderFactory);

    scanner.resetFilters(false);
    scanner.addIncludeFilter(new CompositeFilter(new AnnotationTypeFilter(Component.class), filter));

    final Set<BeanDefinition> candidateComponents = scanner.findCandidateComponents(basePackage);

    final Set<ScannedGenericBeanDefinition> collect = candidateComponents.stream()
            .map(bd -> (ScannedGenericBeanDefinition) bd).collect(toSet());

    return new SimpleEntry<>(filter.field, collect);
}

From source file:natalia.dymnikova.cluster.scheduler.impl.RolesChecker.java

private List<Set<ScannedGenericBeanDefinition>> scan(final String basePackage, final List<TypeFilter> filters) {
    final ArrayList<Set<ScannedGenericBeanDefinition>> sets = new ArrayList<>(filters.size());

    final ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(
            false, scannerEnvironment);/* w  w w .j a  v a2s .c o m*/

    scanner.setResourceLoader(resourcePatternResolver);
    scanner.setMetadataReaderFactory(metadataReaderFactory);

    for (final TypeFilter filter : filters) {
        scanner.resetFilters(false);
        scanner.addIncludeFilter(new CompositeFilter(new AnnotationTypeFilter(Component.class), filter));

        final Set<BeanDefinition> candidateComponents = scanner.findCandidateComponents(basePackage);

        final Set<ScannedGenericBeanDefinition> collect = candidateComponents.stream()
                .map(bd -> (ScannedGenericBeanDefinition) bd).collect(toSet());

        sets.add(collect);
    }

    scanner.clearCache();

    return sets;
}

From source file:org.zalando.stups.spring.cloud.netflix.feign.OAuth2FeignClientsRegsitrar.java

@Override
public void registerBeanDefinitions(final AnnotationMetadata importingClassMetadata,
        final BeanDefinitionRegistry registry) {

    Set<String> basePackages = getBasePackages(importingClassMetadata);

    ClassPathScanningCandidateComponentProvider scanner = getScanner();
    scanner.addIncludeFilter(new AnnotationTypeFilter(FeignClient.class));
    scanner.setResourceLoader(this.resourceLoader);

    for (String basePackage : basePackages) {
        Set<BeanDefinition> candidateComponents = scanner.findCandidateComponents(basePackage);
        for (BeanDefinition candidateComponent : candidateComponents) {
            if (candidateComponent instanceof AnnotatedBeanDefinition) {

                // verify annotated class is an interface
                AnnotatedBeanDefinition beanDefinition = (AnnotatedBeanDefinition) candidateComponent;
                AnnotationMetadata annotationMetadata = beanDefinition.getMetadata();
                Assert.isTrue(annotationMetadata.isInterface(),
                        "@FeignClient can only be specified on an interface");

                BeanDefinitionHolder holder = createBeanDefinition(annotationMetadata);
                BeanDefinitionReaderUtils.registerBeanDefinition(holder, registry);
            }/*from   w  w  w. jav  a 2 s .  c  o  m*/
        }
    }
}

From source file:org.agilemicroservices.autoconfigure.orm.RepositoryConfigurationDelegate.java

/**
 * Scans {@code repository.support} packages for implementations of {@link RepositoryFactorySupport}. Finding more
 * than a single type is considered a multi-store configuration scenario which will trigger stricter repository
 * scanning./*  w  w  w .ja  va2s  . c  om*/
 *
 * @return
 */
private boolean multipleStoresDetected() {

    ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(
            false);
    scanner.setEnvironment(environment);
    scanner.setResourceLoader(resourceLoader);
    scanner.addIncludeFilter(new LenientAssignableTypeFilter(RepositoryFactorySupport.class));

    if (scanner.findCandidateComponents(MODULE_DETECTION_PACKAGE).size() > 1) {

        LOGGER.debug(MULTIPLE_MODULES);
        return true;
    }

    return false;
}

From source file:org.synyx.hades.dao.config.DaoConfigDefinitionParser.java

private Set<String> getDaoInterfacesForAutoConfig(final DaoConfigContext configContext,
        final ResourceLoader loader, final ReaderContext readerContext) {

    ClassPathScanningCandidateComponentProvider scanner = new GenericDaoComponentProvider();
    scanner.setResourceLoader(loader);

    TypeFilterParser parser = new TypeFilterParser(loader.getClassLoader(), readerContext);
    parser.parseFilters(configContext.getElement(), scanner);

    Set<BeanDefinition> findCandidateComponents = scanner
            .findCandidateComponents(configContext.getDaoBasePackageName());

    Set<String> interfaceNames = new HashSet<String>();
    for (BeanDefinition definition : findCandidateComponents) {
        interfaceNames.add(definition.getBeanClassName());
    }//from  w  w  w  . j a v  a 2s .  co  m

    return interfaceNames;
}

From source file:org.synyx.hades.dao.config.DaoConfigDefinitionParser.java

/**
 * Tries to detect a custom implementation for a DAO bean by classpath
 * scanning./*w w  w.  j a  v  a  2s . c o  m*/
 * 
 * @param context
 * @param parser
 * @return the {@code BeanDefinition} of the custom implementation or null
 *         if none found
 */
private AbstractBeanDefinition detectCustomImplementation(final DaoContext context,
        final ParserContext parser) {

    // Build pattern to lookup implementation class
    Pattern pattern = Pattern.compile(".*" + context.getImplementationClassName());

    // Build classpath scanner and lookup bean definition
    ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(
            false);
    provider.setResourceLoader(parser.getReaderContext().getResourceLoader());
    provider.addIncludeFilter(new RegexPatternTypeFilter(pattern));
    Set<BeanDefinition> definitions = provider.findCandidateComponents(context.getDaoBasePackageName());

    return (0 == definitions.size() ? null : (AbstractBeanDefinition) definitions.iterator().next());
}

From source file:org.kuali.coeus.s2sgen.impl.generate.support.stylesheet.StylesheetValidationTest.java

private Stream<Class<? extends S2SFormGenerator>> getGeneratorsToTest() {
    final ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(
            false);/*from   w  ww  .j a v  a2  s .  c  o m*/

    final TypeFilter testableFilter = (metadataReader,
            metadataReaderFactory) -> new AnnotationTypeFilter(FormGenerator.class).match(metadataReader,
                    metadataReaderFactory)
                    && new AssignableTypeFilter(S2SFormGenerator.class).match(metadataReader,
                            metadataReaderFactory)
                    && !metadataReader.getClassMetadata().isAbstract()
                    && !BROKEN_GENERATORS.contains(metadataReader.getClassMetadata().getClassName());

    provider.addIncludeFilter(testableFilter);
    provider.addExcludeFilter(new AssignableTypeFilter(DynamicNamespace.class));
    provider.setResourceLoader(new PathMatchingResourcePatternResolver(this.getClass().getClassLoader()));
    final Set<BeanDefinition> generators = provider
            .findCandidateComponents("org.kuali.coeus.s2sgen.impl.generate.support");
    return generators.stream().map(generator -> {
        try {
            @SuppressWarnings("unchecked")
            final Class<? extends S2SFormGenerator> clazz = (Class<? extends S2SFormGenerator>) Class
                    .forName(generator.getBeanClassName());
            return clazz;
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    });
}

From source file:org.springframework.data.gemfire.function.config.AbstractFunctionExecutionConfigurationSource.java

public Collection<ScannedGenericBeanDefinition> getCandidates(ResourceLoader loader) {
    ClassPathScanningCandidateComponentProvider scanner = new FunctionExecutionComponentProvider(
            getIncludeFilters(), functionExecutionAnnotationTypes);
    scanner.setResourceLoader(loader);

    for (TypeFilter filter : getExcludeFilters()) {
        scanner.addExcludeFilter(filter);
    }/*from   w  ww  . j  a v  a2 s  . c om*/

    Set<ScannedGenericBeanDefinition> result = new HashSet<ScannedGenericBeanDefinition>();

    for (String basePackage : getBasePackages()) {
        if (logger.isDebugEnabled()) {
            logger.debug("scanning package " + basePackage);
        }
        Collection<BeanDefinition> components = scanner.findCandidateComponents(basePackage);
        for (BeanDefinition definition : components) {
            result.add((ScannedGenericBeanDefinition) definition);
        }
    }

    return result;
}

From source file:org.springframework.data.repository.config.AbstractRepositoryConfigDefinitionParser.java

private Set<String> getRepositoryInterfacesForAutoConfig(S config, ResourceLoader loader,
        ReaderContext reader) {//from  w w w  . ja  v a 2s . co  m

    ClassPathScanningCandidateComponentProvider scanner = new RepositoryComponentProvider(
            config.getRepositoryBaseInterface());
    scanner.setResourceLoader(loader);

    TypeFilterParser parser = new TypeFilterParser(loader.getClassLoader(), reader);
    parser.parseFilters(config.getSource(), scanner);

    Set<BeanDefinition> findCandidateComponents = scanner.findCandidateComponents(config.getBasePackage());

    Set<String> interfaceNames = new HashSet<String>();
    for (BeanDefinition definition : findCandidateComponents) {
        interfaceNames.add(definition.getBeanClassName());
    }

    return interfaceNames;
}