Author: echatellier Date: 2014-03-06 21:46:38 +0100 (Thu, 06 Mar 2014) New Revision: 3028 Url: http://forge.nuiton.org/projects/topia/repository/revisions/3028 Log: Modified: branches/3.0-hibernate43x/pom.xml branches/3.0-hibernate43x/topia-it/pom.xml branches/3.0-hibernate43x/topia-junit/pom.xml branches/3.0-hibernate43x/topia-persistence/pom.xml branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaApplicationContext.java branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaPersistenceContext.java branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/HibernateProvider.java branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/TopiaConnectionProvider.java branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/support/TopiaHibernateEventListener.java branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/support/TopiaServiceSupportImpl.java branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/support/TopiaHibernateSupport.java branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaUtil.java branches/3.0-hibernate43x/topia-service-csv/pom.xml branches/3.0-hibernate43x/topia-service-migration/pom.xml branches/3.0-hibernate43x/topia-service-replication/pom.xml branches/3.0-hibernate43x/topia-templates/ branches/3.0-hibernate43x/topia-templates/pom.xml Modified: branches/3.0-hibernate43x/pom.xml =================================================================== --- branches/3.0-hibernate43x/pom.xml 2014-03-01 09:14:00 UTC (rev 3027) +++ branches/3.0-hibernate43x/pom.xml 2014-03-06 20:46:38 UTC (rev 3028) @@ -33,7 +33,7 @@ </parent> <artifactId>topia</artifactId> - <version>3.0-SNAPSHOT</version> + <version>3.0-hib-SNAPSHOT</version> <packaging>pom</packaging> <name>ToPIA</name> @@ -241,7 +241,7 @@ <nuitonI18nVersion>3.0</nuitonI18nVersion> <processorPluginVersion>1.3</processorPluginVersion> <xmlrpcVersion>3.1.2</xmlrpcVersion> - <hibernateVersion>4.2.8.Final</hibernateVersion> + <hibernateVersion>4.3.4.Final</hibernateVersion> <sl4jVersion>1.7.6</sl4jVersion> <h2Version>1.3.175</h2Version> <hamcrestVersion>1.3</hamcrestVersion> Modified: branches/3.0-hibernate43x/topia-it/pom.xml =================================================================== --- branches/3.0-hibernate43x/topia-it/pom.xml 2014-03-01 09:14:00 UTC (rev 3027) +++ branches/3.0-hibernate43x/topia-it/pom.xml 2014-03-06 20:46:38 UTC (rev 3028) @@ -30,7 +30,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>topia</artifactId> - <version>3.0-SNAPSHOT</version> + <version>3.0-hib-SNAPSHOT</version> </parent> <groupId>org.nuiton.topia</groupId> Modified: branches/3.0-hibernate43x/topia-junit/pom.xml =================================================================== --- branches/3.0-hibernate43x/topia-junit/pom.xml 2014-03-01 09:14:00 UTC (rev 3027) +++ branches/3.0-hibernate43x/topia-junit/pom.xml 2014-03-06 20:46:38 UTC (rev 3028) @@ -30,7 +30,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>topia</artifactId> - <version>3.0-SNAPSHOT</version> + <version>3.0-hib-SNAPSHOT</version> </parent> <groupId>org.nuiton.topia</groupId> Modified: branches/3.0-hibernate43x/topia-persistence/pom.xml =================================================================== --- branches/3.0-hibernate43x/topia-persistence/pom.xml 2014-03-01 09:14:00 UTC (rev 3027) +++ branches/3.0-hibernate43x/topia-persistence/pom.xml 2014-03-06 20:46:38 UTC (rev 3028) @@ -30,7 +30,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>topia</artifactId> - <version>3.0-SNAPSHOT</version> + <version>3.0-hib-SNAPSHOT</version> </parent> <groupId>org.nuiton.topia</groupId> Modified: branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaApplicationContext.java =================================================================== --- branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaApplicationContext.java 2014-03-01 09:14:00 UTC (rev 3027) +++ branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaApplicationContext.java 2014-03-06 20:46:38 UTC (rev 3028) @@ -283,16 +283,18 @@ @Override public boolean isSchemaEmpty() { - Configuration configuration = getHibernateProvider().getHibernateConfiguration(); + /*Configuration configuration = getHibernateProvider().getHibernateConfiguration(); boolean result = TopiaUtil.isSchemaEmpty(configuration); - return result; + return result;*/ + return false; } @Override public boolean isTableExists(Class<?> clazz) { - Configuration configuration = getHibernateProvider().getHibernateConfiguration(); + /*Configuration configuration = getHibernateProvider().getHibernateConfiguration(); boolean result = TopiaUtil.isSchemaExist(configuration, clazz.getName()); - return result; + return result;*/ + return true; } @Override @@ -310,7 +312,7 @@ } // TODO brendan 11/10/13 reable event // topiaFiresSupport.firePreCreateSchema(this); - new SchemaExport(getHibernateProvider().getHibernateConfiguration()).execute(showSchema, true, false, true); + //new SchemaExport(getHibernateProvider().getHibernateConfiguration()).execute(showSchema, true, false, true); // TODO brendan 11/10/13 reable event // topiaFiresSupport.firePostCreateSchema(this); } catch (HibernateException eee) { @@ -323,8 +325,8 @@ @Override public void showCreateSchema() { try { - new SchemaExport(getHibernateProvider().getHibernateConfiguration()). - execute(true, false, false, true); + //new SchemaExport(getHibernateProvider().getHibernateConfiguration()). + // execute(true, false, false, true); } catch (HibernateException eee) { throw new TopiaException( String.format("Could not show create schema for reason: %s", @@ -343,8 +345,8 @@ // TODO brendan 11/10/13 reable event // topiaFiresSupport.firePreUpdateSchema(this); - new SchemaUpdate(getHibernateProvider().getHibernateConfiguration()).execute(showSchema, - true); + //new SchemaUpdate(getHibernateProvider().getHibernateConfiguration()).execute(showSchema, + // true); // topiaFiresSupport.firePostUpdateSchema(this); } catch (HibernateException eee) { throw new TopiaException( @@ -363,7 +365,7 @@ // TODO brendan 11/10/13 reable event // topiaFiresSupport.firePreDropSchema(this); - new SchemaExport(getHibernateProvider().getHibernateConfiguration()).execute(showSchema, true, true, false); + //new SchemaExport(getHibernateProvider().getHibernateConfiguration()).execute(showSchema, true, true, false); // topiaFiresSupport.firePostDropSchema(this); } catch (HibernateException eee) { throw new TopiaException( Modified: branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaPersistenceContext.java =================================================================== --- branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaPersistenceContext.java 2014-03-01 09:14:00 UTC (rev 3027) +++ branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaPersistenceContext.java 2014-03-06 20:46:38 UTC (rev 3028) @@ -188,10 +188,10 @@ return hibernateProvider.getSessionFactory(); } - @Override + /*@Override public Configuration getHibernateConfiguration() { return hibernateProvider.getHibernateConfiguration(); - } + }*/ } protected void startTransaction() throws TopiaException { Modified: branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/HibernateProvider.java =================================================================== --- branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/HibernateProvider.java 2014-03-01 09:14:00 UTC (rev 3027) +++ branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/HibernateProvider.java 2014-03-06 20:46:38 UTC (rev 3028) @@ -36,15 +36,16 @@ 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.metamodel.MetadataSources; 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; import org.nuiton.topia.persistence.TopiaNotFoundException; @@ -98,7 +99,7 @@ public List<Class<?>> getPersistentClasses() { if (persistentClasses.isEmpty()) { // Force configuration load - getHibernateConfiguration(); + //getHibernateConfiguration(); } return persistentClasses; } @@ -203,7 +204,33 @@ } return hibernateConfiguration; } + + public MetadataSources getMetaDataSources() { + if (metaSource == null) { + builder = new StandardServiceRegistryBuilder(); + builder.applySettings(configuration); + standardServiceRegistry = builder.build(); + metaSource = new MetadataSources( standardServiceRegistry); + + String listPersistenceClasses = getProperty(TopiaConfigurationConstants.CONFIG_PERSISTENCE_CLASSES, ""); + String[] classes = listPersistenceClasses.split(","); + for (String classname : classes) { + classname = classname.trim(); + if (StringUtils.isNotEmpty(classname)) { + if (log.isDebugEnabled()) { + log.debug("Load persistent class : " + classname); + } + + String mappingResourceName = classname.replace( '.', '/' ) + ".hbm.xml"; + metaSource.addResource(mappingResourceName); + } + } + } + + return metaSource; + } + /** * Method to get an Hibernate service instance from a given Hibernate SessionFactory * <p/> @@ -216,13 +243,13 @@ * @see org.hibernate.service.ServiceRegistry#getService(Class) */ protected static <S extends Service> S getHibernateService(SessionFactory sessionFactory, Class<S> serviceClass) { - // Hibernate 4.2.x - SessionFactoryImplementor sessionFactoryImplementor = (SessionFactoryImplementor) sessionFactory; - ServiceRegistryImplementor serviceRegistry = sessionFactoryImplementor.getServiceRegistry(); +// // Hibernate 4.2.x +// SessionFactoryImplementor sessionFactoryImplementor = (SessionFactoryImplementor) sessionFactory; +// ServiceRegistryImplementor serviceRegistry = sessionFactoryImplementor.getServiceRegistry(); -// // Hibernate 4.3.x -// SessionFactory.SessionFactoryOptions sessionFactoryOptions = sessionFactory.getSessionFactoryOptions(); -// StandardServiceRegistry serviceRegistry = sessionFactoryOptions.getServiceRegistry() + // Hibernate 4.3.x + SessionFactory.SessionFactoryOptions sessionFactoryOptions = sessionFactory.getSessionFactoryOptions(); + StandardServiceRegistry serviceRegistry = sessionFactoryOptions.getServiceRegistry(); S result = serviceRegistry.getService(serviceClass); return result; @@ -233,6 +260,7 @@ // close connection provider if possible (http://nuiton.org/issues/2757) ConnectionProvider service = getHibernateService(hibernateSessionFactory, ConnectionProvider.class); + // FIXME echatellier 20140301 : https://hibernate.atlassian.net/browse/HHH-8896 if (service instanceof Stoppable) { Stoppable stoppable = (Stoppable) service; stoppable.stop(); @@ -242,28 +270,34 @@ } } + StandardServiceRegistryBuilder builder; + StandardServiceRegistry standardServiceRegistry; + MetadataSources metaSource; + public SessionFactory getSessionFactory() { if (hibernateSessionFactory == null) { - Properties properties = getHibernateConfiguration().getProperties(); + //Properties properties = getHibernateConfiguration().getProperties(); // 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); + // Hibernate 4.3.x + //builder = new StandardServiceRegistryBuilder(); + //StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder(); + //StandardServiceRegistry standardServiceRegistry = builder.applySettings(properties).build(); + //hibernateSessionFactory = getHibernateConfiguration().buildSessionFactory(standardServiceRegistry); + hibernateSessionFactory = getMetaDataSources().buildMetadata().buildSessionFactory(); // we can't reuse original serviceRegistry instance // we must call getServiceRegistry on factory to get a working one - SessionFactoryImplementor sessionFactoryImplementor = (SessionFactoryImplementor) hibernateSessionFactory; - ServiceRegistry serviceRegistryInit = sessionFactoryImplementor.getServiceRegistry(); - EventListenerRegistry eventListenerRegistry = serviceRegistryInit.getService(EventListenerRegistry.class); + //SessionFactoryImplementor sessionFactoryImplementor = (SessionFactoryImplementor) hibernateSessionFactory; + //ServiceRegistry serviceRegistryInit = sessionFactoryImplementor.getServiceRegistry(); + EventListenerRegistry eventListenerRegistry = standardServiceRegistry.getService(EventListenerRegistry.class); TopiaHibernateEventListener listener = new TopiaHibernateEventListener(sessionRegistry); eventListenerRegistry.appendListeners(EventType.PRE_INSERT, listener); Modified: branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/TopiaConnectionProvider.java =================================================================== --- branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/TopiaConnectionProvider.java 2014-03-01 09:14:00 UTC (rev 3027) +++ branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/TopiaConnectionProvider.java 2014-03-06 20:46:38 UTC (rev 3028) @@ -24,26 +24,26 @@ * #L% */ +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Properties; + import org.apache.commons.logging.Log; 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; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Properties; - /** * Customized connection provider. * <p/> Modified: branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/support/TopiaHibernateEventListener.java =================================================================== --- branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/support/TopiaHibernateEventListener.java 2014-03-01 09:14:00 UTC (rev 3027) +++ branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/support/TopiaHibernateEventListener.java 2014-03-06 20:46:38 UTC (rev 3028) @@ -50,11 +50,11 @@ import org.hibernate.event.spi.SaveOrUpdateEventListener; import org.hibernate.persister.entity.EntityPersister; import org.nuiton.topia.persistence.TopiaDaoSupplier; +import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.topia.persistence.TopiaEntityContextable; import org.nuiton.topia.persistence.TopiaException; +import org.nuiton.topia.persistence.TopiaPersistenceContext; import org.nuiton.topia.persistence.internal.TopiaHibernateSessionRegistry; -import org.nuiton.topia.persistence.TopiaPersistenceContext; -import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.topia.persistence.TopiaEntityContextable; import com.google.common.base.Preconditions; @@ -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 true; + } /* Chargement */ Modified: branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/support/TopiaServiceSupportImpl.java =================================================================== --- branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/support/TopiaServiceSupportImpl.java 2014-03-01 09:14:00 UTC (rev 3027) +++ branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/support/TopiaServiceSupportImpl.java 2014-03-06 20:46:38 UTC (rev 3028) @@ -56,7 +56,7 @@ public void init() { preInitServices(this.services); - applicationContext.getHibernateProvider().getHibernateConfiguration(); // force mapping loading + //applicationContext.getHibernateProvider().getHibernateConfiguration(); // force mapping loading postInitServices(this.services); } Modified: branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/support/TopiaHibernateSupport.java =================================================================== --- branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/support/TopiaHibernateSupport.java 2014-03-01 09:14:00 UTC (rev 3027) +++ branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/support/TopiaHibernateSupport.java 2014-03-06 20:46:38 UTC (rev 3028) @@ -49,6 +49,6 @@ /** * @return Returns the Hibernate configuration */ - Configuration getHibernateConfiguration(); + //Configuration getHibernateConfiguration(); } Modified: branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaUtil.java =================================================================== --- branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaUtil.java 2014-03-01 09:14:00 UTC (rev 3027) +++ branches/3.0-hibernate43x/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/TopiaUtil.java 2014-03-06 20:46:38 UTC (rev 3028) @@ -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; @@ -178,7 +177,7 @@ try { - Configuration configuration = topiaHibernateSupport.getHibernateConfiguration(); + Configuration configuration = null;//topiaHibernateSupport.getHibernateConfiguration(); PersistentClass classMapping = configuration.getClassMapping(entityName); if (classMapping == null) { @@ -392,7 +391,7 @@ ConnectionProviderSupplier connectionProviderSupplier = new ConnectionProviderSupplier(topiaHibernateSupport); - Configuration configuration = topiaHibernateSupport.getHibernateConfiguration(); + Configuration configuration = null; //topiaHibernateSupport.getHibernateConfiguration(); try { @@ -496,51 +495,9 @@ /** * 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> -// */ // 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); + } + } + } + } Modified: branches/3.0-hibernate43x/topia-service-csv/pom.xml =================================================================== --- branches/3.0-hibernate43x/topia-service-csv/pom.xml 2014-03-01 09:14:00 UTC (rev 3027) +++ branches/3.0-hibernate43x/topia-service-csv/pom.xml 2014-03-06 20:46:38 UTC (rev 3028) @@ -30,7 +30,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>topia</artifactId> - <version>3.0-SNAPSHOT</version> + <version>3.0-hib-SNAPSHOT</version> </parent> <groupId>org.nuiton.topia</groupId> Modified: branches/3.0-hibernate43x/topia-service-migration/pom.xml =================================================================== --- branches/3.0-hibernate43x/topia-service-migration/pom.xml 2014-03-01 09:14:00 UTC (rev 3027) +++ branches/3.0-hibernate43x/topia-service-migration/pom.xml 2014-03-06 20:46:38 UTC (rev 3028) @@ -30,7 +30,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>topia</artifactId> - <version>3.0-SNAPSHOT</version> + <version>3.0-hib-SNAPSHOT</version> </parent> <groupId>org.nuiton.topia</groupId> Modified: branches/3.0-hibernate43x/topia-service-replication/pom.xml =================================================================== --- branches/3.0-hibernate43x/topia-service-replication/pom.xml 2014-03-01 09:14:00 UTC (rev 3027) +++ branches/3.0-hibernate43x/topia-service-replication/pom.xml 2014-03-06 20:46:38 UTC (rev 3028) @@ -30,7 +30,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>topia</artifactId> - <version>3.0-SNAPSHOT</version> + <version>3.0-hib-SNAPSHOT</version> </parent> <groupId>org.nuiton.topia</groupId> Property changes on: branches/3.0-hibernate43x/topia-templates ___________________________________________________________________ Modified: svn:ignore - target *.ipr *.iws *.iml .idea + target *.ipr *.iws *.iml .idea .settings .classpath .project Modified: branches/3.0-hibernate43x/topia-templates/pom.xml =================================================================== --- branches/3.0-hibernate43x/topia-templates/pom.xml 2014-03-01 09:14:00 UTC (rev 3027) +++ branches/3.0-hibernate43x/topia-templates/pom.xml 2014-03-06 20:46:38 UTC (rev 3028) @@ -30,7 +30,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>topia</artifactId> - <version>3.0-SNAPSHOT</version> + <version>3.0-hib-SNAPSHOT</version> </parent> <groupId>org.nuiton.topia</groupId>