Author: athimel Date: 2014-04-03 11:33:43 +0200 (Thu, 03 Apr 2014) New Revision: 3035 Url: http://forge.nuiton.org/projects/topia/repository/revisions/3035 Log: refs-80 #2969 Now seems to be Hibernate 4.3.x compatible Modified: trunk/pom.xml trunk/topia-it/src/test/java/org/nuiton/topia/it/legacy/framework/TopiaConnectionProviderHardCoded.java trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/HibernateProvider.java trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/TopiaConnectionProvider.java trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/support/TopiaHibernateEventListener.java trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaUtil.java Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2014-03-28 15:21:44 UTC (rev 3034) +++ trunk/pom.xml 2014-04-03 09:33:43 UTC (rev 3035) @@ -29,7 +29,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>mavenpom4redmineAndCentral</artifactId> - <version>5.0.1</version> + <version>5.0.5-SNAPSHOT</version> </parent> <artifactId>topia</artifactId> @@ -244,7 +244,7 @@ <nuitonI18nVersion>3.0</nuitonI18nVersion> <processorPluginVersion>1.3</processorPluginVersion> <xmlrpcVersion>3.1.2</xmlrpcVersion> - <hibernateVersion>4.2.8.Final</hibernateVersion> + <hibernateVersion>4.3.5.Final</hibernateVersion> <sl4jVersion>1.7.6</sl4jVersion> <h2Version>1.3.175</h2Version> <hamcrestVersion>1.3</hamcrestVersion> Modified: trunk/topia-it/src/test/java/org/nuiton/topia/it/legacy/framework/TopiaConnectionProviderHardCoded.java =================================================================== --- trunk/topia-it/src/test/java/org/nuiton/topia/it/legacy/framework/TopiaConnectionProviderHardCoded.java 2014-03-28 15:21:44 UTC (rev 3034) +++ trunk/topia-it/src/test/java/org/nuiton/topia/it/legacy/framework/TopiaConnectionProviderHardCoded.java 2014-04-03 09:33:43 UTC (rev 3035) @@ -36,11 +36,11 @@ import org.apache.commons.logging.LogFactory; import org.hibernate.HibernateException; import org.hibernate.cfg.Environment; +import org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator; +import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider; import org.hibernate.internal.util.ReflectHelper; import org.hibernate.internal.util.config.ConfigurationHelper; import org.hibernate.service.UnknownUnwrapTypeException; -import org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator; -import org.hibernate.service.jdbc.connections.spi.ConnectionProvider; import org.hibernate.service.spi.Configurable; import org.hibernate.service.spi.Stoppable; Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/HibernateProvider.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/HibernateProvider.java 2014-03-28 15:21:44 UTC (rev 3034) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/HibernateProvider.java 2014-04-03 09:33:43 UTC (rev 3035) @@ -36,14 +36,15 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.SessionFactory; +import org.hibernate.boot.registry.StandardServiceRegistry; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; +import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.event.service.spi.EventListenerRegistry; import org.hibernate.event.spi.EventType; import org.hibernate.service.Service; import org.hibernate.service.ServiceRegistry; -import org.hibernate.service.ServiceRegistryBuilder; -import org.hibernate.service.jdbc.connections.spi.ConnectionProvider; import org.hibernate.service.spi.ServiceRegistryImplementor; import org.hibernate.service.spi.Stoppable; import org.nuiton.topia.persistence.TopiaConfigurationConstants; @@ -250,14 +251,14 @@ // init service registry // Hibernate 4.2.x - ServiceRegistryBuilder builder = new ServiceRegistryBuilder().applySettings(properties); - ServiceRegistry serviceRegistry = builder.buildServiceRegistry(); - hibernateSessionFactory = getHibernateConfiguration().buildSessionFactory(serviceRegistry); +// ServiceRegistryBuilder builder = new ServiceRegistryBuilder().applySettings(properties); +// ServiceRegistry serviceRegistry = builder.buildServiceRegistry(); +// hibernateSessionFactory = getHibernateConfiguration().buildSessionFactory(serviceRegistry); // // Hibernate 4.3.x -// StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder(); -// StandardServiceRegistry standardServiceRegistry = builder.applySettings(properties).build(); -// hibernateSessionFactory = getHibernateConfiguration().buildSessionFactory(standardServiceRegistry); + StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder(); + StandardServiceRegistry standardServiceRegistry = builder.applySettings(properties).build(); + hibernateSessionFactory = getHibernateConfiguration().buildSessionFactory(standardServiceRegistry); // we can't reuse original serviceRegistry instance // we must call getServiceRegistry on factory to get a working one Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/TopiaConnectionProvider.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/TopiaConnectionProvider.java 2014-03-28 15:21:44 UTC (rev 3034) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/TopiaConnectionProvider.java 2014-04-03 09:33:43 UTC (rev 3035) @@ -28,11 +28,11 @@ import org.apache.commons.logging.LogFactory; import org.hibernate.HibernateException; import org.hibernate.cfg.Environment; +import org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator; +import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider; import org.hibernate.internal.util.ReflectHelper; import org.hibernate.internal.util.config.ConfigurationHelper; import org.hibernate.service.UnknownUnwrapTypeException; -import org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator; -import org.hibernate.service.jdbc.connections.spi.ConnectionProvider; import org.hibernate.service.spi.Configurable; import org.hibernate.service.spi.Stoppable; Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/support/TopiaHibernateEventListener.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/support/TopiaHibernateEventListener.java 2014-03-28 15:21:44 UTC (rev 3034) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/support/TopiaHibernateEventListener.java 2014-04-03 09:33:43 UTC (rev 3035) @@ -137,12 +137,12 @@ } } -// // Hibernate 4.3.x -// @Override -// public boolean requiresPostCommitHanding(EntityPersister persister) { -// // TODO AThimel 17/12/13 I don't know what to return -// return false; -// } + // Hibernate 4.3.x + @Override + public boolean requiresPostCommitHanding(EntityPersister persister) { + // TODO AThimel 17/12/13 I don't know what to return + return false; + } /* Chargement */ Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaUtil.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaUtil.java 2014-03-28 15:21:44 UTC (rev 3034) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaUtil.java 2014-04-03 09:33:43 UTC (rev 3035) @@ -40,14 +40,13 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.SessionFactory; +import org.hibernate.boot.registry.StandardServiceRegistry; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.dialect.Dialect; -import org.hibernate.engine.spi.SessionFactoryImplementor; +import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider; import org.hibernate.mapping.PersistentClass; import org.hibernate.mapping.Table; -import org.hibernate.service.ServiceRegistry; -import org.hibernate.service.ServiceRegistryBuilder; -import org.hibernate.service.jdbc.connections.spi.ConnectionProvider; import org.hibernate.tool.hbm2ddl.DatabaseMetadata; import org.hibernate.tool.hbm2ddl.TableMetadata; import org.nuiton.topia.persistence.TopiaConfigurationConstants; @@ -493,54 +492,12 @@ return properties; } - /** - * Hibernate 4.2.x compatible Supplier<ConnectionProvider> - */ - public static class ConnectionProviderSupplier implements Supplier<ConnectionProvider>, Closeable { - - protected ServiceRegistry serviceRegistry; - - protected ConnectionProvider connectionProvider; - - protected final boolean inlineRegistry; - - public ConnectionProviderSupplier(TopiaHibernateSupport topiaHibernateSupport) { - inlineRegistry = false; - SessionFactory sessionFactory = topiaHibernateSupport.getHibernateFactory(); - SessionFactoryImplementor sessionFactoryImplementor = (SessionFactoryImplementor) sessionFactory; - serviceRegistry = sessionFactoryImplementor.getServiceRegistry(); - } - - public ConnectionProviderSupplier(Configuration configuration) { - inlineRegistry = true; - - Properties properties = configuration.getProperties(); - ServiceRegistryBuilder builder = new ServiceRegistryBuilder().applySettings(properties); - this.serviceRegistry = builder.buildServiceRegistry(); - } - - @Override - public ConnectionProvider get() { - if (connectionProvider == null) { - connectionProvider = serviceRegistry.getService(ConnectionProvider.class); - } - return connectionProvider; - } - - @Override - public void close() throws IOException { - if (inlineRegistry) { - ServiceRegistryBuilder.destroy(serviceRegistry); - } - } - } - // /** -// * Hibernate 4.3.x compatible Supplier<ConnectionProvider> +// * Hibernate 4.2.x compatible Supplier<ConnectionProvider> // */ // public static class ConnectionProviderSupplier implements Supplier<ConnectionProvider>, Closeable { // -// protected StandardServiceRegistry standardServiceRegistry; +// protected ServiceRegistry serviceRegistry; // // protected ConnectionProvider connectionProvider; // @@ -549,22 +506,22 @@ // public ConnectionProviderSupplier(TopiaHibernateSupport topiaHibernateSupport) { // inlineRegistry = false; // SessionFactory sessionFactory = topiaHibernateSupport.getHibernateFactory(); -// SessionFactory.SessionFactoryOptions sessionFactoryOptions = sessionFactory.getSessionFactoryOptions(); -// this.standardServiceRegistry = sessionFactoryOptions.getServiceRegistry(); +// SessionFactoryImplementor sessionFactoryImplementor = (SessionFactoryImplementor) sessionFactory; +// serviceRegistry = sessionFactoryImplementor.getServiceRegistry(); // } // // public ConnectionProviderSupplier(Configuration configuration) { // inlineRegistry = true; // -// StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder(); // Properties properties = configuration.getProperties(); -// this.standardServiceRegistry = builder.applySettings(properties).build(); +// ServiceRegistryBuilder builder = new ServiceRegistryBuilder().applySettings(properties); +// this.serviceRegistry = builder.buildServiceRegistry(); // } // // @Override // public ConnectionProvider get() { // if (connectionProvider == null) { -// connectionProvider = standardServiceRegistry.getService(ConnectionProvider.class); +// connectionProvider = serviceRegistry.getService(ConnectionProvider.class); // } // return connectionProvider; // } @@ -572,9 +529,51 @@ // @Override // public void close() throws IOException { // if (inlineRegistry) { -// StandardServiceRegistryBuilder.destroy(standardServiceRegistry); +// ServiceRegistryBuilder.destroy(serviceRegistry); // } // } // } + /** + * Hibernate 4.3.x compatible Supplier<ConnectionProvider> + */ + public static class ConnectionProviderSupplier implements Supplier<ConnectionProvider>, Closeable { + + protected StandardServiceRegistry standardServiceRegistry; + + protected ConnectionProvider connectionProvider; + + protected final boolean inlineRegistry; + + public ConnectionProviderSupplier(TopiaHibernateSupport topiaHibernateSupport) { + inlineRegistry = false; + SessionFactory sessionFactory = topiaHibernateSupport.getHibernateFactory(); + SessionFactory.SessionFactoryOptions sessionFactoryOptions = sessionFactory.getSessionFactoryOptions(); + this.standardServiceRegistry = sessionFactoryOptions.getServiceRegistry(); + } + + public ConnectionProviderSupplier(Configuration configuration) { + inlineRegistry = true; + + StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder(); + Properties properties = configuration.getProperties(); + this.standardServiceRegistry = builder.applySettings(properties).build(); + } + + @Override + public ConnectionProvider get() { + if (connectionProvider == null) { + connectionProvider = standardServiceRegistry.getService(ConnectionProvider.class); + } + return connectionProvider; + } + + @Override + public void close() throws IOException { + if (inlineRegistry) { + StandardServiceRegistryBuilder.destroy(standardServiceRegistry); + } + } + } + }