Skip to content

Commit 62554dc

Browse files
committed
type inference in the SQM tree + change coerce() signature
- fixed the unsoundness of the coerce() method - fixed a method which depended on an unchecked cast
1 parent 2d71792 commit 62554dc

File tree

145 files changed

+718
-735
lines changed

Some content is hidden

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

145 files changed

+718
-735
lines changed

hibernate-core/src/main/java/org/hibernate/cache/internal/DefaultCacheKeysFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public static Object staticCreateEntityKey(Object id, EntityPersister persister,
6767

6868
private static Object getCoercedId(Object id, SessionFactoryImplementor factory, Type keyType) {
6969
return keyType instanceof BasicType<?> basicType
70-
? basicType.getJavaTypeDescriptor().coerce( id, factory::getTypeConfiguration )
70+
? basicType.getJavaTypeDescriptor().coerce( id )
7171
: id;
7272
}
7373

hibernate-core/src/main/java/org/hibernate/cache/internal/EnabledCaching.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ public boolean containsEntity(String entityName, Object identifier) {
229229
if ( cacheAccess != null ) {
230230
final Object idValue =
231231
persister.getIdentifierMapping().getJavaType()
232-
.coerce( identifier, sessionFactory::getTypeConfiguration );
232+
.coerce( identifier );
233233
final Object key = cacheAccess.generateCacheKey(
234234
idValue,
235235
persister.getRootEntityDescriptor().getEntityPersister(),

hibernate-core/src/main/java/org/hibernate/loader/ast/internal/AbstractMultiIdEntityLoader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ private List<T> orderedMultiLoad(
161161
}
162162

163163
private Object coerce(SharedSessionContractImplementor session, JavaType<?> idType, Object id) {
164-
return idCoercionEnabled ? idType.coerce( id, session ) : id;
164+
return idCoercionEnabled ? idType.coerce( id ) : id;
165165
}
166166

167167
private static LockOptions lockOptions(MultiIdLoadOptions loadOptions) {

hibernate-core/src/main/java/org/hibernate/loader/ast/internal/LoaderHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ public static <K> K[] normalizeKeys(
188188
}
189189
else {
190190
for ( int i = 0; i < keys.length; i++ ) {
191-
typedArray[i] = keyJavaType.coerce( keys[i], session );
191+
typedArray[i] = keyJavaType.cast( keyJavaType.coerce( keys[i] ) );
192192
}
193193
}
194194
return typedArray;

hibernate-core/src/main/java/org/hibernate/loader/internal/IdentifierLoadAccessImpl.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@
2626
import org.hibernate.graph.GraphSemantic;
2727
import org.hibernate.graph.spi.RootGraphImplementor;
2828
import org.hibernate.persister.entity.EntityPersister;
29-
import org.hibernate.type.descriptor.java.JavaType;
30-
import org.hibernate.type.spi.TypeConfiguration;
3129

3230
import static org.hibernate.proxy.HibernateProxy.extractLazyInitializer;
3331

@@ -37,7 +35,7 @@
3735
* @author Steve Ebersole
3836
*/
3937
// Hibernate Reactive extends this class: see ReactiveIdentifierLoadAccessImpl
40-
public class IdentifierLoadAccessImpl<T> implements IdentifierLoadAccess<T>, JavaType.CoercionContext {
38+
public class IdentifierLoadAccessImpl<T> implements IdentifierLoadAccess<T> {
4139
private final LoadAccessContext context;
4240
private final EntityPersister entityPersister;
4341

@@ -199,7 +197,7 @@ protected Object coerceId(Object id, SessionFactoryImplementor factory) {
199197
final var identifierMapping = entityPersister.getIdentifierMapping();
200198
return identifierMapping.isVirtual()
201199
? id // special case for a class with an @IdClass
202-
: identifierMapping.getJavaType().coerce( id, this );
200+
: identifierMapping.getJavaType().coerce( id );
203201
}
204202
catch ( Exception e ) {
205203
throw new IllegalArgumentException( "Argument '" + id
@@ -233,11 +231,6 @@ private static boolean isLoadByIdComplianceEnabled(SessionFactoryImplementor fac
233231
return factory.getSessionFactoryOptions().getJpaCompliance().isLoadByIdComplianceEnabled();
234232
}
235233

236-
@Override
237-
public TypeConfiguration getTypeConfiguration() {
238-
return context.getSession().getSessionFactory().getTypeConfiguration();
239-
}
240-
241234
@Override
242235
public IdentifierLoadAccess<T> enableFetchProfile(String profileName) {
243236
if ( !context.getSession().getFactory().containsFetchProfileDefinition( profileName ) ) {

hibernate-core/src/main/java/org/hibernate/metamodel/mapping/internal/SimpleNaturalIdMapping.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,9 @@
4242
* Single-attribute NaturalIdMapping implementation
4343
*/
4444
public class SimpleNaturalIdMapping extends AbstractNaturalIdMapping
45-
implements JavaType.CoercionContext, BasicValuedMapping {
45+
implements BasicValuedMapping {
4646
private final SingularAttributeMapping attribute;
4747
private final SessionFactoryImplementor sessionFactory;
48-
private final TypeConfiguration typeConfiguration;
4948

5049
public SimpleNaturalIdMapping(
5150
SingularAttributeMapping attribute,
@@ -54,7 +53,6 @@ public SimpleNaturalIdMapping(
5453
super( declaringType, attribute.getAttributeMetadata().isUpdatable() );
5554
this.attribute = attribute;
5655
this.sessionFactory = creationProcess.getCreationContext().getSessionFactory();
57-
this.typeConfiguration = creationProcess.getCreationContext().getTypeConfiguration();
5856
}
5957

6058
public SingularAttributeMapping getAttribute() {
@@ -143,7 +141,7 @@ public Object normalizeInput(Object incoming) {
143141
final Object normalizedValue = normalizedValue( incoming );
144142
return isLoadByIdComplianceEnabled()
145143
? normalizedValue
146-
: getJavaType().coerce( normalizedValue, this );
144+
: getJavaType().coerce( normalizedValue );
147145
}
148146

149147
private Object normalizedValue(Object incoming) {
@@ -295,11 +293,6 @@ private Dialect getDialect() {
295293
return sessionFactory.getJdbcServices().getDialect();
296294
}
297295

298-
@Override
299-
public TypeConfiguration getTypeConfiguration() {
300-
return typeConfiguration;
301-
}
302-
303296
@Override
304297
public AttributeMapping asAttributeMapping() {
305298
return getAttribute();

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPath.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ protected AnyDiscriminatorSqmPath(
2929

3030
@Override
3131
public AnyDiscriminatorSqmPath<T> copy(SqmCopyContext context) {
32-
final AnyDiscriminatorSqmPath<T> existing = context.getCopy( this );
32+
final var existing = context.getCopy( this );
3333
if ( existing != null ) {
3434
return existing;
3535
}

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddedDiscriminatorSqmPath.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public EmbeddableDomainType<T> getEmbeddableDomainType() {
5252

5353
@Override
5454
public EmbeddedDiscriminatorSqmPath<T> copy(SqmCopyContext context) {
55-
final EmbeddedDiscriminatorSqmPath<T> existing = context.getCopy( this );
55+
final var existing = context.getCopy( this );
5656
if ( existing != null ) {
5757
return existing;
5858
}

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EntityDiscriminatorSqmPath.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public EntityMappingType getEntityDescriptor() {
6464

6565
@Override
6666
public EntityDiscriminatorSqmPath copy(SqmCopyContext context) {
67-
final EntityDiscriminatorSqmPath existing = context.getCopy( this );
67+
final var existing = context.getCopy( this );
6868
if ( existing != null ) {
6969
return existing;
7070
}

hibernate-core/src/main/java/org/hibernate/query/hql/internal/BasicDotIdentifierConsumer.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,8 +198,7 @@ private SemanticPathPart resolvePath(String identifier, boolean isTerminal, SqmC
198198
if ( pathRootByExposedNavigable != null ) {
199199
// identifier is an "unqualified attribute reference"
200200
validateAsRoot( pathRootByExposedNavigable );
201-
final SqmPath<?> sqmPath =
202-
pathRootByExposedNavigable.get( identifier, true );
201+
final var sqmPath = pathRootByExposedNavigable.get( identifier, true );
203202
return isTerminal ? sqmPath : new DomainPathPart( sqmPath );
204203
}
205204

0 commit comments

Comments
 (0)