harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexander Simbirtsev (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HARMONY-2630) [classlib][swing] javax.swing.JMenu.createActionChangeListener(null) throws unspecified NPE while RI does not
Date Thu, 08 Feb 2007 11:11:06 GMT

    [ https://issues.apache.org/jira/browse/HARMONY-2630?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12471281
] 

Alexander Simbirtsev commented on HARMONY-2630:
-----------------------------------------------

Here's the code that demonstrates that the listener returned by the RI doesn't work (and it
could be expected) for item+action to which it is installed. It doesn't change the property
of the item:

import java.awt.event.ActionEvent;
import java.beans.PropertyChangeListener;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JMenu;
import javax.swing.JMenuItem;

public class Test {

    public static void main(String args[]) {
        TestJMenu menu = new TestJMenu();
        JMenuItem item = new JMenuItem();
        final PropertyChangeListener actionChangeListener = menu.createActionChangeListener(null);
        final AbstractAction action = new AbstractAction("1111") {
            public void actionPerformed(ActionEvent e) {
            }
            
            public synchronized void addPropertyChangeListener(PropertyChangeListener listener)
{
                if (listener == actionChangeListener) {
                    super.addPropertyChangeListener(listener);
                }
            }
        };
        item.setAction(action);
        action.addPropertyChangeListener(actionChangeListener);
        System.err.println("Before: " + item.getText());
        action.putValue(Action.NAME, "2222");
        System.err.println("After: " + item.getText());
    }

    static class TestJMenu extends JMenu {
        public PropertyChangeListener createActionChangeListener(JMenuItem item) {
            return super.createActionChangeListener(item);
        }
    }
}

So to follow RI's behavior we can just return PropertyChangeListener that does nothing when
null is passed to the method.

> [classlib][swing] javax.swing.JMenu.createActionChangeListener(null) throws unspecified
NPE while RI does not
> -------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-2630
>                 URL: https://issues.apache.org/jira/browse/HARMONY-2630
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>            Reporter: Pavel Dolgov
>            Priority: Minor
>
> Test case:
> --------------
> import java.beans.PropertyChangeListener;
> import javax.swing.JMenu;
> import javax.swing.JMenuItem;
> import junit.framework.TestCase;
> public class TheTest extends TestCase {
>     public static void main(String args[]) {
>         junit.textui.TestRunner.run(TheTest.class);
>     }
>     public void testcase1() {
>         TestJMenu jm = new TestJMenu();
>         jm.createActionChangeListener(null);
>     }
>     static class TestJMenu extends JMenu {
>         public PropertyChangeListener createActionChangeListener(JMenuItem arg0) {
>             return super.createActionChangeListener(arg0);
>         }
>     }
> }
> Harmony output:
> ----------------
> .E
> Time: 0.982
> There was 1 error:
> 1) testcase1(TheTest)java.lang.NullPointerException
> 	at javax.swing.JMenu.createActionChangeListener(JMenu.java:172)
> 	at TheTest$TestJMenu.createActionChangeListener(TheTest.java)
> 	at TheTest.testcase1(TheTest.java:15)
> 	at java.lang.reflect.VMReflection.invokeMethod(Native Method)
> 	at TheTest.main(TheTest.java:11)
> FAILURES!!!
> Tests run: 1,  Failures: 0,  Errors: 1

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message