Skip to content

Commit a530c4e

Browse files
mbelladesebersole
authored andcommitted
#133 Move constant class TypeDetails from interface to dedicated class
1 parent 4c56f70 commit a530c4e

File tree

11 files changed

+74
-43
lines changed

11 files changed

+74
-43
lines changed

hibernate-models/src/main/java/org/hibernate/models/internal/CollectionElementSwitch.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
import java.util.Collection;
88

9-
import org.hibernate.models.spi.ClassBasedTypeDetails;
109
import org.hibernate.models.spi.ClassDetails;
1110
import org.hibernate.models.spi.ClassTypeDetails;
1211
import org.hibernate.models.spi.ParameterizedTypeDetails;
@@ -15,6 +14,8 @@
1514
import org.hibernate.models.spi.TypeVariableReferenceDetails;
1615
import org.hibernate.models.spi.WildcardTypeDetails;
1716

17+
import static org.hibernate.models.spi.StandardTypeDetails.OBJECT_TYPE_DETAILS;
18+
1819
/**
1920
* Used to determine the type details for a Collection element - see {@linkplain #extractCollectionElementType(TypeDetails)}
2021
*
@@ -45,7 +46,7 @@ public static TypeDetails extractCollectionElementType(TypeDetails memberType) {
4546
}
4647

4748
// otherwise, assume Object
48-
return ClassBasedTypeDetails.OBJECT_TYPE_DETAILS;
49+
return OBJECT_TYPE_DETAILS;
4950
}
5051

5152
private final TypeDetails memberTypeDetails;

hibernate-models/src/main/java/org/hibernate/models/internal/MapKeySwitch.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
import java.util.Map;
88

9-
import org.hibernate.models.spi.ClassBasedTypeDetails;
109
import org.hibernate.models.spi.ClassDetails;
1110
import org.hibernate.models.spi.ClassTypeDetails;
1211
import org.hibernate.models.spi.ParameterizedTypeDetails;
@@ -15,6 +14,8 @@
1514
import org.hibernate.models.spi.TypeVariableReferenceDetails;
1615
import org.hibernate.models.spi.WildcardTypeDetails;
1716

17+
import static org.hibernate.models.spi.StandardTypeDetails.OBJECT_TYPE_DETAILS;
18+
1819
/**
1920
* Used to determine the type details for a Map key - see {@linkplain #extractMapKeyType(TypeDetails)}
2021
*
@@ -45,7 +46,7 @@ public static TypeDetails extractMapKeyType(TypeDetails memberType) {
4546
}
4647

4748
// otherwise, assume Object
48-
return ClassBasedTypeDetails.OBJECT_TYPE_DETAILS;
49+
return OBJECT_TYPE_DETAILS;
4950
}
5051

5152
private final TypeDetails memberTypeDetails;

hibernate-models/src/main/java/org/hibernate/models/internal/MapValueSwitch.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
import java.util.Map;
88

9-
import org.hibernate.models.spi.ClassBasedTypeDetails;
109
import org.hibernate.models.spi.ClassDetails;
1110
import org.hibernate.models.spi.ClassTypeDetails;
1211
import org.hibernate.models.spi.ParameterizedTypeDetails;
@@ -15,6 +14,8 @@
1514
import org.hibernate.models.spi.TypeVariableReferenceDetails;
1615
import org.hibernate.models.spi.WildcardTypeDetails;
1716

17+
import static org.hibernate.models.spi.StandardTypeDetails.OBJECT_TYPE_DETAILS;
18+
1819
/**
1920
* Used to determine the type details for a Map value - see {@linkplain #extractMapValueType(TypeDetails)}
2021
*
@@ -45,7 +46,7 @@ public static TypeDetails extractMapValueType(TypeDetails memberType) {
4546
}
4647

4748
// otherwise, assume Object
48-
return ClassBasedTypeDetails.OBJECT_TYPE_DETAILS;
49+
return OBJECT_TYPE_DETAILS;
4950
}
5051

5152
private final TypeDetails memberTypeDetails;

hibernate-models/src/main/java/org/hibernate/models/internal/WildcardTypeDetailsImpl.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44
*/
55
package org.hibernate.models.internal;
66

7-
import org.hibernate.models.spi.ClassTypeDetails;
87
import org.hibernate.models.spi.TypeDetails;
98
import org.hibernate.models.spi.TypeVariableDetails;
109
import org.hibernate.models.spi.WildcardTypeDetails;
1110

11+
import static org.hibernate.models.spi.StandardTypeDetails.OBJECT_TYPE_DETAILS;
12+
1213
/**
1314
* @author Steve Ebersole
1415
*/
@@ -42,7 +43,7 @@ public boolean isExtends() {
4243
* @return the upper bound, or {@code Object} if this wildcard has a lower bound
4344
*/
4445
@Override public TypeDetails getExtendsBound() {
45-
return isExtends ? bound : ClassTypeDetails.OBJECT_TYPE_DETAILS;
46+
return isExtends ? bound : OBJECT_TYPE_DETAILS;
4647
}
4748

4849
/**

hibernate-models/src/main/java/org/hibernate/models/internal/jdk/JdkTrackingTypeSwitch.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535

3636
import static org.hibernate.models.internal.jdk.JdkBuilders.isVoid;
3737
import static org.hibernate.models.internal.util.CollectionHelper.arrayList;
38+
import static org.hibernate.models.spi.StandardTypeDetails.OBJECT_TYPE_DETAILS;
3839

3940
/**
4041
* @author Steve Ebersole
@@ -83,14 +84,14 @@ public WildcardTypeDetails caseWildcardType(WildcardType wildcardType) {
8384
final int numberOfBounds = CollectionHelper.length( wildcardType.getUpperBounds() );
8485
final TypeDetails upper = numberOfBounds == 1
8586
? switcher.switchType( wildcardType.getUpperBounds()[0] )
86-
: ClassBasedTypeDetails.OBJECT_TYPE_DETAILS;
87+
: OBJECT_TYPE_DETAILS;
8788
return new WildcardTypeDetailsImpl( upper, true );
8889
}
8990

9091
final int numberOfBounds = CollectionHelper.length( lowerBounds );
9192
final TypeDetails lower = numberOfBounds == 1
9293
? switcher.switchType( lowerBounds[0] )
93-
: ClassBasedTypeDetails.OBJECT_TYPE_DETAILS;
94+
: OBJECT_TYPE_DETAILS;
9495
return new WildcardTypeDetailsImpl( lower, false );
9596
}
9697

hibernate-models/src/main/java/org/hibernate/models/spi/ClassBasedTypeDetails.java

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,12 @@
44
*/
55
package org.hibernate.models.spi;
66

7-
import org.hibernate.models.internal.ClassTypeDetailsImpl;
8-
97
/**
108
* Types which are expressible as a {@linkplain #getClassDetails class}
119
*
1210
* @author Steve Ebersole
1311
*/
1412
public interface ClassBasedTypeDetails extends TypeDetails {
15-
/**
16-
* Type details for Object
17-
*/
18-
ClassTypeDetails OBJECT_TYPE_DETAILS = new ClassTypeDetailsImpl( ClassDetails.OBJECT_CLASS_DETAILS, Kind.CLASS );
19-
20-
/**
21-
* Details for {@code Class.class}
22-
*/
23-
TypeDetails CLASS_TYPE_DETAILS = new ClassTypeDetailsImpl( ClassDetails.CLASS_CLASS_DETAILS, Kind.CLASS );
24-
25-
/**
26-
* Details for {@code void.class}
27-
*/
28-
TypeDetails VOID_TYPE_DETAILS = new ClassTypeDetailsImpl( ClassDetails.VOID_CLASS_DETAILS, Kind.VOID );
29-
30-
/**
31-
* Details for {@code Void.class}
32-
*/
33-
TypeDetails VOID_OBJECT_TYPE_DETAILS = new ClassTypeDetailsImpl( ClassDetails.VOID_CLASS_DETAILS, Kind.VOID );
34-
3513
ClassDetails getClassDetails();
3614

3715
@Override
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright: Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.models.spi;
6+
7+
import org.hibernate.models.internal.ClassTypeDetailsImpl;
8+
import org.hibernate.models.internal.WildcardTypeDetailsImpl;
9+
10+
/**
11+
* Container for constant static {@link TypeDetails} references used often.
12+
*/
13+
public final class StandardTypeDetails {
14+
/**
15+
* Type details for Object
16+
*/
17+
public static final ClassTypeDetails OBJECT_TYPE_DETAILS = new ClassTypeDetailsImpl(
18+
ClassDetails.OBJECT_CLASS_DETAILS,
19+
TypeDetails.Kind.CLASS
20+
);
21+
22+
/**
23+
* Details for {@code Class.class}
24+
*/
25+
public static final TypeDetails CLASS_TYPE_DETAILS = new ClassTypeDetailsImpl(
26+
ClassDetails.CLASS_CLASS_DETAILS,
27+
TypeDetails.Kind.CLASS
28+
);
29+
30+
/**
31+
* Details for {@code void.class}
32+
*/
33+
public static final TypeDetails VOID_TYPE_DETAILS = new ClassTypeDetailsImpl(
34+
ClassDetails.VOID_CLASS_DETAILS,
35+
TypeDetails.Kind.VOID
36+
);
37+
38+
/**
39+
* Details for {@code Void.class}
40+
*/
41+
public static final TypeDetails VOID_OBJECT_TYPE_DETAILS = new ClassTypeDetailsImpl(
42+
ClassDetails.VOID_CLASS_DETAILS,
43+
TypeDetails.Kind.VOID
44+
);
45+
46+
/**
47+
* A wildcard without a bound. In other words, {@code ?}.
48+
*/
49+
WildcardTypeDetails UNBOUNDED = new WildcardTypeDetailsImpl( null, true );
50+
51+
// restrict instantiation
52+
private StandardTypeDetails() {
53+
}
54+
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import org.hibernate.models.internal.util.CollectionHelper;
1414

1515
import static org.hibernate.models.internal.util.CollectionHelper.arrayList;
16-
import static org.hibernate.models.spi.ClassBasedTypeDetails.OBJECT_TYPE_DETAILS;
16+
import static org.hibernate.models.spi.StandardTypeDetails.OBJECT_TYPE_DETAILS;
1717

1818
/**
1919
* Helper utilities for dealing with {@linkplain TypeDetails}

hibernate-models/src/main/java/org/hibernate/models/spi/WildcardTypeDetails.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
*/
55
package org.hibernate.models.spi;
66

7-
import org.hibernate.models.internal.WildcardTypeDetailsImpl;
8-
97
/**
108
* Models a wildcard type declaration.
119
*
@@ -14,11 +12,6 @@
1412
* @author Steve Ebersole
1513
*/
1614
public interface WildcardTypeDetails extends TypeDetails {
17-
/**
18-
* A wildcard without a bound. In other words, {@code ?}.
19-
*/
20-
WildcardTypeDetails UNBOUNDED = new WildcardTypeDetailsImpl( null, true );
21-
2215
TypeDetails getBound();
2316

2417
boolean isExtends();

hibernate-models/src/test/java/org/hibernate/models/testing/tests/classes/GenericsTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
*/
55
package org.hibernate.models.testing.tests.classes;
66

7-
import org.hibernate.models.spi.ClassBasedTypeDetails;
87
import org.hibernate.models.spi.ClassDetails;
98
import org.hibernate.models.spi.ClassDetailsRegistry;
109
import org.hibernate.models.spi.ModelsContext;
@@ -17,6 +16,7 @@
1716
import jakarta.persistence.MappedSuperclass;
1817

1918
import static org.assertj.core.api.Assertions.assertThat;
19+
import static org.hibernate.models.spi.StandardTypeDetails.OBJECT_TYPE_DETAILS;
2020
import static org.hibernate.models.testing.TestHelper.buildModelContext;
2121

2222
/**
@@ -44,7 +44,7 @@ void testWrappedId() {
4444
assertThat( wrappedType.getTypeKind() ).isEqualTo( TypeDetails.Kind.TYPE_VARIABLE );
4545
assertThat( wrappedType.asTypeVariable().getIdentifier() ).isEqualTo( "T" );
4646
assertThat( wrappedType.asTypeVariable().getBounds() ).hasSize( 1 );
47-
assertThat( wrappedType.asTypeVariable().getBounds() ).contains( ClassBasedTypeDetails.OBJECT_TYPE_DETAILS );
47+
assertThat( wrappedType.asTypeVariable().getBounds() ).contains( OBJECT_TYPE_DETAILS );
4848
assertThat( wrappedType.isResolved() ).isFalse();
4949
assertThat( wrappedType.determineRawClass().isResolved() ).isTrue();
5050

hibernate-models/src/test/java/org/hibernate/models/testing/tests/generics/BaselineTests.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.junit.jupiter.api.Test;
1414

1515
import static org.assertj.core.api.Assertions.assertThat;
16+
import static org.hibernate.models.spi.StandardTypeDetails.OBJECT_TYPE_DETAILS;
1617
import static org.hibernate.models.testing.TestHelper.createModelContext;
1718

1819
/**
@@ -21,7 +22,7 @@
2122
public class BaselineTests {
2223
@Test
2324
void testObjectUse() {
24-
assertThat( ClassTypeDetails.OBJECT_TYPE_DETAILS.asClassType().getClassDetails() ).isSameAs( ClassDetails.OBJECT_CLASS_DETAILS );
25+
assertThat( OBJECT_TYPE_DETAILS.asClassType().getClassDetails() ).isSameAs( ClassDetails.OBJECT_CLASS_DETAILS );
2526
}
2627

2728
@Test

0 commit comments

Comments
 (0)