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:com.mmnaseri.dragonfly.runtime.lookup.impl.AbstractClassPathScanningLookupSource.java

protected AbstractClassPathScanningLookupSource(ClassLoader classLoader) {
    this(new ClassPathScanningCandidateComponentProvider(false), classLoader);
}

From source file:com.ocs.dynamo.ui.auth.DefaultPermissionCheckerImpl.java

@PostConstruct
public void postConstruct() {

    // scan the class path for all classes annotated with @SpringView
    ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(
            true);// w w w  .jav  a 2  s.co m
    provider.addIncludeFilter(new AnnotationTypeFilter(SpringView.class));

    Set<BeanDefinition> views = provider.findCandidateComponents(basePackage);
    for (BeanDefinition d : views) {
        try {
            Class<?> clazz = Class.forName(d.getBeanClassName());

            SpringView view = clazz.getAnnotation(SpringView.class);

            // store the permissions both under the bean name and the view
            // name - unfortunately these
            // don't always have to match but there is no way to tell this
            // to the authentication framework!
            Authorized auth = clazz.getAnnotation(Authorized.class);
            if (auth != null && auth.roles().length > 0) {
                int p = d.getBeanClassName().lastIndexOf(".");
                permissions.put(d.getBeanClassName().substring(p + 1), Arrays.asList(auth.roles()));
                editOnly.put(d.getBeanClassName().substring(p + 1), auth.editOnly());

                permissions.put(view.name(), Arrays.asList(auth.roles()));
                editOnly.put(view.name(), auth.editOnly());
            }
        } catch (ClassNotFoundException e) {
            LOG.error(e.getMessage(), e);
        }
    }
}

From source file:org.openmrs.module.kenyacore.calculation.CalculationManager.java

/**
 * @see org.openmrs.module.kenyacore.ContentManager#refresh()
 *//*from  ww  w  . j ava 2 s .  co  m*/
@Override
public synchronized void refresh() {
    calculationClasses.clear();
    flagCalculationClasses.clear();

    ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(
            false);
    scanner.addIncludeFilter(new AssignableTypeFilter(PatientCalculation.class));

    for (BeanDefinition bd : scanner.findCandidateComponents("org.openmrs.module")) {
        try {
            Class<? extends PatientCalculation> clazz = (Class<? extends PatientCalculation>) Context
                    .loadClass(bd.getBeanClassName());
            calculationClasses.put(bd.getBeanClassName(), clazz);

            if (PatientFlagCalculation.class.isAssignableFrom(clazz)) {
                flagCalculationClasses.add((Class<? extends PatientFlagCalculation>) clazz);
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        log.debug("Registered calculation class " + bd.getBeanClassName());
    }
}

From source file:com.springinpractice.ch11.oxm.ClasspathScanningJaxb2Marshaller.java

/**
 * @return/*  www  . j ava2  s . c o  m*/
 * @throws Exception
 */
private Class<?>[] getXmlRootElementClasses() throws Exception {
    ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(
            false);
    scanner.addIncludeFilter(new AnnotationTypeFilter(XmlRootElement.class));

    List<Class<?>> classes = new ArrayList<Class<?>>();
    for (String basePackage : basePackages) {
        Set<BeanDefinition> definitions = scanner.findCandidateComponents(basePackage);
        for (BeanDefinition definition : definitions) {
            String className = definition.getBeanClassName();
            log.info("Found class: {}", className);
            classes.add(Class.forName(className));
        }
    }

    return classes.toArray(new Class<?>[0]);
}

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
 *//* w  w  w.jav  a 2s  .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:io.gravitee.repository.mongodb.common.AbstractRepositoryConfiguration.java

protected Set<Class<?>> getInitialEntitySet() throws ClassNotFoundException {

    String basePackage = getMappingBasePackage();
    Set<Class<?>> initialEntitySet = new HashSet<Class<?>>();

    if (StringUtils.hasText(basePackage)) {
        ClassPathScanningCandidateComponentProvider componentProvider = new ClassPathScanningCandidateComponentProvider(
                false);//from ww  w  .  java 2  s  . c  o m
        componentProvider.addIncludeFilter(new AnnotationTypeFilter(Document.class));
        componentProvider.addIncludeFilter(new AnnotationTypeFilter(Persistent.class));

        for (BeanDefinition candidate : componentProvider.findCandidateComponents(basePackage)) {
            initialEntitySet
                    .add(ClassUtils.forName(candidate.getBeanClassName(), this.getClass().getClassLoader()));
        }
    }

    return initialEntitySet;
}

From source file:com.reactive.hzdfs.utils.EntityFinder.java

/**
 * //from   w w w .  j  av a2 s  .  com
 * @param basePkg
 * @return
 * @throws ClassNotFoundException
 */
public static Collection<Class<?>> findMapEntityClasses(String basePkg) throws ClassNotFoundException {
    ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(
            false);
    provider.addIncludeFilter(new TypeFilter() {

        @Override
        public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory)
                throws IOException {
            AnnotationMetadata aMeta = metadataReader.getAnnotationMetadata();
            return aMeta.hasAnnotation(IMapConfig.class.getName());
        }
    });

    return findComponents(provider, basePkg);

}

From source file:com.reactivetechnologies.analytics.mapper.DataMappers.java

DataMappers() {
    scanner = new ClassPathScanningCandidateComponentProvider(false);
    scanner.addIncludeFilter(new TypeFilter() {

        @Override/*w  w  w  .  j  a  v  a2s.co m*/
        public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory)
                throws IOException {
            if (metadataReader.getClassMetadata().getClassName().equals(DataMappers.class.getName()))
                return false;
            String[] iFaces = metadataReader.getClassMetadata().getInterfaceNames();
            Arrays.sort(iFaces);
            return Arrays.binarySearch(iFaces, DataMapper.class.getName()) >= 0;
        }
    });

    Set<BeanDefinition> set = scanner.findCandidateComponents(ClassUtils.getPackageName(DataMapper.class));
    if (set.isEmpty()) {
        throw new BeanCreationException("No data mapper implementation classes could be found under package ["
                + ClassUtils.getPackageName(DataMapper.class) + "]");
    }
    for (BeanDefinition bd : set) {
        try {
            DataMapper dm = (DataMapper) ObjenesisHelper.newInstance(Class.forName(bd.getBeanClassName()));
            cache.put(dm.type(), dm);
            log.debug("Found data mapper:: Type [" + dm.type() + "] \t" + dm.getClass());
        } catch (ClassNotFoundException e) {
            throw new BeanCreationException("Unable to instantiate data mapper class", e);
        }

    }
}

From source file:com.newtranx.util.cassandra.spring.AccessorScannerConfigurer.java

@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory context) throws BeansException {
    ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(
            false) {// ww w  .j  ava  2 s . c o m

        @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.github.javarch.persistence.orm.hibernate.spi.multitenant.CurrentTenantIdentifierFinder.java

@Override
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {

    String connectionProvidersPackage = env
            .getProperty(HibernateEnviroment.CURRENT_TENANT_IDENTIFIER_RESOLVER_PACKAGE, "");
    LOGGER.debug("Buscando @CurrentTenantIdentifierResolver no pacote {}", connectionProvidersPackage);

    ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(
            false);//from   w w  w .  jav a  2 s .  com
    scanner.addIncludeFilter(new AnnotationTypeFilter(CurrentTenantIdentifierResolver.class));

    Set<BeanDefinition> beanDefinitions = scanner.findCandidateComponents(connectionProvidersPackage);
    if (beanDefinitions.isEmpty()) {
        Set<BeanDefinition> defaultBeanDefinition = scanner
                .findCandidateComponents("com.github.javarch.persistence.orm.hibernate.spi.multitenant");
        registrarBeanDefinitions(registry, defaultBeanDefinition);
    } else {
        registrarBeanDefinitions(registry, beanDefinitions);
    }

}