harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexey A. Ivanov (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HARMONY-3453) [classlib][swing] JEditorPane.registerEditorKitForContentType(String, String, null) doesn't throw NPE
Date Fri, 23 Mar 2007 07:24:32 GMT

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

Alexey A. Ivanov commented on HARMONY-3453:

But it's not possible to put null into Hashtable.

If decision is made to use Map to store values, then of course a class with three fields should
be used rather than three Maps; don't you agree? The same idea could be used to store values
in ArrayLists. Possibly the overhead of three ArrayLists is more than using an object for
every value; and this implementation is much clearer and less error-prone than using three
arrays with "synchronized" values.

And yes, we can of course avoid throwing NPE where it shouldn't be one.

> [classlib][swing] JEditorPane.registerEditorKitForContentType(String, String, null) doesn't
throw NPE
> -----------------------------------------------------------------------------------------------------
>                 Key: HARMONY-3453
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3453
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib, Non-bug differences from RI
>            Reporter: Vasily Zakharov
>            Priority: Minor
> Consider the following test:
> import javax.swing.JEditorPane;
> public class Test {
>     public static void main(String args[]) throws Exception {
>         System.out.println(JEditorPane.createEditorKitForContentType("testContentType1"));
>         try {
>             JEditorPane.registerEditorKitForContentType("testContentType1", "MyEditorKit",
>         } catch (Exception e) {
>             e.printStackTrace();
>         }
>         System.out.println(JEditorPane.createEditorKitForContentType("testContentType1"));
>         JEditorPane.registerEditorKitForContentType("testContentType2", "MyEditorKit");
>         System.out.println(JEditorPane.createEditorKitForContentType("testContentType2"));
>     }
> }
> public class MyEditorKit extends javax.swing.text.DefaultEditorKit {
> }
> Output on RI:
> null
> java.lang.NullPointerException
>         at java.util.Hashtable.put(Unknown Source)
>         at javax.swing.JEditorPane.registerEditorKitForContentType(Unknown Source)
>         at TestNPE.main(TestNPE.java:8)
> MyEditorKit@1a46e30
> MyEditorKit@3e25a5
> Output on Harmony:
> null
> null
> null
> The specification says nothing about passing null classloader.
> The NPE occurs on RI, and doesn't occur on Harmony, it seems that RI uses Hashtable (that
doesn't permit null keys/vaues) to store registered classloaders, and Harmony uses ArrayList.
> Also, as one may see, RI, besides throwing NPE, also registers the specified content
type anyway (compare createEditorKitForContentType results before and after registration attempt).
In my opinion, this behaviour is clearly a bug in RI. So my suggestion is to consider this
issue a non-bug difference.

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

View raw message