use of org.springframework.core.type.filter.TypeFilter in project spring-data-commons by spring-projects.
the class TypeFilterParserUnitTests method parsesExcludesCorrectly.
@Test
public void parsesExcludesCorrectly() throws Exception {
Element element = DomUtils.getChildElementByTagName(documentElement, "secondSample");
Iterable<TypeFilter> filters = parser.parseTypeFilters(element, Type.EXCLUDE);
assertThat(filters).hasAtLeastOneElementOfType(AssignableTypeFilter.class);
}
use of org.springframework.core.type.filter.TypeFilter in project spring-data-commons by spring-projects.
the class TypeFilterParserUnitTests method parsesIncludesCorrectly.
@Test
public void parsesIncludesCorrectly() throws Exception {
Element element = DomUtils.getChildElementByTagName(documentElement, "firstSample");
Iterable<TypeFilter> filters = parser.parseTypeFilters(element, Type.INCLUDE);
assertThat(filters).hasAtLeastOneElementOfType(AssignableTypeFilter.class);
}
use of org.springframework.core.type.filter.TypeFilter in project spring-data-commons by spring-projects.
the class FragmentMetadata method getExclusions.
/**
* Returns the exclusions to be used when scanning for fragment implementations.
*
* @return
*/
public List<TypeFilter> getExclusions() {
Stream<TypeFilter> configurationExcludes = configuration.getExcludeFilters().stream();
Stream<AnnotationTypeFilter> noRepositoryBeans = Stream.of(new AnnotationTypeFilter(NoRepositoryBean.class));
return Stream.concat(configurationExcludes, noRepositoryBeans).collect(StreamUtils.toUnmodifiableList());
}
use of org.springframework.core.type.filter.TypeFilter in project spring-data-commons by spring-projects.
the class CustomRepositoryImplementationDetector method findCandidateBeanDefinitions.
Set<BeanDefinition> findCandidateBeanDefinitions(String className, Iterable<String> basePackages, Iterable<TypeFilter> excludeFilters) {
// Build pattern to lookup implementation class
Pattern pattern = Pattern.compile(".*\\." + className);
// Build classpath scanner and lookup bean definition
ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false, environment);
provider.setResourceLoader(resourceLoader);
provider.setResourcePattern(String.format(CUSTOM_IMPLEMENTATION_RESOURCE_PATTERN, className));
provider.setMetadataReaderFactory(metadataReaderFactory);
provider.addIncludeFilter(new RegexPatternTypeFilter(pattern));
excludeFilters.forEach(it -> provider.addExcludeFilter(it));
return //
Streamable.of(basePackages).stream().flatMap(//
it -> provider.findCandidateComponents(it).stream()).collect(Collectors.toSet());
}
use of org.springframework.core.type.filter.TypeFilter in project spring-data-commons by spring-projects.
the class RepositoryComponentProvider method addIncludeFilter.
/**
* Custom extension of {@link #addIncludeFilter(TypeFilter)} to extend the added {@link TypeFilter}. For the
* {@link TypeFilter} handed we'll have two filters registered: one additionally enforcing the
* {@link RepositoryDefinition} annotation, the other one forcing the extension of {@link Repository}.
*
* @see ClassPathScanningCandidateComponentProvider#addIncludeFilter(TypeFilter)
*/
@Override
public void addIncludeFilter(TypeFilter includeFilter) {
List<TypeFilter> filterPlusInterface = new ArrayList<>(2);
filterPlusInterface.add(includeFilter);
filterPlusInterface.add(new InterfaceTypeFilter(Repository.class));
super.addIncludeFilter(new AllTypeFilter(filterPlusInterface));
List<TypeFilter> filterPlusAnnotation = new ArrayList<>(2);
filterPlusAnnotation.add(includeFilter);
filterPlusAnnotation.add(new AnnotationTypeFilter(RepositoryDefinition.class, true, true));
super.addIncludeFilter(new AllTypeFilter(filterPlusAnnotation));
}
Aggregations