Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-7020922

java.awt.Toolkit.getPropertyChangeListeners() should mention that it returns proxies

    XMLWordPrintable

Details

    • b142
    • generic
    • generic
    • Verified

    Description

      Platform: All
      JDK: 1.4+
      class: java.awt.Toolkit
      method: http://download.java.net/jdk7/docs/api/java/awt/Toolkit.html#getPropertyChangeListeners()

          --------------------------------------------------------------------------------
          public PropertyChangeListener[] getPropertyChangeListeners()
          Returns an array of all the property change listeners registered on this toolkit.
          Returns:
                all of this toolkit's PropertyChangeListeners or an empty array
                if no property change listeners are currently registered
          --------------------------------------------------------------------------------

       Assertion above is not correct.
       In fact method returns proxies, not listeners.

       Please see the following code sample for illustration:

      ----------------------------------------------------------------------------------------------
      import java.awt.*;
      import java.beans.PropertyChangeEvent;
      import java.beans.PropertyChangeListener;
      import java.util.Arrays;

      public class Test {
          public static void main(String[] args) {

              // this is for shortness, this behavior exist in default methods of Toolkit class
              // so any stubbed Toolkit child could be used as well
              Toolkit toolkit = Toolkit.getDefaultToolkit();

              toolkit.addPropertyChangeListener("prop", new PropertyChangeListener() {
                  @Override public void propertyChange(PropertyChangeEvent evt) { }
                  @Override public String toString() { return "my pcl"; }
              });

              PropertyChangeListener[] byProp = toolkit.getPropertyChangeListeners("prop");
              PropertyChangeListener[] all = toolkit.getPropertyChangeListeners();

              System.out.println("getPropertyChangeListeners(\"prop\") = " + Arrays.toString(byProp));
              System.out.println("getPropertyChangeListeners() = " + Arrays.toString(all));
          }
      }
      ----------------------------------------------------------------------------------------------

      The output will look like

      getPropertyChangeListeners("prop") = [my pcl]
      getPropertyChangeListeners() = [java.beans.PropertyChangeListenerProxy@17ec251]

      Attachments

        Issue Links

          Activity

            People

              denis Denis Fokin (Inactive)
              dbessono Dmitry Bessonov
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: