You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ay...@apache.org on 2007/06/20 17:28:59 UTC
svn commit: r549135 - in /harmony/enhanced/classlib/trunk/modules/beans/src:
main/java/java/beans/beancontext/BeanContextSupport.java
test/java/org/apache/harmony/beans/tests/java/beans/beancontext/BeanContextSupport2Test.java
Author: ayza
Date: Wed Jun 20 08:28:58 2007
New Revision: 549135
URL: http://svn.apache.org/viewvc?view=rev&rev=549135
Log:
Applying patch and unit test from HARMONY-4011 ([classlib][beans] compatibility: java.beans.beancontext.BeanContextSupport allows registering the same listener several times)
Modified:
harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/beancontext/BeanContextSupport.java
harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/beancontext/BeanContextSupport2Test.java
Modified: harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/beancontext/BeanContextSupport.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/beancontext/BeanContextSupport.java?view=diff&rev=549135&r1=549134&r2=549135
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/beancontext/BeanContextSupport.java (original)
+++ harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/beancontext/BeanContextSupport.java Wed Jun 20 08:28:58 2007
@@ -319,7 +319,9 @@
throw new NullPointerException();
}
synchronized (bcmListeners) {
- bcmListeners.add(listener);
+ if (!bcmListeners.contains(listener)) {
+ bcmListeners.add(listener);
+ }
}
}
Modified: harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/beancontext/BeanContextSupport2Test.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/beancontext/BeanContextSupport2Test.java?view=diff&rev=549135&r1=549134&r2=549135
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/beancontext/BeanContextSupport2Test.java (original)
+++ harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/beancontext/BeanContextSupport2Test.java Wed Jun 20 08:28:58 2007
@@ -20,6 +20,9 @@
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.beancontext.BeanContextSupport;
+import java.beans.beancontext.BeanContextMembershipListener;
+import java.beans.beancontext.BeanContextMembershipEvent;
+import java.beans.beancontext.BeanContextChildSupport;
import java.util.Locale;
import junit.framework.TestCase;
@@ -37,6 +40,33 @@
beanContextSupport.setLocale(null);
assertEquals(Locale.FRANCE, beanContextSupport.getLocale());
assertFalse(myPropertyChangeListener.changed);
+ }
+
+ /**
+ * Regression test for HARMONY-4011
+ */
+ public void test4011() {
+ BeanContextSupport context = new BeanContextSupport();
+ final int[] k = { 0 };
+ BeanContextMembershipListener listener =
+ new BeanContextMembershipListener() {
+
+ public void childrenAdded(BeanContextMembershipEvent bcme) {
+ k[0]++;
+ }
+
+ public void childrenRemoved(BeanContextMembershipEvent bcme) {}
+ };
+
+ // add listener
+ context.addBeanContextMembershipListener(listener);
+ context.add(new BeanContextChildSupport());
+ assertEquals(1, k[0]);
+
+ // add the same listener onse again
+ context.addBeanContextMembershipListener(listener);
+ context.add(new BeanContextChildSupport());
+ assertEquals(2, k[0]);
}
private class MyPropertyChangeListener implements PropertyChangeListener {