Search in sources :

Example 1 with AssignableTypeFilter

use of org.springframework.core.type.filter.AssignableTypeFilter in project opennms by OpenNMS.

the class Upgrade method getUpgradeObjects.

/**
 * Gets the upgrade objects.
 *
 * @return the upgrade objects
 * @throws OnmsUpgradeException the OpenNMS upgrade exception
 */
protected List<OnmsUpgrade> getUpgradeObjects() throws OnmsUpgradeException {
    List<OnmsUpgrade> upgrades = new ArrayList<>();
    try {
        ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(true);
        provider.addIncludeFilter(new AssignableTypeFilter(OnmsUpgrade.class));
        Set<BeanDefinition> components = provider.findCandidateComponents(getClassScope());
        for (BeanDefinition component : components) {
            if (component.isAbstract()) {
                continue;
            }
            Class<?> cls = Class.forName(component.getBeanClassName());
            if (cls.getAnnotation(Ignore.class) != null) {
                continue;
            }
            OnmsUpgrade upgrade = (OnmsUpgrade) cls.newInstance();
            upgrades.add(upgrade);
            log("Found upgrade task %s\n", upgrade.getId());
        }
        Collections.sort(upgrades, new OnmsUpgradeComparator());
    } catch (Exception e) {
        throw new OnmsUpgradeException("  Can't find the upgrade classes because: " + e.getMessage(), e);
    }
    return upgrades;
}
Also used : Ignore(org.opennms.upgrade.api.Ignore) ClassPathScanningCandidateComponentProvider(org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider) ArrayList(java.util.ArrayList) OnmsUpgrade(org.opennms.upgrade.api.OnmsUpgrade) BeanDefinition(org.springframework.beans.factory.config.BeanDefinition) OnmsUpgradeComparator(org.opennms.upgrade.api.OnmsUpgradeComparator) OnmsUpgradeException(org.opennms.upgrade.api.OnmsUpgradeException) OnmsUpgradeException(org.opennms.upgrade.api.OnmsUpgradeException) AssignableTypeFilter(org.springframework.core.type.filter.AssignableTypeFilter)

Example 2 with AssignableTypeFilter

use of org.springframework.core.type.filter.AssignableTypeFilter in project flow by vaadin.

the class VaadinServletContextInitializer method findBySuperType.

private Stream<Class<?>> findBySuperType(Collection<String> packages, Class<?> type) {
    ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false);
    scanner.setResourceLoader(appContext);
    scanner.addIncludeFilter(new AssignableTypeFilter(type));
    return packages.stream().map(scanner::findCandidateComponents).flatMap(set -> set.stream()).map(this::getBeanClass);
}
Also used : Arrays(java.util.Arrays) Component(com.vaadin.flow.component.Component) ServletException(javax.servlet.ServletException) HandlesTypes(javax.servlet.annotation.HandlesTypes) LoggerFactory(org.slf4j.LoggerFactory) AbstractRouteRegistryInitializer(com.vaadin.flow.server.startup.AbstractRouteRegistryInitializer) AbstractBeanDefinition(org.springframework.beans.factory.support.AbstractBeanDefinition) Route(com.vaadin.flow.router.Route) RouteAlias(com.vaadin.flow.router.RouteAlias) ServletContainerInitializer(javax.servlet.ServletContainerInitializer) AbstractAnnotationValidator(com.vaadin.flow.server.startup.AbstractAnnotationValidator) Tag(com.vaadin.flow.component.Tag) ServletVerifier(com.vaadin.flow.server.startup.ServletVerifier) VaadinScanPackages(com.vaadin.flow.spring.VaadinScanPackagesRegistrar.VaadinScanPackages) BeanDefinition(org.springframework.beans.factory.config.BeanDefinition) HasErrorParameter(com.vaadin.flow.router.HasErrorParameter) ServletContextListener(javax.servlet.ServletContextListener) ServletContextInitializer(org.springframework.boot.web.servlet.ServletContextInitializer) AnnotationTypeFilter(org.springframework.core.type.filter.AnnotationTypeFilter) CustomElementRegistry(com.vaadin.flow.server.startup.CustomElementRegistry) Collection(java.util.Collection) ClassPathScanningCandidateComponentProvider(org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider) Set(java.util.Set) AutoConfigurationPackages(org.springframework.boot.autoconfigure.AutoConfigurationPackages) Collectors(java.util.stream.Collectors) ApplicationContext(org.springframework.context.ApplicationContext) InvalidRouteConfigurationException(com.vaadin.flow.server.InvalidRouteConfigurationException) List(java.util.List) Stream(java.util.stream.Stream) ServletContextEvent(javax.servlet.ServletContextEvent) RouteRegistry(com.vaadin.flow.server.startup.RouteRegistry) Annotation(java.lang.annotation.Annotation) AnnotationValidator(com.vaadin.flow.server.startup.AnnotationValidator) ServletContext(javax.servlet.ServletContext) AbstractCustomElementRegistryInitializer(com.vaadin.flow.server.startup.AbstractCustomElementRegistryInitializer) Collections(java.util.Collections) AssignableTypeFilter(org.springframework.core.type.filter.AssignableTypeFilter) ClassPathScanningCandidateComponentProvider(org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider) AssignableTypeFilter(org.springframework.core.type.filter.AssignableTypeFilter)

Example 3 with AssignableTypeFilter

use of org.springframework.core.type.filter.AssignableTypeFilter in project invesdwin-context-persistence by subes.

the class JpaRepositoryScanContextLocation method scanForJpaRepositories.

private Map<Class<?>, Set<Class<?>>> scanForJpaRepositories(final String basePackage) {
    final Map<Class<?>, Set<Class<?>>> jpaRepositories = new HashMap<Class<?>, Set<Class<?>>>();
    final ClassPathScanner scanner = new ClassPathScanner().withInterfacesOnly();
    scanner.addIncludeFilter(new AssignableTypeFilter(JpaRepository.class));
    final Set<BeanDefinition> candidateComponents = scanner.findCandidateComponents(basePackage);
    for (final BeanDefinition bd : candidateComponents) {
        final String beanClassName = bd.getBeanClassName();
        final Class<?> repositoryClass = Reflections.classForName(beanClassName);
        if (!IDao.class.isAssignableFrom(repositoryClass)) {
            final Class<?>[] typeArguments = Reflections.resolveTypeArguments(repositoryClass, JpaRepository.class);
            Assertions.assertThat(typeArguments.length).isEqualTo(2);
            final Class<?> entity = typeArguments[0];
            Set<Class<?>> set = jpaRepositories.get(entity);
            if (set == null) {
                set = new HashSet<Class<?>>();
                jpaRepositories.put(entity, set);
            }
            Assertions.assertThat(set.add(repositoryClass)).isTrue();
        }
    }
    return jpaRepositories;
}
Also used : HashSet(java.util.HashSet) Set(java.util.Set) HashMap(java.util.HashMap) IDao(de.invesdwin.context.persistence.jpa.api.dao.IDao) BeanDefinition(org.springframework.beans.factory.config.BeanDefinition) ClassPathScanner(de.invesdwin.util.classpath.ClassPathScanner) JpaRepository(org.springframework.data.jpa.repository.JpaRepository) AssignableTypeFilter(org.springframework.core.type.filter.AssignableTypeFilter)

Example 4 with AssignableTypeFilter

use of org.springframework.core.type.filter.AssignableTypeFilter in project nzbhydra2 by theotherp.

the class ConfigMigration method getMigrationSteps.

protected static List<ConfigMigrationStep> getMigrationSteps() {
    ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
    provider.addIncludeFilter(new AssignableTypeFilter(ConfigMigrationStep.class));
    Set<BeanDefinition> candidates = provider.findCandidateComponents(ConfigMigrationStep.class.getPackage().getName());
    List<ConfigMigrationStep> steps = new ArrayList<>();
    for (BeanDefinition beanDefinition : candidates) {
        try {
            ConfigMigrationStep instance = (ConfigMigrationStep) Class.forName(beanDefinition.getBeanClassName()).getConstructor().newInstance();
            steps.add(instance);
        } catch (Exception e) {
            logger.error("Unable to instantiate migration step from class " + beanDefinition.getBeanClassName(), e);
        }
    }
    Collections.sort(steps);
    return steps;
}
Also used : ClassPathScanningCandidateComponentProvider(org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider) BeanDefinition(org.springframework.beans.factory.config.BeanDefinition) YAMLException(org.yaml.snakeyaml.error.YAMLException) AssignableTypeFilter(org.springframework.core.type.filter.AssignableTypeFilter)

Example 5 with AssignableTypeFilter

use of org.springframework.core.type.filter.AssignableTypeFilter in project kork by spinnaker.

the class ObjectMapperSubtypeConfigurer method findSubtypes.

private NamedType[] findSubtypes(Class<?> clazz, String pkg) {
    ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
    provider.addIncludeFilter(new AssignableTypeFilter(clazz));
    return provider.findCandidateComponents(pkg).stream().map(bean -> {
        Class<?> cls = ClassUtils.resolveClassName(bean.getBeanClassName(), ClassUtils.getDefaultClassLoader());
        JsonTypeName nameAnnotation = cls.getAnnotation(JsonTypeName.class);
        if (nameAnnotation == null || "".equals(nameAnnotation.value())) {
            String message = "Subtype " + cls.getSimpleName() + " does not have a JsonTypeName annotation";
            if (strictSerialization) {
                throw new InvalidSubtypeConfigurationException(message);
            }
            log.warn(message);
            return null;
        }
        return new NamedType(cls, nameAnnotation.value());
    }).filter(Objects::nonNull).toArray(NamedType[]::new);
}
Also used : JsonTypeName(com.fasterxml.jackson.annotation.JsonTypeName) ClassPathScanningCandidateComponentProvider(org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider) NamedType(com.fasterxml.jackson.databind.jsontype.NamedType) AssignableTypeFilter(org.springframework.core.type.filter.AssignableTypeFilter)

Aggregations

AssignableTypeFilter (org.springframework.core.type.filter.AssignableTypeFilter)33 BeanDefinition (org.springframework.beans.factory.config.BeanDefinition)17 Test (org.junit.jupiter.api.Test)13 ClassPathScanningCandidateComponentProvider (org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider)12 AnnotationTypeFilter (org.springframework.core.type.filter.AnnotationTypeFilter)9 FooService (example.scannable.FooService)6 Annotation (java.lang.annotation.Annotation)5 ArrayList (java.util.ArrayList)4 MetadataReader (org.springframework.core.type.classreading.MetadataReader)4 MetadataReaderFactory (org.springframework.core.type.classreading.MetadataReaderFactory)4 SimpleMetadataReaderFactory (org.springframework.core.type.classreading.SimpleMetadataReaderFactory)4 AspectJTypeFilter (org.springframework.core.type.filter.AspectJTypeFilter)4 RegexPatternTypeFilter (org.springframework.core.type.filter.RegexPatternTypeFilter)4 TypeFilter (org.springframework.core.type.filter.TypeFilter)4 AutowiredQualifierFooService (example.scannable.AutowiredQualifierFooService)3 FooServiceImpl (example.scannable.FooServiceImpl)3 AnnotatedComponent (example.gh24375.AnnotatedComponent)2 DevComponent (example.profilescan.DevComponent)2 ProfileAnnotatedComponent (example.profilescan.ProfileAnnotatedComponent)2 ProfileMetaAnnotatedComponent (example.profilescan.ProfileMetaAnnotatedComponent)2