Skip to content

Commit

Permalink
HSEARCH-3277 Avoid deprecated Hibernate ORM SPIs
Browse files Browse the repository at this point in the history
  • Loading branch information
yrodiere committed Oct 6, 2022
1 parent 5939531 commit 0a4f367
Show file tree
Hide file tree
Showing 7 changed files with 24 additions and 26 deletions.
Expand Up @@ -7,6 +7,7 @@
package org.hibernate.search.batch.jsr352.core.context.jpa.impl;

import org.hibernate.boot.Metadata;
import org.hibernate.boot.spi.BootstrapContext;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.integrator.spi.Integrator;
import org.hibernate.service.spi.SessionFactoryServiceRegistry;
Expand All @@ -17,7 +18,8 @@
public class ActiveSessionFactoryRegistryUpdater implements Integrator {

@Override
public void integrate(Metadata metadata, SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) {
public void integrate(Metadata metadata, BootstrapContext bootstrapContext,
SessionFactoryImplementor sessionFactory) {
ActiveSessionFactoryRegistry.getInstance().register( sessionFactory );
}

Expand Down
Expand Up @@ -18,7 +18,7 @@
import org.hibernate.StatelessSession;
import org.hibernate.StatelessSessionBuilder;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.metamodel.spi.MetamodelImplementor;
import org.hibernate.metamodel.MappingMetamodel;
import org.hibernate.persister.entity.EntityPersister;
import org.hibernate.search.batch.jsr352.core.massindexing.step.impl.IndexScope;
import org.hibernate.search.util.common.impl.StringHelper;
Expand Down Expand Up @@ -93,15 +93,15 @@ public static IndexScope getIndexScope(String hql) {
public static List<EntityTypeDescriptor> createDescriptors(EntityManagerFactory entityManagerFactory, Set<Class<?>> types) {
SessionFactoryImplementor sessionFactory = entityManagerFactory.unwrap( SessionFactoryImplementor.class );
List<EntityTypeDescriptor> result = new ArrayList<>( types.size() );
MetamodelImplementor metamodel = sessionFactory.getMetamodel();
MappingMetamodel metamodel = sessionFactory.getMetamodel();
for ( Class<?> type : types ) {
result.add( createDescriptor( metamodel, type ) );
}
return result;
}

private static <T> EntityTypeDescriptor createDescriptor(MetamodelImplementor metamodel, Class<T> type) {
EntityPersister entityPersister = metamodel.entityPersister( type );
private static <T> EntityTypeDescriptor createDescriptor(MappingMetamodel metamodel, Class<T> type) {
EntityPersister entityPersister = metamodel.findEntityDescriptor( type );
IdOrder idOrder = createIdOrder( entityPersister );
return new EntityTypeDescriptor( type, idOrder );
}
Expand Down
Expand Up @@ -12,7 +12,6 @@

import org.hibernate.boot.Metadata;
import org.hibernate.boot.spi.BootstrapContext;
import org.hibernate.boot.spi.MetadataImplementor;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.integrator.spi.Integrator;

Expand All @@ -30,19 +29,16 @@
public class HibernateSearchIntegrator implements Integrator {

@Override
public void integrate(Metadata metadata, SessionFactoryImplementor sessionFactory,
SessionFactoryServiceRegistry serviceRegistry) {
public void integrate(Metadata metadata, BootstrapContext bootstrapContext,
SessionFactoryImplementor sessionFactory) {
Optional<HibernateSearchPreIntegrationService> preIntegrationServiceOptional =
HibernateOrmUtils.getServiceOrEmpty( serviceRegistry, HibernateSearchPreIntegrationService.class );
HibernateOrmUtils.getServiceOrEmpty( bootstrapContext.getServiceRegistry(), HibernateSearchPreIntegrationService.class );

if ( !preIntegrationServiceOptional.isPresent() ) {
// Hibernate Search is disabled
return;
}

// TODO When we'll move to Hibernate ORM 6, use the bootstrapContext parameter passed to the integrate() method
BootstrapContext bootstrapContext = ( (MetadataImplementor) metadata ).getTypeConfiguration()
.getMetadataBuildingContext().getBootstrapContext();
HibernateOrmIntegrationBooterImpl booter = new HibernateOrmIntegrationBooterImpl.BuilderImpl( metadata, bootstrapContext )
.build();
// Orchestrate bootstrap and shutdown
Expand Down
Expand Up @@ -21,7 +21,7 @@
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.mapping.Property;
import org.hibernate.metamodel.spi.MetamodelImplementor;
import org.hibernate.metamodel.MappingMetamodel;
import org.hibernate.persister.entity.EntityPersister;
import org.hibernate.search.mapper.orm.logging.impl.Log;
import org.hibernate.search.util.common.annotation.impl.SuppressForbiddenApis;
Expand Down Expand Up @@ -77,12 +77,12 @@ public static EntityPersister toRootEntityType(SessionFactoryImplementor session
* where A and C are entity types and B is a mapped superclass.
* So we need to exclude non-entity types, and for that we need the Hibernate ORM metamodel.
*/
MetamodelImplementor metamodel = sessionFactory.getMetamodel();
MappingMetamodel metamodel = sessionFactory.getMetamodel();
String rootEntityName = entityType.getRootEntityName();
return metamodel.entityPersister( rootEntityName );
return metamodel.getEntityDescriptor( rootEntityName );
}

public static EntityPersister toMostSpecificCommonEntitySuperType(MetamodelImplementor metamodel,
public static EntityPersister toMostSpecificCommonEntitySuperType(MappingMetamodel metamodel,
EntityPersister type1, EntityPersister type2) {
/*
* We need to rely on Hibernate ORM's SPIs: this is complex stuff.
Expand All @@ -95,7 +95,7 @@ public static EntityPersister toMostSpecificCommonEntitySuperType(MetamodelImple
while ( superTypeCandidate != null && !isSuperTypeOf( superTypeCandidate, type2 ) ) {
String superSuperTypeEntityName = superTypeCandidate.getEntityMetamodel().getSuperclass();
superTypeCandidate = superSuperTypeEntityName == null ? null
: metamodel.entityPersister( superSuperTypeEntityName ).getEntityPersister();
: metamodel.getEntityDescriptor( superSuperTypeEntityName ).getEntityPersister();
}
if ( superTypeCandidate == null ) {
throw new AssertionFailure(
Expand All @@ -116,10 +116,10 @@ public static boolean targetsAllConcreteSubTypes(SessionFactoryImplementor sessi
return true;
}

MetamodelImplementor metamodel = sessionFactory.getMetamodel();
MappingMetamodel metamodel = sessionFactory.getMetamodel();
int concreteSubTypesCount = 0;
for ( String subClassEntityName : subClassEntityNames ) {
if ( !metamodel.entityPersister( subClassEntityName ).getEntityMetamodel().isAbstract() ) {
if ( !metamodel.getEntityDescriptor( subClassEntityName ).getEntityMetamodel().isAbstract() ) {
++concreteSubTypesCount;
}
}
Expand Down
Expand Up @@ -12,7 +12,7 @@
import org.hibernate.AssertionFailure;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.metamodel.spi.MetamodelImplementor;
import org.hibernate.metamodel.MappingMetamodel;
import org.hibernate.persister.entity.EntityPersister;
import org.hibernate.search.mapper.orm.common.impl.HibernateOrmUtils;
import org.hibernate.search.mapper.orm.search.loading.EntityLoadingCacheLookupStrategy;
Expand Down Expand Up @@ -149,7 +149,7 @@ private PojoSelectionEntityLoader<?> doCreate(EntityPersister entityPersister,

private static EntityPersister toMostSpecificCommonEntitySuperType(SessionImplementor session,
Iterable<? extends LoadingTypeContext<?>> targetEntityTypeContexts) {
MetamodelImplementor metamodel = session.getSessionFactory().getMetamodel();
MappingMetamodel metamodel = session.getSessionFactory().getMetamodel();
EntityPersister result = null;
for ( LoadingTypeContext<?> targetTypeContext : targetEntityTypeContexts ) {
EntityPersister type = targetTypeContext.entityPersister();
Expand Down
Expand Up @@ -14,7 +14,7 @@
import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.metamodel.model.domain.EntityDomainType;
import org.hibernate.metamodel.spi.MetamodelImplementor;
import org.hibernate.metamodel.model.domain.JpaMetamodel;
import org.hibernate.persister.entity.EntityPersister;
import org.hibernate.query.Query;
import org.hibernate.search.mapper.orm.massindexing.impl.ConditionalExpression;
Expand All @@ -23,7 +23,7 @@ public interface TypeQueryFactory<E, I> {

static TypeQueryFactory<?, ?> create(SessionFactoryImplementor sessionFactory, EntityPersister entityPersister,
String uniquePropertyName) {
MetamodelImplementor metamodel = sessionFactory.getMetamodel();
JpaMetamodel metamodel = sessionFactory.getMetamodel();
EntityDomainType<?> typeOrNull = metamodel.entity( entityPersister.getEntityName() );
if ( typeOrNull != null && !( entityPersister.getMappedClass().equals( Map.class ) ) ) {
return CriteriaTypeQueryFactory.create( typeOrNull, uniquePropertyName );
Expand Down
Expand Up @@ -10,7 +10,7 @@
import java.util.stream.Collectors;

import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.metamodel.spi.MetamodelImplementor;
import org.hibernate.metamodel.MappingMetamodel;
import org.hibernate.persister.entity.EntityPersister;
import org.hibernate.search.mapper.orm.event.impl.HibernateOrmListenerTypeContext;
import org.hibernate.search.mapper.orm.loading.impl.HibernateOrmEntityIdEntityLoadingStrategy;
Expand Down Expand Up @@ -44,8 +44,8 @@ abstract class AbstractHibernateOrmTypeContext<E>
AbstractHibernateOrmTypeContext(AbstractBuilder<E> builder, SessionFactoryImplementor sessionFactory) {
this.typeIdentifier = builder.typeIdentifier;
this.jpaEntityName = builder.jpaEntityName;
MetamodelImplementor metamodel = sessionFactory.getMetamodel();
this.entityPersister = metamodel.entityPersister( builder.hibernateOrmEntityName );
MappingMetamodel metamodel = sessionFactory.getMetamodel();
this.entityPersister = metamodel.getEntityDescriptor( builder.hibernateOrmEntityName );
this.identifierMapping = builder.identifierMapping;
this.ascendingSuperTypes = builder.ascendingSuperTypes;
if ( builder.documentIdSourcePropertyName != null ) {
Expand Down

0 comments on commit 0a4f367

Please sign in to comment.