Index: topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java diff -u topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java:1.43 topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java:1.44 --- topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java:1.43 Fri Nov 10 17:46:40 2006 +++ topia2/src/java/org/codelutin/topia/framework/TopiaContextImpl.java Tue Nov 14 22:37:02 2006 @@ -23,13 +23,14 @@ * * @author poussin * - * @version $Revision: 1.43 $ + * @version $Revision: 1.44 $ * - * Last update: $Date: 2006/11/10 17:46:40 $ by : $Author: ruchaud $ + * Last update: $Date: 2006/11/14 22:37:02 $ by : $Author: bpoussin $ */ package org.codelutin.topia.framework; +import java.beans.PropertyChangeListener; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; @@ -999,6 +1000,10 @@ getFiresSupport().addTopiaTransactionVetoable(vetoable); } + public void addPropertyChangeListener(PropertyChangeListener listener) { + getFiresSupport().addPropertyChangeListener(listener); + } + /* Removers */ public void removeTopiaEntityListener(TopiaEntityListener listener) { getFiresSupport().removeTopiaEntityListener(TopiaEntity.class, listener); @@ -1023,5 +1028,9 @@ public void removeTopiaTransactionVetoable(TopiaTransactionVetoable vetoable) { getFiresSupport().removeTopiaTransactionVetoable(vetoable); } + + public void removePropertyChangeListener(PropertyChangeListener listener) { + getFiresSupport().removePropertyChangeListener(listener); + } } //TopiaContextImpl Index: topia2/src/java/org/codelutin/topia/framework/TopiaFiresSupport.java diff -u topia2/src/java/org/codelutin/topia/framework/TopiaFiresSupport.java:1.3 topia2/src/java/org/codelutin/topia/framework/TopiaFiresSupport.java:1.4 --- topia2/src/java/org/codelutin/topia/framework/TopiaFiresSupport.java:1.3 Tue Nov 14 18:17:15 2006 +++ topia2/src/java/org/codelutin/topia/framework/TopiaFiresSupport.java Tue Nov 14 22:37:02 2006 @@ -23,8 +23,10 @@ import java.beans.PropertyChangeSupport; import java.beans.VetoableChangeSupport; import java.util.ArrayList; +import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -69,7 +71,7 @@ static private Log log = LogFactory.getLog(TopiaFiresSupport.class); static Object NO_CHANGE = new Object(); - protected List listenerChange = new ArrayList(); + protected Set propertyChangeListeners = new HashSet(); @@ -328,9 +330,9 @@ log.debug("fireOnPostWrite"); } try { - if (listenerChange.size() > 0) { + if (propertyChangeListeners.size() > 0) { PropertyChangeEvent e = new PropertyChangeEvent(entity, propertyName, oldValue, newValue); - for (PropertyChangeListener l : listenerChange) { + for (PropertyChangeListener l : propertyChangeListeners) { l.propertyChange(e); } } @@ -538,6 +540,10 @@ transactionVetoables.add(vetoable); } + public void addPropertyChangeListener(PropertyChangeListener listener) { + propertyChangeListeners.add(listener); + } + /* Removers */ public void removeTopiaEntityListener(TopiaEntityListener listener) { removeTopiaEntityListener(TopiaEntity.class, listener); @@ -563,4 +569,8 @@ transactionVetoables.remove(vetoable); } + public void removePropertyChangeListener(PropertyChangeListener listener) { + propertyChangeListeners.remove(listener); + } + }