diff --git a/src/main/java/org/springframework/data/util/ParameterizedTypeInformation.java b/src/main/java/org/springframework/data/util/ParameterizedTypeInformation.java index 1bb6d514f..80319965f 100644 --- a/src/main/java/org/springframework/data/util/ParameterizedTypeInformation.java +++ b/src/main/java/org/springframework/data/util/ParameterizedTypeInformation.java @@ -51,9 +51,9 @@ class ParameterizedTypeInformation extends ParentTypeAwareTypeInformation * @param type must not be {@literal null} * @param parent must not be {@literal null} */ - public ParameterizedTypeInformation(ParameterizedType type, Class resolvedType, TypeDiscoverer parent) { + public ParameterizedTypeInformation(ParameterizedType type, TypeDiscoverer parent) { - super(type, parent, calculateTypeVariables(type, resolvedType, parent)); + super(type, parent, calculateTypeVariables(type, parent)); this.type = type; this.resolved = Lazy.of(() -> isResolvedCompletely()); @@ -248,13 +248,12 @@ class ParameterizedTypeInformation extends ParentTypeAwareTypeInformation * declared. * * @param type must not be {@literal null}. - * @param resolvedType must not be {@literal null}. * @param parent must not be {@literal null}. * @return will never be {@literal null}. */ - private static Map, Type> calculateTypeVariables(ParameterizedType type, Class resolvedType, - TypeDiscoverer parent) { + private static Map, Type> calculateTypeVariables(ParameterizedType type, TypeDiscoverer parent) { + Class resolvedType = parent.resolveType(type); TypeVariable[] typeParameters = resolvedType.getTypeParameters(); Type[] arguments = type.getActualTypeArguments(); diff --git a/src/main/java/org/springframework/data/util/TypeDiscoverer.java b/src/main/java/org/springframework/data/util/TypeDiscoverer.java index 77ed83334..a97f7a5a2 100644 --- a/src/main/java/org/springframework/data/util/TypeDiscoverer.java +++ b/src/main/java/org/springframework/data/util/TypeDiscoverer.java @@ -129,12 +129,10 @@ class TypeDiscoverer implements TypeInformation { return ClassTypeInformation.from((Class) fieldType); } - Class resolvedType = resolveType(fieldType); - if (fieldType instanceof ParameterizedType) { ParameterizedType parameterizedType = (ParameterizedType) fieldType; - return new ParameterizedTypeInformation(parameterizedType, resolvedType, this); + return new ParameterizedTypeInformation(parameterizedType, this); } if (fieldType instanceof TypeVariable) { diff --git a/src/test/java/org/springframework/data/util/ParameterizedTypeInformationUnitTests.java b/src/test/java/org/springframework/data/util/ParameterizedTypeInformationUnitTests.java index b6f5a04ed..93f9a4e6c 100755 --- a/src/test/java/org/springframework/data/util/ParameterizedTypeInformationUnitTests.java +++ b/src/test/java/org/springframework/data/util/ParameterizedTypeInformationUnitTests.java @@ -32,7 +32,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; -import org.springframework.core.GenericTypeResolver; /** * Unit tests for {@link ParameterizedTypeInformation}. @@ -44,12 +43,10 @@ import org.springframework.core.GenericTypeResolver; public class ParameterizedTypeInformationUnitTests { @Mock ParameterizedType one; - Class resolvedOne; @Before public void setUp() { when(one.getActualTypeArguments()).thenReturn(new Type[0]); - this.resolvedOne = GenericTypeResolver.resolveType(one, emptyMap()); } @Test @@ -58,8 +55,8 @@ public class ParameterizedTypeInformationUnitTests { TypeDiscoverer stringParent = new TypeDiscoverer<>(String.class, emptyMap()); TypeDiscoverer objectParent = new TypeDiscoverer<>(Object.class, emptyMap()); - ParameterizedTypeInformation first = new ParameterizedTypeInformation<>(one, resolvedOne, stringParent); - ParameterizedTypeInformation second = new ParameterizedTypeInformation<>(one, resolvedOne, objectParent); + ParameterizedTypeInformation first = new ParameterizedTypeInformation<>(one, stringParent); + ParameterizedTypeInformation second = new ParameterizedTypeInformation<>(one, objectParent); assertThat(first).isNotEqualTo(second); } @@ -69,8 +66,8 @@ public class ParameterizedTypeInformationUnitTests { TypeDiscoverer stringParent = new TypeDiscoverer<>(String.class, emptyMap()); - ParameterizedTypeInformation first = new ParameterizedTypeInformation<>(one, resolvedOne, stringParent); - ParameterizedTypeInformation second = new ParameterizedTypeInformation<>(one, resolvedOne, stringParent); + ParameterizedTypeInformation first = new ParameterizedTypeInformation<>(one, stringParent); + ParameterizedTypeInformation second = new ParameterizedTypeInformation<>(one, stringParent); assertThat(first.equals(second)).isTrue(); }