You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ml...@apache.org on 2006/05/03 10:59:08 UTC
svn commit: r399213 - in
/incubator/harmony/enhanced/classlib/trunk/modules/beans/src:
main/java/java/beans/PropertyChangeSupport.java
test/java/org/apache/harmony/tests/java/beans/PropertyChangeSupportTest.java
Author: mloenko
Date: Wed May 3 01:58:58 2006
New Revision: 399213
URL: http://svn.apache.org/viewcvs?rev=399213&view=rev
Log:
fixes for HARMONY-320
PropertyChangeSupport.removePropertyChangeListener(PropertyChangeListener) doesn't remove a specific property listener
Modified:
incubator/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/PropertyChangeSupport.java
incubator/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/tests/java/beans/PropertyChangeSupportTest.java
Modified: incubator/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/PropertyChangeSupport.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/PropertyChangeSupport.java?rev=399213&r1=399212&r2=399213&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/PropertyChangeSupport.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/PropertyChangeSupport.java Wed May 3 01:58:58 2006
@@ -161,14 +161,15 @@
public synchronized void removePropertyChangeListener(
PropertyChangeListener listener) {
if (listener != null) {
- Iterator iterator = allPropertiesChangeListeners.iterator();
- while (iterator.hasNext()) {
- PropertyChangeListener pcl =
- (PropertyChangeListener) iterator.next();
- if (pcl == listener) {
- iterator.remove();
- break;
- }
+ if (listener instanceof PropertyChangeListenerProxy) {
+ String name = ((PropertyChangeListenerProxy) listener)
+ .getPropertyName();
+ PropertyChangeListener lst = (PropertyChangeListener) ((PropertyChangeListenerProxy) listener)
+ .getListener();
+
+ removePropertyChangeListener(name, lst);
+ } else {
+ allPropertiesChangeListeners.remove(listener);
}
}
}
Modified: incubator/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/tests/java/beans/PropertyChangeSupportTest.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/tests/java/beans/PropertyChangeSupportTest.java?rev=399213&r1=399212&r2=399213&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/tests/java/beans/PropertyChangeSupportTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/tests/java/beans/PropertyChangeSupportTest.java Wed May 3 01:58:58 2006
@@ -100,6 +100,28 @@
/**
+ * @tests java.beans.PropertyChangeSupport#removePropertyChangeListener(
+ * java.lang.String, java.beans.PropertyChangeListener)
+ */
+ public void testRemovePropertyChangeListener2() {
+ // Regerssion for HARMONY-320
+ PropertyChangeListener listener = new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent arg0) {}
+ };
+
+ PropertyChangeSupport pcs = new PropertyChangeSupport(this);
+
+ pcs.addPropertyChangeListener("property", listener);
+ PropertyChangeListener[] listeners = pcs.getPropertyChangeListeners();
+ assertEquals(1, listeners.length);
+
+ pcs.removePropertyChangeListener(listeners[0]);
+ listeners = pcs.getPropertyChangeListeners();
+ assertEquals(0, listeners.length);
+ }
+
+
+ /**
* The test checks the serialization for listeners supporting serialization
*/
public void testSerializableListener() {