mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-10-02 04:09:01 +00:00
Refine KotlinDetector#hasSerializableAnnotation
Refine KotlinDetector#hasSerializableAnnotation in order to detect deeply nested generic types. Closes gh-35960
This commit is contained in:
@@ -148,9 +148,8 @@ public abstract class KotlinDetector {
|
||||
if (resolvedClass.isAnnotationPresent(KOTLIN_SERIALIZABLE)) {
|
||||
return true;
|
||||
}
|
||||
@Nullable Class<?>[] resolvedGenerics = type.resolveGenerics();
|
||||
for (Class<?> resolvedGeneric : resolvedGenerics) {
|
||||
if (resolvedGeneric != null && resolvedGeneric.isAnnotationPresent(KOTLIN_SERIALIZABLE)) {
|
||||
for (ResolvableType genericType : type.getGenerics()) {
|
||||
if (hasSerializableAnnotation(genericType)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,6 +57,13 @@ class KotlinDetectorTests {
|
||||
|
||||
Assertions.assertThat(KotlinDetector.hasSerializableAnnotation(ResolvableType.forClassWithGenerics(Map::class.java, String::class.java, WithoutSerializable::class.java))).isFalse()
|
||||
Assertions.assertThat(KotlinDetector.hasSerializableAnnotation(ResolvableType.forClassWithGenerics(Map::class.java, String::class.java, WithSerializable::class.java))).isTrue()
|
||||
Assertions.assertThat(KotlinDetector.hasSerializableAnnotation(
|
||||
ResolvableType.forClassWithGenerics(Map::class.java,
|
||||
ResolvableType.forClass(String::class.java),
|
||||
ResolvableType.forClassWithGenerics(List::class.java, WithSerializable::class.java)))).isTrue()
|
||||
Assertions.assertThat(KotlinDetector.hasSerializableAnnotation(
|
||||
ResolvableType.forClassWithGenerics(List::class.java,
|
||||
ResolvableType.forClassWithGenerics(List::class.java, WithSerializable::class.java)))).isTrue()
|
||||
|
||||
Assertions.assertThat(KotlinDetector.hasSerializableAnnotation(ResolvableType.NONE)).isFalse()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user