Skip to content

Commit fc4a9a2

Browse files
committed
move impl of MappingContext from SessionFactoryImplementor to RuntimeMetamodelsImplementor
1 parent 902355d commit fc4a9a2

25 files changed

+64
-97
lines changed

hibernate-core/src/main/java/org/hibernate/dialect/lock/AbstractSelectLockingStrategy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public void lock(Object id, Object version, Object object, int timeout, EventSou
8383
lockable.getVersionType().nullSafeSet(
8484
st,
8585
version,
86-
lockable.getIdentifierType().getColumnSpan( factory ) + 1,
86+
lockable.getIdentifierType().getColumnSpan( factory.getRuntimeMetamodels() ) + 1,
8787
session
8888
);
8989
}

hibernate-core/src/main/java/org/hibernate/dialect/lock/PessimisticReadUpdateLockingStrategy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public void lock(Object id, Object version, Object object, int timeout, EventSou
8484
int offset = 2;
8585

8686
lockable.getIdentifierType().nullSafeSet( st, id, offset, session );
87-
offset += lockable.getIdentifierType().getColumnSpan( factory );
87+
offset += lockable.getIdentifierType().getColumnSpan( factory.getRuntimeMetamodels() );
8888

8989
if ( lockable.isVersioned() ) {
9090
lockable.getVersionType().nullSafeSet( st, version, offset, session );

hibernate-core/src/main/java/org/hibernate/dialect/lock/PessimisticWriteUpdateLockingStrategy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public void lock(Object id, Object version, Object object, int timeout, EventSou
8383
int offset = 2;
8484

8585
lockable.getIdentifierType().nullSafeSet( st, id, offset, session );
86-
offset += lockable.getIdentifierType().getColumnSpan( factory );
86+
offset += lockable.getIdentifierType().getColumnSpan( factory.getRuntimeMetamodels() );
8787

8888
if ( lockable.isVersioned() ) {
8989
lockable.getVersionType().nullSafeSet( st, version, offset, session );

hibernate-core/src/main/java/org/hibernate/dialect/lock/UpdateLockingStrategy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public void lock(
9090

9191
final Type lockableIdentifierType = lockable.getIdentifierType();
9292
lockableIdentifierType.nullSafeSet( st, id, offset, session );
93-
offset += lockableIdentifierType.getColumnSpan( factory );
93+
offset += lockableIdentifierType.getColumnSpan( factory.getRuntimeMetamodels() );
9494

9595
if ( lockable.isVersioned() ) {
9696
lockableVersionType.nullSafeSet( st, version, offset, session );

hibernate-core/src/main/java/org/hibernate/engine/spi/Mapping.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,9 @@
1919
* @author Gavin King
2020
*
2121
* @deprecated Use {@link org.hibernate.type.spi.TypeConfiguration},
22-
* {@link org.hibernate.boot.Metadata}, or
23-
* {@link org.hibernate.metamodel.RuntimeMetamodels}
24-
* or {@link MappingContext}
25-
* to access such information
22+
* {@link org.hibernate.boot.Metadata},
23+
* {@link org.hibernate.metamodel.RuntimeMetamodels},
24+
* or {@link MappingContext} to access such information
2625
*/
2726
@Deprecated(since = "6.0")
2827
public interface Mapping extends MappingContext {

hibernate-core/src/main/java/org/hibernate/engine/spi/SessionFactoryDelegatingImpl.java

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323

2424
import org.hibernate.CustomEntityDirtinessStrategy;
2525
import org.hibernate.HibernateException;
26-
import org.hibernate.MappingException;
2726
import org.hibernate.Session;
2827
import org.hibernate.SessionFactory;
2928
import org.hibernate.SessionFactoryObserver;
@@ -55,7 +54,6 @@
5554
import org.hibernate.sql.results.jdbc.spi.JdbcValuesMappingProducerProvider;
5655
import org.hibernate.stat.spi.StatisticsImplementor;
5756
import org.hibernate.generator.Generator;
58-
import org.hibernate.type.Type;
5957
import org.hibernate.type.descriptor.WrapperOptions;
6058
import org.hibernate.type.descriptor.java.JavaType;
6159
import org.hibernate.type.spi.TypeConfiguration;
@@ -298,21 +296,6 @@ public JavaType<Object> getTenantIdentifierJavaType() {
298296
return delegate.getTenantIdentifierJavaType();
299297
}
300298

301-
@Override
302-
public Type getIdentifierType(String className) throws MappingException {
303-
return delegate.getIdentifierType( className );
304-
}
305-
306-
@Override
307-
public String getIdentifierPropertyName(String className) throws MappingException {
308-
return delegate.getIdentifierPropertyName( className );
309-
}
310-
311-
@Override
312-
public Type getReferencedPropertyType(String className, String propertyName) throws MappingException {
313-
return delegate.getReferencedPropertyType( className, propertyName );
314-
}
315-
316299
@Override
317300
public String getUuid() {
318301
return delegate.getUuid();

hibernate-core/src/main/java/org/hibernate/engine/spi/SessionFactoryImplementor.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
import org.hibernate.generator.Generator;
3838
import org.hibernate.type.descriptor.WrapperOptions;
3939
import org.hibernate.type.descriptor.java.JavaType;
40-
import org.hibernate.type.MappingContext;
4140
import org.hibernate.type.spi.TypeConfiguration;
4241

4342
/**
@@ -50,7 +49,7 @@
5049
* @author Gavin King
5150
* @author Steve Ebersole
5251
*/
53-
public interface SessionFactoryImplementor extends MappingContext, SessionFactory {
52+
public interface SessionFactoryImplementor extends SessionFactory {
5453
/**
5554
* The UUID assigned to this {@code SessionFactory}.
5655
* <p>

hibernate-core/src/main/java/org/hibernate/id/insert/UniqueKeySelectingDelegate.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ protected void bindParameters(Object entity, PreparedStatement ps, SharedSession
8282
int index = 1;
8383
for ( int i = 0; i < uniqueKeyPropertyNames.length; i++ ) {
8484
uniqueKeyTypes[i].nullSafeSet( ps, persister.getPropertyValue( entity, uniqueKeyPropertyNames[i] ), index, session );
85-
index += uniqueKeyTypes[i].getColumnSpan( session.getFactory() );
85+
index += uniqueKeyTypes[i].getColumnSpan( session.getFactory().getRuntimeMetamodels() );
8686
}
8787
}
8888
}

hibernate-core/src/main/java/org/hibernate/internal/SessionFactoryImpl.java

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import org.hibernate.FlushMode;
3232
import org.hibernate.HibernateException;
3333
import org.hibernate.Interceptor;
34-
import org.hibernate.MappingException;
3534
import org.hibernate.Session;
3635
import org.hibernate.SessionEventListener;
3736
import org.hibernate.SessionFactory;
@@ -119,7 +118,6 @@
119118
import org.hibernate.sql.ast.spi.ParameterMarkerStrategy;
120119
import org.hibernate.sql.results.jdbc.spi.JdbcValuesMappingProducerProvider;
121120
import org.hibernate.stat.spi.StatisticsImplementor;
122-
import org.hibernate.type.Type;
123121
import org.hibernate.type.descriptor.WrapperOptions;
124122
import org.hibernate.type.descriptor.java.JavaType;
125123
import org.hibernate.type.spi.TypeConfiguration;
@@ -781,21 +779,6 @@ public Reference getReference() {
781779
);
782780
}
783781

784-
@Override
785-
public Type getIdentifierType(String className) throws MappingException {
786-
return runtimeMetamodels.getMappingMetamodel().getEntityDescriptor( className ).getIdentifierType();
787-
}
788-
789-
@Override
790-
public String getIdentifierPropertyName(String className) throws MappingException {
791-
return runtimeMetamodels.getMappingMetamodel().getEntityDescriptor( className ).getIdentifierPropertyName();
792-
}
793-
794-
@Override
795-
public Type getReferencedPropertyType(String className, String propertyName) throws MappingException {
796-
return runtimeMetamodels.getMappingMetamodel().getEntityDescriptor( className ).getPropertyType( propertyName );
797-
}
798-
799782
/**
800783
* Closes the session factory, releasing all held resources.
801784
*

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,9 @@ public EntityBatchLoaderInPredicate(
5656
super( entityDescriptor, loadQueryInfluencers );
5757
this.loadQueryInfluencers = loadQueryInfluencers;
5858
this.domainBatchSize = domainBatchSize;
59-
int idColumnCount = entityDescriptor.getEntityPersister().getIdentifierType().getColumnSpan( sessionFactory );
59+
int idColumnCount =
60+
entityDescriptor.getEntityPersister().getIdentifierType()
61+
.getColumnSpan( sessionFactory .getRuntimeMetamodels());
6062
this.sqlBatchSize = sessionFactory.getJdbcServices()
6163
.getDialect()
6264
.getBatchLoadSizingStrategy()

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public <T> EntityBatchLoader<T> createEntityBatchLoader(
3737
final SessionFactoryImplementor factory = loadQueryInfluencers.getSessionFactory();
3838
// NOTE : don't use the EntityIdentifierMapping here because it will not be known until later
3939
final Type identifierType = entityDescriptor.getEntityPersister().getIdentifierType();
40-
if ( identifierType.getColumnSpan( factory ) == 1
40+
if ( identifierType.getColumnSpan( factory.getRuntimeMetamodels() ) == 1
4141
&& supportsSqlArrayType( factory.getJdbcServices().getDialect() )
4242
&& identifierType instanceof BasicType ) {
4343
// we can use a single ARRAY parameter to send all the ids

hibernate-core/src/main/java/org/hibernate/metamodel/RuntimeMetamodels.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@
55
package org.hibernate.metamodel;
66

77
import org.hibernate.Incubating;
8-
import org.hibernate.metamodel.mapping.EmbeddableValuedModelPart;
98
import org.hibernate.metamodel.mapping.EntityMappingType;
109
import org.hibernate.metamodel.mapping.PluralAttributeMapping;
1110
import org.hibernate.metamodel.model.domain.JpaMetamodel;
12-
import org.hibernate.metamodel.model.domain.NavigableRole;
1311

1412
/**
1513
* Entry point providing access to the runtime metamodels:
@@ -42,21 +40,14 @@ default EntityMappingType getEntityMappingType(String entityName) {
4240
return getMappingMetamodel().getEntityDescriptor( entityName );
4341
}
4442

45-
default EntityMappingType getEntityMappingType(Class entityType) {
43+
default EntityMappingType getEntityMappingType(Class<?> entityType) {
4644
return getMappingMetamodel().getEntityDescriptor( entityType );
4745
}
4846

4947
default PluralAttributeMapping getPluralAttributeMapping(String role) {
5048
return getMappingMetamodel().findCollectionDescriptor( role ).getAttributeMapping();
5149
}
5250

53-
/**
54-
* @deprecated Use {@link #getEmbedded(NavigableRole)} instead
55-
*/
56-
@Deprecated
57-
EmbeddableValuedModelPart getEmbedded(String role);
58-
EmbeddableValuedModelPart getEmbedded(NavigableRole role);
59-
6051
default String getImportedName(String name) {
6152
return getMappingMetamodel().getImportedName( name );
6253
}

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

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,17 @@
44
*/
55
package org.hibernate.metamodel.internal;
66

7-
import org.hibernate.metamodel.mapping.EmbeddableValuedModelPart;
8-
import org.hibernate.metamodel.model.domain.NavigableRole;
7+
import org.hibernate.MappingException;
98
import org.hibernate.metamodel.model.domain.spi.JpaMetamodelImplementor;
109
import org.hibernate.metamodel.spi.MappingMetamodelImplementor;
1110
import org.hibernate.metamodel.spi.RuntimeMetamodelsImplementor;
11+
import org.hibernate.type.Type;
1212

1313
/**
1414
* @author Steve Ebersole
1515
*/
1616
public class RuntimeMetamodelsImpl implements RuntimeMetamodelsImplementor {
17+
1718
private JpaMetamodelImplementor jpaMetamodel;
1819
private MappingMetamodelImplementor mappingMetamodel;
1920

@@ -31,15 +32,21 @@ public MappingMetamodelImplementor getMappingMetamodel() {
3132
}
3233

3334
@Override
34-
public EmbeddableValuedModelPart getEmbedded(String role) {
35-
throw new UnsupportedOperationException( "Locating EmbeddableValuedModelPart by (String) role is not supported" );
35+
public Type getIdentifierType(String className) throws MappingException {
36+
return mappingMetamodel.getEntityDescriptor( className ).getIdentifierType();
3637
}
3738

3839
@Override
39-
public EmbeddableValuedModelPart getEmbedded(NavigableRole role) {
40-
return mappingMetamodel.getEmbeddableValuedModelPart( role );
40+
public String getIdentifierPropertyName(String className) throws MappingException {
41+
return mappingMetamodel.getEntityDescriptor( className ).getIdentifierPropertyName();
4142
}
4243

44+
@Override
45+
public Type getReferencedPropertyType(String className, String propertyName) throws MappingException {
46+
return mappingMetamodel.getEntityDescriptor( className ).getPropertyType( propertyName );
47+
}
48+
49+
4350
public void setMappingMetamodel(MappingMetamodelImplementor mappingMetamodel) {
4451
this.mappingMetamodel = mappingMetamodel;
4552
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -779,7 +779,8 @@ public static void addPrefixedPropertyNames(
779779
}
780780
}
781781
else if ( type instanceof EntityType entityType ) {
782-
final Type identifierOrUniqueKeyType = entityType.getIdentifierOrUniqueKeyType( factory );
782+
final Type identifierOrUniqueKeyType =
783+
entityType.getIdentifierOrUniqueKeyType( factory.getRuntimeMetamodels() );
783784
final String propertyName;
784785
if ( entityType.isReferenceToPrimaryKey() ) {
785786
propertyName = entityType.getAssociatedEntityPersister( factory ).getIdentifierPropertyName();

hibernate-core/src/main/java/org/hibernate/metamodel/spi/RuntimeMetamodelsImplementor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@
66

77
import org.hibernate.metamodel.RuntimeMetamodels;
88
import org.hibernate.metamodel.model.domain.spi.JpaMetamodelImplementor;
9+
import org.hibernate.type.MappingContext;
910

1011
/**
11-
* SPI extending {@link RuntimeMetamodels}.
12+
* SPI extending {@link RuntimeMetamodels} and mixing in {@link MappingContext}.
1213
*
1314
* @author Steve Ebersole
1415
*/
15-
public interface RuntimeMetamodelsImplementor extends RuntimeMetamodels {
16+
public interface RuntimeMetamodelsImplementor extends RuntimeMetamodels, MappingContext {
1617
@Override
1718
MappingMetamodelImplementor getMappingMetamodel();
1819

hibernate-core/src/main/java/org/hibernate/persister/collection/AbstractCollectionPersister.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ public AbstractCollectionPersister(
381381
else {
382382
final Column col = (Column) selectable;
383383
elementColumnNames[j] = col.getQuotedName( dialect );
384-
elementColumnWriters[j] = col.getWriteExpr( elementBootDescriptor.getSelectableType( factory, j ), dialect );
384+
elementColumnWriters[j] = col.getWriteExpr( elementBootDescriptor.getSelectableType( factory.getRuntimeMetamodels(), j ), dialect );
385385
elementColumnReaders[j] = col.getReadExpr( dialect );
386386
elementColumnReaderTemplates[j] = col.getTemplate(
387387
dialect,

hibernate-core/src/main/java/org/hibernate/query/sql/internal/ResultSetMappingProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ else if ( propertyType instanceof ComponentType componentType ) {
378378
final Type[] propertyTypes = componentType.getSubtypes();
379379
int aliasIndex = 0;
380380
for ( int i = 0; i < propertyNames.length; i++ ) {
381-
final int columnSpan = propertyTypes[i].getColumnSpan( loadable.getFactory() );
381+
final int columnSpan = propertyTypes[i].getColumnSpan( loadable.getFactory().getRuntimeMetamodels() );
382382
addFetchBuilder(
383383
suffix,
384384
loadable,

hibernate-core/src/main/java/org/hibernate/sql/results/graph/entity/internal/EntityDelayedFetchInitializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ public void resolveInstance(EntityDelayedFetchInitializerData data) {
178178
final String uniqueKeyPropertyName = referencedModelPart.getReferencedPropertyName();
179179
final Type uniqueKeyPropertyType = ( referencedModelPart.getReferencedPropertyName() == null ) ?
180180
concreteDescriptor.getIdentifierType() :
181-
session.getFactory()
181+
session.getFactory().getRuntimeMetamodels()
182182
.getReferencedPropertyType(
183183
concreteDescriptor.getEntityName(),
184184
uniqueKeyPropertyName

hibernate-core/src/main/java/org/hibernate/type/ComponentType.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ public boolean isDirty(final Object x, final Object y, final boolean[] checkable
284284
// null value and empty component are considered equivalent
285285
int loc = 0;
286286
for ( int i = 0; i < propertySpan; i++ ) {
287-
int len = propertyTypes[i].getColumnSpan( session.getFactory() );
287+
int len = propertyTypes[i].getColumnSpan( session.getFactory().getRuntimeMetamodels() );
288288
if ( len <= 1 ) {
289289
final boolean dirty = ( len == 0 || checkable[loc] ) &&
290290
propertyTypes[i].isDirty( getPropertyValue( x, i ), getPropertyValue( y, i ), session );
@@ -322,7 +322,7 @@ public boolean isModified(
322322
// null value and empty components are considered equivalent
323323
int loc = 0;
324324
for ( int i = 0; i < propertySpan; i++ ) {
325-
final int len = propertyTypes[i].getColumnSpan( session.getFactory() );
325+
final int len = propertyTypes[i].getColumnSpan( session.getFactory().getRuntimeMetamodels() );
326326
final boolean[] subcheckable = new boolean[len];
327327
System.arraycopy( checkable, loc, subcheckable, 0, len );
328328
if ( propertyTypes[i].isModified( getPropertyValue( old, i ),
@@ -343,7 +343,7 @@ public void nullSafeSet(PreparedStatement st, Object value, int begin, SharedSes
343343

344344
for ( int i = 0; i < propertySpan; i++ ) {
345345
propertyTypes[i].nullSafeSet( st, subvalues[i], begin, session );
346-
begin += propertyTypes[i].getColumnSpan( session.getFactory() );
346+
begin += propertyTypes[i].getColumnSpan( session.getFactory().getRuntimeMetamodels() );
347347
}
348348
}
349349

@@ -359,7 +359,7 @@ public void nullSafeSet(
359359
final Object[] subvalues = nullSafeGetValues( value );
360360
int loc = 0;
361361
for ( int i = 0; i < propertySpan; i++ ) {
362-
int len = propertyTypes[i].getColumnSpan( session.getFactory() );
362+
int len = propertyTypes[i].getColumnSpan( session.getFactory().getRuntimeMetamodels() );
363363
//noinspection StatementWithEmptyBody
364364
if ( len == 0 ) {
365365
//noop
@@ -763,7 +763,7 @@ public Object extract(CallableStatement statement, int startIndex, SharedSession
763763
notNull = true;
764764
}
765765
values[i] = value;
766-
currentIndex += propertyType.getColumnSpan( session.getFactory() );
766+
currentIndex += propertyType.getColumnSpan( session.getFactory().getRuntimeMetamodels() );
767767
}
768768

769769
if ( polymorphic ) {

0 commit comments

Comments
 (0)