Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,10 @@ public interface MetadataBuilder {
* @param jandexView The Jandex index to use.
*
* @return {@code this}, for method chaining
*
* @deprecated Set the {@code hibernate-models} setting {@code hibernate.models.jandex.index} instead. This method has no effect.
*/
@Deprecated
MetadataBuilder applyIndexView(Object jandexView);

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,6 @@
*/
package org.hibernate.boot.internal;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import org.hibernate.AssertionFailure;
import org.hibernate.boot.CacheRegionDefinition;
import org.hibernate.boot.archive.scan.internal.StandardScanOptions;
Expand All @@ -18,6 +13,8 @@
import org.hibernate.boot.archive.spi.ArchiveDescriptorFactory;
import org.hibernate.boot.model.convert.spi.ConverterDescriptor;
import org.hibernate.boot.model.relational.AuxiliaryDatabaseObject;
import org.hibernate.boot.models.internal.ClassLoaderServiceLoading;
import org.hibernate.boot.models.internal.ModelsHelper;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.classloading.spi.ClassLoaderService;
import org.hibernate.boot.registry.selector.spi.StrategySelector;
Expand All @@ -31,15 +28,21 @@
import org.hibernate.jpa.spi.MutableJpaCompliance;
import org.hibernate.metamodel.internal.ManagedTypeRepresentationResolverStandard;
import org.hibernate.metamodel.spi.ManagedTypeRepresentationResolver;
import org.hibernate.models.spi.ModelsConfiguration;
import org.hibernate.models.spi.SourceModelBuildingContext;
import org.hibernate.query.sqm.function.SqmFunctionDescriptor;
import org.hibernate.query.sqm.function.SqmFunctionRegistry;
import org.hibernate.resource.beans.spi.BeanInstanceProducer;
import org.hibernate.resource.beans.spi.ManagedBeanRegistry;
import org.hibernate.type.BasicType;
import org.hibernate.type.spi.TypeConfiguration;

import org.jboss.logging.Logger;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import static java.util.Collections.emptyList;
import static java.util.Collections.emptyMap;

Expand Down Expand Up @@ -70,15 +73,15 @@ public class BootstrapContextImpl implements BootstrapContext {
private Object scannerSetting;
private ArchiveDescriptorFactory archiveDescriptorFactory;

private Object jandexView;

private HashMap<String,SqmFunctionDescriptor> sqlFunctionMap;
private ArrayList<AuxiliaryDatabaseObject> auxiliaryDatabaseObjectList;
private HashMap<Class<?>, ConverterDescriptor> attributeConverterDescriptorMap;
private ArrayList<CacheRegionDefinition> cacheRegionDefinitions;
private final ManagedTypeRepresentationResolver representationStrategySelector;
private final ConfigurationService configurationService;

private final SourceModelBuildingContext modelsContext;

public BootstrapContextImpl(
StandardServiceRegistry serviceRegistry,
MetadataBuildingOptions metadataBuildingOptions) {
Expand Down Expand Up @@ -113,6 +116,8 @@ public BootstrapContextImpl(

managedBeanRegistry = serviceRegistry.requireService( ManagedBeanRegistry.class );
configurationService = serviceRegistry.requireService( ConfigurationService.class );

modelsContext = createModelBuildingContext( classLoaderService, configService );
}

@Override
Expand All @@ -130,6 +135,11 @@ public TypeConfiguration getTypeConfiguration() {
return typeConfiguration;
}

@Override
public SourceModelBuildingContext getModelsContext() {
return modelsContext;
}

@Override
public SqmFunctionRegistry getFunctionRegistry() {
return sqmFunctionRegistry;
Expand Down Expand Up @@ -207,7 +217,7 @@ public Object getScanner() {

@Override
public Object getJandexView() {
return jandexView;
return null;
}

@Override
Expand Down Expand Up @@ -254,7 +264,6 @@ public void release() {
scanEnvironment = null;
scannerSetting = null;
archiveDescriptorFactory = null;
jandexView = null;

if ( sqlFunctionMap != null ) {
sqlFunctionMap.clear();
Expand Down Expand Up @@ -323,11 +332,6 @@ void injectArchiveDescriptorFactory(ArchiveDescriptorFactory factory) {
this.archiveDescriptorFactory = factory;
}

void injectJandexView(Object jandexView) {
log.debugf( "Injecting Jandex IndexView [%s] into BootstrapContext; was [%s]", jandexView, this.jandexView );
this.jandexView = jandexView;
}

public void addSqlFunction(String functionName, SqmFunctionDescriptor function) {
if ( sqlFunctionMap == null ) {
sqlFunctionMap = new HashMap<>();
Expand All @@ -349,4 +353,20 @@ public void addCacheRegionDefinition(CacheRegionDefinition cacheRegionDefinition
}
cacheRegionDefinitions.add( cacheRegionDefinition );
}

public static SourceModelBuildingContext createModelBuildingContext(
ClassLoaderService classLoaderService,
ConfigurationService configService) {
final ClassLoaderServiceLoading classLoading = new ClassLoaderServiceLoading( classLoaderService );

final ModelsConfiguration modelsConfiguration = new ModelsConfiguration();
modelsConfiguration.setClassLoading( classLoading );
modelsConfiguration.setRegistryPrimer( ModelsHelper::preFillRegistries );
configService.getSettings().forEach( (key, value) -> {
if ( key.startsWith( "hibernate.models." ) ) {
modelsConfiguration.configValue( key, value );
}
} );
return modelsConfiguration.bootstrap();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,10 @@
*/
package org.hibernate.boot.internal;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;

import jakarta.persistence.AttributeConverter;
import jakarta.persistence.Embeddable;
import jakarta.persistence.Entity;
import jakarta.persistence.MapsId;
import org.hibernate.AnnotationException;
import org.hibernate.AssertionFailure;
import org.hibernate.DuplicateMappingException;
Expand Down Expand Up @@ -59,9 +49,7 @@
import org.hibernate.boot.model.relational.SqlStringGenerationContext;
import org.hibernate.boot.model.source.internal.ImplicitColumnNamingSecondPass;
import org.hibernate.boot.model.source.spi.LocalMetadataBuildingContext;
import org.hibernate.boot.models.internal.ClassLoaderServiceLoading;
import org.hibernate.boot.models.internal.GlobalRegistrationsImpl;
import org.hibernate.boot.models.internal.ModelsHelper;
import org.hibernate.boot.models.spi.GlobalRegistrations;
import org.hibernate.boot.models.xml.internal.PersistenceUnitMetadataImpl;
import org.hibernate.boot.models.xml.spi.PersistenceUnitMetadata;
Expand Down Expand Up @@ -104,8 +92,6 @@
import org.hibernate.metamodel.mapping.DiscriminatorType;
import org.hibernate.metamodel.spi.EmbeddableInstantiator;
import org.hibernate.models.spi.ClassDetails;
import org.hibernate.models.spi.ModelsConfiguration;
import org.hibernate.models.spi.SourceModelBuildingContext;
import org.hibernate.query.named.NamedObjectRepository;
import org.hibernate.query.sqm.function.SqmFunctionDescriptor;
import org.hibernate.query.sqm.function.SqmFunctionRegistry;
Expand All @@ -115,10 +101,19 @@
import org.hibernate.usertype.CompositeUserType;
import org.hibernate.usertype.UserType;

import jakarta.persistence.AttributeConverter;
import jakarta.persistence.Embeddable;
import jakarta.persistence.Entity;
import jakarta.persistence.MapsId;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;

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

private final SourceModelBuildingContext sourceModelBuildingContext;

public InFlightMetadataCollectorImpl(
BootstrapContext bootstrapContext,
SourceModelBuildingContext sourceModelBuildingContext,
MetadataBuildingOptions options) {
this.bootstrapContext = bootstrapContext;
this.sourceModelBuildingContext = sourceModelBuildingContext;
this.options = options;

uuid = UUID.randomUUID();

globalRegistrations = new GlobalRegistrationsImpl( sourceModelBuildingContext, bootstrapContext );
globalRegistrations = new GlobalRegistrationsImpl( bootstrapContext.getModelsContext(), bootstrapContext );
persistenceUnitMetadata = new PersistenceUnitMetadataImpl();

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

public InFlightMetadataCollectorImpl(BootstrapContext bootstrapContext, MetadataBuildingOptions options) {
this( bootstrapContext, createModelBuildingContext( bootstrapContext ), options );
}

private static SourceModelBuildingContext createModelBuildingContext(BootstrapContext bootstrapContext) {
final ClassLoaderServiceLoading classLoading =
new ClassLoaderServiceLoading( bootstrapContext.getClassLoaderService() );

final ModelsConfiguration modelsConfiguration = new ModelsConfiguration();
modelsConfiguration.setClassLoading( classLoading );
modelsConfiguration.configValue( "hibernate.models.jandex.index", bootstrapContext.getJandexView() );
modelsConfiguration.setRegistryPrimer( ModelsHelper::preFillRegistries );
return modelsConfiguration.bootstrap();
}

@Override
public UUID getUUID() {
return null;
Expand All @@ -252,11 +228,6 @@ public BootstrapContext getBootstrapContext() {
return bootstrapContext;
}

@Override
public SourceModelBuildingContext getSourceModelBuildingContext() {
return sourceModelBuildingContext;
}

@Override
public GlobalRegistrations getGlobalRegistrations() {
return globalRegistrations;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,6 @@ public MetadataBuilder applyAccessType(AccessType implicitCacheAccessType) {

@Override
public MetadataBuilder applyIndexView(Object jandexView) {
bootstrapContext.injectJandexView( jandexView );
return this;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ protected boolean handleAsMetaAnnotated() {
private Annotation findGeneratorAnnotation(AnnotationTarget annotationTarget) {
final List<? extends Annotation> metaAnnotated =
annotationTarget.getMetaAnnotated( IdGeneratorType.class,
buildingContext.getMetadataCollector().getSourceModelBuildingContext() );
buildingContext.getBootstrapContext().getModelsContext() );
if ( CollectionHelper.size( metaAnnotated ) > 0 ) {
return metaAnnotated.get( 0 );
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ protected MetadataBuildingContext getContext() {
}

protected SourceModelBuildingContext getSourceModelContext() {
return getContext().getMetadataCollector().getSourceModelBuildingContext();
return getContext().getBootstrapContext().getModelsContext();
}

/**
Expand Down Expand Up @@ -438,7 +438,7 @@ private static Map<String, Column[]> buildColumnOverride(
}

final SourceModelBuildingContext sourceModelContext =
context.getMetadataCollector().getSourceModelBuildingContext();
context.getBootstrapContext().getModelsContext();
final Map<String, List<Column>> columnOverrideMap = new HashMap<>();

final AttributeOverride[] overrides =
Expand Down Expand Up @@ -492,7 +492,7 @@ private static Column createTimeZoneColumn(
Column column,
MetadataBuildingContext context) {
final TimeZoneColumn timeZoneColumn = element.getDirectAnnotationUsage( TimeZoneColumn.class );
final ColumnJpaAnnotation created = JpaAnnotations.COLUMN.createUsage( context.getMetadataCollector().getSourceModelBuildingContext() );
final ColumnJpaAnnotation created = JpaAnnotations.COLUMN.createUsage( context.getBootstrapContext().getModelsContext() );
final String columnName = timeZoneColumn != null
? timeZoneColumn.name()
: column.name() + "_tz";
Expand Down Expand Up @@ -563,7 +563,7 @@ public MetadataBuildingContext getBuildingContext() {
);

final ColumnJpaAnnotation created =
JpaAnnotations.COLUMN.createUsage( context.getMetadataCollector().getSourceModelBuildingContext() );
JpaAnnotations.COLUMN.createUsage( context.getBootstrapContext().getModelsContext() );
if ( StringHelper.isNotEmpty( implicitName.getText() ) ) {
created.name( implicitName.getText() );
}
Expand All @@ -573,7 +573,7 @@ public MetadataBuildingContext getBuildingContext() {
}

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

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

private static Map<String, JoinTable> buildJoinTableOverride(AnnotationTarget element, String path, MetadataBuildingContext context) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -795,7 +795,7 @@ private static AnnotatedColumns buildExplicitColumns(
fractionalSeconds,
sqlType,
tableName,
context.getMetadataCollector().getSourceModelBuildingContext()
context.getBootstrapContext().getModelsContext()
);
}
return parent;
Expand Down Expand Up @@ -1050,7 +1050,7 @@ private static AnnotatedColumns buildImplicitColumn(
column.applyColumnDefault( inferredData, 1 );
column.applyGeneratedAs( inferredData, 1 );
column.applyCheckConstraint( inferredData, 1 );
column.extractDataFromPropertyData( propertyHolder, inferredData, context.getMetadataCollector().getSourceModelBuildingContext() );
column.extractDataFromPropertyData( propertyHolder, inferredData, context.getBootstrapContext().getModelsContext() );
column.handleArrayLength( inferredData );
if ( fractionalSeconds != null ) {
column.setTemporalPrecision( fractionalSeconds.value() );
Expand Down
Loading
Loading