Skip to content

Commit 0e2fb7e

Browse files
christophstroblmp911de
authored andcommitted
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
1 parent b417268 commit 0e2fb7e

File tree

3 files changed

+15
-8
lines changed

3 files changed

+15
-8
lines changed

src/main/java/org/springframework/data/repository/config/RepositoryRegistrationAotProcessor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,11 @@ protected void contribute(AotRepositoryContext repositoryContext, GenerationCont
8282

8383
repositoryContext.getResolvedTypes().stream()
8484
.filter(it -> !RepositoryRegistrationAotContribution.isJavaOrPrimitiveType(it))
85-
.forEach(it -> RepositoryRegistrationAotProcessor.contributeType(it, generationContext));
85+
.forEach(it -> contributeType(it, generationContext));
8686

8787
repositoryContext.getResolvedAnnotations().stream()
8888
.filter(RepositoryRegistrationAotProcessor::isSpringDataManagedAnnotation).map(MergedAnnotation::getType)
89-
.forEach(it -> RepositoryRegistrationAotProcessor.contributeType(it, generationContext));
89+
.forEach(it -> contributeType(it, generationContext));
9090
}
9191

9292
private boolean isRepositoryBean(RegisteredBean bean) {
@@ -167,7 +167,7 @@ private static boolean isSpringDataManagedAnnotation(@Nullable MergedAnnotation<
167167
|| annotation.getMetaTypes().stream().anyMatch(RepositoryRegistrationAotProcessor::isInSpringDataNamespace));
168168
}
169169

170-
private static void contributeType(Class<?> type, GenerationContext generationContext) {
170+
protected void contributeType(Class<?> type, GenerationContext generationContext) {
171171
TypeContributor.contribute(type, it -> true, generationContext);
172172
}
173173

src/main/java/org/springframework/data/util/TypeCollector.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,16 +48,18 @@ public class TypeCollector {
4848

4949
private static final Log logger = LogFactory.getLog(TypeCollector.class);
5050

51-
static final Set<String> EXCLUDED_DOMAINS = new HashSet<>(Arrays.asList("java", "sun.", "jdk.", "reactor.",
52-
"kotlinx.", "kotlin.", "org.springframework.core.", "org.springframework.data.mapping.",
53-
"org.springframework.data.repository.", "org.springframework.boot.", "org.springframework.core."));
51+
static final Set<String> EXCLUDED_DOMAINS = new HashSet<>(
52+
Arrays.asList("java", "sun.", "jdk.", "reactor.", "kotlinx.", "kotlin.", "org.springframework.core.",
53+
"org.springframework.data.mapping.", "org.springframework.data.repository.", "org.springframework.boot.",
54+
"org.springframework.context.", "org.springframework.beans."));
5455

5556
private final Predicate<Class<?>> excludedDomainsFilter = type -> {
56-
String packageName = type.getPackageName();
57+
String packageName = type.getPackageName() + ".";
5758
return EXCLUDED_DOMAINS.stream().noneMatch(packageName::startsWith);
5859
};
5960

60-
private Predicate<Class<?>> typeFilter = excludedDomainsFilter;
61+
private Predicate<Class<?>> typeFilter = excludedDomainsFilter
62+
.and(it -> !it.isLocalClass() && !it.isAnonymousClass());
6163

6264
private final Predicate<Method> methodFilter = createMethodFilter();
6365

src/test/java/org/springframework/data/aot/TypeCollectorUnitTests.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,9 @@ void includesDeclaredClassesInInspection() {
6161
WithDeclaredClass.SomeEnum.class);
6262
}
6363

64+
@Test // GH-2744
65+
void skipsCoreFrameworkType() {
66+
assertThat(TypeCollector.inspect(org.springframework.core.AliasRegistry.class).list()).isEmpty();
67+
}
68+
6469
}

0 commit comments

Comments
 (0)