Author: bpoussin Date: 2012-03-05 12:46:38 +0100 (Mon, 05 Mar 2012) New Revision: 1440 Url: http://nuiton.org/repositories/revision/wikitty/1440 Log: toutes les modifications sur le copy on write doivent cloner le target avant de les faire donc ajout pour: - add/remove listener - setDeleteDate Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyCopyOnWrite.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyCopyOnWrite.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyCopyOnWrite.java 2012-03-05 01:35:54 UTC (rev 1439) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyCopyOnWrite.java 2012-03-05 11:46:38 UTC (rev 1440) @@ -31,6 +31,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -144,23 +145,27 @@ @Override public void addPropertyChangeListener(PropertyChangeListener listener) { + substituteTargetWithCopy(); target.addPropertyChangeListener(listener); } @Override public void removePropertyChangeListener(PropertyChangeListener listener) { + substituteTargetWithCopy(); target.removePropertyChangeListener(listener); } @Override public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { + substituteTargetWithCopy(); target.addPropertyChangeListener(propertyName, listener); } @Override public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { + substituteTargetWithCopy(); target.removePropertyChangeListener(propertyName, listener); } @@ -181,7 +186,10 @@ @Override public void setDeleteDate(Date delete) { - target.setDeleteDate(delete); + if (!ObjectUtils.equals(delete, getDeleteDate())) { + substituteTargetWithCopy(); + target.setDeleteDate(delete); + } } @Override