r2458 - in trunk: topia-persistence/src/main/java/org/nuiton/topia topia-persistence/src/main/java/org/nuiton/topia/framework topia-persistence/src/main/java/org/nuiton/topia/generator topia-persistence/src/main/java/org/nuiton/topia/persistence topia-persistence/src/main/java/org/nuiton/topia/persistence/util topia-persistence-hibernate/src/main/java/org/nuiton/topia/persistence/hibernate topia-persistence-tck/src/main/java/org/nuiton/topia topia-persistence-tck/src/main/resources topia-ser
Author: athimel Date: 2012-05-09 18:50:54 +0200 (Wed, 09 May 2012) New Revision: 2458 Url: http://nuiton.org/repositories/revision/topia/2458 Log: Improve TopiaContextImpl configuration Modified: trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/persistence/hibernate/TopiaHibernatePersistenceProvider.java trunk/topia-persistence-tck/src/main/java/org/nuiton/topia/TopiaContextFactoryTest.java trunk/topia-persistence-tck/src/main/resources/TopiaContextImpl.properties trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContextFactory.java trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImplementor.java trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFiresSupport.java trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaPersistenceProvider.java trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaSQLQuery.java trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDAOTransformer.java trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/DBMapping.java trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/AbstractTopiaMigrationCallback.java trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/mappings/TMSVersionDAO.java trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/Duplicate.java trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/TaasService.java Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContextFactory.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContextFactory.java 2012-05-09 16:33:14 UTC (rev 2457) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContextFactory.java 2012-05-09 16:50:54 UTC (rev 2458) @@ -61,13 +61,7 @@ AbstractReferenceMap.SOFT); // public final static String CONFIG_DEFAULT_SCHEMA = Environment.DEFAULT_SCHEMA; -// -// public final static String CONFIG_USER = Environment.USER; -// -// public final static String CONFIG_PASS = Environment.PASS; -// -// public final static String CONFIG_DRIVER = Environment.DRIVER; -// + // public final static String CONFIG_DIALECT = Environment.DIALECT; // // public final static String CONFIG_CONNECTION_PROVIDER = Environment.CONNECTION_PROVIDER; @@ -86,8 +80,14 @@ // // public final static String CONFIG_SHOW_SQL = Environment.SHOW_SQL; - public final static String CONFIG_URL = "hibernate.connection.url";//Environment.URL; + public final static String CONFIG_USER = "topia.connection.username"; + public final static String CONFIG_PASS = "topia.connection.password"; + + public final static String CONFIG_DRIVER = "topia.connection.driver_class"; + + public final static String CONFIG_URL = "topia.connection.url"; + public final static String CONFIG_PERSISTENCE_DIRECTORIES = "topia.persistence.directories"; Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java 2012-05-09 16:33:14 UTC (rev 2457) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java 2012-05-09 16:50:54 UTC (rev 2458) @@ -28,13 +28,6 @@ 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.ReplicationMode; @@ -53,7 +46,6 @@ import org.nuiton.topia.TopiaContextFactory; import org.nuiton.topia.TopiaException; import org.nuiton.topia.TopiaNotFoundException; -import org.nuiton.topia.TopiaRuntimeException; import org.nuiton.topia.event.TopiaContextListener; import org.nuiton.topia.event.TopiaEntitiesVetoable; import org.nuiton.topia.event.TopiaEntityListener; @@ -64,7 +56,6 @@ import org.nuiton.topia.persistence.TopiaDAOImpl; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaId; -import org.nuiton.util.ArrayUtil; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; @@ -78,22 +69,15 @@ 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.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.LinkedHashSet; import java.util.List; import java.util.Map; @@ -139,13 +123,13 @@ protected TopiaContextImplementor parentContext; /** L'objet configuration utilisé pour la creation de la factory JPA */ - protected Map jpaConfiguration; + protected Map<String, Object> jpaConfiguration; /** * la factory permettant de recuperer la session hibernate. Seul les - * TopiaContextImpl initiaux contiennent un hibernateFactory + * TopiaContextImpl initiaux contiennent un entityManagerFactory */ - protected EntityManagerFactory hibernateFactory; + protected EntityManagerFactory entityManagerFactory; /** La session utilisé par le TopiaContextImpl */ protected EntityManager hibernate; @@ -489,7 +473,7 @@ } @Override - public EntityManager getHibernate() throws TopiaException { + public EntityManager getEntityManager() throws TopiaException { if (hibernate == null) { throw new TopiaException( _("topia.persistence.error.no.hibernate.session")); @@ -498,33 +482,30 @@ } @Override - public EntityManagerFactory getHibernateFactory() throws TopiaNotFoundException { - if (hibernateFactory == null) { + public EntityManagerFactory getEntityManagerFactory() throws TopiaNotFoundException { + if (entityManagerFactory == null) { if (getParentContext() != null) { - hibernateFactory = getParentContext().getHibernateFactory(); + entityManagerFactory = getParentContext().getEntityManagerFactory(); } else { -// hibernateFactory = getHibernateConfiguration().buildSessionFactory(); Map params = getJPAConfiguration(); - - hibernateFactory = Persistence.createEntityManagerFactory("topia", params); // FIXME AThimel 07/05/2012 Map will probably contain Configuration + entityManagerFactory = Persistence.createEntityManagerFactory("topia", params); } } - return hibernateFactory; + return entityManagerFactory; } - public Map getJPAConfiguration() throws TopiaNotFoundException { + public Map<String, Object> getJPAConfiguration() throws TopiaNotFoundException { if (jpaConfiguration == null) { if (getParentContext() != null) { jpaConfiguration = getParentContext().getJPAConfiguration(); } else { - jpaConfiguration = new HashMap(); + jpaConfiguration = new HashMap<String, Object>(); - - // ajout des classes dites persistentes + // Ajout des classes persistantes for (TopiaService service : getServices().values()) { Class<?>[] classes = service.getPersistenceClasses(); - // certains service n'ont pas de classe persistantes + // Certains services n'ont pas de classe persistantes if (classes != null) { // sletellier 20110411 : http://www.nuiton.org/issues/show/1454 this.persistenceClasses.addAll(Arrays.asList(classes)); @@ -566,6 +547,13 @@ jpaConfiguration.put("topia.entities", this.persistenceClasses); + for (Map.Entry<Object, Object> entry : getConfig().entrySet()) { + Object key = entry.getKey(); + if (key instanceof String) { + jpaConfiguration.put((String)key, entry.getValue()); + } + } + } } return jpaConfiguration; @@ -764,7 +752,7 @@ throw new TopiaException( _("topia.persistence.error.rootContext.access")); } - Set<EntityType<?>> entities = getHibernateFactory().getMetamodel().getEntities(); + Set<EntityType<?>> entities = getEntityManagerFactory().getMetamodel().getEntities(); boolean found = false; for (EntityType<?> entityType : entities) { String entityName = entityType.getName(); @@ -778,7 +766,7 @@ } // if (!found) { // log.info(_("topia.persistence.supported.classes.for.context", -// getHibernateFactory().getMetamodel().getEntities())); +// getEntityManagerFactory().getMetamodel().getEntities())); // throw new TopiaException( // _("topia.persistence.error.unsupported.class", // entityClass.getName())); @@ -820,7 +808,7 @@ checkClosed(_("topia.persistence.error.context.is.closed")); TopiaContextImpl result = new TopiaContextImpl(this); - EntityManagerFactory factory = getHibernateFactory(); + EntityManagerFactory factory = getEntityManagerFactory(); result.hibernate = factory.createEntityManager(); // TODO AThimel 07/05/2012 Maybe provide a Map ? cf Configuration // new TopiaInterceptor(result)); @@ -895,7 +883,7 @@ // it's seem necessary to change session after commit // NON, NON, NON, il ne faut surtout pas le faire, ca pose plein de // probleme - // hibernate = getHibernateFactory().openSession(); + // hibernate = getEntityManagerFactory().openSession(); // hibernate.setFlushMode(FlushMode.NEVER); } catch (Exception eee) { throw new TopiaException(_("topia.persistence.error.on.commit", @@ -922,7 +910,7 @@ hibernate.close(); // it's very important to change the session after rollback // otherwize there are many error during next Entity's modification - hibernate = getHibernateFactory().createEntityManager(); // TODO AThimel 07/05/2012 Maybe provide a Map ? cf Configuration + hibernate = getEntityManagerFactory().createEntityManager(); // TODO AThimel 07/05/2012 Maybe provide a Map ? cf Configuration hibernate.setFlushMode(FlushModeType.COMMIT); // TODO AThimel 07/05/2012 Was MANUAL // hibernate.beginTransaction(); @@ -967,8 +955,8 @@ hibernate.close(); getParentContext().removeChildContext(this); } else { - if (hibernateFactory != null) { - hibernateFactory.close(); + if (entityManagerFactory != null) { + entityManagerFactory.close(); closed = true; TopiaContextFactory.removeContext(this); log.debug("TopiaContext removed"); @@ -981,9 +969,9 @@ */ @Override protected void finalize() throws Throwable { - if (hibernateFactory != null) { + if (entityManagerFactory != null) { closeContext(); - hibernateFactory.close(); + entityManagerFactory.close(); closed = true; log.debug("TopiaContext finalized"); } @@ -997,7 +985,7 @@ @Override public void executeSQL(String sqlScript) throws TopiaException { try { - Query nativeQuery = getHibernate().createNativeQuery(sqlScript); + Query nativeQuery = getEntityManager().createNativeQuery(sqlScript); nativeQuery.executeUpdate(); } catch (PersistenceException e) { throw new TopiaException("Could not execute sql code", e); @@ -1042,7 +1030,7 @@ "find")); try { - Query query = getHibernate().createQuery(hql); + Query query = getEntityManager().createQuery(hql); for (int j = 0; j < args.length; j += 2) { String name = (String) args[j]; Object value = args[j + 1]; @@ -1074,7 +1062,7 @@ "find")); try { - Query query = getHibernate().createQuery(hql); + Query query = getEntityManager().createQuery(hql); for (int j = 0; j < args.length; j += 2) { String name = (String) args[j]; Object value = args[j + 1]; @@ -1113,7 +1101,7 @@ "find")); try { - Query query = getHibernate().createQuery(hql); + Query query = getEntityManager().createQuery(hql); for (int j = 0; j < args.length; j += 2) { query.setParameter((String) args[j], args[j + 1]); } @@ -1156,7 +1144,7 @@ // } // // if (doc != null) { -// Session sessionDom4j = getHibernate().getSession(EntityMode.DOM4J); +// Session sessionDom4j = getEntityManager().getSession(EntityMode.DOM4J); // Element rootElement = doc.getRootElement(); // Iterator<?> it = rootElement.elementIterator(); // while (it.hasNext()) { @@ -1186,7 +1174,7 @@ // // // performs queries // try { -// Session sessionDom4j = getHibernate().getSession(EntityMode.DOM4J); +// Session sessionDom4j = getEntityManager().getSession(EntityMode.DOM4J); // // Document doc = DocumentFactory.getInstance().createDocument(); // Element rootElement = doc.addElement("topiaExport"); @@ -1340,7 +1328,7 @@ options += " COMPRESSION GZIP"; } - Query query = getHibernate().createNativeQuery( + Query query = getEntityManager().createNativeQuery( "SCRIPT TO '" + file.getAbsolutePath() + "'" + options); query.getResultList(); @@ -1387,7 +1375,7 @@ in.close(); } - Query query = getHibernate().createNativeQuery( + Query query = getEntityManager().createNativeQuery( "RUNSCRIPT FROM '" + file.getAbsolutePath() + "'" + options); query.executeUpdate(); @@ -1416,7 +1404,7 @@ if (dropDatabase) { sql += " DELETE FILES"; } - Query query = tx.getHibernate().createNativeQuery(sql); + Query query = tx.getEntityManager().createNativeQuery(sql); query.executeUpdate(); tx.closeContext(); root.finalize(); @@ -1568,8 +1556,8 @@ // si entityAndcondition est vide alors il faut le remplir // avec toutes les entités du mapping (class, null) if (entityAndCondition.length == 0) { -// Map<?,?> classMetadata = getHibernateFactory().getAllClassMetadata(); - Set<EntityType<?>> classMetadata = getHibernateFactory().getMetamodel().getEntities(); +// Map<?,?> classMetadata = getEntityManagerFactory().getAllClassMetadata(); + Set<EntityType<?>> classMetadata = getEntityManagerFactory().getMetamodel().getEntities(); entityAndCondition = new Object[classMetadata.size() * 2]; int i = 0; for (EntityType entityType : classMetadata) { @@ -1623,8 +1611,8 @@ // // dettach entity to source session, to make possible copy of // // collection without a hibernate exception (list opened in // // two session...) -// getHibernate().detach(entity); -// dstContextImpl.getHibernate().replicate(entity, +// getEntityManager().detach(entity); +// dstContextImpl.getEntityManager().replicate(entity, // ReplicationMode.EXCEPTION); // } Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImplementor.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImplementor.java 2012-05-09 16:33:14 UTC (rev 2457) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImplementor.java 2012-05-09 16:50:54 UTC (rev 2458) @@ -67,26 +67,23 @@ Properties getConfig(); /** - * @return Returns the hibernate. + * @return Returns the EntityManager. * @throws TopiaException si aucune transaction n'est ouverte */ - EntityManager getHibernate() throws TopiaException; + EntityManager getEntityManager() throws TopiaException; /** - * @return Returns the hibernateFactory. + * @return Returns the EntityManagerFactory. * @throws TopiaNotFoundException */ - EntityManagerFactory getHibernateFactory() throws TopiaNotFoundException; + EntityManagerFactory getEntityManagerFactory() throws TopiaNotFoundException; -// /** -// * @return Returns the hibernate configuration -// * @throws TopiaNotFoundException -// */ -// Configuration getHibernateConfiguration() -// throws TopiaNotFoundException; + /** + * @return Returns the JPA configuration + * @throws TopiaNotFoundException + */ + Map<String, Object> getJPAConfiguration() throws TopiaNotFoundException; - Map getJPAConfiguration() throws TopiaNotFoundException; - /** * Tells to the context if it has to use a flush mode before each query. * @@ -97,6 +94,7 @@ * @since 2.5 */ void setUseFlushMode(boolean useFlushMode); + /** * Detect if the table is created on storage for a given persistant class. * Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFiresSupport.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFiresSupport.java 2012-05-09 16:33:14 UTC (rev 2457) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFiresSupport.java 2012-05-09 16:50:54 UTC (rev 2458) @@ -580,7 +580,7 @@ // ArrayList<TopiaContextImplementor> children = new ArrayList(parent.getChildContext()); // for (TopiaContextImplementor context : children) { try { - if (context.getHibernate() == hibernate) { + if (context.getEntityManager() == hibernate) { result = context; } else { // TODO: poussin 20090706 on pourrait ameliorer en ne faisant pas un parcours recursif, en utilisant la liste children (sans doute a transformer en stack) Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaPersistenceProvider.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaPersistenceProvider.java 2012-05-09 16:33:14 UTC (rev 2457) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaPersistenceProvider.java 2012-05-09 16:50:54 UTC (rev 2458) @@ -9,6 +9,7 @@ import java.io.InputStream; import java.util.ArrayList; import java.util.Collection; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -19,41 +20,35 @@ */ public abstract class TopiaPersistenceProvider implements PersistenceProvider { - public abstract EntityManagerFactory configureSpecific(String emName, Map map, Set<Class<?>> entities); + public abstract EntityManagerFactory configureSpecific(String emName, Map<String, Object> map, Set<Class<?>> entities); @Override public EntityManagerFactory createEntityManagerFactory(String emName, Map map) { - System.out.println("createEntityManagerFactory " + emName); EntityManagerFactory result = null; if ("topia".equals(emName)) { // Use PersistenceProvider of the underlying JPA library + Map<String, Object> properties = (Map<String, Object>)map; - map.put("javax.persistence.jdbc.driver", "org.h2.Driver"); - map.put("javax.persistence.jdbc.url", "jdbc:h2:file:target/surefire-workdir/h2data"); - map.put("javax.persistence.jdbc.user", "sa"); - map.put("javax.persistence.jdbc.password", ""); - Set<Class<?>> entityClasses = (Set<Class<?>>) map.get("topia.entities"); if (entityClasses == null) { throw new TopiaRuntimeException("topia.entities list must be provided"); } - result = configureSpecific(emName, map, entityClasses); + result = configureSpecific(emName, properties, entityClasses); } return result; } @Override public EntityManagerFactory createContainerEntityManagerFactory(PersistenceUnitInfo info, Map map) { - System.out.println("createContainerEntityManagerFactory " + info); - return null; + throw new UnsupportedOperationException("Not yet implemented : TopiaPersistenceProvider#createContainerEntityManagerFactory"); } @Override public ProviderUtil getProviderUtil() { - System.out.println("getProviderUtil"); - return null; + throw new UnsupportedOperationException("Not yet implemented : TopiaPersistenceProvider#getProviderUtil"); } + } Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaSQLQuery.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaSQLQuery.java 2012-05-09 16:33:14 UTC (rev 2457) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaSQLQuery.java 2012-05-09 16:50:54 UTC (rev 2458) @@ -75,7 +75,7 @@ public O findSingleResult(TopiaContextImplementor tx) throws TopiaException { final List<O> result = new ArrayList<O>(); -// tx.getHibernate().doWork(new Work() { +// tx.getEntityManager().doWork(new Work() { // // @Override // public void execute(Connection connection) throws SQLException { @@ -107,7 +107,7 @@ public List<O> findMultipleResult(TopiaContextImplementor tx) throws TopiaException { final List<O> result = new ArrayList<O>(); -// tx.getHibernate().doWork(new Work() { +// tx.getEntityManager().doWork(new Work() { // // @Override // public void execute(Connection connection) throws SQLException { Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDAOTransformer.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDAOTransformer.java 2012-05-09 16:33:14 UTC (rev 2457) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDAOTransformer.java 2012-05-09 16:50:54 UTC (rev 2458) @@ -611,7 +611,7 @@ body.append("" /*{ { - List<<%=attrType%>> list = getContext().getHibernate().createNativeQuery( + List<<%=attrType%>> list = getContext().getEntityManager().createNativeQuery( "SELECT main.topiaid " + "from <%=attrClassifierDBName%> main, <%=attrJoinTableName%> secondary " + "where main.topiaid=secondary.<%=attrDBName%>" + Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java 2012-05-09 16:33:14 UTC (rev 2457) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java 2012-05-09 16:50:54 UTC (rev 2458) @@ -559,7 +559,7 @@ * @throws TopiaException if any pb */ EntityManager getSession() throws TopiaException { - return getContext().getHibernate(); + return getContext().getEntityManager(); } /** @@ -570,7 +570,7 @@ * @throws TopiaException if any pb */ EntityType<E> getClassMetadata() throws TopiaException { - Metamodel metamodel = getContext().getHibernateFactory() + Metamodel metamodel = getContext().getEntityManagerFactory() .getMetamodel(); EntityType<E> meta = metamodel.entity(getEntityClass()); // TODO AThimel 07/05/2012 Maybe there is no need to call this ? Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/DBMapping.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/DBMapping.java 2012-05-09 16:33:14 UTC (rev 2457) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/util/DBMapping.java 2012-05-09 16:50:54 UTC (rev 2458) @@ -39,9 +39,6 @@ import java.io.IOException; import java.io.InputStream; import java.math.BigInteger; -import java.sql.Connection; -import java.sql.SQLException; -import java.sql.Statement; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; @@ -331,7 +328,7 @@ BigInteger size = defaultSize; if (ctxt != null) { try { - Query query = ((TopiaContextImpl) ctxt).getHibernate().createNativeQuery(sql); + Query query = ((TopiaContextImpl) ctxt).getEntityManager().createNativeQuery(sql); size = (BigInteger) query.getResultList().get(0); // } catch (SQLGrammarException e) { } catch (Exception e) { Modified: trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/persistence/hibernate/TopiaHibernatePersistenceProvider.java =================================================================== --- trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/persistence/hibernate/TopiaHibernatePersistenceProvider.java 2012-05-09 16:33:14 UTC (rev 2457) +++ trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/persistence/hibernate/TopiaHibernatePersistenceProvider.java 2012-05-09 16:50:54 UTC (rev 2458) @@ -8,6 +8,7 @@ import javax.persistence.EntityManagerFactory; import java.io.InputStream; import java.util.ArrayList; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -19,39 +20,18 @@ public class TopiaHibernatePersistenceProvider extends TopiaPersistenceProvider { @Override - public EntityManagerFactory configureSpecific(String entityManagerName, Map map, Set<Class<?>> entities) { + public EntityManagerFactory configureSpecific(String entityManagerName, Map<String, Object> properties, Set<Class<?>> entities) { - map.put("hibernate.connection.driver", "org.h2.Driver"); - map.put("hibernate.connection.url", "jdbc:h2:file:target/surefire-workdir/h2data"); - map.put("hibernate.connection.user", "sa"); - map.put("hibernate.connection.password", ""); + Map<String, Object> hibernateProperties = new HashMap<String, Object>(properties); + // On convertit tout ce qui est en topia.connection.* vers hibernate.connection.* + for (String key : properties.keySet()) { + if (key.startsWith("topia.connection.")) { + Object value = properties.get(key); + String hibernateKey = "hibernate." + key.substring(6); + hibernateProperties.put(hibernateKey, value); + } + } - map.put("hibernate.dialect", "org.hibernate.dialect.H2Dialect"); - map.put("hibernate.hbm2ddl.auto", "create-drop"); - map.put("hibernate.show_sql", "false"); - -// map.put("hibernate.connection.provider_class", "org.nuiton.topia.framework.TopiaConnectionProviderHardCoded"); -// Set<Class<?>> entities = new HashSet<Class<?>>(); -// entities.add(PersonImpl.class); -// entities.add(PetImpl.class); -// entities.add(RaceImpl.class); -// entities.add(NaturalizedEntityImpl.class); -// entities.add(CompanyImpl.class); -// entities.add(EmployeImpl.class); -// entities.add(PersonneImpl.class); -// entities.add(DepartmentImpl.class); -// entities.add(BillImpl.class); -// entities.add(ProductImpl.class); -// entities.add(StoreImpl.class); -// entities.add(Contact2Impl.class); -// entities.add(Party2Impl.class); -// entities.add(Telephone2Impl.class); -// entities.add(AddressImpl.class); -// entities.add(ExtraDAOEntityImpl.class); -// entities.add(GeneralizedNaturalizedEntityImpl.class); -// entities.add(QueriedEntityImpl.class); -// entities.add(TypeImpl.class); - List<String> entitiesNames = new ArrayList<String>(); List<NamedInputStream> entitiesHbmFiles = new ArrayList<NamedInputStream>(); @@ -67,7 +47,6 @@ entitiesHbmFiles.add(entityHbmNIS); } - Ejb3Configuration cfg = new Ejb3Configuration(); PersistenceMetadata metadata = new PersistenceMetadata(); metadata.setName(entityManagerName); @@ -75,7 +54,7 @@ metadata.setClasses(entitiesNames); metadata.setHbmfiles(entitiesHbmFiles); - Ejb3Configuration configured = cfg.configure(metadata, map); + Ejb3Configuration configured = cfg.configure(metadata, hibernateProperties); EntityManagerFactory result = null; if (configured != null) { result = configured.buildEntityManagerFactory(); Modified: trunk/topia-persistence-tck/src/main/java/org/nuiton/topia/TopiaContextFactoryTest.java =================================================================== --- trunk/topia-persistence-tck/src/main/java/org/nuiton/topia/TopiaContextFactoryTest.java 2012-05-09 16:33:14 UTC (rev 2457) +++ trunk/topia-persistence-tck/src/main/java/org/nuiton/topia/TopiaContextFactoryTest.java 2012-05-09 16:50:54 UTC (rev 2458) @@ -159,7 +159,7 @@ log.info("test5a : reinstantiate new TopiaContext after one is closed."); // TEST // Strange behavior the closed flag of context stay true if - // hibernateFactory is not loaded from real properties + // entityManagerFactory is not loaded from real properties // test1.closeContext(); // Assert.assertTrue(test1.isClosed()); Modified: trunk/topia-persistence-tck/src/main/resources/TopiaContextImpl.properties =================================================================== --- trunk/topia-persistence-tck/src/main/resources/TopiaContextImpl.properties 2012-05-09 16:33:14 UTC (rev 2457) +++ trunk/topia-persistence-tck/src/main/resources/TopiaContextImpl.properties 2012-05-09 16:50:54 UTC (rev 2458) @@ -27,8 +27,9 @@ hibernate.show_sql=false hibernate.dialect=org.hibernate.dialect.H2Dialect -hibernate.connection.username=sa -hibernate.connection.password= -hibernate.connection.driver_class=org.h2.Driver + +topia.connection.username=sa +topia.connection.password= +topia.connection.driver_class=org.h2.Driver # tchemit 2010-11-28 : comment this line, each test must define his own db path #hibernate.connection.url=jdbc:h2:file:target/surefire-workdir/h2data \ No newline at end of file Modified: trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/AbstractTopiaMigrationCallback.java =================================================================== --- trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/AbstractTopiaMigrationCallback.java 2012-05-09 16:33:14 UTC (rev 2457) +++ trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/AbstractTopiaMigrationCallback.java 2012-05-09 16:50:54 UTC (rev 2458) @@ -183,7 +183,7 @@ "--------------------------------------------------------------------------------\n" ); } - tx.getHibernate().doWork(new Work() { + tx.getEntityManager().doWork(new Work() { @Override public void execute(Connection connection) throws SQLException { Modified: trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/mappings/TMSVersionDAO.java =================================================================== --- trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/mappings/TMSVersionDAO.java 2012-05-09 16:33:14 UTC (rev 2457) +++ trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/mappings/TMSVersionDAO.java 2012-05-09 16:50:54 UTC (rev 2458) @@ -64,7 +64,7 @@ public static TMSVersion get(TopiaContext tx) throws TopiaException { try { - Session session = ((TopiaContextImplementor) tx).getHibernate(); + Session session = ((TopiaContextImplementor) tx).getEntityManager(); Criteria criteria = session.createCriteria(TMSVersion.class); List<?> list = criteria.list(); TMSVersion result = list.isEmpty() ? null : (TMSVersion) list.get(0); @@ -91,7 +91,7 @@ public static TMSVersion create(TopiaContext tx, String version) throws TopiaException { try { - Session session = ((TopiaContextImplementor) tx).getHibernate(); + Session session = ((TopiaContextImplementor) tx).getEntityManager(); TMSVersion result = TMSVersion.valueOf(version); // save entity @@ -104,7 +104,7 @@ public static void update(TopiaContext tx, TMSVersion version) throws TopiaException { try { - Session session = ((TopiaContextImplementor) tx).getHibernate(); + Session session = ((TopiaContextImplementor) tx).getEntityManager(); session.saveOrUpdate(version); tx.commitTransaction(); } catch (HibernateException e) { @@ -114,7 +114,7 @@ public static void deleteAll(TopiaContext tx) throws TopiaException { try { - Session session = ((TopiaContextImplementor) tx).getHibernate(); + Session session = ((TopiaContextImplementor) tx).getEntityManager(); Criteria criteria = session.createCriteria(TMSVersion.class); List<?> list = criteria.list(); for (Object o : list) { @@ -143,7 +143,7 @@ String schemaName = TopiaUtil.getSchemaName(hibernateConfiguration); GetVersionWork work = new GetVersionWork(schemaName, tableName); - txImpl.getHibernate().doWork(work); + txImpl.getEntityManager().doWork(work); Version v = work.getVersion(); return v; } catch (TopiaException e) { Modified: trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/Duplicate.java =================================================================== --- trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/Duplicate.java 2012-05-09 16:33:14 UTC (rev 2457) +++ trunk/topia-service-replication/src/main/java/org/nuiton/topia/replication/operation/Duplicate.java 2012-05-09 16:50:54 UTC (rev 2458) @@ -71,7 +71,7 @@ //FIXME tchemit-2011-06-03 : while using hibernate 3.5.6, while duplicating entities we can have some associations in double sessions //FIXME This hack works but it should be better to resolve the bug :( perharps this is not possible //FIXME since we can not have a fresh empty hibernate session... - srcCtxt.getHibernate().clear(); + srcCtxt.getEntityManager().clear(); // replication des donnees vers la destination srcCtxt.replicateEntities(dstCtxt, entities); Modified: trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/TaasService.java =================================================================== --- trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/TaasService.java 2012-05-09 16:33:14 UTC (rev 2457) +++ trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/TaasService.java 2012-05-09 16:50:54 UTC (rev 2458) @@ -200,7 +200,7 @@ * @param context context topia en cours */ private void initSecurity(TopiaContext context) { - List<Class<?>> entitiesClasses = rootContext.getPersistenceClasses(); + Set<Class<?>> entitiesClasses = rootContext.getPersistenceClasses(); for (Class<?> clazz : entitiesClasses) { context.addTopiaEntityVetoable((Class) clazz, accessEntity); }
participants (1)
-
athimel@users.nuiton.org