Skip to content

Commit 79045f9

Browse files
committed
HHH-18482 - Provide access to a mutable ClassDetailsRegistry from the Integrator
HHH-19274 - Deprecate MetadataBuilder#applyIndexView and friends
1 parent e8e4678 commit 79045f9

32 files changed

+409
-439
lines changed

hibernate-core/src/main/java/org/hibernate/boot/MetadataBuilder.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,10 @@ public interface MetadataBuilder {
146146
* @param jandexView The Jandex index to use.
147147
*
148148
* @return {@code this}, for method chaining
149+
*
150+
* @deprecated Set the {@code hibernate-models} setting {@code hibernate.models.jandex.index} instead. This method has no effect.
149151
*/
152+
@Deprecated
150153
MetadataBuilder applyIndexView(Object jandexView);
151154

152155
/**

hibernate-core/src/main/java/org/hibernate/boot/internal/BootstrapContextImpl.java

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,6 @@
44
*/
55
package org.hibernate.boot.internal;
66

7-
import java.util.ArrayList;
8-
import java.util.Collection;
9-
import java.util.HashMap;
10-
import java.util.Map;
11-
127
import org.hibernate.AssertionFailure;
138
import org.hibernate.boot.CacheRegionDefinition;
149
import org.hibernate.boot.archive.scan.internal.StandardScanOptions;
@@ -18,6 +13,8 @@
1813
import org.hibernate.boot.archive.spi.ArchiveDescriptorFactory;
1914
import org.hibernate.boot.model.convert.spi.ConverterDescriptor;
2015
import org.hibernate.boot.model.relational.AuxiliaryDatabaseObject;
16+
import org.hibernate.boot.models.internal.ClassLoaderServiceLoading;
17+
import org.hibernate.boot.models.internal.ModelsHelper;
2118
import org.hibernate.boot.registry.StandardServiceRegistry;
2219
import org.hibernate.boot.registry.classloading.spi.ClassLoaderService;
2320
import org.hibernate.boot.registry.selector.spi.StrategySelector;
@@ -31,15 +28,21 @@
3128
import org.hibernate.jpa.spi.MutableJpaCompliance;
3229
import org.hibernate.metamodel.internal.ManagedTypeRepresentationResolverStandard;
3330
import org.hibernate.metamodel.spi.ManagedTypeRepresentationResolver;
31+
import org.hibernate.models.spi.ModelsConfiguration;
32+
import org.hibernate.models.spi.SourceModelBuildingContext;
3433
import org.hibernate.query.sqm.function.SqmFunctionDescriptor;
3534
import org.hibernate.query.sqm.function.SqmFunctionRegistry;
3635
import org.hibernate.resource.beans.spi.BeanInstanceProducer;
3736
import org.hibernate.resource.beans.spi.ManagedBeanRegistry;
3837
import org.hibernate.type.BasicType;
3938
import org.hibernate.type.spi.TypeConfiguration;
40-
4139
import org.jboss.logging.Logger;
4240

41+
import java.util.ArrayList;
42+
import java.util.Collection;
43+
import java.util.HashMap;
44+
import java.util.Map;
45+
4346
import static java.util.Collections.emptyList;
4447
import static java.util.Collections.emptyMap;
4548

@@ -70,15 +73,15 @@ public class BootstrapContextImpl implements BootstrapContext {
7073
private Object scannerSetting;
7174
private ArchiveDescriptorFactory archiveDescriptorFactory;
7275

73-
private Object jandexView;
74-
7576
private HashMap<String,SqmFunctionDescriptor> sqlFunctionMap;
7677
private ArrayList<AuxiliaryDatabaseObject> auxiliaryDatabaseObjectList;
7778
private HashMap<Class<?>, ConverterDescriptor> attributeConverterDescriptorMap;
7879
private ArrayList<CacheRegionDefinition> cacheRegionDefinitions;
7980
private final ManagedTypeRepresentationResolver representationStrategySelector;
8081
private final ConfigurationService configurationService;
8182

83+
private final SourceModelBuildingContext modelsContext;
84+
8285
public BootstrapContextImpl(
8386
StandardServiceRegistry serviceRegistry,
8487
MetadataBuildingOptions metadataBuildingOptions) {
@@ -89,6 +92,7 @@ public BootstrapContextImpl(
8992
classLoaderService = serviceRegistry.requireService( ClassLoaderService.class );
9093
classLoaderAccess = new ClassLoaderAccessImpl( classLoaderService );
9194

95+
9296
final StrategySelector strategySelector = serviceRegistry.requireService( StrategySelector.class );
9397
final ConfigurationService configService = serviceRegistry.requireService( ConfigurationService.class );
9498

@@ -113,6 +117,8 @@ public BootstrapContextImpl(
113117

114118
managedBeanRegistry = serviceRegistry.requireService( ManagedBeanRegistry.class );
115119
configurationService = serviceRegistry.requireService( ConfigurationService.class );
120+
121+
modelsContext = createModelBuildingContext( classLoaderService );
116122
}
117123

118124
@Override
@@ -130,6 +136,11 @@ public TypeConfiguration getTypeConfiguration() {
130136
return typeConfiguration;
131137
}
132138

139+
@Override
140+
public SourceModelBuildingContext getModelsContext() {
141+
return modelsContext;
142+
}
143+
133144
@Override
134145
public SqmFunctionRegistry getFunctionRegistry() {
135146
return sqmFunctionRegistry;
@@ -207,7 +218,7 @@ public Object getScanner() {
207218

208219
@Override
209220
public Object getJandexView() {
210-
return jandexView;
221+
return null;
211222
}
212223

213224
@Override
@@ -254,7 +265,6 @@ public void release() {
254265
scanEnvironment = null;
255266
scannerSetting = null;
256267
archiveDescriptorFactory = null;
257-
jandexView = null;
258268

259269
if ( sqlFunctionMap != null ) {
260270
sqlFunctionMap.clear();
@@ -323,11 +333,6 @@ void injectArchiveDescriptorFactory(ArchiveDescriptorFactory factory) {
323333
this.archiveDescriptorFactory = factory;
324334
}
325335

326-
void injectJandexView(Object jandexView) {
327-
log.debugf( "Injecting Jandex IndexView [%s] into BootstrapContext; was [%s]", jandexView, this.jandexView );
328-
this.jandexView = jandexView;
329-
}
330-
331336
public void addSqlFunction(String functionName, SqmFunctionDescriptor function) {
332337
if ( sqlFunctionMap == null ) {
333338
sqlFunctionMap = new HashMap<>();
@@ -349,4 +354,13 @@ public void addCacheRegionDefinition(CacheRegionDefinition cacheRegionDefinition
349354
}
350355
cacheRegionDefinitions.add( cacheRegionDefinition );
351356
}
357+
358+
public static SourceModelBuildingContext createModelBuildingContext(ClassLoaderService classLoaderService) {
359+
final ClassLoaderServiceLoading classLoading = new ClassLoaderServiceLoading( classLoaderService );
360+
361+
final ModelsConfiguration modelsConfiguration = new ModelsConfiguration();
362+
modelsConfiguration.setClassLoading( classLoading );
363+
modelsConfiguration.setRegistryPrimer( ModelsHelper::preFillRegistries );
364+
return modelsConfiguration.bootstrap();
365+
}
352366
}

hibernate-core/src/main/java/org/hibernate/boot/internal/InFlightMetadataCollectorImpl.java

Lines changed: 18 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,10 @@
44
*/
55
package org.hibernate.boot.internal;
66

7-
import java.io.Serializable;
8-
import java.util.ArrayList;
9-
import java.util.HashMap;
10-
import java.util.HashSet;
11-
import java.util.List;
12-
import java.util.Locale;
13-
import java.util.Map;
14-
import java.util.Set;
15-
import java.util.UUID;
16-
import java.util.concurrent.ConcurrentHashMap;
17-
import java.util.function.Consumer;
18-
import java.util.function.Function;
19-
import java.util.function.Supplier;
20-
7+
import jakarta.persistence.AttributeConverter;
8+
import jakarta.persistence.Embeddable;
9+
import jakarta.persistence.Entity;
10+
import jakarta.persistence.MapsId;
2111
import org.hibernate.AnnotationException;
2212
import org.hibernate.AssertionFailure;
2313
import org.hibernate.DuplicateMappingException;
@@ -59,9 +49,7 @@
5949
import org.hibernate.boot.model.relational.SqlStringGenerationContext;
6050
import org.hibernate.boot.model.source.internal.ImplicitColumnNamingSecondPass;
6151
import org.hibernate.boot.model.source.spi.LocalMetadataBuildingContext;
62-
import org.hibernate.boot.models.internal.ClassLoaderServiceLoading;
6352
import org.hibernate.boot.models.internal.GlobalRegistrationsImpl;
64-
import org.hibernate.boot.models.internal.ModelsHelper;
6553
import org.hibernate.boot.models.spi.GlobalRegistrations;
6654
import org.hibernate.boot.models.xml.internal.PersistenceUnitMetadataImpl;
6755
import org.hibernate.boot.models.xml.spi.PersistenceUnitMetadata;
@@ -104,8 +92,6 @@
10492
import org.hibernate.metamodel.mapping.DiscriminatorType;
10593
import org.hibernate.metamodel.spi.EmbeddableInstantiator;
10694
import org.hibernate.models.spi.ClassDetails;
107-
import org.hibernate.models.spi.ModelsConfiguration;
108-
import org.hibernate.models.spi.SourceModelBuildingContext;
10995
import org.hibernate.query.named.NamedObjectRepository;
11096
import org.hibernate.query.sqm.function.SqmFunctionDescriptor;
11197
import org.hibernate.query.sqm.function.SqmFunctionRegistry;
@@ -115,10 +101,19 @@
115101
import org.hibernate.usertype.CompositeUserType;
116102
import org.hibernate.usertype.UserType;
117103

118-
import jakarta.persistence.AttributeConverter;
119-
import jakarta.persistence.Embeddable;
120-
import jakarta.persistence.Entity;
121-
import jakarta.persistence.MapsId;
104+
import java.io.Serializable;
105+
import java.util.ArrayList;
106+
import java.util.HashMap;
107+
import java.util.HashSet;
108+
import java.util.List;
109+
import java.util.Locale;
110+
import java.util.Map;
111+
import java.util.Set;
112+
import java.util.UUID;
113+
import java.util.concurrent.ConcurrentHashMap;
114+
import java.util.function.Consumer;
115+
import java.util.function.Function;
116+
import java.util.function.Supplier;
122117

123118
import static org.hibernate.boot.model.naming.Identifier.toIdentifier;
124119
import static org.hibernate.boot.model.relational.internal.SqlStringGenerationContextImpl.fromExplicit;
@@ -193,19 +188,15 @@ public class InFlightMetadataCollectorImpl
193188
private Set<DelayedPropertyReferenceHandler> delayedPropertyReferenceHandlers;
194189
private List<Function<MetadataBuildingContext, Boolean>> valueResolvers;
195190

196-
private final SourceModelBuildingContext sourceModelBuildingContext;
197-
198191
public InFlightMetadataCollectorImpl(
199192
BootstrapContext bootstrapContext,
200-
SourceModelBuildingContext sourceModelBuildingContext,
201193
MetadataBuildingOptions options) {
202194
this.bootstrapContext = bootstrapContext;
203-
this.sourceModelBuildingContext = sourceModelBuildingContext;
204195
this.options = options;
205196

206197
uuid = UUID.randomUUID();
207198

208-
globalRegistrations = new GlobalRegistrationsImpl( sourceModelBuildingContext, bootstrapContext );
199+
globalRegistrations = new GlobalRegistrationsImpl( bootstrapContext.getModelsContext(), bootstrapContext );
209200
persistenceUnitMetadata = new PersistenceUnitMetadataImpl();
210201

211202
for ( Map.Entry<String, SqmFunctionDescriptor> sqlFunctionEntry : bootstrapContext.getSqlFunctions().entrySet() ) {
@@ -222,21 +213,6 @@ public InFlightMetadataCollectorImpl(
222213
configurationService = bootstrapContext.getConfigurationService();
223214
}
224215

225-
public InFlightMetadataCollectorImpl(BootstrapContext bootstrapContext, MetadataBuildingOptions options) {
226-
this( bootstrapContext, createModelBuildingContext( bootstrapContext ), options );
227-
}
228-
229-
private static SourceModelBuildingContext createModelBuildingContext(BootstrapContext bootstrapContext) {
230-
final ClassLoaderServiceLoading classLoading =
231-
new ClassLoaderServiceLoading( bootstrapContext.getClassLoaderService() );
232-
233-
final ModelsConfiguration modelsConfiguration = new ModelsConfiguration();
234-
modelsConfiguration.setClassLoading( classLoading );
235-
modelsConfiguration.configValue( "hibernate.models.jandex.index", bootstrapContext.getJandexView() );
236-
modelsConfiguration.setRegistryPrimer( ModelsHelper::preFillRegistries );
237-
return modelsConfiguration.bootstrap();
238-
}
239-
240216
@Override
241217
public UUID getUUID() {
242218
return null;
@@ -252,11 +228,6 @@ public BootstrapContext getBootstrapContext() {
252228
return bootstrapContext;
253229
}
254230

255-
@Override
256-
public SourceModelBuildingContext getSourceModelBuildingContext() {
257-
return sourceModelBuildingContext;
258-
}
259-
260231
@Override
261232
public GlobalRegistrations getGlobalRegistrations() {
262233
return globalRegistrations;

hibernate-core/src/main/java/org/hibernate/boot/internal/MetadataBuilderImpl.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,6 @@ public MetadataBuilder applyAccessType(AccessType implicitCacheAccessType) {
212212

213213
@Override
214214
public MetadataBuilder applyIndexView(Object jandexView) {
215-
bootstrapContext.injectJandexView( jandexView );
216215
return this;
217216
}
218217

hibernate-core/src/main/java/org/hibernate/boot/model/internal/AbstractEntityIdGeneratorResolver.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ protected boolean handleAsMetaAnnotated() {
149149
private Annotation findGeneratorAnnotation(AnnotationTarget annotationTarget) {
150150
final List<? extends Annotation> metaAnnotated =
151151
annotationTarget.getMetaAnnotated( IdGeneratorType.class,
152-
buildingContext.getMetadataCollector().getSourceModelBuildingContext() );
152+
buildingContext.getBootstrapContext().getModelsContext() );
153153
if ( CollectionHelper.size( metaAnnotated ) > 0 ) {
154154
return metaAnnotated.get( 0 );
155155
}

hibernate-core/src/main/java/org/hibernate/boot/model/internal/AbstractPropertyHolder.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ protected MetadataBuildingContext getContext() {
175175
}
176176

177177
protected SourceModelBuildingContext getSourceModelContext() {
178-
return getContext().getMetadataCollector().getSourceModelBuildingContext();
178+
return getContext().getBootstrapContext().getModelsContext();
179179
}
180180

181181
/**
@@ -438,7 +438,7 @@ private static Map<String, Column[]> buildColumnOverride(
438438
}
439439

440440
final SourceModelBuildingContext sourceModelContext =
441-
context.getMetadataCollector().getSourceModelBuildingContext();
441+
context.getBootstrapContext().getModelsContext();
442442
final Map<String, List<Column>> columnOverrideMap = new HashMap<>();
443443

444444
final AttributeOverride[] overrides =
@@ -492,7 +492,7 @@ private static Column createTimeZoneColumn(
492492
Column column,
493493
MetadataBuildingContext context) {
494494
final TimeZoneColumn timeZoneColumn = element.getDirectAnnotationUsage( TimeZoneColumn.class );
495-
final ColumnJpaAnnotation created = JpaAnnotations.COLUMN.createUsage( context.getMetadataCollector().getSourceModelBuildingContext() );
495+
final ColumnJpaAnnotation created = JpaAnnotations.COLUMN.createUsage( context.getBootstrapContext().getModelsContext() );
496496
final String columnName = timeZoneColumn != null
497497
? timeZoneColumn.name()
498498
: column.name() + "_tz";
@@ -563,7 +563,7 @@ public MetadataBuildingContext getBuildingContext() {
563563
);
564564

565565
final ColumnJpaAnnotation created =
566-
JpaAnnotations.COLUMN.createUsage( context.getMetadataCollector().getSourceModelBuildingContext() );
566+
JpaAnnotations.COLUMN.createUsage( context.getBootstrapContext().getModelsContext() );
567567
if ( StringHelper.isNotEmpty( implicitName.getText() ) ) {
568568
created.name( implicitName.getText() );
569569
}
@@ -573,7 +573,7 @@ public MetadataBuildingContext getBuildingContext() {
573573
}
574574

575575
private static Map<String, ColumnTransformer> buildColumnTransformerOverride(AnnotationTarget element, MetadataBuildingContext context) {
576-
final SourceModelBuildingContext sourceModelContext = context.getMetadataCollector().getSourceModelBuildingContext();
576+
final SourceModelBuildingContext sourceModelContext = context.getBootstrapContext().getModelsContext();
577577
final Map<String, ColumnTransformer> columnOverride = new HashMap<>();
578578
if ( element != null ) {
579579
element.forEachAnnotationUsage( ColumnTransformer.class, sourceModelContext, (usage) -> {
@@ -604,7 +604,7 @@ private static Map<String, ForeignKey> buildForeignKeyOverride(AnnotationTarget
604604
}
605605

606606
private static AssociationOverride[] buildAssociationOverrides(AnnotationTarget element, String path, MetadataBuildingContext context) {
607-
return element.getRepeatedAnnotationUsages( AssociationOverride.class, context.getMetadataCollector().getSourceModelBuildingContext() );
607+
return element.getRepeatedAnnotationUsages( AssociationOverride.class, context.getBootstrapContext().getModelsContext() );
608608
}
609609

610610
private static Map<String, JoinTable> buildJoinTableOverride(AnnotationTarget element, String path, MetadataBuildingContext context) {

hibernate-core/src/main/java/org/hibernate/boot/model/internal/AnnotatedColumn.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -795,7 +795,7 @@ private static AnnotatedColumns buildExplicitColumns(
795795
fractionalSeconds,
796796
sqlType,
797797
tableName,
798-
context.getMetadataCollector().getSourceModelBuildingContext()
798+
context.getBootstrapContext().getModelsContext()
799799
);
800800
}
801801
return parent;
@@ -1050,7 +1050,7 @@ private static AnnotatedColumns buildImplicitColumn(
10501050
column.applyColumnDefault( inferredData, 1 );
10511051
column.applyGeneratedAs( inferredData, 1 );
10521052
column.applyCheckConstraint( inferredData, 1 );
1053-
column.extractDataFromPropertyData( propertyHolder, inferredData, context.getMetadataCollector().getSourceModelBuildingContext() );
1053+
column.extractDataFromPropertyData( propertyHolder, inferredData, context.getBootstrapContext().getModelsContext() );
10541054
column.handleArrayLength( inferredData );
10551055
if ( fractionalSeconds != null ) {
10561056
column.setTemporalPrecision( fractionalSeconds.value() );

0 commit comments

Comments
 (0)