On Mon, 2006-02-06 at 12:56 +0000, Roman Kennke wrote:
> 2006-02-06  Roman Kennke  <[EMAIL PROTECTED]>
> 
>         * javax/swing/event/SwingPropertyChangeSupport.java
>         (listeners): Removed field.
>         (propertyListeners): Removed field.
>         (source): Removed field.
>         (SwingPropertyChangeSupport()): Removed initialization of removed
>         fields.
>         (addPropertyChangeListener): Removed methods.
>         (removePropertyChangeListener): Removed methods.
>         (getPropertyChangeListeners): Removed methods.
>         (firePropertyChange): Removed methods.
>         (hasListeners): Removed methods.

This showed some regressions in mauve:

FAIL: 
gnu.testlet.javax.swing.event.SwingPropertyChangeSupport.addPropertyChangeListener:
 (PropertyChangeListener) (number 3)
FAIL: 
gnu.testlet.javax.swing.event.SwingPropertyChangeSupport.addPropertyChangeListener:
 (String, PropertyChangeListener) (number 3)

Fixed as follows:

2006-02-12  Mark Wielaard  <[EMAIL PROTECTED]>

        * java/beans/PropertyChangeSupport.java (addPropertyChangeListener):
        Silently ignores null listener.
        (addPropertyChangeListener(String, PropertyChangeListener): Likewise.
        (getPropertyChangeListeners): Returns empty PropertyChangeListener
        array for null propertyName.

Committed,

Mark
Index: java/beans/PropertyChangeSupport.java
===================================================================
RCS file: /sources/classpath/classpath/java/beans/PropertyChangeSupport.java,v
retrieving revision 1.14
diff -u -r1.14 PropertyChangeSupport.java
--- java/beans/PropertyChangeSupport.java	30 Nov 2005 15:25:12 -0000	1.14
+++ java/beans/PropertyChangeSupport.java	12 Feb 2006 13:53:21 -0000
@@ -1,5 +1,6 @@
 /* PropertyChangeSupport.java -- support to manage property change listeners
-   Copyright (C) 1998, 1999, 2000, 2002, 2005  Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2000, 2002, 2005, 2006
+   Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -120,14 +121,17 @@
    * property change events will be sent to this listener. The listener add
    * is not unique: that is, <em>n</em> adds with the same listener will
    * result in <em>n</em> events being sent to that listener for every
-   * property change. Adding a null listener may cause a NullPointerException
-   * down the road. This method will unwrap a PropertyChangeListenerProxy,
+   * property change. Adding a null listener is silently ignored.
+   * This method will unwrap a PropertyChangeListenerProxy,
    * registering the underlying delegate to the named property list.
    *
    * @param l the listener to add
    */
   public synchronized void addPropertyChangeListener(PropertyChangeListener l)
   {
+    if (l == null)
+      return;
+
     if (l instanceof PropertyChangeListenerProxy)
       {
         PropertyChangeListenerProxy p = (PropertyChangeListenerProxy) l;
@@ -216,8 +220,8 @@
    * cumulative, too; if you are registered to listen to receive events on
    * all property changes, and then you register on a particular property,
    * you will receive change events for that property twice. Adding a null
-   * listener may cause a NullPointerException down the road. This method
-   * will unwrap a PropertyChangeListenerProxy, registering the underlying
+   * listener is silently ignored. This method will unwrap a
+   * PropertyChangeListenerProxy, registering the underlying
    * delegate to the named property list if the names match, and discarding
    * it otherwise.
    *
@@ -228,6 +232,9 @@
   public synchronized void addPropertyChangeListener(String propertyName,
                                                      PropertyChangeListener l)
   {
+    if (l == null)
+      return;
+
     while (l instanceof PropertyChangeListenerProxy)
       {
         PropertyChangeListenerProxy p = (PropertyChangeListenerProxy) l;
@@ -290,17 +297,16 @@
 
   /**
    * Returns an array of all property change listeners registered under the
-   * given property name. If there are no registered listeners, this returns
-   * an empty array.
+   * given property name. If there are no registered listeners, or
+   * propertyName is null, this returns an empty array.
    *
    * @return the array of registered listeners
-   * @throws NullPointerException if propertyName is null
    * @since 1.4
    */
   public synchronized PropertyChangeListener[]
     getPropertyChangeListeners(String propertyName)
   {
-    if (children == null)
+    if (children == null || propertyName == null)
       return new PropertyChangeListener[0];
     PropertyChangeSupport s
       = (PropertyChangeSupport) children.get(propertyName);
@@ -455,7 +461,6 @@
    *
    * @param propertyName the property that may be listened on
    * @return whether the property is being listened on
-   * @throws NullPointerException if propertyName is null
    */
   public synchronized boolean hasListeners(String propertyName)
   {

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to