Search in sources :

Example 26 with AssignableTypeFilter

use of org.springframework.core.type.filter.AssignableTypeFilter in project spring-boot by spring-projects.

the class AnnotationCustomizableTypeExcludeFilter method isTypeOrAnnotated.

@SuppressWarnings("unchecked")
protected final boolean isTypeOrAnnotated(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory, Class<?> type) throws IOException {
    AnnotationTypeFilter annotationFilter = new AnnotationTypeFilter((Class<? extends Annotation>) type);
    AssignableTypeFilter typeFilter = new AssignableTypeFilter(type);
    return annotationFilter.match(metadataReader, metadataReaderFactory) || typeFilter.match(metadataReader, metadataReaderFactory);
}
Also used : AnnotationTypeFilter(org.springframework.core.type.filter.AnnotationTypeFilter) AssignableTypeFilter(org.springframework.core.type.filter.AssignableTypeFilter)

Example 27 with AssignableTypeFilter

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

the class MagicalMaterialAndMaterialConfigConversionTest method failIfNewTypeOfMaterialIsNotAddedInTheAboveTest.

@Test
public void failIfNewTypeOfMaterialIsNotAddedInTheAboveTest() {
    ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
    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 = testMaterials().map(MaterialConfig::getClass).collect(Collectors.toList());
    assertThatAllMaterialConfigsInCodeAreTestedHere(reflectionsSubTypesOf, allExpectedMaterialConfigImplementations);
}
Also used : HgUrlArgument(com.thoughtworks.go.util.command.HgUrlArgument) java.util(java.util) PluggableSCMMaterialConfig(com.thoughtworks.go.config.materials.PluggableSCMMaterialConfig) GitMaterialConfig(com.thoughtworks.go.config.materials.git.GitMaterialConfig) Material(com.thoughtworks.go.domain.materials.Material) PackageDefinition(com.thoughtworks.go.domain.packagerepository.PackageDefinition) PackageRepositoryMother(com.thoughtworks.go.domain.packagerepository.PackageRepositoryMother) GoCipher(com.thoughtworks.go.security.GoCipher) MaterialConfig(com.thoughtworks.go.domain.materials.MaterialConfig) PackageRepository(com.thoughtworks.go.domain.packagerepository.PackageRepository) MaterialInstance(com.thoughtworks.go.domain.MaterialInstance) FilterMother.filterFor(com.thoughtworks.go.helper.FilterMother.filterFor) Configuration(com.thoughtworks.go.domain.config.Configuration) ToStringBuilder.reflectionToString(org.apache.commons.lang3.builder.ToStringBuilder.reflectionToString) HgMaterialConfig(com.thoughtworks.go.config.materials.mercurial.HgMaterialConfig) BeanDefinition(org.springframework.beans.factory.config.BeanDefinition) P4MaterialConfig(com.thoughtworks.go.config.materials.perforce.P4MaterialConfig) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) ReflectionUtil(com.thoughtworks.go.util.ReflectionUtil) PasswordAwareMaterial(com.thoughtworks.go.config.materials.PasswordAwareMaterial) MethodSource(org.junit.jupiter.params.provider.MethodSource) UrlArgument(com.thoughtworks.go.util.command.UrlArgument) TfsMaterialConfig(com.thoughtworks.go.config.materials.tfs.TfsMaterialConfig) DependencyMaterialConfig(com.thoughtworks.go.config.materials.dependency.DependencyMaterialConfig) SCM(com.thoughtworks.go.domain.scm.SCM) ClassPathScanningCandidateComponentProvider(org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider) SCMMother(com.thoughtworks.go.domain.scm.SCMMother) Matchers(org.hamcrest.Matchers) SvnMaterialConfig(com.thoughtworks.go.config.materials.svn.SvnMaterialConfig) PackageDefinitionMother(com.thoughtworks.go.domain.packagerepository.PackageDefinitionMother) PackageMaterialConfig(com.thoughtworks.go.config.materials.PackageMaterialConfig) Collectors(java.util.stream.Collectors) EqualsBuilder.reflectionEquals(org.apache.commons.lang3.builder.EqualsBuilder.reflectionEquals) MaterialConfigsMother(com.thoughtworks.go.helper.MaterialConfigsMother) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) Stream(java.util.stream.Stream) Modifier(java.lang.reflect.Modifier) Assertions.assertTrue(org.junit.jupiter.api.Assertions.assertTrue) CaseInsensitiveString(com.thoughtworks.go.config.CaseInsensitiveString) Pattern(java.util.regex.Pattern) ConfigurationPropertyMother.create(com.thoughtworks.go.domain.packagerepository.ConfigurationPropertyMother.create) AssignableTypeFilter(org.springframework.core.type.filter.AssignableTypeFilter) ClassPathScanningCandidateComponentProvider(org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider) PluggableSCMMaterialConfig(com.thoughtworks.go.config.materials.PluggableSCMMaterialConfig) GitMaterialConfig(com.thoughtworks.go.config.materials.git.GitMaterialConfig) MaterialConfig(com.thoughtworks.go.domain.materials.MaterialConfig) HgMaterialConfig(com.thoughtworks.go.config.materials.mercurial.HgMaterialConfig) P4MaterialConfig(com.thoughtworks.go.config.materials.perforce.P4MaterialConfig) TfsMaterialConfig(com.thoughtworks.go.config.materials.tfs.TfsMaterialConfig) DependencyMaterialConfig(com.thoughtworks.go.config.materials.dependency.DependencyMaterialConfig) SvnMaterialConfig(com.thoughtworks.go.config.materials.svn.SvnMaterialConfig) PackageMaterialConfig(com.thoughtworks.go.config.materials.PackageMaterialConfig) BeanDefinition(org.springframework.beans.factory.config.BeanDefinition) AssignableTypeFilter(org.springframework.core.type.filter.AssignableTypeFilter) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 28 with AssignableTypeFilter

use of org.springframework.core.type.filter.AssignableTypeFilter in project eventapis by kloiasoft.

the class AutomaticTopicConfiguration method init.

@PostConstruct
public void init() {
    AdminClient adminClient = adminClient();
    try {
        StopWatch stopWatch = new StopWatch("CheckAndCreateTopics");
        stopWatch.start("CheckAndCreateTopics");
        ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
        provider.addIncludeFilter(new AssignableTypeFilter(PublishedEvent.class));
        // provider.addExcludeFilter(new AssignableTypeFilter(ReceivedEvent.class));
        Set<BeanDefinition> candidateComponents = provider.findCandidateComponents(eventApisConfiguration.getBaseEventsPackage());
        int numberOfNodes = 1;
        try {
            Collection<Node> nodes = adminClient.describeCluster().nodes().get();
            numberOfNodes = nodes.size();
        } catch (InterruptedException | ExecutionException e) {
            log.warn("Error while finding number of Nodes:" + e.getMessage(), e);
        }
        for (BeanDefinition candidateComponent : candidateComponents) {
            Class<PublishedEvent> beanClass;
            try {
                beanClass = (Class<PublishedEvent>) Class.forName(candidateComponent.getBeanClassName());
                String topicName = beanClass.getSimpleName();
                log.info("Candidate {} to Create Topic:", topicName);
                try {
                    adminClient.describeTopics(Collections.singleton(topicName)).all().get();
                } catch (UnknownTopicOrPartitionException | ExecutionException exception) {
                    if (!(exception.getCause() instanceof UnknownTopicOrPartitionException))
                        throw exception;
                    log.warn("Topic {} does not exists, trying to create", topicName);
                    try {
                        adminClient.createTopics(Collections.singleton(new NewTopic(topicName, numberOfNodes, (short) 1)));
                        log.info("Topic {} is Created Successfully:", topicName);
                    } catch (Exception topicCreationEx) {
                        log.warn("Error while creating Topic:" + topicCreationEx.getMessage(), topicCreationEx);
                    }
                }
            } catch (ClassNotFoundException | InterruptedException | ExecutionException exception) {
                log.warn("Error while checking Topic:" + candidateComponent.toString() + " message: " + exception.getMessage(), exception);
            }
        }
        stopWatch.stop();
        log.debug(stopWatch.prettyPrint());
    } finally {
        adminClient.close();
    }
}
Also used : Node(org.apache.kafka.common.Node) UnknownTopicOrPartitionException(org.apache.kafka.common.errors.UnknownTopicOrPartitionException) BeanDefinition(org.springframework.beans.factory.config.BeanDefinition) PublishedEvent(com.kloia.eventapis.common.PublishedEvent) ExecutionException(java.util.concurrent.ExecutionException) UnknownTopicOrPartitionException(org.apache.kafka.common.errors.UnknownTopicOrPartitionException) StopWatch(org.springframework.util.StopWatch) ClassPathScanningCandidateComponentProvider(org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider) NewTopic(org.apache.kafka.clients.admin.NewTopic) ExecutionException(java.util.concurrent.ExecutionException) AdminClient(org.apache.kafka.clients.admin.AdminClient) AssignableTypeFilter(org.springframework.core.type.filter.AssignableTypeFilter) PostConstruct(javax.annotation.PostConstruct)

Example 29 with AssignableTypeFilter

use of org.springframework.core.type.filter.AssignableTypeFilter in project spring-framework by spring-projects.

the class ClassPathScanningCandidateComponentProviderTests method testWithInterfaceType.

@Test
public void testWithInterfaceType() {
    ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
    provider.addIncludeFilter(new AssignableTypeFilter(FooDao.class));
    Set<BeanDefinition> candidates = provider.findCandidateComponents(TEST_BASE_PACKAGE);
    assertThat(candidates.size()).isEqualTo(1);
    assertThat(containsBeanClass(candidates, StubFooDao.class)).isTrue();
}
Also used : BeanDefinition(org.springframework.beans.factory.config.BeanDefinition) StubFooDao(example.scannable.StubFooDao) FooDao(example.scannable.FooDao) AssignableTypeFilter(org.springframework.core.type.filter.AssignableTypeFilter) Test(org.junit.jupiter.api.Test)

Example 30 with AssignableTypeFilter

use of org.springframework.core.type.filter.AssignableTypeFilter in project spring-framework by spring-projects.

the class ClassPathScanningCandidateComponentProviderTests method testCustomAssignableTypeIncludeFilter.

private void testCustomAssignableTypeIncludeFilter(ClassPathScanningCandidateComponentProvider provider) {
    provider.addIncludeFilter(new AssignableTypeFilter(FooService.class));
    Set<BeanDefinition> candidates = provider.findCandidateComponents(TEST_BASE_PACKAGE);
    // Interfaces/Abstract class are filtered out automatically.
    assertThat(containsBeanClass(candidates, AutowiredQualifierFooService.class)).isTrue();
    assertThat(containsBeanClass(candidates, FooServiceImpl.class)).isTrue();
    assertThat(containsBeanClass(candidates, ScopedProxyTestBean.class)).isTrue();
    assertThat(candidates.size()).isEqualTo(3);
    assertBeanDefinitionType(candidates);
}
Also used : AutowiredQualifierFooService(example.scannable.AutowiredQualifierFooService) FooService(example.scannable.FooService) BeanDefinition(org.springframework.beans.factory.config.BeanDefinition) AssignableTypeFilter(org.springframework.core.type.filter.AssignableTypeFilter)

Aggregations

AssignableTypeFilter (org.springframework.core.type.filter.AssignableTypeFilter)36 BeanDefinition (org.springframework.beans.factory.config.BeanDefinition)20 ClassPathScanningCandidateComponentProvider (org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider)14 Test (org.junit.jupiter.api.Test)13 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 Test (org.junit.Test)3 AnnotatedComponent (example.gh24375.AnnotatedComponent)2 DevComponent (example.profilescan.DevComponent)2 ProfileAnnotatedComponent (example.profilescan.ProfileAnnotatedComponent)2