Skip to content

Commit 27fa329

Browse files
committed
#31 - Fix bug in TypeDetails#determineRawClass for parameterized types
1 parent e9ca20a commit 27fa329

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

src/main/java/org/hibernate/models/spi/TypeDetailsHelper.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -232,10 +232,7 @@ public static ClassDetails resolveRawClass(TypeDetails typeDetails) {
232232
}
233233
case PARAMETERIZED_TYPE -> {
234234
final ParameterizedTypeDetails parameterizedType = typeDetails.asParameterizedType();
235-
if ( CollectionHelper.size( parameterizedType.getArguments() ) == 1 ) {
236-
return parameterizedType.getArguments().get( 0 ).determineRawClass();
237-
}
238-
return ClassDetails.OBJECT_CLASS_DETAILS;
235+
return parameterizedType.getRawClassDetails();
239236
}
240237
case WILDCARD_TYPE -> {
241238
final WildcardTypeDetails wildcardType = typeDetails.asWildcardType();

src/test/java/org/hibernate/models/generics/CollectionTests.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ void testCollections(Index index) {
5757
final FieldDetails listOfString = classDetails.findFieldByName( "listOfString" );
5858

5959
assertThat( listOfString.getType() ).isInstanceOf( ParameterizedTypeDetails.class );
60-
final ParameterizedTypeDetails type = (ParameterizedTypeDetails) listOfString.getType();
60+
final ParameterizedTypeDetails type = listOfString.getType().asParameterizedType();
6161
assertThat( type.isImplementor( Collection.class ) ).isTrue();
6262
assertThat( type.isImplementor( List.class ) ).isTrue();
6363
assertThat( type.isImplementor( Set.class ) ).isFalse();
@@ -68,6 +68,8 @@ void testCollections(Index index) {
6868
final ClassTypeDetails elementType = (ClassTypeDetails) type.getArguments().get( 0);
6969
assertThat( elementType.isImplementor( String.class ) ).isTrue();
7070
assertThat( type.isResolved() ).isTrue();
71+
assertThat( type.getRawClassDetails().toJavaClass() ).isEqualTo( List.class );
72+
assertThat( type.determineRawClass().toJavaClass() ).isEqualTo( List.class );
7173
}
7274

7375
{
@@ -86,6 +88,8 @@ void testCollections(Index index) {
8688
assertThat( elementType.isImplementor( String.class ) ).isFalse();
8789
assertThat( elementType.getIdentifier() ).isEqualTo( "T" );
8890
assertThat( type.isResolved() ).isFalse();
91+
assertThat( type.getRawClassDetails().toJavaClass() ).isEqualTo( List.class );
92+
assertThat( type.determineRawClass().toJavaClass() ).isEqualTo( List.class );
8993
}
9094

9195
{
@@ -100,6 +104,8 @@ void testCollections(Index index) {
100104

101105
assertThat( type.getArguments() ).hasSize( 2 );
102106
assertThat( type.isResolved() ).isTrue();
107+
assertThat( type.getRawClassDetails().toJavaClass() ).isEqualTo( Map.class );
108+
assertThat( type.determineRawClass().toJavaClass() ).isEqualTo( Map.class );
103109

104110
// key
105111
assertThat( type.getArguments().get(0) ).isInstanceOf( ClassTypeDetails.class );
@@ -126,6 +132,8 @@ void testCollections(Index index) {
126132

127133
assertThat( type.getArguments() ).hasSize( 2 );
128134
assertThat( type.isResolved() ).isFalse();
135+
assertThat( type.getRawClassDetails().toJavaClass() ).isEqualTo( Map.class );
136+
assertThat( type.determineRawClass().toJavaClass() ).isEqualTo( Map.class );
129137

130138
// key
131139
assertThat( type.getArguments().get(0) ).isInstanceOf( ClassTypeDetails.class );

0 commit comments

Comments
 (0)