List of usage examples for org.springframework.context.annotation ClassPathScanningCandidateComponentProvider setResourceLoader
@Override public void setResourceLoader(@Nullable ResourceLoader resourceLoader)
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; }