Browse Source

DATACMNS-1370 - Avoid superflous, regex-based type check while scanning for custom implementations.

pull/313/head
Oliver Gierke 7 years ago
parent
commit
33a138d30e
  1. 7
      src/main/java/org/springframework/data/repository/config/CustomRepositoryImplementationDetector.java

7
src/main/java/org/springframework/data/repository/config/CustomRepositoryImplementationDetector.java

@ -22,7 +22,6 @@ import java.util.Collection;
import java.util.Optional; import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.function.Function; import java.util.function.Function;
import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@ -33,7 +32,6 @@ import org.springframework.context.annotation.ClassPathScanningCandidateComponen
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import org.springframework.core.io.ResourceLoader; import org.springframework.core.io.ResourceLoader;
import org.springframework.core.type.classreading.MetadataReaderFactory; import org.springframework.core.type.classreading.MetadataReaderFactory;
import org.springframework.core.type.filter.RegexPatternTypeFilter;
import org.springframework.core.type.filter.TypeFilter; import org.springframework.core.type.filter.TypeFilter;
import org.springframework.data.util.Streamable; import org.springframework.data.util.Streamable;
import org.springframework.util.Assert; import org.springframework.util.Assert;
@ -51,7 +49,7 @@ import org.springframework.util.Assert;
@RequiredArgsConstructor @RequiredArgsConstructor
public class CustomRepositoryImplementationDetector { public class CustomRepositoryImplementationDetector {
private static final String CUSTOM_IMPLEMENTATION_RESOURCE_PATTERN = "**/*%s.class"; private static final String CUSTOM_IMPLEMENTATION_RESOURCE_PATTERN = "**/%s.class";
private static final String AMBIGUOUS_CUSTOM_IMPLEMENTATIONS = "Ambiguous custom implementations detected! Found %s but expected a single implementation!"; private static final String AMBIGUOUS_CUSTOM_IMPLEMENTATIONS = "Ambiguous custom implementations detected! Found %s but expected a single implementation!";
private final @NonNull MetadataReaderFactory metadataReaderFactory; private final @NonNull MetadataReaderFactory metadataReaderFactory;
@ -106,7 +104,6 @@ public class CustomRepositoryImplementationDetector {
Iterable<TypeFilter> excludeFilters) { Iterable<TypeFilter> excludeFilters) {
// Build pattern to lookup implementation class // Build pattern to lookup implementation class
Pattern pattern = Pattern.compile(".*\\." + className);
// Build classpath scanner and lookup bean definition // Build classpath scanner and lookup bean definition
ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false, ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false,
@ -114,7 +111,7 @@ public class CustomRepositoryImplementationDetector {
provider.setResourceLoader(resourceLoader); provider.setResourceLoader(resourceLoader);
provider.setResourcePattern(String.format(CUSTOM_IMPLEMENTATION_RESOURCE_PATTERN, className)); provider.setResourcePattern(String.format(CUSTOM_IMPLEMENTATION_RESOURCE_PATTERN, className));
provider.setMetadataReaderFactory(metadataReaderFactory); provider.setMetadataReaderFactory(metadataReaderFactory);
provider.addIncludeFilter(new RegexPatternTypeFilter(pattern)); provider.addIncludeFilter((reader, factory) -> true);
excludeFilters.forEach(it -> provider.addExcludeFilter(it)); excludeFilters.forEach(it -> provider.addExcludeFilter(it));

Loading…
Cancel
Save