Index: topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java diff -u topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java:1.6 topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java:1.7 --- topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java:1.6 Fri Jan 13 18:37:50 2006 +++ topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java Mon Jan 16 19:05:40 2006 @@ -23,9 +23,9 @@ * * @author poussin * - * @version $Revision: 1.6 $ + * @version $Revision: 1.7 $ * - * Last update: $Date: 2006/01/13 18:37:50 $ by : $Author: thimel $ + * Last update: $Date: 2006/01/16 19:05:40 $ by : $Author: thimel $ */ package org.codelutin.topia.framework; @@ -228,7 +228,7 @@ public Session getHibernate() throws TopiaException { if (hibernate == null) { throw new TopiaException( - "No hibernate session available, you must start transaction with beginTransaction"); + "No hibernate session available, you must start a transaction with beginTransaction"); } return hibernate; } @@ -248,45 +248,45 @@ // Ajout du listeners pour les events TopiaHibernateEvent listener = new TopiaHibernateEvent(this); -// PreLoadEventListener[] preLoadEventListeners = cfg -// .getEventListeners().getPreLoadEventListeners(); -// preLoadEventListeners = ArrayUtil.concatElems( -// preLoadEventListeners, listener); -// PreUpdateEventListener[] preUpdateEventListeners = cfg -// .getEventListeners().getPreUpdateEventListeners(); -// preUpdateEventListeners = ArrayUtil.concatElems( -// preUpdateEventListeners, listener); -// PreDeleteEventListener[] preDeleteEventListeners = cfg -// .getEventListeners().getPreDeleteEventListeners(); -// preDeleteEventListeners = ArrayUtil.concatElems( -// preDeleteEventListeners, listener); -// -// PostLoadEventListener[] postLoadEventListeners = cfg -// .getEventListeners().getPostLoadEventListeners(); -// postLoadEventListeners = ArrayUtil.concatElems( -// postLoadEventListeners, listener); -// PostUpdateEventListener[] postUpdateEventListeners = cfg -// .getEventListeners().getPostUpdateEventListeners(); -// postUpdateEventListeners = ArrayUtil.concatElems( -// postUpdateEventListeners, listener); -// PostDeleteEventListener[] postDeleteEventListeners = cfg -// .getEventListeners().getPostDeleteEventListeners(); -// postDeleteEventListeners = ArrayUtil.concatElems( -// postDeleteEventListeners, listener); -// -// cfg.getEventListeners().setPreLoadEventListeners( -// preLoadEventListeners); -// cfg.getEventListeners().setPreUpdateEventListeners( -// preUpdateEventListeners); -// cfg.getEventListeners().setPreDeleteEventListeners( -// preDeleteEventListeners); -// -// cfg.getEventListeners().setPostLoadEventListeners( -// postLoadEventListeners); -// cfg.getEventListeners().setPostUpdateEventListeners( -// postUpdateEventListeners); -// cfg.getEventListeners().setPostDeleteEventListeners( -// postDeleteEventListeners); + PreLoadEventListener[] preLoadEventListeners = cfg + .getEventListeners().getPreLoadEventListeners(); + preLoadEventListeners = ArrayUtil.concatElems( + preLoadEventListeners, listener); + PreUpdateEventListener[] preUpdateEventListeners = cfg + .getEventListeners().getPreUpdateEventListeners(); + preUpdateEventListeners = ArrayUtil.concatElems( + preUpdateEventListeners, listener); + PreDeleteEventListener[] preDeleteEventListeners = cfg + .getEventListeners().getPreDeleteEventListeners(); + preDeleteEventListeners = ArrayUtil.concatElems( + preDeleteEventListeners, listener); + + PostLoadEventListener[] postLoadEventListeners = cfg + .getEventListeners().getPostLoadEventListeners(); + postLoadEventListeners = ArrayUtil.concatElems( + postLoadEventListeners, listener); + PostUpdateEventListener[] postUpdateEventListeners = cfg + .getEventListeners().getPostUpdateEventListeners(); + postUpdateEventListeners = ArrayUtil.concatElems( + postUpdateEventListeners, listener); + PostDeleteEventListener[] postDeleteEventListeners = cfg + .getEventListeners().getPostDeleteEventListeners(); + postDeleteEventListeners = ArrayUtil.concatElems( + postDeleteEventListeners, listener); + + cfg.getEventListeners().setPreLoadEventListeners( + preLoadEventListeners); + cfg.getEventListeners().setPreUpdateEventListeners( + preUpdateEventListeners); + cfg.getEventListeners().setPreDeleteEventListeners( + preDeleteEventListeners); + + cfg.getEventListeners().setPostLoadEventListeners( + postLoadEventListeners); + cfg.getEventListeners().setPostUpdateEventListeners( + postUpdateEventListeners); + cfg.getEventListeners().setPostDeleteEventListeners( + postDeleteEventListeners); // ajout des repertoires contenant les mappings hibernate String[] dirs = getConfig().getProperty( @@ -429,11 +429,11 @@ } public void addTransactionListener(TopiaTransactionListener l) { - this.vetoableListeners.add(l); + this.transactionListeners.add(l); } public void removeTransactionListener(TopiaTransactionListener l) { - this.vetoableListeners.remove(l); + this.transactionListeners.remove(l); } /* @@ -553,8 +553,13 @@ return result; } + /* (non-Javadoc) + * @see org.codelutin.topia.framework.TopiaContextImplementor#fireVetoableLoad(java.lang.Class, java.lang.Object) + */ public void fireVetoableLoad(Class entityClass, Object id) { - log.debug("fireVetoableLoad: " + id); + if (log.isDebugEnabled()) { + log.debug("fireVetoableLoad: " + id); + } try { TopiaVetoableEntityEvent event = new TopiaVetoableEntityEvent(this, entityClass, id); for(Iterator l=getVetoableListeners().iterator(); l.hasNext();) { @@ -568,8 +573,13 @@ } } + /* (non-Javadoc) + * @see org.codelutin.topia.framework.TopiaContextImplementor#fireVetoableCreate(java.lang.Class, java.lang.Object) + */ public void fireVetoableCreate(Class entityClass, Object id) { - log.debug("fireVetoableCreate: " + id); + if (log.isDebugEnabled()) { + log.debug("fireVetoableCreate: " + id); + } try { TopiaVetoableEntityEvent event = new TopiaVetoableEntityEvent(this, entityClass, id); for(Iterator l=getVetoableListeners().iterator(); l.hasNext();) { @@ -583,8 +593,13 @@ } } + /* (non-Javadoc) + * @see org.codelutin.topia.framework.TopiaContextImplementor#fireVetoableUpdate(java.lang.Class, java.lang.Object) + */ public void fireVetoableUpdate(Class entityClass, Object id) { - log.debug("fireVetoableUpdate: " + id); + if (log.isDebugEnabled()) { + log.debug("fireVetoableUpdate: " + id); + } try { TopiaVetoableEntityEvent event = new TopiaVetoableEntityEvent(this, entityClass, id); for(Iterator l=getVetoableListeners().iterator(); l.hasNext();) { @@ -598,8 +613,13 @@ } } + /* (non-Javadoc) + * @see org.codelutin.topia.framework.TopiaContextImplementor#fireVetoableDelete(java.lang.Class, java.lang.Object) + */ public void fireVetoableDelete(Class entityClass, Object id) { - log.debug("fireVetoableDelete: " + id); + if (log.isDebugEnabled()) { + log.debug("fireVetoableDelete: " + id); + } try { TopiaVetoableEntityEvent event = new TopiaVetoableEntityEvent(this, entityClass, id); for(Iterator l=getVetoableListeners().iterator(); l.hasNext();) { @@ -613,8 +633,13 @@ } } + /* (non-Javadoc) + * @see org.codelutin.topia.framework.TopiaContextImplementor#fireOnLoaded(java.lang.Class, java.lang.Object, java.lang.Object) + */ public void fireOnLoaded(Class entityClass, Object id, Object entity) { - log.debug("fireOnLoaded: " + entity); + if (log.isDebugEnabled()) { + log.debug("fireOnLoaded: " + entity); + } if (entity instanceof TopiaEntityAbstract) { ((TopiaEntityAbstract) entity).setTopiaContext(this); @@ -627,18 +652,18 @@ } } catch (Exception eee) { if (log.isWarnEnabled()) { - log.warn("Can't fire event loaded for entity: " + entity, eee); + log.error("Can't fire event loaded for entity: " + entity, eee); } } } - /* - * (non-Javadoc) - * - * @see org.codelutin.topia.framework.TopiaContextImplementor#fireOnCreated(java.lang.Object) + /* (non-Javadoc) + * @see org.codelutin.topia.framework.TopiaContextImplementor#fireOnCreated(java.lang.Class, java.lang.Object, java.lang.Object) */ public void fireOnCreated(Class entityClass, Object id, Object entity) { - log.debug("fireOnCreated: " + entity); + if (log.isDebugEnabled()) { + log.debug("fireOnCreated: " + entity); + } try { TopiaEntityEvent event = new TopiaEntityEvent(this, entity); transactionEvents.add(new TopiaTransactionEvent(this, entityClass, id)); @@ -652,13 +677,13 @@ } } - /* - * (non-Javadoc) - * - * @see org.codelutin.topia.framework.TopiaContextImplementor#fireOnUpdated(java.lang.Object) + /* (non-Javadoc) + * @see org.codelutin.topia.framework.TopiaContextImplementor#fireOnUpdated(java.lang.Class, java.lang.Object, java.lang.Object) */ public void fireOnUpdated(Class entityClass, Object id, Object entity) { - log.info("fireOnUpdated: " + entity); + if (log.isDebugEnabled()) { + log.debug("fireOnUpdated: " + entity); + } try { TopiaEntityEvent event = new TopiaEntityEvent(this, entity); transactionEvents.add(new TopiaTransactionEvent(this, entityClass, id)); @@ -672,13 +697,13 @@ } } - /* - * (non-Javadoc) - * - * @see org.codelutin.topia.framework.TopiaContextImplementor#fireOnDeleted(java.lang.Object) + /* (non-Javadoc) + * @see org.codelutin.topia.framework.TopiaContextImplementor#fireOnDeleted(java.lang.Class, java.lang.Object, java.lang.Object) */ public void fireOnDeleted(Class entityClass, Object id, Object entity) { - log.debug("fireOnDeleted: " + entity); + if (log.isDebugEnabled()) { + log.debug("fireOnDeleted: " + entity); + } try { TopiaEntityEvent event = new TopiaEntityEvent(this, entity); transactionEvents.add(new TopiaTransactionEvent(this, entityClass, id)); @@ -692,13 +717,13 @@ } } - /* - * (non-Javadoc) - * + /* (non-Javadoc) * @see org.codelutin.topia.framework.TopiaContextImplementor#fireOnCommited() */ public void fireOnCommited() { - log.info("onCommited"); + if (log.isInfoEnabled()) { + log.info("onCommited"); + } try { for(Iterator l=getTransactionListeners().iterator(); l.hasNext();) { l.next().commit(transactionEvents); @@ -712,20 +737,20 @@ } } - /* - * (non-Javadoc) - * + /* (non-Javadoc) * @see org.codelutin.topia.framework.TopiaContextImplementor#fireOnRollbacked() */ public void fireOnRollbacked() { - log.info("onRollbacked"); + if (log.isInfoEnabled()) { + log.info("onRollbacked"); + } try { for(Iterator l=getTransactionListeners().iterator(); l.hasNext();) { - l.next().commit(transactionEvents); + l.next().rollback(transactionEvents); } } catch (Exception eee) { if (log.isWarnEnabled()) { - log.warn("Can't fire event commit for entity", eee); + log.warn("Can't fire event rollback for entity", eee); } } finally { transactionEvents.clear(); @@ -803,12 +828,16 @@ */ protected TopiaContextImplementor getContext( TopiaContextImplementor parent, Session hibernate) { + TopiaContextImplementor result = null; for (TopiaContextImplementor context : parent.getChildContext()) { try { if (context.getHibernate() == hibernate) { - return context; + result = context; } else { - return getContext(context, hibernate); + result = getContext(context, hibernate); + } + if (result != null) { + break; } } catch (TopiaException eee) { if (log.isWarnEnabled()) { @@ -817,7 +846,7 @@ } } } - return null; + return result; } /*