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 Thu, 29 Mar 2007 15:33:25 GMT

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

Alexey A. Ivanov commented on HARMONY-3453:
-------------------------------------------

Yes, that would be nice.

The point two may lead to incompatibility: we should check whether RI also caches EditorKit
instances. Since one can use a special ClassLoader, the caching may be implemented in ClassLoader.
Another point, ClassLoader itself, or constructor of EditorKit may perform side effects, and
using the copy of EditorKit (moreover it may be not Cloneable as it's not required that an
implementation extends DefaultEditorKit) may lead to weird behavior.

As for other point, I have no objections.

> [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
>         Assigned To: Alexey Petrenko
>            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",
null);
>         } 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.


Mime
View raw message