Exclude local and anonymous classes from AOT type inspection.
Also update the type filter that would not mach types directly present in the given package. Modify type contribution method to allow store specific override. Closes: #2744 Original pull request: #2746
This commit is contained in:
committed by
Mark Paluch
parent
6fd8ae4917
commit
a2b3615572
@@ -82,11 +82,11 @@ public class RepositoryRegistrationAotProcessor implements BeanRegistrationAotPr
|
||||
|
||||
repositoryContext.getResolvedTypes().stream()
|
||||
.filter(it -> !RepositoryRegistrationAotContribution.isJavaOrPrimitiveType(it))
|
||||
.forEach(it -> RepositoryRegistrationAotProcessor.contributeType(it, generationContext));
|
||||
.forEach(it -> contributeType(it, generationContext));
|
||||
|
||||
repositoryContext.getResolvedAnnotations().stream()
|
||||
.filter(RepositoryRegistrationAotProcessor::isSpringDataManagedAnnotation).map(MergedAnnotation::getType)
|
||||
.forEach(it -> RepositoryRegistrationAotProcessor.contributeType(it, generationContext));
|
||||
.forEach(it -> contributeType(it, generationContext));
|
||||
}
|
||||
|
||||
private boolean isRepositoryBean(RegisteredBean bean) {
|
||||
@@ -167,7 +167,7 @@ public class RepositoryRegistrationAotProcessor implements BeanRegistrationAotPr
|
||||
|| annotation.getMetaTypes().stream().anyMatch(RepositoryRegistrationAotProcessor::isInSpringDataNamespace));
|
||||
}
|
||||
|
||||
private static void contributeType(Class<?> type, GenerationContext generationContext) {
|
||||
protected void contributeType(Class<?> type, GenerationContext generationContext) {
|
||||
TypeContributor.contribute(type, it -> true, generationContext);
|
||||
}
|
||||
|
||||
|
||||
@@ -48,16 +48,18 @@ public class TypeCollector {
|
||||
|
||||
private static final Log logger = LogFactory.getLog(TypeCollector.class);
|
||||
|
||||
static final Set<String> EXCLUDED_DOMAINS = new HashSet<>(Arrays.asList("java", "sun.", "jdk.", "reactor.",
|
||||
"kotlinx.", "kotlin.", "org.springframework.core.", "org.springframework.data.mapping.",
|
||||
"org.springframework.data.repository.", "org.springframework.boot.", "org.springframework.core."));
|
||||
static final Set<String> EXCLUDED_DOMAINS = new HashSet<>(
|
||||
Arrays.asList("java", "sun.", "jdk.", "reactor.", "kotlinx.", "kotlin.", "org.springframework.core.",
|
||||
"org.springframework.data.mapping.", "org.springframework.data.repository.", "org.springframework.boot.",
|
||||
"org.springframework.context.", "org.springframework.beans."));
|
||||
|
||||
private final Predicate<Class<?>> excludedDomainsFilter = type -> {
|
||||
String packageName = type.getPackageName();
|
||||
String packageName = type.getPackageName() + ".";
|
||||
return EXCLUDED_DOMAINS.stream().noneMatch(packageName::startsWith);
|
||||
};
|
||||
|
||||
private Predicate<Class<?>> typeFilter = excludedDomainsFilter;
|
||||
private Predicate<Class<?>> typeFilter = excludedDomainsFilter
|
||||
.and(it -> !it.isLocalClass() && !it.isAnonymousClass());
|
||||
|
||||
private final Predicate<Method> methodFilter = createMethodFilter();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user