Skip to content

Commit 2a5db7a

Browse files
committed
fix up unchecked casts in resolveTypeForPrecision()
1 parent 1e83a3a commit 2a5db7a

17 files changed

+105
-120
lines changed

hibernate-core/src/main/java/org/hibernate/type/BasicTypeRegistry.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ else if ( !name.equals( typeReference.getName() ) ) {
9494

9595
private <T> BasicType<T> createBasicType(String name, BasicTypeReference<T> typeReference) {
9696
var javaType = getJavaTypeRegistry().resolveDescriptor( typeReference.getJavaType() );
97-
if ( javaType instanceof TemporalJavaType<?> temporalJavaType ) {
97+
if ( javaType instanceof TemporalJavaType<T> temporalJavaType ) {
9898
javaType = temporalJavaType.resolveTypeForPrecision( typeReference.getPrecision(), typeConfiguration );
9999
}
100100
final var jdbcType = getJdbcTypeRegistry().getDescriptor( typeReference.getSqlTypeCode() );

hibernate-core/src/main/java/org/hibernate/type/descriptor/java/AbstractTemporalJavaType.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public AbstractTemporalJavaType(
3333
}
3434

3535
@Override
36-
public <X> TemporalJavaType<X> resolveTypeForPrecision(
36+
public TemporalJavaType<T> resolveTypeForPrecision(
3737
TemporalType precision,
3838
TypeConfiguration typeConfiguration) {
3939
if ( precision == null ) {
@@ -48,26 +48,25 @@ public <X> TemporalJavaType<X> resolveTypeForPrecision(
4848
}
4949
}
5050

51-
private <X> TemporalJavaType<X> forMissingPrecision(TypeConfiguration typeConfiguration) {
52-
//noinspection unchecked,rawtypes
53-
return (TemporalJavaType) this;
51+
private TemporalJavaType<T> forMissingPrecision(TypeConfiguration typeConfiguration) {
52+
return this;
5453
}
5554

56-
protected <X> TemporalJavaType<X> forTimestampPrecision(TypeConfiguration typeConfiguration) {
55+
protected TemporalJavaType<T> forTimestampPrecision(TypeConfiguration typeConfiguration) {
5756
throw new UnsupportedOperationException(
58-
this + " as `jakarta.persistence.TemporalType.TIMESTAMP` not supported"
57+
getTypeName() + " as TemporalType.TIMESTAMP not supported"
5958
);
6059
}
6160

62-
protected <X> TemporalJavaType<X> forDatePrecision(TypeConfiguration typeConfiguration) {
61+
protected TemporalJavaType<T> forDatePrecision(TypeConfiguration typeConfiguration) {
6362
throw new UnsupportedOperationException(
64-
this + " as `jakarta.persistence.TemporalType.DATE` not supported"
63+
getTypeName() + " as TemporalType.DATE not supported"
6564
);
6665
}
6766

68-
protected <X> TemporalJavaType<X> forTimePrecision(TypeConfiguration typeConfiguration) {
67+
protected TemporalJavaType<T> forTimePrecision(TypeConfiguration typeConfiguration) {
6968
throw new UnsupportedOperationException(
70-
this + " as `jakarta.persistence.TemporalType.TIME` not supported"
69+
getTypeName() + " as TemporalType.TIME not supported"
7170
);
7271
}
7372

hibernate-core/src/main/java/org/hibernate/type/descriptor/java/CalendarDateJavaType.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ protected CalendarDateJavaType() {
3030
super( Calendar.class, CalendarJavaType.CalendarMutabilityPlan.INSTANCE, CalendarComparator.INSTANCE );
3131
}
3232

33-
@Override
33+
@Override @SuppressWarnings("deprecation")
3434
public TemporalType getPrecision() {
3535
return TemporalType.DATE;
3636
}
@@ -40,19 +40,19 @@ public JdbcType getRecommendedJdbcType(JdbcTypeIndicators context) {
4040
return context.getJdbcType( Types.DATE );
4141
}
4242

43-
@Override @SuppressWarnings("unchecked")
44-
protected <X> TemporalJavaType<X> forDatePrecision(TypeConfiguration typeConfiguration) {
45-
return (TemporalJavaType<X>) this;
43+
@Override
44+
protected TemporalJavaType<Calendar> forDatePrecision(TypeConfiguration typeConfiguration) {
45+
return this;
4646
}
4747

48-
@Override @SuppressWarnings("unchecked")
49-
protected <X> TemporalJavaType<X> forTimestampPrecision(TypeConfiguration typeConfiguration) {
50-
return (TemporalJavaType<X>) CalendarJavaType.INSTANCE;
48+
@Override
49+
protected TemporalJavaType<Calendar> forTimestampPrecision(TypeConfiguration typeConfiguration) {
50+
return CalendarJavaType.INSTANCE;
5151
}
5252

53-
@Override @SuppressWarnings("unchecked")
54-
protected <X> TemporalJavaType<X> forTimePrecision(TypeConfiguration typeConfiguration) {
55-
return (TemporalJavaType<X>) CalendarTimeJavaType.INSTANCE;
53+
@Override
54+
protected TemporalJavaType<Calendar> forTimePrecision(TypeConfiguration typeConfiguration) {
55+
return CalendarTimeJavaType.INSTANCE;
5656
}
5757

5858
public String toString(Calendar value) {

hibernate-core/src/main/java/org/hibernate/type/descriptor/java/CalendarJavaType.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ protected CalendarJavaType() {
3939
super( Calendar.class, CalendarMutabilityPlan.INSTANCE, CalendarComparator.INSTANCE );
4040
}
4141

42-
@Override
42+
@Override @SuppressWarnings("deprecation")
4343
public TemporalType getPrecision() {
4444
return TemporalType.TIMESTAMP;
4545
}
@@ -49,19 +49,19 @@ public JdbcType getRecommendedJdbcType(JdbcTypeIndicators context) {
4949
return context.getJdbcType( Types.TIMESTAMP );
5050
}
5151

52-
@Override @SuppressWarnings("unchecked")
53-
protected <X> TemporalJavaType<X> forTimestampPrecision(TypeConfiguration typeConfiguration) {
54-
return (TemporalJavaType<X>) this;
52+
@Override
53+
protected TemporalJavaType<Calendar> forTimestampPrecision(TypeConfiguration typeConfiguration) {
54+
return this;
5555
}
5656

57-
@Override @SuppressWarnings("unchecked")
58-
protected <X> TemporalJavaType<X> forDatePrecision(TypeConfiguration typeConfiguration) {
59-
return (TemporalJavaType<X>) CalendarDateJavaType.INSTANCE;
57+
@Override
58+
protected TemporalJavaType<Calendar> forDatePrecision(TypeConfiguration typeConfiguration) {
59+
return CalendarDateJavaType.INSTANCE;
6060
}
6161

62-
@Override @SuppressWarnings("unchecked")
63-
protected <X> TemporalJavaType<X> forTimePrecision(TypeConfiguration typeConfiguration) {
64-
return (TemporalJavaType<X>) CalendarTimeJavaType.INSTANCE;
62+
@Override
63+
protected TemporalJavaType<Calendar> forTimePrecision(TypeConfiguration typeConfiguration) {
64+
return CalendarTimeJavaType.INSTANCE;
6565
}
6666

6767
public String toString(Calendar value) {

hibernate-core/src/main/java/org/hibernate/type/descriptor/java/CalendarTimeJavaType.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ protected CalendarTimeJavaType() {
3131
super( Calendar.class, CalendarJavaType.CalendarMutabilityPlan.INSTANCE, CalendarComparator.INSTANCE );
3232
}
3333

34-
@Override
34+
@Override @SuppressWarnings("deprecation")
3535
public TemporalType getPrecision() {
3636
return TemporalType.TIME;
3737
}
@@ -41,19 +41,19 @@ public JdbcType getRecommendedJdbcType(JdbcTypeIndicators context) {
4141
return context.getJdbcType( Types.TIME );
4242
}
4343

44-
@Override @SuppressWarnings("unchecked")
45-
protected <X> TemporalJavaType<X> forTimePrecision(TypeConfiguration typeConfiguration) {
46-
return (TemporalJavaType<X>) this;
44+
@Override
45+
protected TemporalJavaType<Calendar> forTimePrecision(TypeConfiguration typeConfiguration) {
46+
return this;
4747
}
4848

49-
@Override @SuppressWarnings("unchecked")
50-
protected <X> TemporalJavaType<X> forTimestampPrecision(TypeConfiguration typeConfiguration) {
51-
return (TemporalJavaType<X>) CalendarJavaType.INSTANCE;
49+
@Override
50+
protected TemporalJavaType<Calendar> forTimestampPrecision(TypeConfiguration typeConfiguration) {
51+
return CalendarJavaType.INSTANCE;
5252
}
5353

54-
@Override @SuppressWarnings("unchecked")
55-
protected <X> TemporalJavaType<X> forDatePrecision(TypeConfiguration typeConfiguration) {
56-
return (TemporalJavaType<X>) CalendarDateJavaType.INSTANCE;
54+
@Override
55+
protected TemporalJavaType<Calendar> forDatePrecision(TypeConfiguration typeConfiguration) {
56+
return CalendarDateJavaType.INSTANCE;
5757
}
5858

5959
public String toString(Calendar value) {

hibernate-core/src/main/java/org/hibernate/type/descriptor/java/DateJavaType.java

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,16 @@
2828
*/
2929
public class DateJavaType extends AbstractTemporalJavaType<Date> implements VersionJavaType<Date> {
3030
public static final DateJavaType INSTANCE = new DateJavaType();
31-
private final TemporalType precision;
31+
private final @SuppressWarnings("deprecation") TemporalType precision;
3232

3333
public static class DateMutabilityPlan extends MutableMutabilityPlan<Date> {
34-
public static final DateMutabilityPlan INSTANCE = new DateMutabilityPlan( TemporalType.TIMESTAMP );
35-
private final TemporalType precision;
34+
@SuppressWarnings("deprecation")
35+
public static final DateMutabilityPlan INSTANCE =
36+
new DateMutabilityPlan( TemporalType.TIMESTAMP );
3637

37-
public DateMutabilityPlan(TemporalType precision) {
38+
private final @SuppressWarnings("deprecation") TemporalType precision;
39+
40+
public DateMutabilityPlan(@SuppressWarnings("deprecation") TemporalType precision) {
3841
this.precision = precision;
3942
}
4043

@@ -59,12 +62,13 @@ else if ( value instanceof java.sql.Time time ) {
5962
}
6063
}
6164

65+
@SuppressWarnings("deprecation")
6266
public DateJavaType() {
6367
super( Date.class, DateMutabilityPlan.INSTANCE );
6468
this.precision = TemporalType.TIMESTAMP;
6569
}
6670

67-
private DateJavaType(TemporalType precision) {
71+
private DateJavaType(@SuppressWarnings("deprecation") TemporalType precision) {
6872
super( Date.class, new DateMutabilityPlan(precision) );
6973
this.precision = precision;
7074
}
@@ -80,13 +84,15 @@ public Date cast(Object value) {
8084
}
8185

8286
@Override
83-
public TemporalType getPrecision() {
87+
public @SuppressWarnings("deprecation") TemporalType getPrecision() {
8488
return precision;
8589
}
8690

8791
@Override
88-
public <X> TemporalJavaType<X> resolveTypeForPrecision(TemporalType precision, TypeConfiguration typeConfiguration) {
89-
return (TemporalJavaType<X>) new DateJavaType( precision );
92+
public TemporalJavaType<Date> resolveTypeForPrecision(
93+
@SuppressWarnings("deprecation") TemporalType precision,
94+
TypeConfiguration typeConfiguration) {
95+
return precision == null ? this : new DateJavaType( precision );
9096
}
9197

9298
@Override
@@ -107,21 +113,6 @@ public JdbcType getRecommendedJdbcType(JdbcTypeIndicators context) {
107113
} );
108114
}
109115

110-
@Override @SuppressWarnings("unchecked")
111-
protected <X> TemporalJavaType<X> forDatePrecision(TypeConfiguration typeConfiguration) {
112-
return (TemporalJavaType<X>) JdbcDateJavaType.INSTANCE;
113-
}
114-
115-
@Override @SuppressWarnings("unchecked")
116-
protected <X> TemporalJavaType<X> forTimestampPrecision(TypeConfiguration typeConfiguration) {
117-
return (TemporalJavaType<X>) JdbcTimestampJavaType.INSTANCE;
118-
}
119-
120-
@Override @SuppressWarnings("unchecked")
121-
protected <X> TemporalJavaType<X> forTimePrecision(TypeConfiguration typeConfiguration) {
122-
return (TemporalJavaType<X>) JdbcTimeJavaType.INSTANCE;
123-
}
124-
125116
@Override
126117
public String toString(Date value) {
127118
// return JdbcTimestampJavaType.LITERAL_FORMATTER.format( value.toInstant() );
@@ -167,7 +158,7 @@ && switch ( precision ) {
167158
};
168159
}
169160

170-
@Override
161+
@Override @SuppressWarnings("deprecation")
171162
public int extractHashCode(Date value) {
172163
var calendar = Calendar.getInstance();
173164
calendar.setTime( value );

hibernate-core/src/main/java/org/hibernate/type/descriptor/java/InstantJavaType.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -52,24 +52,24 @@ public Instant cast(Object value) {
5252
return (Instant) value;
5353
}
5454

55-
@Override
55+
@Override @SuppressWarnings("deprecation")
5656
public TemporalType getPrecision() {
5757
return TemporalType.TIMESTAMP;
5858
}
5959

60-
@Override @SuppressWarnings("unchecked")
61-
protected <X> TemporalJavaType<X> forDatePrecision(TypeConfiguration typeConfiguration) {
62-
return (TemporalJavaType<X>) this;
60+
@Override
61+
protected TemporalJavaType<Instant> forDatePrecision(TypeConfiguration typeConfiguration) {
62+
return this;
6363
}
6464

65-
@Override @SuppressWarnings("unchecked")
66-
protected <X> TemporalJavaType<X> forTimestampPrecision(TypeConfiguration typeConfiguration) {
67-
return (TemporalJavaType<X>) this;
65+
@Override
66+
protected TemporalJavaType<Instant> forTimestampPrecision(TypeConfiguration typeConfiguration) {
67+
return this;
6868
}
6969

70-
@Override @SuppressWarnings("unchecked")
71-
protected <X> TemporalJavaType<X> forTimePrecision(TypeConfiguration typeConfiguration) {
72-
return (TemporalJavaType<X>) this;
70+
@Override
71+
protected TemporalJavaType<Instant> forTimePrecision(TypeConfiguration typeConfiguration) {
72+
return this;
7373
}
7474

7575
@Override

hibernate-core/src/main/java/org/hibernate/type/descriptor/java/JdbcDateJavaType.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public JdbcDateJavaType() {
5555
super( Date.class, DateMutabilityPlan.INSTANCE );
5656
}
5757

58-
@Override
58+
@Override @SuppressWarnings("deprecation")
5959
public TemporalType getPrecision() {
6060
return TemporalType.DATE;
6161
}
@@ -264,9 +264,8 @@ public JdbcType getRecommendedJdbcType(JdbcTypeIndicators context) {
264264
}
265265

266266
@Override
267-
protected <X> TemporalJavaType<X> forDatePrecision(TypeConfiguration typeConfiguration) {
268-
//noinspection unchecked
269-
return (TemporalJavaType<X>) this;
267+
protected TemporalJavaType<Date> forDatePrecision(TypeConfiguration typeConfiguration) {
268+
return this;
270269
}
271270

272271
public static class DateMutabilityPlan extends MutableMutabilityPlan<Date> {

hibernate-core/src/main/java/org/hibernate/type/descriptor/java/JdbcTimeJavaType.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public JdbcTimeJavaType() {
5555
super( Time.class, TimeMutabilityPlan.INSTANCE );
5656
}
5757

58-
@Override
58+
@Override @SuppressWarnings("deprecation")
5959
public TemporalType getPrecision() {
6060
return TemporalType.TIME;
6161
}
@@ -271,9 +271,8 @@ public int getDefaultSqlPrecision(Dialect dialect, JdbcType jdbcType) {
271271
}
272272

273273
@Override
274-
protected <X> TemporalJavaType<X> forTimePrecision(TypeConfiguration typeConfiguration) {
275-
//noinspection unchecked
276-
return (TemporalJavaType<X>) this;
274+
protected TemporalJavaType<Time> forTimePrecision(TypeConfiguration typeConfiguration) {
275+
return this;
277276
}
278277

279278
public static class TimeMutabilityPlan extends MutableMutabilityPlan<Time> {

hibernate-core/src/main/java/org/hibernate/type/descriptor/java/JdbcTimestampJavaType.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public Class<Timestamp> getJavaType() {
6666
return java.sql.Timestamp.class;
6767
}
6868

69-
@Override
69+
@Override @SuppressWarnings("deprecation")
7070
public TemporalType getPrecision() {
7171
return TemporalType.TIMESTAMP;
7272
}
@@ -236,14 +236,9 @@ public JdbcType getRecommendedJdbcType(JdbcTypeIndicators context) {
236236
return context.getJdbcType( Types.TIMESTAMP );
237237
}
238238

239-
@Override @SuppressWarnings("unchecked")
240-
protected <X> TemporalJavaType<X> forTimestampPrecision(TypeConfiguration typeConfiguration) {
241-
return (TemporalJavaType<X>) this;
242-
}
243-
244-
@Override @SuppressWarnings("unchecked")
245-
protected <X> TemporalJavaType<X> forDatePrecision(TypeConfiguration typeConfiguration) {
246-
return (TemporalJavaType<X>) JdbcDateJavaType.INSTANCE;
239+
@Override
240+
protected TemporalJavaType<Timestamp> forTimestampPrecision(TypeConfiguration typeConfiguration) {
241+
return this;
247242
}
248243

249244
@Override

0 commit comments

Comments
 (0)