List of usage examples for org.springframework.context.annotation ClassPathScanningCandidateComponentProvider ClassPathScanningCandidateComponentProvider
public ClassPathScanningCandidateComponentProvider(boolean useDefaultFilters)
From source file:com.joyveb.dbpimpl.cass.prepare.config.java.AbstractCassandraConfiguration.java
/** * Scans the mapping base package for classes annotated with {@link Table}. * /*from w w w. j a v a2 s .co m*/ * @see #getMappingBasePackage() * @return * @throws ClassNotFoundException */ protected Set<Class<?>> getInitialEntitySet() { String basePackage = getMappingBasePackage(); Set<Class<?>> initialEntitySet = new HashSet<Class<?>>(); if (StringUtils.hasText(basePackage)) { ClassPathScanningCandidateComponentProvider componentProvider = new ClassPathScanningCandidateComponentProvider( false); componentProvider.addIncludeFilter(new AnnotationTypeFilter(Table.class)); componentProvider.addIncludeFilter(new AnnotationTypeFilter(Persistent.class)); for (BeanDefinition candidate : componentProvider.findCandidateComponents(basePackage)) { initialEntitySet.add(loadClass(candidate.getBeanClassName())); } } return initialEntitySet; }
From source file:com.googlecode.icegem.cacheutils.common.PeerCacheService.java
/** * @param classLoader/*from ww w . j a v a 2s . co m*/ * @throws Exception */ private void registerClasses(ClassLoader classLoader) throws Exception { List<Class<?>> classesFromPackages = new ArrayList<Class<?>>(); for (String pack : scanPackages) { log.info("Scan package " + pack + " for classes marked by @AutoSerializable"); ClassPathScanningCandidateComponentProvider ppp = new ClassPathScanningCandidateComponentProvider( false); ppp.addIncludeFilter(new AnnotationTypeFilter(AutoSerializable.class)); Set<BeanDefinition> candidateComponents = ppp.findCandidateComponents(pack); for (BeanDefinition beanDefinition : candidateComponents) { String className = beanDefinition.getBeanClassName(); final Class<?> clazz = Class.forName(className); classesFromPackages.add(clazz); } } try { HierarchyRegistry.registerAll(classLoader, classesFromPackages); } catch (InvalidClassException e) { final String msg = "Some class from list " + classesFromPackages + " is nor serializable. Cause: " + e.getMessage(); log.error(msg); throw new RuntimeException(msg, e); } catch (CannotCompileException e) { final String msg = "Can't compile DataSerializer classes for some classes from list " + classesFromPackages + ". Cause: " + e.getMessage(); log.error(msg); throw new RuntimeException(msg, e); } }
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.//from ww w . ja v a 2s . co m * * @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:com.mmnaseri.dragonfly.runtime.session.ApplicationSessionPreparator.java
@Override public void postProcessBeanFactory(ConfigurableListableBeanFactory context) throws BeansException { showDeprecationWarning();/*from w ww.ja va2 s .co m*/ long time = System.nanoTime(); log.warn( "Preparing the session at runtime can be harmful to your performance. You should consider switching to " + "the Maven plugin."); log.debug("Looking up the necessary components ..."); tableMetadataRegistry = context.getBean(TableMetadataRegistry.class); statementRegistry = context.getBean(StatementRegistry.class); final ModifiableEntityContext entityContext = context.getBean(ModifiableEntityContext.class); final ClassPathScanningCandidateComponentProvider componentProvider = new ClassPathScanningCandidateComponentProvider( false); log.info("Finding entity classes ..."); log.debug("Looking for classes with @Entity"); componentProvider.addIncludeFilter(new AnnotationTypeFilter(Entity.class)); if (parentClassLoader == null) { log.debug("Falling back to the application context class loader"); parentClassLoader = context.getBeanClassLoader(); } for (String basePackage : basePackages) { final Set<BeanDefinition> beanDefinitions = componentProvider.findCandidateComponents(basePackage); for (BeanDefinition beanDefinition : beanDefinitions) { try { log.debug("Registering entity " + beanDefinition.getBeanClassName()); //noinspection unchecked definitionContext.addDefinition(new ImmutableEntityDefinition<Object>( ClassUtils.forName(beanDefinition.getBeanClassName(), parentClassLoader), Collections.<Class<?>, Class<?>>emptyMap())); } catch (ClassNotFoundException e) { throw new FatalBeanException("Failed to retrieve class: " + beanDefinition.getBeanClassName(), e); } } } componentProvider.resetFilters(false); log.info("Finding extensions to the data access ..."); log.debug("Looking for classes with @Extension"); componentProvider.addIncludeFilter(new AnnotationTypeFilter(Extension.class)); final AnnotationExtensionMetadataResolver extensionMetadataResolver = new AnnotationExtensionMetadataResolver( metadataResolver); for (String basePackage : basePackages) { final Set<BeanDefinition> beanDefinitions = componentProvider.findCandidateComponents(basePackage); for (BeanDefinition beanDefinition : beanDefinitions) { try { log.debug("Registering extension " + beanDefinition.getBeanClassName()); extensionManager.addExtension(extensionMetadataResolver .resolve(ClassUtils.forName(beanDefinition.getBeanClassName(), parentClassLoader))); } catch (ClassNotFoundException e) { throw new FatalBeanException("Failed to retrieve class: " + beanDefinition.getBeanClassName(), e); } } } log.info("Preparing entity statements for later use"); final StatementRegistryPreparator preparator = new StatementRegistryPreparator(databaseDialect, resolverContext, tableMetadataRegistry); for (Class<?> entity : definitionContext.getEntities()) { preparator.addEntity(entity); } preparator.prepare(statementRegistry); log.info("Registering interfaces with the context"); entityContext.setInterfaces( with(definitionContext.getEntities()).map(new Transformer<Class<?>, Map<Class<?>, Class<?>>>() { @Override public Map<Class<?>, Class<?>> map(Class<?> input) { //noinspection unchecked final EntityDefinition<Object> definition = extensionManager .intercept(new ImmutableEntityDefinition<Object>((Class<Object>) input, Collections.<Class<?>, Class<?>>emptyMap())); return definition.getInterfaces(); } })); if (initializeSession) { final DataAccessSession session = context.getBean(DataAccessSession.class); session.initialize(); session.markInitialized(); } log.info("Setting the class loader for the entity context"); entityContext.setDefaultClassLoader(context.getBeanClassLoader()); time = System.nanoTime() - time; log.info("Session preparation took " + Math.round((double) time / 1000000d) / 1000d + " second(s)"); }
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 a 2s. c om*/ 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:com.thoughtworks.go.server.service.MagicalMaterialAndMaterialConfigConversionTest.java
@Test public void failIfNewTypeOfMaterialIsNotAddedInTheAboveTest() throws Exception { ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider( false);/* w w w.jav a 2s . c o m*/ provider.addIncludeFilter(new AssignableTypeFilter(MaterialConfig.class)); Set<BeanDefinition> candidateComponents = provider.findCandidateComponents("com/thoughtworks"); List<Class> reflectionsSubTypesOf = candidateComponents.stream() .map(beanDefinition -> beanDefinition.getBeanClassName()).map(s -> { try { return Class.forName(s); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } }).collect(Collectors.toList()); reflectionsSubTypesOf.removeIf(this::isNotAConcrete_NonTest_MaterialConfigImplementation); List<Class> allExpectedMaterialConfigImplementations = allMaterialConfigsWhichAreDataPointsInThisTest(); assertThatAllMaterialConfigsInCodeAreTestedHere(reflectionsSubTypesOf, allExpectedMaterialConfigImplementations); }
From source file:org.synyx.hades.dao.config.DaoConfigDefinitionParser.java
/** * Tries to detect a custom implementation for a DAO bean by classpath * scanning./*w ww . ja v a 2 s. c om*/ * * @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:cross.applicationContext.ReflectionApplicationContextGenerator.java
/** * * @param clazz//from w w w.j a va 2 s. c om * @param packages * @return */ public static Set<BeanDefinition> getImplementationsOf(Class<?> clazz, String... packages) { ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider( false); provider.addIncludeFilter(new AssignableTypeFilter(clazz)); Set<BeanDefinition> beanDefinitions = new LinkedHashSet<>(); for (String pkg : packages) { String pkgDeclaration = ""; if (pkg.contains(".")) { pkgDeclaration = pkg.replaceAll("\\.", "/"); } Set<BeanDefinition> components = provider.findCandidateComponents(pkgDeclaration); beanDefinitions.addAll(components); } return beanDefinitions; }
From source file:nz.co.senanque.validationengine.metadata.AnnotationsMetadataFactory.java
private void scanPackageForValidators(String basePackage, Map<Class<? extends Annotation>, Class<? extends FieldValidator<Annotation>>> validators) throws ClassNotFoundException { ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider( true) {//w w w . j av a2 s.c o m private String iface = FieldValidator.class.getCanonicalName(); /** * Check if the class has the right annotation * @param metadataReader the ASM ClassReader for the class * @return whether the class qualifies as a candidate component */ protected boolean isCandidateComponent(MetadataReader metadataReader) throws IOException { AnnotationMetadata metadata = metadataReader.getAnnotationMetadata(); for (String n : metadata.getInterfaceNames()) { if (iface.equals(n)) { return true; } } return false; } /** * Determine whether the given bean definition qualifies as candidate. * <p>The default implementation checks whether the class is concrete * (i.e. not abstract and not an interface). Can be overridden in subclasses. * @param beanDefinition the bean definition to check * @return whether the bean definition qualifies as a candidate component */ protected boolean isCandidateComponent(AnnotatedBeanDefinition beanDefinition) { return (beanDefinition.getMetadata().isConcrete() && beanDefinition.getMetadata().isIndependent()); } }; // String basePackage = "nz/co/senanque/validationengine/fieldvalidators";//nz.co.senanque.validationengine.fieldvalidators Set<BeanDefinition> components = provider.findCandidateComponents(basePackage.replace('.', '/')); for (BeanDefinition component : components) { @SuppressWarnings("unchecked") Class<? extends FieldValidator<Annotation>> class_ = (Class<? extends FieldValidator<Annotation>>) Class .forName(component.getBeanClassName()); Type[] types = class_.getGenericInterfaces(); ParameterizedType t0 = (ParameterizedType) types[0]; @SuppressWarnings("unchecked") Class<? extends Annotation> p = (Class<? extends Annotation>) t0.getActualTypeArguments()[0]; validators.put(p, class_); } }
From source file:nz.co.senanque.validationengine.metadata.AnnotationsMetadataFactory.java
private void scanPackageForDomainObjects(String basePackage, Set<Class<ValidationObject>> domainObjects) throws ClassNotFoundException { ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider( true) {//from w ww. ja v a 2s . c om private String iface = ValidationObject.class.getCanonicalName(); /** * Check if the class has the right annotation * @param metadataReader the ASM ClassReader for the class * @return whether the class qualifies as a candidate component */ protected boolean isCandidateComponent(MetadataReader metadataReader) throws IOException { AnnotationMetadata metadata = metadataReader.getAnnotationMetadata(); for (String n : metadata.getInterfaceNames()) { if (iface.equals(n)) { return true; } } return false; } /** * Determine whether the given bean definition qualifies as candidate. * <p>The default implementation checks whether the class is concrete * (i.e. not abstract and not an interface). Can be overridden in subclasses. * @param beanDefinition the bean definition to check * @return whether the bean definition qualifies as a candidate component */ protected boolean isCandidateComponent(AnnotatedBeanDefinition beanDefinition) { return (beanDefinition.getMetadata().isConcrete() && beanDefinition.getMetadata().isIndependent()); } }; Set<BeanDefinition> components = provider.findCandidateComponents(basePackage.replace('.', '/')); ClassLoader cl = Thread.currentThread().getContextClassLoader(); for (BeanDefinition component : components) { @SuppressWarnings("unchecked") Class<ValidationObject> class_ = (Class<ValidationObject>) Class.forName(component.getBeanClassName(), true, cl); domainObjects.add(class_); } }