diff --git a/pom.xml b/pom.xml
index 13bf0377b4..f068127bea 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.data
spring-data-commons
- 3.1.0-SNAPSHOT
+ 3.1.x-2744-SNAPSHOT
Spring Data Core
Core Spring concepts underpinning every Spring Data module.
diff --git a/src/main/java/org/springframework/data/repository/config/RepositoryRegistrationAotProcessor.java b/src/main/java/org/springframework/data/repository/config/RepositoryRegistrationAotProcessor.java
index 3184ae28a7..cc1bdf3044 100644
--- a/src/main/java/org/springframework/data/repository/config/RepositoryRegistrationAotProcessor.java
+++ b/src/main/java/org/springframework/data/repository/config/RepositoryRegistrationAotProcessor.java
@@ -82,11 +82,11 @@ protected void contribute(AotRepositoryContext repositoryContext, GenerationCont
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 @@ private static boolean isSpringDataManagedAnnotation(@Nullable MergedAnnotation<
|| 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);
}
diff --git a/src/main/java/org/springframework/data/util/TypeCollector.java b/src/main/java/org/springframework/data/util/TypeCollector.java
index 4d18f61fa8..1d978f0fb8 100644
--- a/src/main/java/org/springframework/data/util/TypeCollector.java
+++ b/src/main/java/org/springframework/data/util/TypeCollector.java
@@ -48,16 +48,18 @@ public class TypeCollector {
private static final Log logger = LogFactory.getLog(TypeCollector.class);
- static final Set 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 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> excludedDomainsFilter = type -> {
- String packageName = type.getPackageName();
+ String packageName = type.getPackageName() + ".";
return EXCLUDED_DOMAINS.stream().noneMatch(packageName::startsWith);
};
- private Predicate> typeFilter = excludedDomainsFilter;
+ private Predicate> typeFilter = excludedDomainsFilter
+ .and(it -> !it.isLocalClass() && !it.isAnonymousClass());
private final Predicate methodFilter = createMethodFilter();
@@ -125,6 +127,10 @@ Set visitConstructorsOfType(ResolvableType type) {
}
Set discoveredTypes = new LinkedHashSet<>();
for (Constructor> constructor : type.toClass().getDeclaredConstructors()) {
+
+ if (constructor.isSynthetic()) {
+ continue;
+ }
for (Class> signatureType : TypeUtils.resolveTypesInSignature(type.toClass(), constructor)) {
if (typeFilter.test(signatureType)) {
discoveredTypes.add(signatureType);
diff --git a/src/test/java/org/springframework/data/aot/TypeCollectorUnitTests.java b/src/test/java/org/springframework/data/aot/TypeCollectorUnitTests.java
index 5a8b6b0620..49cc6ca356 100644
--- a/src/test/java/org/springframework/data/aot/TypeCollectorUnitTests.java
+++ b/src/test/java/org/springframework/data/aot/TypeCollectorUnitTests.java
@@ -61,4 +61,9 @@ void includesDeclaredClassesInInspection() {
WithDeclaredClass.SomeEnum.class);
}
+ @Test // GH-2744
+ void skipsCoreFrameworkType() {
+ assertThat(TypeCollector.inspect(org.springframework.core.AliasRegistry.class).list()).isEmpty();
+ }
+
}