Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,13 @@
import java.io.Serializable;
import java.sql.Types;
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.Objects;
import java.util.Properties;
import java.util.concurrent.atomic.AtomicInteger;

import org.hibernate.boot.model.process.internal.UserTypeResolution;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.spi.BootstrapContext;
import org.hibernate.boot.spi.MetadataBuildingContext;
import org.hibernate.boot.spi.MetadataBuildingOptions;
import org.hibernate.internal.util.collections.CollectionHelper;
Expand All @@ -39,6 +37,7 @@
import org.hibernate.type.spi.TypeConfigurationAware;
import org.hibernate.usertype.UserType;

import static java.util.Collections.emptyMap;
import static org.hibernate.boot.model.process.internal.InferredBasicValueResolver.resolveSqlTypeIndicators;
import static org.hibernate.mapping.MappingHelper.injectParameters;

Expand Down Expand Up @@ -104,7 +103,7 @@ public BasicValue.Resolution<?> resolve(
if ( CollectionHelper.isEmpty( localConfigParameters ) ) {
// we can use the re-usable resolution...
if ( reusableResolution == null ) {
reusableResolution = createResolution( name, Collections.emptyMap(), indicators, context );
reusableResolution = createResolution( name, emptyMap(), indicators, context );
}
return reusableResolution;
}
Expand Down Expand Up @@ -136,9 +135,9 @@ private static <T> BasicValue.Resolution<T> createResolution(
Map<?,?> usageSiteProperties,
JdbcTypeIndicators indicators,
MetadataBuildingContext context) {
final BootstrapContext bootstrapContext = context.getBootstrapContext();
final TypeConfiguration typeConfiguration = bootstrapContext.getTypeConfiguration();
final BeanInstanceProducer instanceProducer = bootstrapContext.getCustomTypeProducer();
final var bootstrapContext = context.getBootstrapContext();
final var typeConfiguration = bootstrapContext.getTypeConfiguration();
final var instanceProducer = bootstrapContext.getCustomTypeProducer();
final boolean isKnownType =
Type.class.isAssignableFrom( typeImplementorClass )
|| UserType.class.isAssignableFrom( typeImplementorClass );
Expand All @@ -165,8 +164,8 @@ private static <T> BasicValue.Resolution<T> createResolution(

if ( typeInstance instanceof UserType ) {
@SuppressWarnings("unchecked")
final UserType<T> userType = (UserType<T>) typeInstance;
final CustomType<T> customType = new CustomType<>( userType, typeConfiguration );
final var userType = (UserType<T>) typeInstance;
final var customType = new CustomType<>( userType, typeConfiguration );
return new UserTypeResolution<>( customType, null, combinedTypeParameters );
}

Expand Down Expand Up @@ -243,13 +242,13 @@ else if ( typeImplementorClass.isInterface() ) {

private static <T> BasicValue.Resolution<T> createBasicTypeResolution(
BasicType<T> type,
Class<? extends T> typeImplementorClass,
Class<T> typeImplementorClass,
JdbcTypeIndicators indicators,
TypeConfiguration typeConfiguration) {
final JavaType<T> jtd = typeConfiguration.getJavaTypeRegistry().resolveDescriptor( typeImplementorClass );
final JdbcType jdbcType = typeConfiguration.getJdbcTypeRegistry().getDescriptor( Types.VARBINARY );
final BasicType<T> basicType = typeConfiguration.getBasicTypeRegistry().resolve( jtd, jdbcType );
final BasicType<T> resolved = resolveSqlTypeIndicators( indicators, basicType, jtd );
final var jtd = typeConfiguration.getJavaTypeRegistry().resolveDescriptor( typeImplementorClass );
final var jdbcType = typeConfiguration.getJdbcTypeRegistry().getDescriptor( Types.VARBINARY );
final var basicType = typeConfiguration.getBasicTypeRegistry().resolve( jtd, jdbcType );
final var resolved = resolveSqlTypeIndicators( indicators, basicType, jtd );

return new BasicValue.Resolution<>() {
@Override
Expand Down Expand Up @@ -304,7 +303,7 @@ private static <T> T instantiateType(
: instanceProducer.produceBeanInstance( typeImplementorClass );
}
else {
final ManagedBeanRegistry beanRegistry = serviceRegistry.requireService( ManagedBeanRegistry.class );
final var beanRegistry = serviceRegistry.requireService( ManagedBeanRegistry.class );
final ManagedBean<T> typeBean = name != null
? beanRegistry.getBean( name, typeImplementorClass, instanceProducer )
: beanRegistry.getBean( typeImplementorClass, instanceProducer );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ public AutoApplicableConverterDescriptor getAutoApplyDescriptor() {
public JpaAttributeConverter<X,Y> createJpaAttributeConverter(JpaAttributeConverterCreationContext context) {
return new AttributeConverterBean<>(
createManagedBean( context ),
context.getJavaTypeRegistry().getDescriptor( converterClass ),
context.getJavaTypeRegistry().resolveDescriptor( converterClass ),
getDomainClass(),
getRelationalClass(),
context
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.hibernate.type.descriptor.converter.spi.JpaAttributeConverter;
import org.hibernate.type.descriptor.java.spi.JavaTypeRegistry;


class ConverterDescriptorImpl<X, Y> implements ConverterDescriptor<X, Y> {
private final Class<? extends AttributeConverter<X, Y>> converterType;
private final ResolvedType domainTypeToMatch;
Expand Down Expand Up @@ -58,9 +59,9 @@ public JpaAttributeConverter<X, Y> createJpaAttributeConverter(JpaAttributeConve
final var converterBean = context.getManagedBeanRegistry().getBean( converterType );
return new AttributeConverterBean<>(
converterBean,
javaTypeRegistry.getDescriptor( converterBean.getBeanClass() ),
javaTypeRegistry.resolveDescriptor( domainTypeToMatch.getErasedType() ),
javaTypeRegistry.resolveDescriptor( relationalType.getErasedType() )
javaTypeRegistry.resolveDescriptor( converterBean.getBeanClass() ),
javaTypeRegistry.getDescriptor( domainTypeToMatch.getErasedType() ),
javaTypeRegistry.getDescriptor( relationalType.getErasedType() )
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import org.hibernate.models.spi.MemberDetails;

import com.fasterxml.classmate.ResolvedType;
import com.fasterxml.classmate.ResolvedTypeWithMembers;
import com.fasterxml.classmate.members.ResolvedField;
import com.fasterxml.classmate.members.ResolvedMember;
import com.fasterxml.classmate.members.ResolvedMethod;
Expand All @@ -38,15 +37,15 @@ public static ResolvedType resolveAttributeType(MemberDetails memberDetails, Met
}

public static ResolvedMember<? extends Member> resolveMember(MemberDetails memberDetails, MetadataBuildingContext buildingContext) {
final ClassmateContext classmateContext = buildingContext.getBootstrapContext().getClassmateContext();
final ResolvedType declaringClassType =
final var classmateContext = buildingContext.getBootstrapContext().getClassmateContext();
final var declaringClassType =
classmateContext.getTypeResolver()
.resolve( memberDetails.getDeclaringType().toJavaClass() );
final ResolvedTypeWithMembers declaringClassWithMembers =
final var declaringClassWithMembers =
classmateContext.getMemberResolver()
.resolve( declaringClassType, null, null );

final Member member = memberDetails.toJavaMember();
final var member = memberDetails.toJavaMember();
if ( member instanceof Method ) {
for ( ResolvedMethod resolvedMember : declaringClassWithMembers.getMemberMethods() ) {
if ( resolvedMember.getName().equals( member.getName() ) ) {
Expand All @@ -73,8 +72,8 @@ else if ( member instanceof Field ) {
public static List<ResolvedType> resolveConverterClassParamTypes(
Class<? extends AttributeConverter<?, ?>> converterClass,
ClassmateContext context) {
final ResolvedType converterType = context.getTypeResolver().resolve( converterClass );
final List<ResolvedType> converterParamTypes = converterType.typeParametersFor( AttributeConverter.class );
final var converterType = context.getTypeResolver().resolve( converterClass );
final var converterParamTypes = converterType.typeParametersFor( AttributeConverter.class );
if ( converterParamTypes == null ) {
throw new AnnotationException(
"Could not extract type argument from attribute converter class '"
Expand Down Expand Up @@ -118,7 +117,7 @@ else if ( erasedCheckType.isArray() ) {
}

private static boolean checkTypeParametersMatch(ResolvedType converterDefinedType, ResolvedType checkType) {
final List<ResolvedType> converterTypeParameters = converterDefinedType.getTypeParameters();
final var converterTypeParameters = converterDefinedType.getTypeParameters();
// if the converter did not define any nested type parameters,
// then the checks already done above are enough for a match
if ( converterTypeParameters.isEmpty() ) {
Expand All @@ -129,7 +128,7 @@ private static boolean checkTypeParametersMatch(ResolvedType converterDefinedTyp
// so we'd have a converter defined using something like, for example,
// List<String> for its domain type, and so we need to check those
// nested types as well
final List<ResolvedType> checkTypeParameters = checkType.getTypeParameters();
final var checkTypeParameters = checkType.getTypeParameters();
if ( checkTypeParameters.isEmpty() ) {
// the domain type did not define nested type params. a List<String> would not auto-match a List(<Object>)
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,15 +66,15 @@ public static <X,Y> JdbcMapping resolveAttributeConverter(
valueConverter.getDomainJavaType().getTypeName(),
valueConverter.getRelationalJavaType().getTypeName()
),
registry.<Y>resolveDescriptor( valueConverter.getRelationalJavaType().getJavaType() )
registry.resolveDescriptor( valueConverter.getRelationalJavaType().getJavaTypeClass() )
.getRecommendedJdbcType( typeConfiguration.getCurrentBaseSqlTypeIndicators() ),
valueConverter
);
}

public static BasicType<Object> resolveBasicType(Class<?> type, MetadataBuildingContext context) {
public static BasicType<?> resolveBasicType(Class<?> type, MetadataBuildingContext context) {
final var typeConfiguration = context.getBootstrapContext().getTypeConfiguration();
final var jtd = typeConfiguration.getJavaTypeRegistry().findDescriptor( type );
final JavaType<?> jtd = typeConfiguration.getJavaTypeRegistry().findDescriptor( type );
if ( jtd != null ) {
final JdbcType jdbcType = jtd.getRecommendedJdbcType(
new JdbcTypeIndicators() {
Expand Down Expand Up @@ -132,7 +132,9 @@ private static JavaType<?> getJavaType(
Class<JavaType<?>> javaTypeClass,
MetadataBuildingContext context,
TypeConfiguration typeConfiguration) {
final JavaType<?> registeredJtd = typeConfiguration.getJavaTypeRegistry().findDescriptor( javaTypeClass );
final JavaType<?> registeredJtd =
typeConfiguration.getJavaTypeRegistry()
.findDescriptor( javaTypeClass );
if ( registeredJtd != null ) {
return registeredJtd;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -403,7 +403,7 @@ private void prepareCollectionId(MemberDetails attribute) {
if ( idJavaClass != null ) {
return (BasicJavaType<?>)
buildingContext.getBootstrapContext().getTypeConfiguration()
.getJavaTypeRegistry().getDescriptor( idJavaClass.idType() );
.getJavaTypeRegistry().resolveDescriptor( idJavaClass.idType() );
}
final var idJavaType = attribute.locateAnnotationUsage( CollectionIdJavaType.class, modelContext );
if ( idJavaType != null ) {
Expand Down Expand Up @@ -561,7 +561,7 @@ private void prepareMapKey(
if ( mapKeyClassAnn != null ) {
return (BasicJavaType<?>)
typeConfiguration.getJavaTypeRegistry()
.getDescriptor( mapKeyClassAnn.value() );
.resolveDescriptor( mapKeyClassAnn.value() );
}
else {
return null;
Expand Down Expand Up @@ -723,7 +723,7 @@ private void prepareCollectionElement(
else {
return (BasicJavaType<?>)
typeConfiguration.getJavaTypeRegistry()
.getDescriptor( targetClassDetails );
.resolveDescriptor( targetClassDetails );
}
};
}
Expand Down Expand Up @@ -854,7 +854,7 @@ private void prepareAnyKey(MemberDetails member) {
if ( anyKeyJavaClass != null ) {
return (BasicJavaType<?>)
typeConfiguration.getJavaTypeRegistry()
.getDescriptor( anyKeyJavaClass.value() );
.resolveDescriptor( anyKeyJavaClass.value() );
}

// mainly used in XML interpretation
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public EnumeratedValueConverter(

ensureAccessibility( valueField );

final Class<E> enumJavaTypeClass = enumJavaType.getJavaTypeClass();
final var enumJavaTypeClass = enumJavaType.getJavaTypeClass();
final E[] enumConstants = enumJavaTypeClass.getEnumConstants();
relationalToEnumMap = mapOfSize( enumConstants.length );
enumToRelationalMap = mapOfSize( enumConstants.length );
Expand Down
Loading
Loading