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

ZoneView and AsyncBoxView cause NullPointerException

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: P4 P4
    • None
    • 6
    • client-libs

      FULL PRODUCT VERSION :
      java version "1.6.0_07"
      Java(TM) SE Runtime Environment (build 1.6.0_07-b06)
      Java HotSpot(TM) Client VM (build 10.0-b23, mixed mode, sharing)


      ADDITIONAL OS VERSION INFORMATION :
      Microsoft Windows XP [Version 5.1.2600]

      A DESCRIPTION OF THE PROBLEM :
      NPE occurs when using ZoneView as the view for an Editor Kit. Seems similar to bug 6459965 but with ZoneView instead of AsyncBoxView.

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Run the attached code.

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      For the JTextPane to load properly.
      ACTUAL -
      NullPointerException thrown.

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
              at javax.swing.text.AsyncBoxView.preferenceChanged(AsyncBoxView.java:493)
              at javax.swing.text.View.preferenceChanged(View.java:272)
              at javax.swing.text.BoxView.preferenceChanged(BoxView.java:269)
              at javax.swing.text.FlowView$FlowStrategy.insertUpdate(FlowView.java:356)
              at javax.swing.text.FlowView.loadChildren(FlowView.java:126)
              at javax.swing.text.CompositeView.setParent(CompositeView.java:122)
              at javax.swing.text.FlowView.setParent(FlowView.java:272)
              at javax.swing.text.ZoneView$Zone.loadChildren(ZoneView.java:432)
              at javax.swing.text.AsyncBoxView.setParent(AsyncBoxView.java:461)
              at javax.swing.text.CompositeView.replace(CompositeView.java:200)
              at javax.swing.text.BoxView.replace(BoxView.java:164)
              at javax.swing.text.View.append(View.java:401)
              at javax.swing.text.ZoneView.loadChildren(ZoneView.java:220)
              at javax.swing.text.CompositeView.setParent(CompositeView.java:122)
              at javax.swing.plaf.basic.BasicTextUI$RootView.setView(BasicTextUI.java:1315)
              at javax.swing.plaf.basic.BasicTextUI.setView(BasicTextUI.java:681)
              at javax.swing.plaf.basic.BasicTextUI.modelChanged(BasicTextUI.java:670)
              at javax.swing.plaf.basic.BasicTextUI$UpdateHandler.propertyChange(BasicTextUI.java:1773)
              at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:339)
              at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:276)
              at java.awt.Component.firePropertyChange(Component.java:7868)
              at javax.swing.text.JTextComponent.setDocument(JTextComponent.java:437)
              at javax.swing.JTextPane.setDocument(JTextPane.java:119)
              at javax.swing.JEditorPane.setEditorKit(JEditorPane.java:1097)
              at javax.swing.JTextPane.setEditorKit(JTextPane.java:481)
              at Test.init(Test.java:28)
              at Test.<init>(Test.java:13)
              at Test$1.run(Test.java:34)
              at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
              at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
              at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
              at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
              at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
              at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
              at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
              at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)


      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      public class Test extends javax.swing.JFrame {
          
          public Test() {
              textPane = new javax.swing.JTextPane();
              textPane.setEditorKit(new MyEditorKit());
          }
          
          public static void main(String args[]) {
              java.awt.EventQueue.invokeLater(new Runnable() {
                  public void run() {
                      new Test().setVisible(true);
                  }
              });
          }
          
          class MyEditorKit extends javax.swing.text.StyledEditorKit
                  implements javax.swing.text.ViewFactory {

              @Override
              public javax.swing.text.ViewFactory getViewFactory() {
                  return this;
              }
              
              public javax.swing.text.View create(javax.swing.text.Element elem) {
                  String kind = elem.getName();
                  if ((kind != null) && (kind.equals(javax.swing.text.AbstractDocument.SectionElementName))) {
                      return new javax.swing.text.ZoneView(elem, javax.swing.text.View.Y_AXIS);
                      //return new javax.swing.text.AsyncBoxView(elem, javax.swing.text.View.Y_AXIS);
                  }
                  javax.swing.text.ViewFactory f = super.getViewFactory();
                  return f.create(elem);
              }
          }
          private javax.swing.JTextPane textPane;
      }
      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
        Bug 6459965 seems to have a workaround in the comments but not personally tested.

            peterz Peter Zhelezniakov
            ndcosta Nelson Dcosta (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Imported:
              Indexed: