Skip to content

Commit 1144b60

Browse files
committed
distinguish typesafe resolveDescriptor() from unsafe getDescriptor()
1 parent 0f80da9 commit 1144b60

File tree

82 files changed

+635
-642
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+635
-642
lines changed

hibernate-core/src/main/java/org/hibernate/boot/model/TypeDefinition.java

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,13 @@
77
import java.io.Serializable;
88
import java.sql.Types;
99
import java.util.Arrays;
10-
import java.util.Collections;
1110
import java.util.Map;
1211
import java.util.Objects;
1312
import java.util.Properties;
1413
import java.util.concurrent.atomic.AtomicInteger;
1514

1615
import org.hibernate.boot.model.process.internal.UserTypeResolution;
1716
import org.hibernate.boot.registry.StandardServiceRegistry;
18-
import org.hibernate.boot.spi.BootstrapContext;
1917
import org.hibernate.boot.spi.MetadataBuildingContext;
2018
import org.hibernate.boot.spi.MetadataBuildingOptions;
2119
import org.hibernate.internal.util.collections.CollectionHelper;
@@ -39,6 +37,7 @@
3937
import org.hibernate.type.spi.TypeConfigurationAware;
4038
import org.hibernate.usertype.UserType;
4139

40+
import static java.util.Collections.emptyMap;
4241
import static org.hibernate.boot.model.process.internal.InferredBasicValueResolver.resolveSqlTypeIndicators;
4342
import static org.hibernate.mapping.MappingHelper.injectParameters;
4443

@@ -104,7 +103,7 @@ public BasicValue.Resolution<?> resolve(
104103
if ( CollectionHelper.isEmpty( localConfigParameters ) ) {
105104
// we can use the re-usable resolution...
106105
if ( reusableResolution == null ) {
107-
reusableResolution = createResolution( name, Collections.emptyMap(), indicators, context );
106+
reusableResolution = createResolution( name, emptyMap(), indicators, context );
108107
}
109108
return reusableResolution;
110109
}
@@ -136,9 +135,9 @@ private static <T> BasicValue.Resolution<T> createResolution(
136135
Map<?,?> usageSiteProperties,
137136
JdbcTypeIndicators indicators,
138137
MetadataBuildingContext context) {
139-
final BootstrapContext bootstrapContext = context.getBootstrapContext();
140-
final TypeConfiguration typeConfiguration = bootstrapContext.getTypeConfiguration();
141-
final BeanInstanceProducer instanceProducer = bootstrapContext.getCustomTypeProducer();
138+
final var bootstrapContext = context.getBootstrapContext();
139+
final var typeConfiguration = bootstrapContext.getTypeConfiguration();
140+
final var instanceProducer = bootstrapContext.getCustomTypeProducer();
142141
final boolean isKnownType =
143142
Type.class.isAssignableFrom( typeImplementorClass )
144143
|| UserType.class.isAssignableFrom( typeImplementorClass );
@@ -165,8 +164,8 @@ private static <T> BasicValue.Resolution<T> createResolution(
165164

166165
if ( typeInstance instanceof UserType ) {
167166
@SuppressWarnings("unchecked")
168-
final UserType<T> userType = (UserType<T>) typeInstance;
169-
final CustomType<T> customType = new CustomType<>( userType, typeConfiguration );
167+
final var userType = (UserType<T>) typeInstance;
168+
final var customType = new CustomType<>( userType, typeConfiguration );
170169
return new UserTypeResolution<>( customType, null, combinedTypeParameters );
171170
}
172171

@@ -243,13 +242,13 @@ else if ( typeImplementorClass.isInterface() ) {
243242

244243
private static <T> BasicValue.Resolution<T> createBasicTypeResolution(
245244
BasicType<T> type,
246-
Class<? extends T> typeImplementorClass,
245+
Class<T> typeImplementorClass,
247246
JdbcTypeIndicators indicators,
248247
TypeConfiguration typeConfiguration) {
249-
final JavaType<T> jtd = typeConfiguration.getJavaTypeRegistry().resolveDescriptor( typeImplementorClass );
250-
final JdbcType jdbcType = typeConfiguration.getJdbcTypeRegistry().getDescriptor( Types.VARBINARY );
251-
final BasicType<T> basicType = typeConfiguration.getBasicTypeRegistry().resolve( jtd, jdbcType );
252-
final BasicType<T> resolved = resolveSqlTypeIndicators( indicators, basicType, jtd );
248+
final var jtd = typeConfiguration.getJavaTypeRegistry().resolveDescriptor( typeImplementorClass );
249+
final var jdbcType = typeConfiguration.getJdbcTypeRegistry().getDescriptor( Types.VARBINARY );
250+
final var basicType = typeConfiguration.getBasicTypeRegistry().resolve( jtd, jdbcType );
251+
final var resolved = resolveSqlTypeIndicators( indicators, basicType, jtd );
253252

254253
return new BasicValue.Resolution<>() {
255254
@Override
@@ -304,7 +303,7 @@ private static <T> T instantiateType(
304303
: instanceProducer.produceBeanInstance( typeImplementorClass );
305304
}
306305
else {
307-
final ManagedBeanRegistry beanRegistry = serviceRegistry.requireService( ManagedBeanRegistry.class );
306+
final var beanRegistry = serviceRegistry.requireService( ManagedBeanRegistry.class );
308307
final ManagedBean<T> typeBean = name != null
309308
? beanRegistry.getBean( name, typeImplementorClass, instanceProducer )
310309
: beanRegistry.getBean( typeImplementorClass, instanceProducer );

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public AutoApplicableConverterDescriptor getAutoApplyDescriptor() {
8484
public JpaAttributeConverter<X,Y> createJpaAttributeConverter(JpaAttributeConverterCreationContext context) {
8585
return new AttributeConverterBean<>(
8686
createManagedBean( context ),
87-
context.getJavaTypeRegistry().getDescriptor( converterClass ),
87+
context.getJavaTypeRegistry().resolveDescriptor( converterClass ),
8888
getDomainClass(),
8989
getRelationalClass(),
9090
context

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.hibernate.type.descriptor.converter.spi.JpaAttributeConverter;
1414
import org.hibernate.type.descriptor.java.spi.JavaTypeRegistry;
1515

16+
1617
class ConverterDescriptorImpl<X, Y> implements ConverterDescriptor<X, Y> {
1718
private final Class<? extends AttributeConverter<X, Y>> converterType;
1819
private final ResolvedType domainTypeToMatch;
@@ -58,9 +59,9 @@ public JpaAttributeConverter<X, Y> createJpaAttributeConverter(JpaAttributeConve
5859
final var converterBean = context.getManagedBeanRegistry().getBean( converterType );
5960
return new AttributeConverterBean<>(
6061
converterBean,
61-
javaTypeRegistry.getDescriptor( converterBean.getBeanClass() ),
62-
javaTypeRegistry.resolveDescriptor( domainTypeToMatch.getErasedType() ),
63-
javaTypeRegistry.resolveDescriptor( relationalType.getErasedType() )
62+
javaTypeRegistry.resolveDescriptor( converterBean.getBeanClass() ),
63+
javaTypeRegistry.getDescriptor( domainTypeToMatch.getErasedType() ),
64+
javaTypeRegistry.getDescriptor( relationalType.getErasedType() )
6465
);
6566
}
6667
}

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

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import org.hibernate.models.spi.MemberDetails;
2020

2121
import com.fasterxml.classmate.ResolvedType;
22-
import com.fasterxml.classmate.ResolvedTypeWithMembers;
2322
import com.fasterxml.classmate.members.ResolvedField;
2423
import com.fasterxml.classmate.members.ResolvedMember;
2524
import com.fasterxml.classmate.members.ResolvedMethod;
@@ -38,15 +37,15 @@ public static ResolvedType resolveAttributeType(MemberDetails memberDetails, Met
3837
}
3938

4039
public static ResolvedMember<? extends Member> resolveMember(MemberDetails memberDetails, MetadataBuildingContext buildingContext) {
41-
final ClassmateContext classmateContext = buildingContext.getBootstrapContext().getClassmateContext();
42-
final ResolvedType declaringClassType =
40+
final var classmateContext = buildingContext.getBootstrapContext().getClassmateContext();
41+
final var declaringClassType =
4342
classmateContext.getTypeResolver()
4443
.resolve( memberDetails.getDeclaringType().toJavaClass() );
45-
final ResolvedTypeWithMembers declaringClassWithMembers =
44+
final var declaringClassWithMembers =
4645
classmateContext.getMemberResolver()
4746
.resolve( declaringClassType, null, null );
4847

49-
final Member member = memberDetails.toJavaMember();
48+
final var member = memberDetails.toJavaMember();
5049
if ( member instanceof Method ) {
5150
for ( ResolvedMethod resolvedMember : declaringClassWithMembers.getMemberMethods() ) {
5251
if ( resolvedMember.getName().equals( member.getName() ) ) {
@@ -73,8 +72,8 @@ else if ( member instanceof Field ) {
7372
public static List<ResolvedType> resolveConverterClassParamTypes(
7473
Class<? extends AttributeConverter<?, ?>> converterClass,
7574
ClassmateContext context) {
76-
final ResolvedType converterType = context.getTypeResolver().resolve( converterClass );
77-
final List<ResolvedType> converterParamTypes = converterType.typeParametersFor( AttributeConverter.class );
75+
final var converterType = context.getTypeResolver().resolve( converterClass );
76+
final var converterParamTypes = converterType.typeParametersFor( AttributeConverter.class );
7877
if ( converterParamTypes == null ) {
7978
throw new AnnotationException(
8079
"Could not extract type argument from attribute converter class '"
@@ -118,7 +117,7 @@ else if ( erasedCheckType.isArray() ) {
118117
}
119118

120119
private static boolean checkTypeParametersMatch(ResolvedType converterDefinedType, ResolvedType checkType) {
121-
final List<ResolvedType> converterTypeParameters = converterDefinedType.getTypeParameters();
120+
final var converterTypeParameters = converterDefinedType.getTypeParameters();
122121
// if the converter did not define any nested type parameters,
123122
// then the checks already done above are enough for a match
124123
if ( converterTypeParameters.isEmpty() ) {
@@ -129,7 +128,7 @@ private static boolean checkTypeParametersMatch(ResolvedType converterDefinedTyp
129128
// so we'd have a converter defined using something like, for example,
130129
// List<String> for its domain type, and so we need to check those
131130
// nested types as well
132-
final List<ResolvedType> checkTypeParameters = checkType.getTypeParameters();
131+
final var checkTypeParameters = checkType.getTypeParameters();
133132
if ( checkTypeParameters.isEmpty() ) {
134133
// the domain type did not define nested type params. a List<String> would not auto-match a List(<Object>)
135134
return false;

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,15 @@ public static <X,Y> JdbcMapping resolveAttributeConverter(
6666
valueConverter.getDomainJavaType().getTypeName(),
6767
valueConverter.getRelationalJavaType().getTypeName()
6868
),
69-
registry.<Y>resolveDescriptor( valueConverter.getRelationalJavaType().getJavaType() )
69+
registry.resolveDescriptor( valueConverter.getRelationalJavaType().getJavaTypeClass() )
7070
.getRecommendedJdbcType( typeConfiguration.getCurrentBaseSqlTypeIndicators() ),
7171
valueConverter
7272
);
7373
}
7474

75-
public static BasicType<Object> resolveBasicType(Class<?> type, MetadataBuildingContext context) {
75+
public static BasicType<?> resolveBasicType(Class<?> type, MetadataBuildingContext context) {
7676
final var typeConfiguration = context.getBootstrapContext().getTypeConfiguration();
77-
final var jtd = typeConfiguration.getJavaTypeRegistry().findDescriptor( type );
77+
final JavaType<?> jtd = typeConfiguration.getJavaTypeRegistry().findDescriptor( type );
7878
if ( jtd != null ) {
7979
final JdbcType jdbcType = jtd.getRecommendedJdbcType(
8080
new JdbcTypeIndicators() {
@@ -132,7 +132,9 @@ private static JavaType<?> getJavaType(
132132
Class<JavaType<?>> javaTypeClass,
133133
MetadataBuildingContext context,
134134
TypeConfiguration typeConfiguration) {
135-
final JavaType<?> registeredJtd = typeConfiguration.getJavaTypeRegistry().findDescriptor( javaTypeClass );
135+
final JavaType<?> registeredJtd =
136+
typeConfiguration.getJavaTypeRegistry()
137+
.findDescriptor( javaTypeClass );
136138
if ( registeredJtd != null ) {
137139
return registeredJtd;
138140
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ private void prepareCollectionId(MemberDetails attribute) {
403403
if ( idJavaClass != null ) {
404404
return (BasicJavaType<?>)
405405
buildingContext.getBootstrapContext().getTypeConfiguration()
406-
.getJavaTypeRegistry().getDescriptor( idJavaClass.idType() );
406+
.getJavaTypeRegistry().resolveDescriptor( idJavaClass.idType() );
407407
}
408408
final var idJavaType = attribute.locateAnnotationUsage( CollectionIdJavaType.class, modelContext );
409409
if ( idJavaType != null ) {
@@ -561,7 +561,7 @@ private void prepareMapKey(
561561
if ( mapKeyClassAnn != null ) {
562562
return (BasicJavaType<?>)
563563
typeConfiguration.getJavaTypeRegistry()
564-
.getDescriptor( mapKeyClassAnn.value() );
564+
.resolveDescriptor( mapKeyClassAnn.value() );
565565
}
566566
else {
567567
return null;
@@ -723,7 +723,7 @@ private void prepareCollectionElement(
723723
else {
724724
return (BasicJavaType<?>)
725725
typeConfiguration.getJavaTypeRegistry()
726-
.getDescriptor( targetClassDetails );
726+
.resolveDescriptor( targetClassDetails );
727727
}
728728
};
729729
}
@@ -854,7 +854,7 @@ private void prepareAnyKey(MemberDetails member) {
854854
if ( anyKeyJavaClass != null ) {
855855
return (BasicJavaType<?>)
856856
typeConfiguration.getJavaTypeRegistry()
857-
.getDescriptor( anyKeyJavaClass.value() );
857+
.resolveDescriptor( anyKeyJavaClass.value() );
858858
}
859859

860860
// mainly used in XML interpretation

0 commit comments

Comments
 (0)