r1279 - topia/trunk/topia-persistence/src/main/java/org/codelutin/topia/framework
Author: chatellier Date: 2008-12-17 11:01:34 +0000 (Wed, 17 Dec 2008) New Revision: 1279 Modified: topia/trunk/topia-persistence/src/main/java/org/codelutin/topia/framework/TopiaContextImpl.java Log: Add child context into child after hibernate initilialisation. Replace hibernate deprecated code. Replace some warningazed code. Modified: topia/trunk/topia-persistence/src/main/java/org/codelutin/topia/framework/TopiaContextImpl.java =================================================================== --- topia/trunk/topia-persistence/src/main/java/org/codelutin/topia/framework/TopiaContextImpl.java 2008-12-15 09:46:19 UTC (rev 1278) +++ topia/trunk/topia-persistence/src/main/java/org/codelutin/topia/framework/TopiaContextImpl.java 2008-12-17 11:01:34 UTC (rev 1279) @@ -41,7 +41,6 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.Date; import java.util.Enumeration; @@ -259,12 +258,14 @@ public Map<String, TopiaService> getServices() { TopiaContextImplementor parent = getParentContext(); + + Map<String, TopiaService> result = null; if (parent != null) { - return parent.getServices(); + result = parent.getServices(); } else { - return services; + result = services; } - + return result; } protected boolean serviceEnabled(String name) { @@ -533,12 +534,12 @@ TOPIA_PERSISTENCE_CLASSES, ""); for (TopiaService service : getAllServices()) { - Class[] persistenceClasses = service + Class<?>[] persistenceClasses = service .getPersistenceClasses(); // certains service n'ont pas de classe persistantes if (persistenceClasses != null) { - for (Class clazz : persistenceClasses) { + for (Class<?> clazz : persistenceClasses) { hibernateConfiguration.addClass(clazz); } } @@ -548,7 +549,7 @@ for (String classname : classes) { classname = classname.trim(); if (!"".equals(classname)) { - Class clazz; + Class<?> clazz; try { clazz = Class.forName(classname); } catch (ClassNotFoundException eee) { @@ -602,7 +603,7 @@ + " doute oublié d'ajouter son mapping"); } - TopiaDAO<E> result = (TopiaDAO<E>) daoCache.get(entityClass); + TopiaDAO<E> result = daoCache.get(entityClass); if (result == null) { // recherche du type de DAO a instancier pour cette entity String defaultDAOClassname = getConfig().getProperty( @@ -659,13 +660,12 @@ checkClosed("Ce contexte a ete ferme, impossible de commencer une transaction"); TopiaContextImpl result = new TopiaContextImpl(this); - addChildContext(result); SessionFactory factory = getHibernateFactory(); result.hibernate = factory.openSession(); // new TopiaInterceptor(result)); // on ne synchronise jamais les données avec la base tant que // l'utilisateur n'a pas fait de commit du context - result.hibernate.setFlushMode(FlushMode.NEVER); + result.hibernate.setFlushMode(FlushMode.MANUAL); // 20060926 poussin ajouter pour voir si ca regle les problemes de deadlock h2 // Conclusion, il faut bien ouvrir une transaction maintenant, sinon @@ -674,7 +674,12 @@ // de lock sur les tables. result.hibernate.beginTransaction(); + // 20081217 : add child AFTER hibernate session is opened + addChildContext(result); + + // fire event getFiresSupport().fireOnBeginTransaction(result); + return result; } @@ -739,7 +744,7 @@ // it's very important to change the session after rollback // otherwize there are many error during next Entity's modification hibernate = getHibernateFactory().openSession(); - hibernate.setFlushMode(FlushMode.NEVER); + hibernate.setFlushMode(FlushMode.MANUAL); hibernate.beginTransaction();
participants (1)
-
chatellier@users.labs.libre-entreprise.org