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/02 08:01:42 UTC

svn commit: r398819 - 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: Mon May  1 23:01:36 2006
New Revision: 398819

URL: http://svn.apache.org/viewcvs?rev=398819&view=rev
Log:
fixes for HARMONY-386
java.beans.PropertyChangeSupport.removePropertyChangeListener does not remove a PropertyChangeListener.

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=398819&r1=398818&r2=398819&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 Mon May  1 23:01:36 2006
@@ -179,7 +179,16 @@
     public synchronized void addPropertyChangeListener(
             PropertyChangeListener listener) {
         if (listener != null) {
-            allPropertiesChangeListeners.add(listener);
+            if (listener instanceof PropertyChangeListenerProxy) {
+                String name = ((PropertyChangeListenerProxy) listener)
+                        .getPropertyName();
+                PropertyChangeListener lst = (PropertyChangeListener) ((PropertyChangeListenerProxy) listener)
+                        .getListener();
+                addPropertyChangeListener(name, lst);
+            } else {
+                allPropertiesChangeListeners.add(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=398819&r1=398818&r2=398819&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 Mon May  1 23:01:36 2006
@@ -20,7 +20,9 @@
  */
 package org.apache.harmony.tests.java.beans;
 
+import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeListenerProxy;
 import java.beans.PropertyChangeSupport;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
@@ -72,6 +74,31 @@
         }
     }
 
+    /**
+     * @tests java.beans.PropertyChangeSupport#removePropertyChangeListener(
+     *        java.lang.String, java.beans.PropertyChangeListener)
+     */
+    public void testRemovePropertyChangeListener() {
+        // Regerssion for HARMONY-386
+        PropertyChangeSupport prop = new PropertyChangeSupport(new Object());
+
+        PropertyChangeListener lis1 = new PropertyChangeListener() {
+            public void propertyChange(PropertyChangeEvent event) {}
+        };
+
+        PropertyChangeListener lis2 = new PropertyChangeListenerProxy("name",
+                lis1);
+
+        assertEquals(0, prop.getPropertyChangeListeners().length);
+
+        prop.addPropertyChangeListener(lis2);
+        assertEquals(1, prop.getPropertyChangeListeners().length);
+
+        prop.removePropertyChangeListener("name", lis1);
+        assertEquals(0, prop.getPropertyChangeListeners().length);
+    } 
+    
+    
     /**
      * The test checks the serialization for listeners supporting serialization
      */