List of usage examples for org.springframework.context.annotation ClassPathScanningCandidateComponentProvider findCandidateComponents
public Set<BeanDefinition> findCandidateComponents(String basePackage)
From source file:org.openmrs.module.CDAGenerator.api.impl.CDAGeneratorServiceImpl.java
@Override public List<BaseCdaTypeHandler> getAllCdaTypeChildHandlers() { ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider( true);//from ww w .j ava 2 s .co m provider.addIncludeFilter(new AssignableTypeFilter(BaseCdaTypeHandler.class)); List<BaseCdaTypeHandler> handlers = new ArrayList<BaseCdaTypeHandler>(); // scan in org.openmrs.module.CDAGenerator.CDAHandlers package Set<BeanDefinition> components = provider .findCandidateComponents("org.openmrs.module.CDAGenerator.CDAHandlers"); for (BeanDefinition component : components) { try { Class cls = Class.forName(component.getBeanClassName()); BaseCdaTypeHandler p = (BaseCdaTypeHandler) cls.newInstance(); if (p.templateid != null) { handlers.add(p); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } return handlers; }
From source file:com.logsniffer.config.BeanConfigFactoryManager.java
@SuppressWarnings("unchecked") @PostConstruct//from www . ja v a 2 s .co m private void initJsonMapper() { final SimpleModule module = new SimpleModule(); module.setDeserializerModifier(new BeanDeserializerModifier() { @Override public JsonDeserializer<?> modifyDeserializer(final DeserializationConfig config, final BeanDescription beanDesc, final JsonDeserializer<?> deserializer) { if (ConfiguredBean.class.isAssignableFrom(beanDesc.getBeanClass())) { return new ConfiguredBeanDeserializer(deserializer); } return deserializer; } }); jsonMapper.registerModule(module); if (postConstructors != null) { for (final BeanPostConstructor<?> bpc : postConstructors) { mappedPostConstrucors.put(bpc.getClass(), bpc); } } // Register sub beans final ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider( false); final AssignableTypeFilter filter4configBenas = new AssignableTypeFilter(ConfiguredBean.class); scanner.addIncludeFilter(filter4configBenas); for (final BeanDefinition bd : scanner.findCandidateComponents("com.logsniffer")) { try { final Class<? extends ConfiguredBean> clazz = (Class<? extends ConfiguredBean>) Class .forName(bd.getBeanClassName()); final JsonTypeName jsonNameAnnotation = clazz.getAnnotation(JsonTypeName.class); final List<String> names = new ArrayList<String>(); configBeanNames.put(clazz, names); if (jsonNameAnnotation != null) { names.add(jsonNameAnnotation.value()); if (jsonNameAnnotation.deprecated() != null) { for (final String dep : jsonNameAnnotation.deprecated()) { names.add(dep); } } } names.add(clazz.getSimpleName()); logger.debug("Registered JSON type {} for following names: {}", clazz, names); } catch (final ClassNotFoundException e) { logger.warn("Failed to register JSON type name for " + bd.getBeanClassName(), e); } } }
From source file:com.joyveb.dbpimpl.cass.prepare.config.java.AbstractCassandraConfiguration.java
/** * Scans the mapping base package for classes annotated with {@link Table}. * // w w w . j ava 2s . c om * @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:org.openmrs.module.CDAGenerator.api.impl.CDAGeneratorServiceImpl.java
@Override public List<BaseCdaSectionHandler> getAllCdaSectionHandlers() { ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider( true);// www .j av a2 s .c om provider.addIncludeFilter(new AssignableTypeFilter(BaseCdaSectionHandler.class)); List<BaseCdaSectionHandler> sectionHandlers = new ArrayList<BaseCdaSectionHandler>(); // scan in org.openmrs.module.CDAGenerator.Sectionhandlers package Set<BeanDefinition> components = provider .findCandidateComponents("org.openmrs.module.CDAGenerator.SectionHandlers"); for (BeanDefinition component : components) { try { Class cls = Class.forName(component.getBeanClassName()); BaseCdaSectionHandler p = (BaseCdaSectionHandler) cls.newInstance(); if (p.templateid != null) { sectionHandlers.add(p); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } return sectionHandlers; }
From source file:com.searchbox.framework.web.ApplicationConversionService.java
@Override public void afterPropertiesSet() throws Exception { LOGGER.info("Scanning for SearchComponents"); Map<Class<?>, String> conditionUrl = new HashMap<Class<?>, String>(); ClassPathScanningCandidateComponentProvider scanner; // Getting all the SearchElements scanner = new ClassPathScanningCandidateComponentProvider(false); scanner.addIncludeFilter(new AnnotationTypeFilter(SearchCondition.class)); for (BeanDefinition bean : scanner.findCandidateComponents("com.searchbox")) { try {//from ww w. j a va2s.co m Class<?> clazz = Class.forName(bean.getBeanClassName()); String urlParam = clazz.getAnnotation(SearchCondition.class).urlParam(); conditionUrl.put(clazz, urlParam); } catch (Exception e) { LOGGER.error("Could not introspect SearchElement: " + bean, e); } } // Getting all converters for SearchConditions scanner = new ClassPathScanningCandidateComponentProvider(false); scanner.addIncludeFilter(new AnnotationTypeFilter(SearchConverter.class)); for (BeanDefinition bean : scanner.findCandidateComponents("com.searchbox")) { try { Class<?> clazz = Class.forName(bean.getBeanClassName()); for (Type i : clazz.getGenericInterfaces()) { ParameterizedType pi = (ParameterizedType) i; for (Type piarg : pi.getActualTypeArguments()) { if (AbstractSearchCondition.class.isAssignableFrom(((Class<?>) piarg))) { Class<?> conditionClass = ((Class<?>) piarg); searchConditions.put(conditionUrl.get(conditionClass), ((Class<?>) piarg)); this.addConverter((Converter<?, ?>) clazz.newInstance()); LOGGER.info("Registered Converter " + clazz.getSimpleName() + " for " + ((Class<?>) piarg).getSimpleName() + " with prefix: " + conditionUrl.get(conditionClass)); } } } } catch (Exception e) { LOGGER.error("Could not create Converter for: " + bean.getBeanClassName(), e); } } this.addConverter(new Converter<String, SearchboxEntity>() { @Override public SearchboxEntity convert(String slug) { return searchboxRepository.findBySlug(slug); } }); this.addConverter(new Converter<SearchboxEntity, String>() { @Override public String convert(SearchboxEntity searchbox) { return searchbox.getSlug(); } }); this.addConverter(new Converter<Long, SearchboxEntity>() { @Override public SearchboxEntity convert(java.lang.Long id) { return searchboxRepository.findOne(id); } }); this.addConverter(new Converter<SearchboxEntity, Long>() { @Override public Long convert(SearchboxEntity searchbox) { return searchbox.getId(); } }); this.addConverter(new Converter<String, PresetEntity>() { @Override public PresetEntity convert(String slug) { return presetRepository.findPresetDefinitionBySlug(slug); } }); this.addConverter(new Converter<Long, PresetEntity>() { @Override public PresetEntity convert(java.lang.Long id) { return presetRepository.findOne(id); } }); this.addConverter(new Converter<PresetEntity, String>() { @Override public String convert(PresetEntity presetDefinition) { return new StringBuilder().append(presetDefinition.getSlug()).toString(); } }); this.addConverter(new Converter<Class<?>, String>() { @Override public String convert(Class<?> source) { return source.getName(); } }); this.addConverter(new Converter<String, Class<?>>() { @Override public Class<?> convert(String source) { try { // TODO Such a bad hack... if (source.contains("class")) { source = source.replace("class", "").trim(); } return context.getClassLoader().loadClass(source); // Class.forName(source); } catch (ClassNotFoundException e) { LOGGER.error("Could not convert \"" + source + "\" to class.", e); } return null; } }); }
From source file:com.newtranx.util.cassandra.spring.AccessorScannerConfigurer.java
@Override public void postProcessBeanFactory(ConfigurableListableBeanFactory context) throws BeansException { ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider( false) {/*from ww w. ja v a2s. c om*/ @Override protected boolean isCandidateComponent(AnnotatedBeanDefinition beanDefinition) { return beanDefinition.getMetadata().isInterface(); } }; scanner.addIncludeFilter(new AnnotationTypeFilter(Accessor.class)); for (BeanDefinition bd : scanner.findCandidateComponents(basePackage)) { Class<?> accessorCls; try { accessorCls = Class.forName(bd.getBeanClassName()); } catch (ClassNotFoundException e) { throw new AssertionError(e); } log.info("Creating proxy accessor: " + accessorCls.getName()); MethodInterceptor interceptor = new MethodInterceptor() { private final Lazy<?> target = new Lazy<>(() -> { log.info("Creating actual accessor: " + accessorCls.getName()); Session session; if (AccessorScannerConfigurer.this.session == null) session = mainContext.getBean(Session.class); else session = AccessorScannerConfigurer.this.session; MappingManager mappingManager = new MappingManager(session); return mappingManager.createAccessor(accessorCls); }); @Override public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { if ("toString".equals(method.getName())) { return accessorCls.getName(); } return method.invoke(target.get(), args); } }; Enhancer enhancer = new Enhancer(); enhancer.setInterfaces(new Class<?>[] { accessorCls }); enhancer.setCallback(interceptor); Object bean = enhancer.create(); String beanName = StringUtils.uncapitalize(accessorCls.getSimpleName()); context.registerSingleton(beanName, bean); log.info("Bean registed, name=" + beanName + ", bean=" + bean.toString()); } }
From source file:com.dm.estore.config.WebAppInitializer.java
private void registerListener(ServletContext servletContext) { AnnotationConfigWebApplicationContext rootContext = createContext(ApplicationModule.class); // find all classes marked as @Configuration in classpath ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider( false);//from www . j a v a2 s. c o m scanner.addIncludeFilter(new AnnotationTypeFilter(Configuration.class)); //TypeFilter tf = new AssignableTypeFilter(CLASS_YOU_WANT.class); //s.addIncludeFilter(tf); //s.scan("package.you.want1", "package.you.want2"); //String[] beans = bdr.getBeanDefinitionNames(); for (BeanDefinition bd : scanner.findCandidateComponents("com.dm.estore")) { final String beanClassName = bd.getBeanClassName(); final String simpleName = ClassUtils.getShortCanonicalName(beanClassName); if (!excludeFromAutoSearch.contains(beanClassName) && !simpleName.toLowerCase().startsWith(TEST_RESOURCES_PREFIX)) { LOG.warn("Load configuration from: " + bd.getBeanClassName()); try { Class<?> clazz = WebAppInitializer.class.getClassLoader().loadClass(bd.getBeanClassName()); rootContext.register(clazz); } catch (ClassNotFoundException ex) { LOG.error("Unable to load class: " + bd.getBeanClassName(), ex); } } } rootContext.refresh(); servletContext.addListener(new ContextLoaderListener(rootContext)); }
From source file:org.openmrs.module.webservices.rest.web.DelegatingCrudResourceTest.java
/** * This test looks at all subclasses of DelegatingCrudResource, and test all {@link RepHandler} * methods to make sure they are all capable of running without exceptions. It also checks that *///from www . j a va 2 s .c om @SuppressWarnings("rawtypes") @Test @Ignore public void testAllReprsentationDescriptions() throws Exception { ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider( true); //only match subclasses of BaseDelegatingResource provider.addIncludeFilter(new AssignableTypeFilter(BaseDelegatingResource.class)); // scan in org.openmrs.module.webservices.rest.web.resource package Set<BeanDefinition> components = provider .findCandidateComponents("org.openmrs.module.webservices.rest.web.resource"); if (CollectionUtils.isEmpty(components)) Assert.fail("Faile to load any resource classes"); for (BeanDefinition component : components) { Class resourceClass = Class.forName(component.getBeanClassName()); for (Method method : ReflectionUtils.getAllDeclaredMethods(resourceClass)) { ParameterizedType parameterizedType = (ParameterizedType) resourceClass.getGenericSuperclass(); Class openmrsClass = (Class) parameterizedType.getActualTypeArguments()[0]; //User Resource is special in that the Actual parameterized Type isn't a standard domain object, so we also //need to look up fields and methods from the org.openmrs.User class boolean isUserResource = resourceClass.equals(UserResource1_8.class); List<Object> refDescriptions = new ArrayList<Object>(); if (method.getName().equals("getRepresentationDescription") && method.getDeclaringClass().equals(resourceClass)) { //get all the rep definitions for all representations refDescriptions .add(method.invoke(resourceClass.newInstance(), new Object[] { Representation.REF })); refDescriptions.add( method.invoke(resourceClass.newInstance(), new Object[] { Representation.DEFAULT })); refDescriptions .add(method.invoke(resourceClass.newInstance(), new Object[] { Representation.FULL })); } for (Object value : refDescriptions) { if (value != null) { DelegatingResourceDescription des = (DelegatingResourceDescription) value; for (String key : des.getProperties().keySet()) { if (!key.equals("uri") && !key.equals("display") && !key.equals("auditInfo")) { boolean hasFieldOrPropertySetter = (ReflectionUtils.findField(openmrsClass, key) != null); if (!hasFieldOrPropertySetter) { hasFieldOrPropertySetter = hasSetterMethod(key, resourceClass); if (!hasFieldOrPropertySetter && isUserResource) hasFieldOrPropertySetter = (ReflectionUtils.findField(User.class, key) != null); } if (!hasFieldOrPropertySetter) hasFieldOrPropertySetter = hasSetterMethod(key, resourceClass); //TODO replace this hacky way that we are using to check if there is a get method for a //collection that has no actual getter e.g activeIdentifers and activeAttributes for Patient if (!hasFieldOrPropertySetter) { hasFieldOrPropertySetter = (ReflectionUtils.findMethod(openmrsClass, "get" + StringUtils.capitalize(key)) != null); if (!hasFieldOrPropertySetter && isUserResource) hasFieldOrPropertySetter = (ReflectionUtils.findMethod(User.class, "get" + StringUtils.capitalize(key)) != null); } if (!hasFieldOrPropertySetter) hasFieldOrPropertySetter = isallowedMissingProperty(resourceClass, key); Assert.assertTrue( "No property found for '" + key + "' for " + openmrsClass + " nor setter method on resource " + resourceClass, hasFieldOrPropertySetter); } } } } } } }
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);/*from ww w . j a v a 2s . c om*/ 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:edu.rit.flick.config.FileArchiverExtensionRegistry.java
/** * Constructs the file archiver extension registry and scans for * FileArchiver classes./* w w w. j a v a 2s . c o m*/ */ private FileArchiverExtensionRegistry() { registry = new HashMap<String, FileDeflatorInflator>(); deflationOptionSets = new ArrayList<DeflationOptionSet>(); inflationOptionSets = new ArrayList<InflationOptionSet>(); final ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider( false) { @Override protected boolean isCandidateComponent(AnnotatedBeanDefinition beanDefinition) { return beanDefinition.getMetadata().isIndependent(); } }; scanner.addIncludeFilter(new AnnotationTypeFilter(RegisterFileDeflatorInflator.class)); for (final BeanDefinition bd : scanner.findCandidateComponents("*")) { try { final Class<?> cl = Class.forName(bd.getBeanClassName()); final RegisterFileDeflatorInflator fileDIP = cl.getAnnotation(RegisterFileDeflatorInflator.class); if (fileDIP != null) registerFileArchiverExtensions(fileDIP); } catch (Exception e) { } } }