Skip to content

Commit 1184073

Browse files
committed
#37 - Improve MemberDetails#getElementType
1 parent 89b4476 commit 1184073

File tree

4 files changed

+33
-12
lines changed

4 files changed

+33
-12
lines changed

src/main/java/org/hibernate/models/spi/CollectionElementSwitch.java renamed to src/main/java/org/hibernate/models/internal/CollectionElementSwitch.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,18 @@
55
* Copyright: Red Hat Inc. and Hibernate Authors
66
*/
77

8-
package org.hibernate.models.spi;
8+
package org.hibernate.models.internal;
99

1010
import java.util.Collection;
1111

12-
import org.hibernate.models.internal.TypeDetailsSwitchSupport;
13-
import org.hibernate.models.internal.TypeDetailsSwitcher;
12+
import org.hibernate.models.spi.ClassBasedTypeDetails;
13+
import org.hibernate.models.spi.ClassDetails;
14+
import org.hibernate.models.spi.ClassTypeDetails;
15+
import org.hibernate.models.spi.ParameterizedTypeDetails;
16+
import org.hibernate.models.spi.TypeDetails;
17+
import org.hibernate.models.spi.TypeVariableDetails;
18+
import org.hibernate.models.spi.TypeVariableReferenceDetails;
19+
import org.hibernate.models.spi.WildcardTypeDetails;
1420

1521
/**
1622
* Used to determine the type details for a Collection element - see {@linkplain #extractCollectionElementType(TypeDetails)}
@@ -22,7 +28,6 @@ public class CollectionElementSwitch extends TypeDetailsSwitchSupport<TypeDetail
2228
public static TypeDetails extractCollectionElementType(TypeDetails memberType) {
2329
assert memberType.isImplementor( Collection.class );
2430

25-
// we may need to handle "concrete types" such as `class SpecialList implements List<String>`
2631
final ClassDetails rawClassDetails = memberType.determineRawClass();
2732
final CollectionElementSwitch collectionElementSwitch = new CollectionElementSwitch( memberType );
2833

src/main/java/org/hibernate/models/spi/MapKeySwitch.java renamed to src/main/java/org/hibernate/models/internal/MapKeySwitch.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,18 @@
55
* Copyright: Red Hat Inc. and Hibernate Authors
66
*/
77

8-
package org.hibernate.models.spi;
8+
package org.hibernate.models.internal;
99

1010
import java.util.Map;
1111

12-
import org.hibernate.models.internal.TypeDetailsSwitchSupport;
13-
import org.hibernate.models.internal.TypeDetailsSwitcher;
12+
import org.hibernate.models.spi.ClassBasedTypeDetails;
13+
import org.hibernate.models.spi.ClassDetails;
14+
import org.hibernate.models.spi.ClassTypeDetails;
15+
import org.hibernate.models.spi.ParameterizedTypeDetails;
16+
import org.hibernate.models.spi.TypeDetails;
17+
import org.hibernate.models.spi.TypeVariableDetails;
18+
import org.hibernate.models.spi.TypeVariableReferenceDetails;
19+
import org.hibernate.models.spi.WildcardTypeDetails;
1420

1521
/**
1622
* Used to determine the type details for a Map key - see {@linkplain #extractMapKeyType(TypeDetails)}
@@ -22,7 +28,6 @@ public class MapKeySwitch extends TypeDetailsSwitchSupport<TypeDetails> {
2228
public static TypeDetails extractMapKeyType(TypeDetails memberType) {
2329
assert memberType.isImplementor( Map.class );
2430

25-
// we may need to handle "concrete types" such as `class SpecialList implements List<String>`
2631
final ClassDetails rawClassDetails = memberType.determineRawClass();
2732
final MapKeySwitch mapKeySwitch = new MapKeySwitch( memberType );
2833

src/main/java/org/hibernate/models/spi/MapValueSwitch.java renamed to src/main/java/org/hibernate/models/internal/MapValueSwitch.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,18 @@
55
* Copyright: Red Hat Inc. and Hibernate Authors
66
*/
77

8-
package org.hibernate.models.spi;
8+
package org.hibernate.models.internal;
99

1010
import java.util.Map;
1111

12-
import org.hibernate.models.internal.TypeDetailsSwitchSupport;
13-
import org.hibernate.models.internal.TypeDetailsSwitcher;
12+
import org.hibernate.models.spi.ClassBasedTypeDetails;
13+
import org.hibernate.models.spi.ClassDetails;
14+
import org.hibernate.models.spi.ClassTypeDetails;
15+
import org.hibernate.models.spi.ParameterizedTypeDetails;
16+
import org.hibernate.models.spi.TypeDetails;
17+
import org.hibernate.models.spi.TypeVariableDetails;
18+
import org.hibernate.models.spi.TypeVariableReferenceDetails;
19+
import org.hibernate.models.spi.WildcardTypeDetails;
1420

1521
/**
1622
* Used to determine the type details for a Map value - see {@linkplain #extractMapValueType(TypeDetails)}
@@ -22,7 +28,6 @@ public class MapValueSwitch extends TypeDetailsSwitchSupport<TypeDetails> {
2228
public static TypeDetails extractMapValueType(TypeDetails memberType) {
2329
assert memberType.isImplementor( Map.class );
2430

25-
// we may need to handle "concrete types" such as `class SpecialList implements List<String>`
2631
final ClassDetails rawClassDetails = memberType.determineRawClass();
2732
final MapValueSwitch mapValueSwitch = new MapValueSwitch( memberType );
2833

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
import java.util.Collection;
1111
import java.util.Map;
1212

13+
import org.hibernate.models.internal.CollectionElementSwitch;
14+
import org.hibernate.models.internal.MapKeySwitch;
15+
import org.hibernate.models.internal.MapValueSwitch;
1316
import org.hibernate.models.internal.ModifierUtils;
1417

1518
/**
@@ -66,6 +69,7 @@ default TypeDetails getElementType() {
6669

6770
if ( memberType.isImplementor( Collection.class ) ) {
6871
if ( memberType.getTypeKind() == TypeDetails.Kind.CLASS ) {
72+
// handle "concrete types" such as `class SpecialList implements List<String>`
6973
return CollectionElementSwitch.extractCollectionElementType( memberType );
7074
}
7175
if ( memberType.getTypeKind() == TypeDetails.Kind.PARAMETERIZED_TYPE ) {
@@ -82,6 +86,7 @@ default TypeDetails getElementType() {
8286

8387
if ( memberType.isImplementor( Map.class ) ) {
8488
if ( memberType.getTypeKind() == TypeDetails.Kind.CLASS ) {
89+
// handle "concrete types" such as `class SpecialMap implements Map<String,String>`
8590
return MapValueSwitch.extractMapValueType( memberType );
8691
}
8792
if ( memberType.getTypeKind() == TypeDetails.Kind.PARAMETERIZED_TYPE ) {
@@ -111,6 +116,7 @@ default TypeDetails getMapKeyType() {
111116

112117
if ( memberType.isImplementor( Map.class ) ) {
113118
if ( memberType.getTypeKind() == TypeDetails.Kind.CLASS ) {
119+
// handle "concrete types" such as `class SpecialMap implements Map<String,String>`
114120
return MapKeySwitch.extractMapKeyType( memberType );
115121
}
116122
if ( memberType.getTypeKind() == TypeDetails.Kind.PARAMETERIZED_TYPE ) {

0 commit comments

Comments
 (0)