Index: topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java diff -u topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java:1.27 topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java:1.28 --- topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java:1.27 Mon Aug 28 11:42:36 2006 +++ topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java Mon Aug 28 14:37:18 2006 @@ -23,9 +23,9 @@ * * @author poussin * - * @version $Revision: 1.27 $ + * @version $Revision: 1.28 $ * - * Last update: $Date: 2006/08/28 11:42:36 $ by : $Author: bpoussin $ + * Last update: $Date: 2006/08/28 14:37:18 $ by : $Author: bpoussin $ */ package org.codelutin.topia.framework; @@ -971,6 +971,32 @@ throw new TopiaVetoException(eee); } } + + + + /* (non-Javadoc) + * @see org.codelutin.topia.framework.TopiaContextImplementor#fireOnPreLoad(java.lang.Class, java.lang.Object, java.lang.Object) + */ + public void fireOnPreLoaded(Class entityClass, Object id, Object entity) { + if (log.isDebugEnabled()) { + log.debug("fireOnPreLoad: " + entity); + } + + if (entity instanceof TopiaEntityAbstract) { + TopiaEntityAbstract entityAbstract = (TopiaEntityAbstract) entity; + //On ne rattache l'entité à un contexte que si elle n'en a pas + if (entityAbstract.getTopiaContext() == null) { + try { + entityAbstract.setTopiaContext(this); + } catch (TopiaException eee) { + if (log.isWarnEnabled()) { + log.warn("Impossible d'initialiser le TopiaContext" + + " sur cette entité : " + entityAbstract, eee); + } + } + } + } + } /* (non-Javadoc) * @see org.codelutin.topia.framework.TopiaContextImplementor#fireOnLoaded(java.lang.Class, java.lang.Object, java.lang.Object) @@ -1256,6 +1282,8 @@ if (!loadAuthorised) { throw new SecurityException("User is not authorised to load this entity : " + event.getId()); } + context.fireOnPreLoaded(event.getPersister().getMappedClass( + EntityMode.POJO), event.getId(), event.getEntity()); } } Index: topia2/src/java/org/codelutin/topia/framework/TopiaContextImplementor.java diff -u topia2/src/java/org/codelutin/topia/framework/TopiaContextImplementor.java:1.8 topia2/src/java/org/codelutin/topia/framework/TopiaContextImplementor.java:1.9 --- topia2/src/java/org/codelutin/topia/framework/TopiaContextImplementor.java:1.8 Mon Jul 3 10:08:31 2006 +++ topia2/src/java/org/codelutin/topia/framework/TopiaContextImplementor.java Mon Aug 28 14:37:18 2006 @@ -23,10 +23,10 @@ * Created: 3 janv. 2006 21:27:24 * * @author poussin - * @version $Revision: 1.8 $ + * @version $Revision: 1.9 $ * - * Last update: $Date: 2006/07/03 10:08:31 $ - * by : $Author: thimel $ + * Last update: $Date: 2006/08/28 14:37:18 $ + * by : $Author: bpoussin $ */ package org.codelutin.topia.framework; @@ -159,6 +159,12 @@ public void fireVetoableDelete(Class entityClass, Object id); /** + * Appeler avant le chargement d'une entity (remise en place des proprietes) + * @param entity l'entite qui vient d'etre chargée + */ + public void fireOnPreLoaded(Class entityClass, Object id, Object entity); + + /** * Appeler apres le chargement d'une entity * @param entity l'entite qui vient d'etre chargée */