HHH-7491 fix test failures caused by natural id cache access strategy is not exposed to the persister
This commit is contained in:
parent
887c6539d2
commit
60aad81c23
|
@ -75,11 +75,6 @@ public class SequenceIdentityGenerator
|
|||
return new Delegate( persister, dialect, getSequenceName() );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configure(Type type, Properties params, Dialect dialect) throws MappingException {
|
||||
super.configure( type, params, dialect );
|
||||
}
|
||||
|
||||
public static class Delegate extends AbstractReturningDelegate {
|
||||
private final Dialect dialect;
|
||||
private final String sequenceNextValFragment;
|
||||
|
|
|
@ -42,6 +42,8 @@ import org.hibernate.internal.util.config.ConfigurationHelper;
|
|||
import org.hibernate.metamodel.spi.relational.Database;
|
||||
import org.hibernate.metamodel.spi.relational.Identifier;
|
||||
import org.hibernate.metamodel.spi.relational.ObjectName;
|
||||
import org.hibernate.metamodel.spi.relational.Schema;
|
||||
import org.hibernate.metamodel.spi.relational.Sequence;
|
||||
import org.hibernate.type.Type;
|
||||
|
||||
/**
|
||||
|
@ -378,7 +380,7 @@ public class SequenceStyleGenerator
|
|||
|
||||
@Override
|
||||
public void registerExportables(Database database) {
|
||||
//To change body of implemented methods use File | Settings | File Templates.
|
||||
databaseStructure.registerExportables( database );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -837,7 +837,7 @@ public final class SessionFactoryImpl
|
|||
}
|
||||
}
|
||||
EntityPersister cp = serviceRegistry.getService( PersisterFactory.class ).createEntityPersister(
|
||||
model, accessStrategy, this, metadata
|
||||
model, accessStrategy,naturalIdAccessStrategy, this, metadata
|
||||
);
|
||||
entityPersisters.put( model.getEntity().getName(), cp );
|
||||
classMeta.put( model.getEntity().getName(), cp.getClassMetadata() );
|
||||
|
|
|
@ -139,13 +139,14 @@ public final class PersisterFactoryImpl implements PersisterFactory, ServiceRegi
|
|||
@SuppressWarnings( {"unchecked"})
|
||||
public EntityPersister createEntityPersister(EntityBinding metadata,
|
||||
EntityRegionAccessStrategy cacheAccessStrategy,
|
||||
NaturalIdRegionAccessStrategy naturalIdRegionAccessStrategy,
|
||||
SessionFactoryImplementor factory,
|
||||
Mapping cfg) {
|
||||
Class<? extends EntityPersister> persisterClass = metadata.getCustomEntityPersisterClass();
|
||||
if ( persisterClass == null ) {
|
||||
persisterClass = serviceRegistry.getService( PersisterClassResolver.class ).getEntityPersisterClass( metadata );
|
||||
}
|
||||
return create( persisterClass, ENTITY_PERSISTER_CONSTRUCTOR_ARGS_NEW, metadata, cacheAccessStrategy, null, factory, cfg );
|
||||
return create( persisterClass, ENTITY_PERSISTER_CONSTRUCTOR_ARGS_NEW, metadata, cacheAccessStrategy, naturalIdRegionAccessStrategy, factory, cfg );
|
||||
}
|
||||
|
||||
// TODO: change metadata arg type to EntityBinding when new metadata is integrated
|
||||
|
|
|
@ -89,6 +89,7 @@ public interface PersisterFactory extends Service {
|
|||
public EntityPersister createEntityPersister(
|
||||
EntityBinding model,
|
||||
EntityRegionAccessStrategy cacheAccessStrategy,
|
||||
NaturalIdRegionAccessStrategy naturalIdAccessStrategy,
|
||||
SessionFactoryImplementor factory,
|
||||
Mapping cfg) throws HibernateException;
|
||||
|
||||
|
|
|
@ -249,7 +249,7 @@ public class RevisionInfoConfiguration {
|
|||
}
|
||||
|
||||
public RevisionInfoConfigurationResult configure(Configuration cfg, ReflectionManager reflectionManager) {
|
||||
Iterator<PersistentClass> classes = (Iterator<PersistentClass>) cfg.getClassMappings();
|
||||
Iterator<PersistentClass> classes = cfg.getClassMappings();
|
||||
boolean revisionEntityFound = false;
|
||||
RevisionInfoGenerator revisionInfoGenerator = null;
|
||||
|
||||
|
|
|
@ -35,6 +35,8 @@ import org.hibernate.internal.CoreMessageLogger;
|
|||
import org.hibernate.internal.util.config.ConfigurationHelper;
|
||||
import org.hibernate.metamodel.spi.source.MetadataImplementor;
|
||||
import org.hibernate.service.classloading.spi.ClassLoaderService;
|
||||
import org.hibernate.service.config.spi.ConfigurationService;
|
||||
import org.hibernate.service.config.spi.StandardConverters;
|
||||
import org.hibernate.service.spi.SessionFactoryServiceRegistry;
|
||||
|
||||
/**
|
||||
|
@ -63,14 +65,7 @@ public class EnversIntegrator implements Integrator {
|
|||
|
||||
final AuditConfiguration enversConfiguration = AuditConfiguration.getFor( configuration, serviceRegistry.getService( ClassLoaderService.class ) );
|
||||
|
||||
if (enversConfiguration.getEntCfg().hasAuditedEntities()) {
|
||||
listenerRegistry.appendListeners( EventType.POST_DELETE, new EnversPostDeleteEventListenerImpl( enversConfiguration ) );
|
||||
listenerRegistry.appendListeners( EventType.POST_INSERT, new EnversPostInsertEventListenerImpl( enversConfiguration ) );
|
||||
listenerRegistry.appendListeners( EventType.POST_UPDATE, new EnversPostUpdateEventListenerImpl( enversConfiguration ) );
|
||||
listenerRegistry.appendListeners( EventType.POST_COLLECTION_RECREATE, new EnversPostCollectionRecreateEventListenerImpl( enversConfiguration ) );
|
||||
listenerRegistry.appendListeners( EventType.PRE_COLLECTION_REMOVE, new EnversPreCollectionRemoveEventListenerImpl( enversConfiguration ) );
|
||||
listenerRegistry.appendListeners( EventType.PRE_COLLECTION_UPDATE, new EnversPreCollectionUpdateEventListenerImpl( enversConfiguration ) );
|
||||
}
|
||||
appendListeners( listenerRegistry, enversConfiguration );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -87,6 +82,29 @@ public class EnversIntegrator implements Integrator {
|
|||
public void integrate( MetadataImplementor metadata,
|
||||
SessionFactoryImplementor sessionFactory,
|
||||
SessionFactoryServiceRegistry serviceRegistry ) {
|
||||
// TODO: implement
|
||||
final ConfigurationService configurationService = serviceRegistry.getService( ConfigurationService.class );
|
||||
final boolean autoRegister = configurationService.getSetting( AUTO_REGISTER, StandardConverters.BOOLEAN, true );
|
||||
if ( !autoRegister ) {
|
||||
LOG.debug( "Skipping Envers listener auto registration" );
|
||||
return;
|
||||
}
|
||||
|
||||
EventListenerRegistry listenerRegistry = serviceRegistry.getService( EventListenerRegistry.class );
|
||||
listenerRegistry.addDuplicationStrategy( EnversListenerDuplicationStrategy.INSTANCE );
|
||||
|
||||
// final AuditConfiguration enversConfiguration = AuditConfiguration.getFor( configuration, serviceRegistry.getService( ClassLoaderService.class ) );
|
||||
//
|
||||
// appendListeners( listenerRegistry, enversConfiguration );
|
||||
}
|
||||
|
||||
private void appendListeners(EventListenerRegistry listenerRegistry, AuditConfiguration enversConfiguration) {
|
||||
if (enversConfiguration.getEntCfg().hasAuditedEntities()) {
|
||||
listenerRegistry.appendListeners( EventType.POST_DELETE, new EnversPostDeleteEventListenerImpl( enversConfiguration ) );
|
||||
listenerRegistry.appendListeners( EventType.POST_INSERT, new EnversPostInsertEventListenerImpl( enversConfiguration ) );
|
||||
listenerRegistry.appendListeners( EventType.POST_UPDATE, new EnversPostUpdateEventListenerImpl( enversConfiguration ) );
|
||||
listenerRegistry.appendListeners( EventType.POST_COLLECTION_RECREATE, new EnversPostCollectionRecreateEventListenerImpl( enversConfiguration ) );
|
||||
listenerRegistry.appendListeners( EventType.PRE_COLLECTION_REMOVE, new EnversPreCollectionRemoveEventListenerImpl( enversConfiguration ) );
|
||||
listenerRegistry.appendListeners( EventType.PRE_COLLECTION_UPDATE, new EnversPreCollectionUpdateEventListenerImpl( enversConfiguration ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -277,8 +277,17 @@ public class BasicTransactionalTestCase extends AbstractFunctionalTestCase {
|
|||
|
||||
CacheEntry entry = (CacheEntry) slcs.getEntries().get( i.getId() );
|
||||
Serializable[] ser = entry.getDisassembledState();
|
||||
Assert.assertEquals( "widget", ser[0] );
|
||||
assertEquals( "A bog standard item", ser[1] );
|
||||
boolean foundFirstOne = false;
|
||||
boolean foundSecondOne = false;
|
||||
for(Serializable serializable : ser){
|
||||
if("widget".equals( serializable )){
|
||||
foundFirstOne = true;
|
||||
}
|
||||
if("A bog standard item".equals( serializable )){
|
||||
foundSecondOne = true;
|
||||
}
|
||||
}
|
||||
Assert.assertTrue(foundFirstOne && foundSecondOne);
|
||||
|
||||
beginTx();
|
||||
try {
|
||||
|
|
Loading…
Reference in New Issue