diff --git a/hibernate-core/src/main/java/org/hibernate/id/SequenceIdentityGenerator.java b/hibernate-core/src/main/java/org/hibernate/id/SequenceIdentityGenerator.java index c7e1427f3f..49d36f5d58 100644 --- a/hibernate-core/src/main/java/org/hibernate/id/SequenceIdentityGenerator.java +++ b/hibernate-core/src/main/java/org/hibernate/id/SequenceIdentityGenerator.java @@ -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; diff --git a/hibernate-core/src/main/java/org/hibernate/id/enhanced/SequenceStyleGenerator.java b/hibernate-core/src/main/java/org/hibernate/id/enhanced/SequenceStyleGenerator.java index bc4c3c6058..bf4a23b64c 100644 --- a/hibernate-core/src/main/java/org/hibernate/id/enhanced/SequenceStyleGenerator.java +++ b/hibernate-core/src/main/java/org/hibernate/id/enhanced/SequenceStyleGenerator.java @@ -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 diff --git a/hibernate-core/src/main/java/org/hibernate/internal/SessionFactoryImpl.java b/hibernate-core/src/main/java/org/hibernate/internal/SessionFactoryImpl.java index 3947990016..153fad883a 100644 --- a/hibernate-core/src/main/java/org/hibernate/internal/SessionFactoryImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/internal/SessionFactoryImpl.java @@ -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() ); diff --git a/hibernate-core/src/main/java/org/hibernate/persister/internal/PersisterFactoryImpl.java b/hibernate-core/src/main/java/org/hibernate/persister/internal/PersisterFactoryImpl.java index e9a4bd0b5c..dcbe19e4ad 100644 --- a/hibernate-core/src/main/java/org/hibernate/persister/internal/PersisterFactoryImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/persister/internal/PersisterFactoryImpl.java @@ -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 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 diff --git a/hibernate-core/src/main/java/org/hibernate/persister/spi/PersisterFactory.java b/hibernate-core/src/main/java/org/hibernate/persister/spi/PersisterFactory.java index cac2570844..bd03b61abc 100644 --- a/hibernate-core/src/main/java/org/hibernate/persister/spi/PersisterFactory.java +++ b/hibernate-core/src/main/java/org/hibernate/persister/spi/PersisterFactory.java @@ -89,6 +89,7 @@ public interface PersisterFactory extends Service { public EntityPersister createEntityPersister( EntityBinding model, EntityRegionAccessStrategy cacheAccessStrategy, + NaturalIdRegionAccessStrategy naturalIdAccessStrategy, SessionFactoryImplementor factory, Mapping cfg) throws HibernateException; diff --git a/hibernate-envers/src/main/java/org/hibernate/envers/configuration/RevisionInfoConfiguration.java b/hibernate-envers/src/main/java/org/hibernate/envers/configuration/RevisionInfoConfiguration.java index 43a98ed50d..7b0eb2d54d 100644 --- a/hibernate-envers/src/main/java/org/hibernate/envers/configuration/RevisionInfoConfiguration.java +++ b/hibernate-envers/src/main/java/org/hibernate/envers/configuration/RevisionInfoConfiguration.java @@ -249,7 +249,7 @@ public class RevisionInfoConfiguration { } public RevisionInfoConfigurationResult configure(Configuration cfg, ReflectionManager reflectionManager) { - Iterator classes = (Iterator) cfg.getClassMappings(); + Iterator classes = cfg.getClassMappings(); boolean revisionEntityFound = false; RevisionInfoGenerator revisionInfoGenerator = null; diff --git a/hibernate-envers/src/main/java/org/hibernate/envers/event/EnversIntegrator.java b/hibernate-envers/src/main/java/org/hibernate/envers/event/EnversIntegrator.java index 6ccfbc3fb7..79a52ecf7a 100644 --- a/hibernate-envers/src/main/java/org/hibernate/envers/event/EnversIntegrator.java +++ b/hibernate-envers/src/main/java/org/hibernate/envers/event/EnversIntegrator.java @@ -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 ) ); + } } } diff --git a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/BasicTransactionalTestCase.java b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/BasicTransactionalTestCase.java index 2b5e710044..808c431692 100644 --- a/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/BasicTransactionalTestCase.java +++ b/hibernate-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/BasicTransactionalTestCase.java @@ -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 {