Author: sletellier Date: 2009-09-24 14:55:10 +0200 (Thu, 24 Sep 2009) New Revision: 1645 Modified: branches/2.0.28.1/src/main/java/org/codelutin/topia/framework/TopiaContextImpl.java branches/2.0.28.1/src/main/java/org/codelutin/topia/framework/TopiaFiresSupport.java branches/2.0.28.1/src/main/java/org/codelutin/topia/generator/EntityHibernateMappingGenerator.java Log: Fix concurent acces error Modified: branches/2.0.28.1/src/main/java/org/codelutin/topia/framework/TopiaContextImpl.java =================================================================== --- branches/2.0.28.1/src/main/java/org/codelutin/topia/framework/TopiaContextImpl.java 2009-09-15 07:40:33 UTC (rev 1644) +++ branches/2.0.28.1/src/main/java/org/codelutin/topia/framework/TopiaContextImpl.java 2009-09-24 12:55:10 UTC (rev 1645) @@ -54,6 +54,7 @@ import java.util.zip.GZIPInputStream; import org.apache.commons.collections.set.MapBackedSet; +import org.apache.commons.collections.set.SynchronizedSet; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.codelutin.topia.TopiaContext; @@ -175,7 +176,9 @@ * Set des sous context creer avec un beginTransaction et donc sur lequel * nous sommes listener */ - protected Set<TopiaContextImplementor> childContext = MapBackedSet.decorate(new WeakHashMap<TopiaContextImplementor, Object>()); +// by sletellier 24/09/09 : Fix concurent acces error +// protected Set<TopiaContextImplementor> childContext = MapBackedSet.decorate(new WeakHashMap<TopiaContextImplementor, Object>()); + protected Set<TopiaContextImplementor> childContext = SynchronizedSet.decorate(MapBackedSet.decorate(new WeakHashMap<TopiaContextImplementor, Object>()));; /** key: service name; value: service instance */ protected Map<String, TopiaService> services = null; Modified: branches/2.0.28.1/src/main/java/org/codelutin/topia/framework/TopiaFiresSupport.java =================================================================== --- branches/2.0.28.1/src/main/java/org/codelutin/topia/framework/TopiaFiresSupport.java 2009-09-15 07:40:33 UTC (rev 1644) +++ branches/2.0.28.1/src/main/java/org/codelutin/topia/framework/TopiaFiresSupport.java 2009-09-24 12:55:10 UTC (rev 1645) @@ -541,8 +541,14 @@ */ protected TopiaContextImplementor getContext( TopiaContextImplementor parent, Session hibernate) { + TopiaContextImplementor result = null; - for (TopiaContextImplementor context : parent.getChildContext()) { + Set<TopiaContextImplementor> contextChilds = new HashSet(parent.getChildContext()); + for (TopiaContextImplementor context : contextChilds) { + +// by sletellier 24/09/09 : Fix concurent acces error +// TopiaContextImplementor result = null; +// for (TopiaContextImplementor context : parent.getChildContext()) { try { if (context.getHibernate() == hibernate) { result = context; Modified: branches/2.0.28.1/src/main/java/org/codelutin/topia/generator/EntityHibernateMappingGenerator.java =================================================================== --- branches/2.0.28.1/src/main/java/org/codelutin/topia/generator/EntityHibernateMappingGenerator.java 2009-09-15 07:40:33 UTC (rev 1644) +++ branches/2.0.28.1/src/main/java/org/codelutin/topia/generator/EntityHibernateMappingGenerator.java 2009-09-24 12:55:10 UTC (rev 1645) @@ -330,8 +330,9 @@ String lazy = "lazy=\""; if (attr.getTagValue("lazy") != null){ lazy += attr.getTagValue("lazy"); - } - else { + } else if (attr.getMinMultiplicity() == 0){ + lazy += "false"; + } else { lazy += "true"; } lazy += "\"";