Author: echatellier Date: 2015-01-27 17:41:11 +0000 (Tue, 27 Jan 2015) New Revision: 4179 Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4179 Log: fixes #6567: LazyInitializationException: could not initialize proxy - no Session in prescript Modified: branches/isis-fish-4.3.1.x/src/main/java/fr/ifremer/isisfish/IsisConfig.java branches/isis-fish-4.3.1.x/src/main/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java branches/isis-fish-4.3.1.x/src/main/java/fr/ifremer/isisfish/util/TopiaEntityConverter.java Modified: branches/isis-fish-4.3.1.x/src/main/java/fr/ifremer/isisfish/IsisConfig.java =================================================================== --- branches/isis-fish-4.3.1.x/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2015-01-26 09:05:44 UTC (rev 4178) +++ branches/isis-fish-4.3.1.x/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2015-01-27 17:41:11 UTC (rev 4179) @@ -128,7 +128,7 @@ * migration de donnees demande automatiquement un changement de version * d'application. */ - protected final static Version version = new Version(4, 3, 1, 1); + protected final static Version version = new Version(4, 3, 1, 2); protected final static Version majorVersion = new Version(version.getNumber(0)); protected final static Version databaseVersion = new Version( Modified: branches/isis-fish-4.3.1.x/src/main/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java =================================================================== --- branches/isis-fish-4.3.1.x/src/main/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java 2015-01-26 09:05:44 UTC (rev 4178) +++ branches/isis-fish-4.3.1.x/src/main/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java 2015-01-27 17:41:11 UTC (rev 4179) @@ -25,10 +25,9 @@ package fr.ifremer.isisfish.entities; -import static org.nuiton.i18n.I18n.t; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.hibernate.LazyInitializationException; import fr.ifremer.isisfish.types.Month; @@ -209,7 +208,15 @@ // return t("isisfish.populationGroup.toString", this.getPopulation(), // this.getId()); if (toStringCache == null) { - toStringCache = this.getPopulation() + " Group " + this.getId(); + try { + toStringCache = this.getPopulation() + " Group " + this.getId(); + } catch (LazyInitializationException e) { + // cette exception se produit quand le toString est appelé par exemple lors + // su lancement d'une population mais que l'entité d'origine a été rechargée + // depuis une précédente transation fermé (rechargement d'une simulation + // avec ses facteurs) + toStringCache = "Unknow Population Group " + this.getId(); + } } return toStringCache; } Modified: branches/isis-fish-4.3.1.x/src/main/java/fr/ifremer/isisfish/util/TopiaEntityConverter.java =================================================================== --- branches/isis-fish-4.3.1.x/src/main/java/fr/ifremer/isisfish/util/TopiaEntityConverter.java 2015-01-26 09:05:44 UTC (rev 4178) +++ branches/isis-fish-4.3.1.x/src/main/java/fr/ifremer/isisfish/util/TopiaEntityConverter.java 2015-01-27 17:41:11 UTC (rev 4179) @@ -68,7 +68,9 @@ @Override public Object convert(Class type, Object value) { Object result = null; - if (value instanceof TopiaEntity) { + if (value == null) { + result = null; + } else if (value instanceof TopiaEntity) { result = value; } else if (value instanceof String) { // after ':' is entity string representation @@ -84,21 +86,12 @@ TopiaEntity result = null; if (context != null) { try { - - // normalement, on ne devrait pas avoir à tester ca - // mais il arrive que dans le cas des prescripts, on soit deja dans une transaction - // see (#6531) - TopiaContextImpl contextImpl = (TopiaContextImpl)context; - if (contextImpl.getParentContext() != null) { - result = contextImpl.findByTopiaId(topiaId); - } else { - TopiaContext tx = context.beginTransaction(); - result = tx.findByTopiaId(topiaId); - // FIXME when after tx.closeContext we can continu to load - // object, call it here - tx.commitTransaction(); - tx.closeContext(); - } + TopiaContext tx = context.beginTransaction(); + result = tx.findByTopiaId(topiaId); + // FIXME when after tx.closeContext we can continu to load + // object, call it here + tx.commitTransaction(); + tx.closeContext(); } catch (TopiaException eee) { if (log.isWarnEnabled()) { log.warn("Can't find Entity from TopiaId " + topiaId, eee);