Skip to content

Commit a2aff77

Browse files
committed
minor code change
1 parent b16c6a0 commit a2aff77

File tree

1 file changed

+31
-29
lines changed

1 file changed

+31
-29
lines changed

hibernate-core/src/main/java/org/hibernate/metamodel/internal/MetadataContext.java

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,10 @@
44
*/
55
package org.hibernate.metamodel.internal;
66

7-
import java.util.ArrayList;
8-
import java.util.HashMap;
9-
import java.util.HashSet;
10-
import java.util.List;
11-
import java.util.Map;
12-
import java.util.Set;
13-
import java.util.function.BiFunction;
14-
7+
import jakarta.persistence.metamodel.Attribute;
8+
import jakarta.persistence.metamodel.IdentifiableType;
9+
import jakarta.persistence.metamodel.SingularAttribute;
10+
import jakarta.persistence.metamodel.Type;
1511
import org.hibernate.AssertionFailure;
1612
import org.hibernate.Internal;
1713
import org.hibernate.MappingException;
@@ -50,10 +46,13 @@
5046
import org.hibernate.type.descriptor.jdbc.JdbcType;
5147
import org.hibernate.type.spi.TypeConfiguration;
5248

53-
import jakarta.persistence.metamodel.Attribute;
54-
import jakarta.persistence.metamodel.IdentifiableType;
55-
import jakarta.persistence.metamodel.SingularAttribute;
56-
import jakarta.persistence.metamodel.Type;
49+
import java.util.ArrayList;
50+
import java.util.HashMap;
51+
import java.util.HashSet;
52+
import java.util.List;
53+
import java.util.Map;
54+
import java.util.Set;
55+
import java.util.function.BiFunction;
5756

5857
import static java.util.Collections.unmodifiableMap;
5958
import static org.hibernate.metamodel.internal.InjectionHelper.injectField;
@@ -809,10 +808,8 @@ public void popEntityWorkedOn(PersistentClass persistentClass) {
809808
stackOfPersistentClassesBeingProcessed.size() - 1
810809
);
811810
if ( stackTop != persistentClass ) {
812-
throw new AssertionFailure(
813-
"Inconsistent popping: "
814-
+ persistentClass.getEntityName() + " instead of " + stackTop.getEntityName()
815-
);
811+
throw new AssertionFailure( "Inconsistent popping: "
812+
+ persistentClass.getEntityName() + " instead of " + stackTop.getEntityName() );
816813
}
817814
}
818815

@@ -833,20 +830,25 @@ public Set<MappedSuperclass> getUnusedMappedSuperclasses() {
833830
private final Map<Class<?>,BasicDomainType<?>> basicDomainTypeMap = new HashMap<>();
834831

835832
public <J> BasicDomainType<J> resolveBasicType(Class<J> javaType) {
836-
//noinspection unchecked
837-
return (BasicDomainType<J>) basicDomainTypeMap.computeIfAbsent(
838-
javaType,
839-
jt -> {
840-
// we cannot use getTypeConfiguration().standardBasicTypeForJavaType(javaType)
841-
// because that doesn't return the right thing for primitive types
842-
final JavaTypeRegistry registry = getTypeConfiguration().getJavaTypeRegistry();
843-
JavaType<J> javaTypeDescriptor = registry.resolveDescriptor( javaType );
844-
JdbcType jdbcType = javaTypeDescriptor.getRecommendedJdbcType( typeConfiguration.getCurrentBaseSqlTypeIndicators() );
845-
return javaType.isPrimitive()
846-
? new PrimitiveBasicTypeImpl<>( javaTypeDescriptor, jdbcType , javaType )
833+
@SuppressWarnings("unchecked")
834+
final BasicDomainType<J> domainType = (BasicDomainType<J>) basicDomainTypeMap.get( javaType );
835+
if ( domainType == null ) {
836+
// we cannot use getTypeConfiguration().standardBasicTypeForJavaType(javaType)
837+
// because that doesn't return the right thing for primitive types
838+
final JavaType<J> javaTypeDescriptor =
839+
getTypeConfiguration().getJavaTypeRegistry().resolveDescriptor( javaType );
840+
final JdbcType jdbcType =
841+
javaTypeDescriptor.getRecommendedJdbcType( typeConfiguration.getCurrentBaseSqlTypeIndicators() );
842+
final BasicDomainType<J> type =
843+
javaType.isPrimitive()
844+
? new PrimitiveBasicTypeImpl<>( javaTypeDescriptor, jdbcType, javaType )
847845
: new BasicTypeImpl<>( javaTypeDescriptor, jdbcType );
848-
}
849-
);
846+
basicDomainTypeMap.put( javaType, type );
847+
return type;
848+
}
849+
else {
850+
return domainType;
851+
}
850852
}
851853

852854
public <J> EmbeddableDomainType<J> locateEmbeddable(Class<J> embeddableClass, Component component) {

0 commit comments

Comments
 (0)