Skip to content

Commit 9eaedc4

Browse files
committed
squash! try to improve type safety in JavaTypeRegistry and MutableMutabilityPlant
1 parent feea196 commit 9eaedc4

File tree

13 files changed

+212
-443
lines changed

13 files changed

+212
-443
lines changed

hibernate-core/src/main/java/org/hibernate/boot/model/convert/internal/ConverterHelper.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import org.hibernate.boot.spi.ClassmateContext;
1616
import org.hibernate.boot.spi.MetadataBuildingContext;
1717
import org.hibernate.internal.util.GenericsHelper;
18-
import org.hibernate.internal.util.type.PrimitiveWrapperHelper;
1918
import org.hibernate.models.spi.MemberDetails;
2019

2120
import com.fasterxml.classmate.ResolvedType;
@@ -24,6 +23,8 @@
2423
import com.fasterxml.classmate.members.ResolvedMethod;
2524
import jakarta.persistence.AttributeConverter;
2625

26+
import static org.hibernate.internal.util.type.PrimitiveWrappers.canonicalize;
27+
2728
/**
2829
* Helpers related to handling converters
2930
*/
@@ -100,11 +101,8 @@ else if ( converterParamTypes.size() != 2 ) {
100101
* @return {@code true} if they match, otherwise {@code false}.
101102
*/
102103
public static boolean typesMatch(ResolvedType converterDefinedType, ResolvedType checkType) {
103-
Class<?> erasedCheckType = checkType.getErasedType();
104-
if ( erasedCheckType.isPrimitive() ) {
105-
erasedCheckType = PrimitiveWrapperHelper.getDescriptorByPrimitiveType( erasedCheckType ).getWrapperClass();
106-
}
107-
else if ( erasedCheckType.isArray() ) {
104+
final var erasedCheckType = canonicalize( checkType.getErasedType() );
105+
if ( erasedCheckType.isArray() ) {
108106
// converterDefinedType have type parameters if it extends super generic class
109107
// but checkType doesn't have any type parameters
110108
// comparing erased type is enough

hibernate-core/src/main/java/org/hibernate/boot/model/process/internal/VersionResolution.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,29 +28,29 @@
2828
*/
2929
public class VersionResolution<E> implements BasicValue.Resolution<E> {
3030

31-
// todo (6.0) : support explicit JTD?
32-
// todo (6.0) : support explicit STD?
33-
34-
public static <E> VersionResolution<E> from(
31+
public static VersionResolution<?> from(
3532
Function<TypeConfiguration, java.lang.reflect.Type> implicitJavaTypeAccess,
3633
TimeZoneStorageType timeZoneStorageType,
3734
MetadataBuildingContext context) {
38-
39-
// todo (6.0) : add support for Dialect-specific interpretation?
40-
4135
final var typeConfiguration = context.getBootstrapContext().getTypeConfiguration();
4236
final var implicitJavaType = implicitJavaTypeAccess.apply( typeConfiguration );
43-
final JavaType<E> registered = typeConfiguration.getJavaTypeRegistry().getDescriptor( implicitJavaType );
44-
final var basicJavaType = (BasicJavaType<E>) registered;
37+
final var registered = typeConfiguration.getJavaTypeRegistry().resolveDescriptor( implicitJavaType );
38+
return resolve( timeZoneStorageType, context, (BasicJavaType<?>) registered );
39+
}
4540

41+
private static <E> VersionResolution<E> resolve(
42+
TimeZoneStorageType timeZoneStorageType,
43+
MetadataBuildingContext context,
44+
BasicJavaType<E> basicJavaType) {
45+
final var typeConfiguration = context.getBootstrapContext().getTypeConfiguration();
4646
final var recommendedJdbcType = basicJavaType.getRecommendedJdbcType(
4747
new JdbcTypeIndicators() {
4848
@Override
4949
public TypeConfiguration getTypeConfiguration() {
5050
return typeConfiguration;
5151
}
5252

53-
@Override
53+
@Override @SuppressWarnings("deprecation")
5454
public TemporalType getTemporalPrecision() {
5555
// if it is a temporal version, it needs to be a TIMESTAMP
5656
return TemporalType.TIMESTAMP;
@@ -106,7 +106,6 @@ public Dialect getDialect() {
106106
final var basicTypeRegistry = typeConfiguration.getBasicTypeRegistry();
107107
final var basicType = basicTypeRegistry.resolve( basicJavaType, recommendedJdbcType );
108108
final var legacyType = basicTypeRegistry.getRegisteredType( basicJavaType.getJavaTypeClass() );
109-
110109
assert legacyType.getJdbcType().getDefaultSqlTypeCode() == recommendedJdbcType.getDefaultSqlTypeCode();
111110

112111
return new VersionResolution<>( basicJavaType, recommendedJdbcType, basicType, legacyType );

hibernate-core/src/main/java/org/hibernate/internal/util/type/PrimitiveWrapperHelper.java

Lines changed: 0 additions & 278 deletions
This file was deleted.

0 commit comments

Comments
 (0)