JDK-8161272 : Fix for JDK-6882559 breaks JEditorPane.setContentType for unknown types
  • Type: Bug
  • Component: client-libs
  • Sub-Component: javax.swing
  • Affected Version: 9
  • Priority: P2
  • Status: Closed
  • Resolution: Duplicate
  • Submitted: 2016-07-13
  • Updated: 2016-07-13
  • Resolved: 2016-07-13
Related Reports
Duplicate :  
Description
The spec for JEditorPane.setContentType says:

If the type is not recognized, the content will be loaded using the <code>EditorKit</code> registered for plain text, <code>text/plain</code>.

Unfortunately, after the fix for JDK-6882559, this is no longer true.

Consider this example:
---
public class TestEditorPane {
    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new javax.swing.JEditorPane("text/x-oql", "");
            }
        });
    }
}
---

Compiling and running it on:
$ ./java -version
java version "9-ea"
Java(TM) SE Runtime Environment (build 9-ea+126)
Java HotSpot(TM) 64-Bit Server VM (build 9-ea+126, mixed mode)

$ uname -a
Linux lahvacovo 4.2.0-35-generic #40~14.04.1-Ubuntu SMP Fri Mar 18 16:37:35 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

$ javac TestEditorPane.java 
$ java TestEditorPane
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at javax.swing.JEditorPane.createEditorKitForContentType(java.desktop@9-ea/JEditorPane.java:1188)
        at javax.swing.JEditorPane.getEditorKitForContentType(java.desktop@9-ea/JEditorPane.java:1086)
        at javax.swing.JEditorPane.setContentType(java.desktop@9-ea/JEditorPane.java:979)
        at javax.swing.JEditorPane.<init>(java.desktop@9-ea/JEditorPane.java:291)
        at TestEditorPane$1.run(TestEditorPane.java:6)
        at java.awt.event.InvocationEvent.dispatch(java.desktop@9-ea/InvocationEvent.java:313)
        at java.awt.EventQueue.dispatchEventImpl(java.desktop@9-ea/EventQueue.java:759)
        at java.awt.EventQueue.access$500(java.desktop@9-ea/EventQueue.java:97)
        at java.awt.EventQueue$3.run(java.desktop@9-ea/EventQueue.java:712)
        at java.awt.EventQueue$3.run(java.desktop@9-ea/EventQueue.java:706)
        at java.security.AccessController.doPrivileged(java.base@9-ea/Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(java.base@9-ea/ProtectionDomain.java:77)
        at java.awt.EventQueue.dispatchEvent(java.desktop@9-ea/EventQueue.java:729)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(java.desktop@9-ea/EventDispatchThread.java:199)
        at java.awt.EventDispatchThread.pumpEventsForFilter(java.desktop@9-ea/EventDispatchThread.java:124)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(java.desktop@9-ea/EventDispatchThread.java:113)
        at java.awt.EventDispatchThread.pumpEvents(java.desktop@9-ea/EventDispatchThread.java:109)
        at java.awt.EventDispatchThread.pumpEvents(java.desktop@9-ea/EventDispatchThread.java:101)
        at java.awt.EventDispatchThread.run(java.desktop@9-ea/EventDispatchThread.java:90)

Originally reported here:
https://netbeans.org/bugzilla/show_bug.cgi?id=262619