Skip to content

Commit c973caa

Browse files
committed
remove one last dodgy typing workaround after Date stuff
JavaTypeRegistry and TypeConfiguration are now much cleaner + related minor cleanups in these classes
1 parent b155512 commit c973caa

File tree

2 files changed

+30
-27
lines changed

2 files changed

+30
-27
lines changed

hibernate-core/src/main/java/org/hibernate/type/descriptor/java/spi/JavaTypeRegistry.java

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -122,19 +122,14 @@ public <J> JavaType<J> resolveDescriptor(Class<? extends J> javaType, Supplier<J
122122
}
123123

124124
private static <J> JavaType<J> checkCached(Class<? extends J> javaClass, JavaType<?> cached) {
125-
final var cachedClass = cached.getJavaTypeClass();
126-
if ( !isCompatible( javaClass, cachedClass ) ) {
125+
if ( cached.getJavaTypeClass() != canonicalize( javaClass ) ) {
127126
throw new IllegalStateException( "Type registration was corrupted for: " + javaClass.getName() );
128127
}
129128
@SuppressWarnings("unchecked") // safe, we just checked
130129
final var resolvedType = (JavaType<J>) cached;
131130
return resolvedType;
132131
}
133132

134-
private static boolean isCompatible(Class<?> givenClass, Class<?> cachedClass) {
135-
return cachedClass == canonicalize( givenClass );
136-
}
137-
138133
@Deprecated(since = "7.2", forRemoval = true) // Can be private
139134
private JavaType<?> resolveDescriptor(String javaTypeName, Supplier<? extends JavaType<?>> creator) {
140135
final var cached = descriptorsByTypeName.get( javaTypeName );
@@ -180,10 +175,15 @@ public <T> JavaType<T[]> resolveArrayDescriptor(Class<T> elementJavaType) {
180175
// () -> createArrayTypeDescriptor( elementJavaType, JavaTypeRegistry::createMutabilityPlan) );
181176
// }
182177

178+
@Internal @FunctionalInterface
179+
public interface MutabilityPlanCreator {
180+
MutabilityPlan<?> create(Type elementJavaType, TypeConfiguration typeConfiguration);
181+
}
182+
183183
@Internal // Can be demoted to private
184184
public <J> JavaType<J> resolveDescriptor(
185185
Class<J> javaType,
186-
BiFunction<Type, TypeConfiguration, MutabilityPlan<?>> mutabilityPlanCreator) {
186+
MutabilityPlanCreator mutabilityPlanCreator) {
187187
//noinspection unchecked
188188
return resolveDescriptor(
189189
javaType,
@@ -196,7 +196,7 @@ public <J> JavaType<J> resolveDescriptor(
196196
@Internal // Can be demoted to private
197197
public JavaType<?> resolveDescriptor(
198198
Type javaType,
199-
BiFunction<Type, TypeConfiguration, MutabilityPlan<?>> mutabilityPlanCreator) {
199+
MutabilityPlanCreator mutabilityPlanCreator) {
200200
return resolveDescriptor(
201201
javaType.getTypeName(),
202202
() -> {
@@ -214,20 +214,24 @@ else if ( javaType instanceof Class<?> javaClass && javaClass.isArray() ) {
214214
);
215215
}
216216

217-
private <J> JavaType<J[]> createArrayTypeDescriptor(Class<J> elementJavaType, BiFunction<Type, TypeConfiguration, MutabilityPlan<?>> mutabilityPlanCreator) {
217+
private <J> JavaType<J[]> createArrayTypeDescriptor(
218+
Class<J> elementJavaType,
219+
MutabilityPlanCreator mutabilityPlanCreator) {
218220
var elementTypeDescriptor = findDescriptor( elementJavaType );
219221
if ( elementTypeDescriptor == null ) {
220222
elementTypeDescriptor = createTypeDescriptor( elementJavaType, mutabilityPlanCreator );
221223
}
222224
return new ArrayJavaType<>( elementTypeDescriptor );
223225
}
224226

225-
private <J> JavaType<J> createTypeDescriptor(Type javaType, BiFunction<Type, TypeConfiguration, MutabilityPlan<?>> mutabilityPlanCreator) {
227+
private <J> JavaType<J> createTypeDescriptor(
228+
Type javaType,
229+
MutabilityPlanCreator mutabilityPlanCreator) {
226230
//noinspection unchecked
227231
return RegistryHelper.INSTANCE.createTypeDescriptor(
228232
javaType,
229233
() -> (MutabilityPlan<J>)
230-
mutabilityPlanCreator.apply( javaType, typeConfiguration ),
234+
mutabilityPlanCreator.create( javaType, typeConfiguration ),
231235
typeConfiguration
232236
);
233237
}
@@ -289,11 +293,12 @@ private <J> JavaType<?> resolveManagedTypeDescriptor(
289293

290294
final var determinedPlan =
291295
RegistryHelper.INSTANCE.determineMutabilityPlan( javaTypeClass, typeConfiguration );
292-
final MutabilityPlan<J> mutabilityPlan =
296+
return instantiate.apply(
297+
javaTypeClass,
293298
determinedPlan != null
294299
? determinedPlan
295-
: MutableMutabilityPlan.instance();
296-
return instantiate.apply( javaTypeClass, mutabilityPlan );
300+
: MutableMutabilityPlan.instance()
301+
);
297302
}
298303
);
299304
}

hibernate-core/src/main/java/org/hibernate/type/spi/TypeConfiguration.java

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ public JpaCompliance getJpaCompliance() {
266266
*/
267267
@Internal
268268
public Class<?> entityClassForEntityName(String entityName) {
269-
return scope.entityClassForEntityName(entityName);
269+
return scope.entityClassForEntityName( entityName );
270270
}
271271

272272
@Override
@@ -632,7 +632,6 @@ private Object readResolve() throws InvalidObjectException {
632632
}
633633
}
634634
}
635-
636635
return this;
637636
}
638637

@@ -649,18 +648,20 @@ private Class<?> entityClassForEntityName(String entityName) {
649648
private final ConcurrentMap<ArrayCacheKey, ArrayTupleType> arrayTuples = new ConcurrentHashMap<>();
650649

651650
public SqmBindableType<?> resolveTupleType(List<? extends SqmTypedNode<?>> typedNodes) {
652-
final var components = new SqmBindableType<?>[typedNodes.size()];
653-
for ( int i = 0; i < typedNodes.size(); i++ ) {
651+
final int size = typedNodes.size();
652+
final var components = new SqmBindableType<?>[size];
653+
for ( int i = 0; i < size; i++ ) {
654654
final var tupleElement = typedNodes.get(i);
655655
final var sqmExpressible = tupleElement.getNodeType();
656656
// keep null value for Named Parameters
657657
if ( tupleElement instanceof SqmParameter<?> && sqmExpressible == null ) {
658658
components[i] = QueryParameterJavaObjectType.INSTANCE;
659659
}
660660
else {
661-
components[i] = sqmExpressible != null
662-
? sqmExpressible
663-
: castNonNull( getBasicTypeForJavaType( Object.class ) );
661+
components[i] =
662+
sqmExpressible == null
663+
? castNonNull( getBasicTypeForJavaType( Object.class ) )
664+
: sqmExpressible;
664665
}
665666
}
666667
return arrayTuples.computeIfAbsent( new ArrayCacheKey( components ),
@@ -755,25 +756,22 @@ else if ( firstType==null && getSqlTemporalType( secondType ) != null ) {
755756

756757
private static boolean matchesJavaType(SqmExpressible<?> type, Class<?> javaType) {
757758
assert javaType != null;
758-
return type != null && javaType.isAssignableFrom( type.getRelationalJavaType().getJavaTypeClass() );
759+
return type != null
760+
&& javaType.isAssignableFrom( type.getRelationalJavaType().getJavaTypeClass() );
759761
}
760762

761763

762764
private final ConcurrentHashMap<Type, BasicType<?>> basicTypeByJavaType = new ConcurrentHashMap<>();
763765

764766
private static <J> BasicType<J> checkExisting(Class<J> javaClass, BasicType<?> existing) {
765-
if ( !isCompatible( javaClass, existing.getJavaType() ) ) {
767+
if ( existing.getJavaType() != canonicalize( javaClass ) ) {
766768
throw new IllegalStateException( "Type registration was corrupted for: " + javaClass.getName() );
767769
}
768770
@SuppressWarnings("unchecked") // safe, we just checked
769771
final var basicType = (BasicType<J>) existing;
770772
return basicType;
771773
}
772774

773-
private static <J> boolean isCompatible(Class<J> javaClass, Class<?> existing) {
774-
return existing.isAssignableFrom( canonicalize( javaClass ) );
775-
}
776-
777775
@Deprecated(since = "7.2", forRemoval = true) // no longer used
778776
public <J> @Nullable BasicType<J> getBasicTypeForGenericJavaType(Class<? super J> javaType, Type... typeArguments) {
779777
//noinspection unchecked

0 commit comments

Comments
 (0)