Author: echatellier Date: 2013-03-12 16:48:07 +0100 (Tue, 12 Mar 2013) New Revision: 2706 Url: http://nuiton.org/projects/topia/repository/revisions/2706 Log: Test new branch on hibernate 4.2 Added: branches/topia-2.8.x-hibernate4/ Modified: branches/topia-2.8.x-hibernate4/pom.xml branches/topia-2.8.x-hibernate4/topia-persistence/pom.xml branches/topia-2.8.x-hibernate4/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaConnectionProvider.java branches/topia-2.8.x-hibernate4/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java branches/topia-2.8.x-hibernate4/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFiresSupport.java branches/topia-2.8.x-hibernate4/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaUtil.java branches/topia-2.8.x-hibernate4/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityHibernateMappingGenerator.java branches/topia-2.8.x-hibernate4/topia-persistence/src/test/java/org/nuiton/topia/framework/TopiaConnectionProviderHardCoded.java branches/topia-2.8.x-hibernate4/topia-service-migration/pom.xml branches/topia-2.8.x-hibernate4/topia-service-replication/pom.xml branches/topia-2.8.x-hibernate4/topia-service-security/pom.xml Property changes on: branches/topia-2.8.x-hibernate4 ___________________________________________________________________ Added: svn:ignore + *.ipr *.iws .classpath *.iml .project target .settings .idea Added: svn:mergeinfo + /branches/from2.2.2-eugene2-beta:1662-1714 /branches/topia-2.6.x:2293-2300 Modified: branches/topia-2.8.x-hibernate4/pom.xml =================================================================== --- branches/topia-2.6.x/pom.xml 2012-12-30 21:45:12 UTC (rev 2705) +++ branches/topia-2.8.x-hibernate4/pom.xml 2013-03-12 15:48:07 UTC (rev 2706) @@ -37,7 +37,7 @@ </parent> <artifactId>topia</artifactId> - <version>2.7.2-SNAPSHOT</version> + <version>2.8-SNAPSHOT</version> <modules> <module>topia-persistence</module> @@ -64,7 +64,7 @@ <processorPluginVersion>1.3</processorPluginVersion> <nuitonI18nVersion>2.5</nuitonI18nVersion> <xmlrpcVersion>3.1.2</xmlrpcVersion> - <hibernateVersion>3.6.10.Final</hibernateVersion> + <hibernateVersion>4.2.0.CR2</hibernateVersion> <sl4jVersion>1.6.6</sl4jVersion> <h2Version>1.3.168</h2Version> <hamcrestVersion>1.3</hamcrestVersion> Modified: branches/topia-2.8.x-hibernate4/topia-persistence/pom.xml =================================================================== --- branches/topia-2.6.x/topia-persistence/pom.xml 2012-12-30 21:45:12 UTC (rev 2705) +++ branches/topia-2.8.x-hibernate4/topia-persistence/pom.xml 2013-03-12 15:48:07 UTC (rev 2706) @@ -35,7 +35,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>topia</artifactId> - <version>2.7.2-SNAPSHOT</version> + <version>2.8-SNAPSHOT</version> </parent> <groupId>org.nuiton.topia</groupId> Modified: branches/topia-2.8.x-hibernate4/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaConnectionProvider.java =================================================================== --- branches/topia-2.6.x/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaConnectionProvider.java 2012-12-30 21:45:12 UTC (rev 2705) +++ branches/topia-2.8.x-hibernate4/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaConnectionProvider.java 2013-03-12 15:48:07 UTC (rev 2706) @@ -24,22 +24,23 @@ */ package org.nuiton.topia.framework; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.hibernate.HibernateException; -import org.hibernate.cfg.Environment; -import org.hibernate.connection.ConnectionProvider; -import org.hibernate.connection.ConnectionProviderFactory; -import org.hibernate.util.PropertiesHelper; -import org.hibernate.util.ReflectHelper; - 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.internal.util.ReflectHelper; +import org.hibernate.internal.util.config.ConfigurationHelper; +import org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator; +import org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl; + /** * Customized connection provider. * <p/> @@ -61,7 +62,7 @@ * @author tchemit <chemit@codelutin.com> * @since 2.5.3 */ -public class TopiaConnectionProvider implements ConnectionProvider { +public class TopiaConnectionProvider extends DriverManagerConnectionProviderImpl { /** Logger. */ private static final Log log = @@ -112,19 +113,19 @@ } @Override - public void configure(Properties props) throws HibernateException { - String driverClass = props.getProperty(Environment.DRIVER); + public void configure(Map configurationValues) throws HibernateException { + String driverClass = (String)configurationValues.get(Environment.DRIVER); - poolSize = PropertiesHelper.getInt(Environment.POOL_SIZE, props, 20); //default pool size 20 + poolSize = ConfigurationHelper.getInt(Environment.POOL_SIZE, configurationValues, 20); //default pool size 20 if (log.isDebugEnabled()) { log.debug("Connection pool size: " + poolSize); } - autocommit = PropertiesHelper.getBoolean(Environment.AUTOCOMMIT, props); + autocommit = ConfigurationHelper.getBoolean(Environment.AUTOCOMMIT, configurationValues); if (log.isDebugEnabled()) log.debug("autocommit mode: " + autocommit); - isolation = PropertiesHelper.getInteger(Environment.ISOLATION, props); + isolation = ConfigurationHelper.getInteger(Environment.ISOLATION, configurationValues); if (isolation != null) { if (log.isDebugEnabled()) { log.debug("JDBC isolation level: " + @@ -153,7 +154,7 @@ } } - url = props.getProperty(Environment.URL); + url = (String)configurationValues.get(Environment.URL); if (url == null) { String msg = "JDBC URL was not specified by property " + Environment.URL; @@ -164,7 +165,7 @@ } connectionProps = - ConnectionProviderFactory.getConnectionProperties(props); + ConnectionProviderInitiator.getConnectionProperties(configurationValues); if (log.isDebugEnabled()) { log.debug("using driver: " + driverClass + " at URL: " + url); @@ -174,7 +175,7 @@ log.debug("connection properties: " + connectionProps); } else if (log.isDebugEnabled()) { log.debug("connection properties: " + - PropertiesHelper.maskOut(connectionProps, "password")); + ConfigurationHelper.maskOut(connectionProps, "password")); } } @@ -272,11 +273,11 @@ @Override protected void finalize() throws Throwable { super.finalize(); - close(); + stop(); } @Override - public void close() { + public void stop() { if (log.isDebugEnabled()) { log.debug("cleaning up connection pool: " + url); Modified: branches/topia-2.8.x-hibernate4/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java =================================================================== --- branches/topia-2.6.x/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java 2012-12-30 21:45:12 UTC (rev 2705) +++ branches/topia-2.8.x-hibernate4/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java 2013-03-12 15:48:07 UTC (rev 2706) @@ -25,17 +25,36 @@ package org.nuiton.topia.framework; +import static org.nuiton.i18n.I18n._; + +import java.beans.PropertyChangeListener; +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.io.Reader; +import java.io.Writer; +import java.lang.reflect.Field; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.Set; +import java.util.WeakHashMap; +import java.util.zip.GZIPInputStream; + import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.dom4j.Document; -import org.dom4j.DocumentException; -import org.dom4j.DocumentFactory; -import org.dom4j.Element; -import org.dom4j.io.OutputFormat; -import org.dom4j.io.SAXReader; -import org.dom4j.io.XMLWriter; -import org.hibernate.EntityMode; import org.hibernate.FlushMode; import org.hibernate.HibernateException; import org.hibernate.Query; @@ -45,15 +64,13 @@ import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; -import org.hibernate.event.PostDeleteEventListener; -import org.hibernate.event.PostInsertEventListener; -import org.hibernate.event.PostLoadEventListener; -import org.hibernate.event.PostUpdateEventListener; -import org.hibernate.event.PreDeleteEventListener; -import org.hibernate.event.PreInsertEventListener; -import org.hibernate.event.PreLoadEventListener; -import org.hibernate.event.PreUpdateEventListener; +import org.hibernate.event.service.internal.EventListenerRegistryImpl; +import org.hibernate.event.service.spi.EventListenerRegistry; +import org.hibernate.event.spi.EventType; +import org.hibernate.internal.SessionFactoryImpl; import org.hibernate.jdbc.Work; +import org.hibernate.service.ServiceRegistry; +import org.hibernate.service.ServiceRegistryBuilder; import org.hibernate.tool.hbm2ddl.SchemaExport; import org.hibernate.tool.hbm2ddl.SchemaUpdate; import org.nuiton.topia.TopiaContext; @@ -70,40 +87,7 @@ import org.nuiton.topia.persistence.TopiaDAOImpl; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaId; -import org.nuiton.util.ArrayUtil; -import java.beans.PropertyChangeListener; -import java.io.BufferedInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.Reader; -import java.io.Writer; -import java.lang.reflect.Field; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Date; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Properties; -import java.util.Set; -import java.util.WeakHashMap; -import java.util.zip.GZIPInputStream; - -import static org.nuiton.i18n.I18n._; - /** * Le TopiaContextImpl est le point d'entre pour acceder aux donnees. Il est * configurer par un fichier de propriete @@ -518,13 +502,36 @@ return hibernate; } + protected ServiceRegistry serviceRegistry; + public ServiceRegistry getServiceRegistry() throws TopiaNotFoundException { + if (serviceRegistry == null) { + ServiceRegistryBuilder serviceRegistryBuilder = new ServiceRegistryBuilder().applySettings( + getHibernateConfiguration().getProperties()); + + serviceRegistry = serviceRegistryBuilder.buildServiceRegistry(); + } + return serviceRegistry; + } @Override public SessionFactory getHibernateFactory() throws TopiaNotFoundException { if (hibernateFactory == null) { if (getParentContext() != null) { hibernateFactory = getParentContext().getHibernateFactory(); } else { - hibernateFactory = getHibernateConfiguration().buildSessionFactory(); + hibernateFactory = getHibernateConfiguration().buildSessionFactory(getServiceRegistry()); + + EventListenerRegistry eventListenerRegistry = ((SessionFactoryImpl)hibernateFactory).getServiceRegistry() + .getService(EventListenerRegistry.class); + TopiaFiresSupport.TopiaHibernateEvent listener = + new TopiaFiresSupport.TopiaHibernateEvent(this); + eventListenerRegistry.appendListeners(EventType.PRE_INSERT, listener); + eventListenerRegistry.appendListeners(EventType.PRE_LOAD, listener); + eventListenerRegistry.appendListeners(EventType.PRE_UPDATE, listener); + eventListenerRegistry.appendListeners(EventType.PRE_DELETE, listener); + eventListenerRegistry.appendListeners(EventType.POST_INSERT, listener); + eventListenerRegistry.appendListeners(EventType.POST_LOAD, listener); + eventListenerRegistry.appendListeners(EventType.POST_UPDATE, listener); + eventListenerRegistry.appendListeners(EventType.POST_DELETE, listener); } } return hibernateFactory; @@ -539,76 +546,6 @@ } else { hibernateConfiguration = new Configuration(); - // Ajout du listeners pour les events - TopiaFiresSupport.TopiaHibernateEvent listener = - new TopiaFiresSupport.TopiaHibernateEvent(this); - - PreInsertEventListener[] preInsertEventListeners = - hibernateConfiguration.getEventListeners(). - getPreInsertEventListeners(); - preInsertEventListeners = ArrayUtil.concatElems( - preInsertEventListeners, listener); - - PreLoadEventListener[] preLoadEventListeners = - hibernateConfiguration.getEventListeners(). - getPreLoadEventListeners(); - preLoadEventListeners = ArrayUtil.concatElems( - preLoadEventListeners, listener); - - PreUpdateEventListener[] preUpdateEventListeners = - hibernateConfiguration.getEventListeners(). - getPreUpdateEventListeners(); - preUpdateEventListeners = ArrayUtil.concatElems( - preUpdateEventListeners, listener); - - PreDeleteEventListener[] preDeleteEventListeners = - hibernateConfiguration.getEventListeners(). - getPreDeleteEventListeners(); - preDeleteEventListeners = ArrayUtil.concatElems( - preDeleteEventListeners, listener); - - PostInsertEventListener[] postInsertEventListeners = - hibernateConfiguration.getEventListeners(). - getPostInsertEventListeners(); - postInsertEventListeners = ArrayUtil.concatElems( - postInsertEventListeners, listener); - - PostLoadEventListener[] postLoadEventListeners = - hibernateConfiguration.getEventListeners(). - getPostLoadEventListeners(); - postLoadEventListeners = ArrayUtil.concatElems( - postLoadEventListeners, listener); - - PostUpdateEventListener[] postUpdateEventListeners = - hibernateConfiguration.getEventListeners(). - getPostUpdateEventListeners(); - postUpdateEventListeners = ArrayUtil.concatElems( - postUpdateEventListeners, listener); - - PostDeleteEventListener[] postDeleteEventListeners = - hibernateConfiguration.getEventListeners(). - getPostDeleteEventListeners(); - postDeleteEventListeners = ArrayUtil.concatElems( - postDeleteEventListeners, listener); - - hibernateConfiguration.getEventListeners(). - setPreInsertEventListeners(preInsertEventListeners); - hibernateConfiguration.getEventListeners(). - setPreLoadEventListeners(preLoadEventListeners); - hibernateConfiguration.getEventListeners(). - setPreUpdateEventListeners(preUpdateEventListeners); - hibernateConfiguration.getEventListeners(). - setPreDeleteEventListeners(preDeleteEventListeners); - - hibernateConfiguration.getEventListeners(). - setPostInsertEventListeners(postInsertEventListeners); - hibernateConfiguration.getEventListeners(). - setPostLoadEventListeners(postLoadEventListeners); - hibernateConfiguration.getEventListeners(). - setPostUpdateEventListeners(postUpdateEventListeners); - hibernateConfiguration.getEventListeners(). - setPostDeleteEventListeners(postDeleteEventListeners); - // ajout des repertoires contenant les mappings hibernate String[] dirs = getConfig().getProperty( TopiaContextFactory.CONFIG_PERSISTENCE_DIRECTORIES, "").split(","); @@ -1115,7 +1052,7 @@ checkClosed(_("topia.persistence.error.unsupported.operation.on.closed.context", "importXML")); - Document doc; + /*Document doc; SAXReader xmlReader = new SAXReader(); try { @@ -1147,7 +1084,7 @@ } else { throw new TopiaException( _("topia.persistence.error.empty.doc")); - } + }*/ } @Override @@ -1156,7 +1093,7 @@ checkClosed(_("topia.persistence.error.unsupported.operation.on.closed.context", "exportXML")); - String[] queries = buildQueries(entityAndcondition); + /*String[] queries = buildQueries(entityAndcondition); // performs queries try { @@ -1175,36 +1112,6 @@ } } - /*for (int i = 0; i < entityAndcondition.length;) { - try { - entityClass = (Class) entityAndcondition[i++]; - condition = (String) entityAndcondition[i++]; - - String query = "from " + entityClass.getName(); - if (condition != null && !condition.isEmpty()) { - query += " where " + condition; - } - - for (Object o : sessionDom4j.createQuery(query).list()) { - rootElement.add((Element) o); - } - } catch (ClassCastException eee) { - if (i % 2 == 0) { - throw new IllegalArgumentException( - "Others arguement must be String not " - + entityAndcondition[i - 1], eee); - } else { - throw new IllegalArgumentException( - "Others arguement must be Class not " - + entityAndcondition[i - 1], eee); - } - } catch (IndexOutOfBoundsException eee) { - throw new IllegalArgumentException( - "Others arguement must be couple of (Class, String)", - eee); - } - }*/ - XMLWriter result = new XMLWriter(xml, OutputFormat.createPrettyPrint()); result.write(doc); @@ -1216,7 +1123,7 @@ } catch (IOException eee) { throw new TopiaException(_("topia.persistence.error.on.export", eee.getMessage()), eee); - } + }*/ } @Override Modified: branches/topia-2.8.x-hibernate4/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFiresSupport.java =================================================================== --- branches/topia-2.6.x/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFiresSupport.java 2012-12-30 21:45:12 UTC (rev 2705) +++ branches/topia-2.8.x-hibernate4/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFiresSupport.java 2013-03-12 15:48:07 UTC (rev 2706) @@ -25,26 +25,36 @@ package org.nuiton.topia.framework; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; +import java.beans.VetoableChangeSupport; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + import org.apache.commons.collections.map.IdentityMap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.Session; -import org.hibernate.event.PostDeleteEvent; -import org.hibernate.event.PostDeleteEventListener; -import org.hibernate.event.PostInsertEvent; -import org.hibernate.event.PostInsertEventListener; -import org.hibernate.event.PostLoadEvent; -import org.hibernate.event.PostLoadEventListener; -import org.hibernate.event.PostUpdateEvent; -import org.hibernate.event.PostUpdateEventListener; -import org.hibernate.event.PreDeleteEvent; -import org.hibernate.event.PreDeleteEventListener; -import org.hibernate.event.PreInsertEvent; -import org.hibernate.event.PreInsertEventListener; -import org.hibernate.event.PreLoadEvent; -import org.hibernate.event.PreLoadEventListener; -import org.hibernate.event.PreUpdateEvent; -import org.hibernate.event.PreUpdateEventListener; +import org.hibernate.event.spi.PostDeleteEvent; +import org.hibernate.event.spi.PostDeleteEventListener; +import org.hibernate.event.spi.PostInsertEvent; +import org.hibernate.event.spi.PostInsertEventListener; +import org.hibernate.event.spi.PostLoadEvent; +import org.hibernate.event.spi.PostLoadEventListener; +import org.hibernate.event.spi.PostUpdateEvent; +import org.hibernate.event.spi.PostUpdateEventListener; +import org.hibernate.event.spi.PreDeleteEvent; +import org.hibernate.event.spi.PreDeleteEventListener; +import org.hibernate.event.spi.PreInsertEvent; +import org.hibernate.event.spi.PreInsertEventListener; +import org.hibernate.event.spi.PreLoadEvent; +import org.hibernate.event.spi.PreLoadEventListener; +import org.hibernate.event.spi.PreUpdateEvent; +import org.hibernate.event.spi.PreUpdateEventListener; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; import org.nuiton.topia.TopiaVetoException; @@ -63,16 +73,6 @@ import org.nuiton.util.CategorisedListenerSet; import org.nuiton.util.ListenerSet; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; -import java.beans.VetoableChangeSupport; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - /** * TODO-fdesbois-20100507 : Need translation of javadoc. * <p/> Modified: branches/topia-2.8.x-hibernate4/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaUtil.java =================================================================== --- branches/topia-2.6.x/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaUtil.java 2012-12-30 21:45:12 UTC (rev 2705) +++ branches/topia-2.8.x-hibernate4/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaUtil.java 2013-03-12 15:48:07 UTC (rev 2706) @@ -24,14 +24,23 @@ */ package org.nuiton.topia.framework; +import java.net.URL; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Iterator; +import java.util.Properties; +import java.util.StringTokenizer; +import java.util.regex.Pattern; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.cfg.Configuration; -import org.hibernate.connection.ConnectionProvider; -import org.hibernate.connection.ConnectionProviderFactory; import org.hibernate.dialect.Dialect; 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.TopiaContext; @@ -41,14 +50,6 @@ import org.nuiton.util.RecursiveProperties; import org.nuiton.util.Resource; -import java.net.URL; -import java.sql.Connection; -import java.sql.SQLException; -import java.util.Iterator; -import java.util.Properties; -import java.util.StringTokenizer; -import java.util.regex.Pattern; - /** * TODO-fdesbois-20100507 : Need javadoc + translations for existing methods. * @@ -195,9 +196,9 @@ throw new IllegalArgumentException( "could not find entity with name " + entityName); } - ConnectionProvider connectionProvider = - ConnectionProviderFactory.newConnectionProvider( - configuration.getProperties()); + + ServiceRegistry serviceRegistry = ((TopiaContextImpl) tx).getServiceRegistry(); + ConnectionProvider connectionProvider = serviceRegistry.getService(ConnectionProvider.class); Dialect dialect = Dialect.getDialect(configuration.getProperties()); @@ -262,10 +263,11 @@ throw new IllegalArgumentException( "could not find entity with name " + entityName); } - ConnectionProvider connectionProvider = - ConnectionProviderFactory.newConnectionProvider( - configuration.getProperties()); + ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings( + configuration.getProperties()).buildServiceRegistry(); + ConnectionProvider connectionProvider = serviceRegistry.getService(ConnectionProvider.class); + Dialect dialect = Dialect.getDialect(configuration.getProperties()); Connection connection = null; @@ -308,9 +310,9 @@ try { - ConnectionProvider connectionProvider = - ConnectionProviderFactory.newConnectionProvider( - configuration.getProperties()); + ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings( + configuration.getProperties()).buildServiceRegistry(); + ConnectionProvider connectionProvider = serviceRegistry.getService(ConnectionProvider.class); Dialect dialect = Dialect.getDialect(configuration.getProperties()); Modified: branches/topia-2.8.x-hibernate4/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityHibernateMappingGenerator.java =================================================================== --- branches/topia-2.6.x/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityHibernateMappingGenerator.java 2012-12-30 21:45:12 UTC (rev 2705) +++ branches/topia-2.8.x-hibernate4/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityHibernateMappingGenerator.java 2013-03-12 15:48:07 UTC (rev 2706) @@ -313,7 +313,7 @@ String attrType = getType(attr, true); String lazy = generateFromTagValue(HIBERNATE_ATTRIBUTE_LAZY, TopiaGeneratorUtil.getLazyTagValue(attr)); String attrColumn = TopiaGeneratorUtil.getDbName(attr); -/*{<%=prefix%> <many-to-one name="<%=attrName%>" class="<%=attrType%>" <%=lazy%>column="<%=attrColumn%>" node="<%=attrName%>/@topiaId" embed-xml="false" <%=notNull%>/> +/*{<%=prefix%> <many-to-one name="<%=attrName%>" class="<%=attrType%>" <%=lazy%>column="<%=attrColumn%>" node="<%=attrName%>/@topiaId" <%=notNull%>/> }*/ // } //Ne sert plus grâce à l'utilisation de la navigabilité @@ -549,7 +549,7 @@ ObjectModelAttribute attr, String prefix) throws IOException { // boolean accessField = hasUnidirectionalRelationOnAbstractType(attr.getReverseAttribute(), model); -/// *{ <one-to-one name="<%=getName(attr)%>" class="<%=getType(attr)%>"<%=(TopiaGeneratorUtil.notEmpty(attr.getTagValue(TopiaGeneratorUtil.TAG_LENGTH))?(" length=\"" + attr.getTagValue(TopiaGeneratorUtil.TAG_LENGTH) + "\""):"")%><%=((attr.isComposite() || attr.hasAssociationClass())?" cascade=\"delete\"":"")%><%=((accessField)?" access=\"field\"":"")%> node="<%=getName(attr)%>/@topiaId" embed-xml="false"/> +/// *{ <one-to-one name="<%=getName(attr)%>" class="<%=getType(attr)%>"<%=(TopiaGeneratorUtil.notEmpty(attr.getTagValue(TopiaGeneratorUtil.TAG_LENGTH))?(" length=\"" + attr.getTagValue(TopiaGeneratorUtil.TAG_LENGTH) + "\""):"")%><%=((attr.isComposite() || attr.hasAssociationClass())?" cascade=\"delete\"":"")%><%=((accessField)?" access=\"field\"":"")%> node="<%=getName(attr)%>/@topiaId" /> //} */ // for hibernate many-to-one with unique="true" => one-to-one @@ -587,19 +587,16 @@ inverse = "inverse=\"true\" "; } if (needsIndex) { -/*{<%=prefix%> <<%=collType%> name="<%=attrName%>" <%=inverse%><%=lazy%><%=cascade%>node="<%=attrName%>" embed-xml="false"> +/*{<%=prefix%> <<%=collType%> name="<%=attrName%>" <%=inverse%><%=lazy%><%=cascade%>node="<%=attrName%>"> <%=prefix%> <key column="<%=reverseAttrDBName%>"/> <%=prefix%> <list-index column="<%=reverseAttrDBName%>_idx"/> -<%=prefix%> <one-to-many class="<%=attrType%>" node="topiaId" embed-xml="false"/> +<%=prefix%> <one-to-many class="<%=attrType%>" node="topiaId"/> <%=prefix%> </<%=collType%>> }*/ }else { -//fixme pour le moment, on ne calcule pas si on doit autoriser le embed-xml à true -// on le positionne manuellement -//TC-20090115 embed-xml wasat true but nobody could tellme why -/*{<%=prefix%> <<%=collType%> name="<%=attrName%>" <%=inverse%><%=orderBy%><%=fetch%><%=lazy%><%=cascade%>node="<%=attrName%>" embed-xml="false"> +/*{<%=prefix%> <<%=collType%> name="<%=attrName%>" <%=inverse%><%=orderBy%><%=fetch%><%=lazy%><%=cascade%>node="<%=attrName%>"> <%=prefix%> <key column="<%=reverseAttrDBName%>"/> -<%=prefix%> <one-to-many class="<%=attrType%>" node="topiaId" embed-xml="false"/> +<%=prefix%> <one-to-many class="<%=attrType%>" node="topiaId"/> <%=prefix%> </<%=collType%>> }*/ } @@ -645,7 +642,7 @@ String lazy = generateFromTagValue(HIBERNATE_ATTRIBUTE_LAZY, TopiaGeneratorUtil.getLazyTagValue(attr)); String attrColumn = TopiaGeneratorUtil.getDbName(attr); -/*{<%=prefix%> <<%=collType%> name="<%=attrName%>" <%=lazy%>node="<%=attrName%>" embed-xml="true"> +/*{<%=prefix%> <<%=collType%> name="<%=attrName%>" <%=lazy%>node="<%=attrName%>"> <%=prefix%> <key column="OWNER"/> }*/ if (needsIndex) { @@ -688,7 +685,7 @@ if (isUnique) { /*{unique="true" }*/ } -/*{node="<%=attrName%>/@topiaId" embed-xml="false"}*/ +/*{node="<%=attrName%>/@topiaId"}*/ /*{/> }*/ @@ -737,7 +734,7 @@ } String reverseAttrDBName = TopiaGeneratorUtil.getReverseDbName(attr); -/*{<%=prefix%> <<%=collType%> name="<%=attrName%>" table="<%=tableName%>" <%=inverse%><%=lazy%><%=cascade%> node="<%=attrName%>" embed-xml="true"> +/*{<%=prefix%> <<%=collType%> name="<%=attrName%>" table="<%=tableName%>" <%=inverse%><%=lazy%><%=cascade%> node="<%=attrName%>"> <%=prefix%> <key column="<%=reverseAttrDBName%>"/> }*/ if (needsIndex) { Modified: branches/topia-2.8.x-hibernate4/topia-persistence/src/test/java/org/nuiton/topia/framework/TopiaConnectionProviderHardCoded.java =================================================================== --- branches/topia-2.6.x/topia-persistence/src/test/java/org/nuiton/topia/framework/TopiaConnectionProviderHardCoded.java 2012-12-30 21:45:12 UTC (rev 2705) +++ branches/topia-2.8.x-hibernate4/topia-persistence/src/test/java/org/nuiton/topia/framework/TopiaConnectionProviderHardCoded.java 2013-03-12 15:48:07 UTC (rev 2706) @@ -24,29 +24,30 @@ */ package org.nuiton.topia.framework; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.hibernate.HibernateException; -import org.hibernate.cfg.Environment; -import org.hibernate.connection.ConnectionProvider; -import org.hibernate.connection.ConnectionProviderFactory; -import org.hibernate.util.PropertiesHelper; -import org.hibernate.util.ReflectHelper; - import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.ArrayList; import java.util.Iterator; +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.internal.util.ReflectHelper; +import org.hibernate.internal.util.config.ConfigurationHelper; +import org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator; +import org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl; + /** * Customized connection provider. * * @author tchemit <chemit@codelutin.com> * @since 2.5.3 */ -public class TopiaConnectionProviderHardCoded implements ConnectionProvider { +public class TopiaConnectionProviderHardCoded extends DriverManagerConnectionProviderImpl { private String url; @@ -67,17 +68,17 @@ LogFactory.getLog(TopiaConnectionProviderHardCoded.class); @Override - public void configure(Properties props) throws HibernateException { - String driverClass = props.getProperty(Environment.DRIVER); + public void configure(Map configurationValues) throws HibernateException { + String driverClass = (String)configurationValues.get(Environment.DRIVER); - poolSize = PropertiesHelper.getInt(Environment.POOL_SIZE, props, 20); //default pool size 20 + poolSize = ConfigurationHelper.getInt(Environment.POOL_SIZE, configurationValues, 20); //default pool size 20 log.info("Using Hibernate built-in connection pool (not for production use!)"); log.info("Hibernate connection pool size: " + poolSize); - autocommit = PropertiesHelper.getBoolean(Environment.AUTOCOMMIT, props); + autocommit = ConfigurationHelper.getBoolean(Environment.AUTOCOMMIT, configurationValues); log.info("autocommit mode: " + autocommit); - isolation = PropertiesHelper.getInteger(Environment.ISOLATION, props); + isolation = ConfigurationHelper.getInteger(Environment.ISOLATION, configurationValues); if (isolation != null) log.info("JDBC isolation level: " + Environment.isolationLevelToString(isolation)); @@ -102,7 +103,7 @@ // the real directory where db is and then make sure hibernate always // use the connection provider... String directory = - props.getProperty(TopiaConnectionProviderTest.TEST_URL); + (String)configurationValues.get(TopiaConnectionProviderTest.TEST_URL); url = directory; // url = props.getProperty(Environment.URL); @@ -113,14 +114,14 @@ // throw new HibernateException(msg); // } - connectionProps = ConnectionProviderFactory.getConnectionProperties(props); + connectionProps = ConnectionProviderInitiator.getConnectionProperties(configurationValues); log.info("using driver: " + driverClass + " at URL: " + url); // if debug level is enabled, then log the password, otherwise mask it if (log.isDebugEnabled()) { log.info("connection properties: " + connectionProps); } else if (log.isInfoEnabled()) { - log.info("connection properties: " + PropertiesHelper.maskOut(connectionProps, "password")); + log.info("connection properties: " + ConfigurationHelper.maskOut(connectionProps, "password")); } } Modified: branches/topia-2.8.x-hibernate4/topia-service-migration/pom.xml =================================================================== --- branches/topia-2.6.x/topia-service-migration/pom.xml 2012-12-30 21:45:12 UTC (rev 2705) +++ branches/topia-2.8.x-hibernate4/topia-service-migration/pom.xml 2013-03-12 15:48:07 UTC (rev 2706) @@ -35,7 +35,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>topia</artifactId> - <version>2.7.2-SNAPSHOT</version> + <version>2.8-SNAPSHOT</version> </parent> <groupId>org.nuiton.topia</groupId> Modified: branches/topia-2.8.x-hibernate4/topia-service-replication/pom.xml =================================================================== --- branches/topia-2.6.x/topia-service-replication/pom.xml 2012-12-30 21:45:12 UTC (rev 2705) +++ branches/topia-2.8.x-hibernate4/topia-service-replication/pom.xml 2013-03-12 15:48:07 UTC (rev 2706) @@ -35,7 +35,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>topia</artifactId> - <version>2.7.2-SNAPSHOT</version> + <version>2.8-SNAPSHOT</version> </parent> <groupId>org.nuiton.topia</groupId> Modified: branches/topia-2.8.x-hibernate4/topia-service-security/pom.xml =================================================================== --- branches/topia-2.6.x/topia-service-security/pom.xml 2012-12-30 21:45:12 UTC (rev 2705) +++ branches/topia-2.8.x-hibernate4/topia-service-security/pom.xml 2013-03-12 15:48:07 UTC (rev 2706) @@ -35,7 +35,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>topia</artifactId> - <version>2.7.2-SNAPSHOT</version> + <version>2.8-SNAPSHOT</version> </parent> <groupId>org.nuiton.topia</groupId>