harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vasily Zakharov (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HARMONY-4755) [classlib][swing][html] JEditorPane.setPage() throws NPE
Date Fri, 07 Sep 2007 02:23:28 GMT

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

Vasily Zakharov commented on HARMONY-4755:
------------------------------------------

NPE occurs in EventDispatchThread, the cause for it is boxPainter is null at BlockView.paint(),
line 77.

boxPainter is initialized in BlockView.setPropertiesFromAttributes() that is called from JEditorPane.setPage()
in main thread, at this point:

at javax.swing.text.html.BlockView.setPropertiesFromAttributes(BlockView.java:125)
at javax.swing.text.html.BlockView.setParent(BlockView.java:63)
at javax.swing.text.CompositeView.replace(CompositeView.java:90)
at javax.swing.text.BoxView.replace(BoxView.java:150)
at javax.swing.text.CompositeView.loadChildren(CompositeView.java:238)
at javax.swing.text.CompositeView.setParent(CompositeView.java:116)
at javax.swing.text.html.BlockView.setParent(BlockView.java:61)
at javax.swing.text.RootView.replace(RootView.java:266)
at javax.swing.text.View.append(View.java:273)
at javax.swing.plaf.basic.BasicTextUI.setView(BasicTextUI.java:864)
at javax.swing.plaf.basic.BasicTextUI.modelChanged(BasicTextUI.java:767) <-- BlockView
is created here
at javax.swing.plaf.basic.BasicTextUI$Listener.propertyChange(BasicTextUI.java:293)
at java.beans.PropertyChangeSupport.doFirePropertyChange(PropertyChangeSupport.java:263)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:54)
at java.awt.Component.firePropertyChangeImpl(Component.java:1668)
at java.awt.Component.firePropertyChange(Component.java:1682)
at javax.swing.text.JTextComponent.setDocument(JTextComponent.java:143)
at javax.swing.JEditorPane.updateDocument(JEditorPane.java:570)
at javax.swing.JEditorPane.setContentType(JEditorPane.java:552)
at javax.swing.JEditorPane.getStream(JEditorPane.java:434)
at javax.swing.JEditorPane.setPage(JEditorPane.java:666)
at javax.swing.JEditorPane.setPage(JEditorPane.java:591)
at NPE.main(NPE.java:12)

And BlockView itself is created in BasicTextUI.modelChanged(), line 767, in main thread, at
point marked in the stack above.

When BlockView is created in BasicTextUI.modelChanged() in main thread, but before it's initialized
in BlockView.setPropertiesFromAttributes() also in main thread, some time passes, and if paint()
event occurs in EventDispathThread at that time, NPE described above occurs.


> [classlib][swing][html] JEditorPane.setPage() throws NPE
> --------------------------------------------------------
>
>                 Key: HARMONY-4755
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4755
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>            Reporter: Vasily Zakharov
>            Priority: Minor
>
> If JEditorPane.setPage() is called on a visible pane and passed an HTML URL, NPE occurs.
> Here's the simple reproducer:
> import javax.swing.JEditorPane;
> import javax.swing.JFrame;
> public class Test {
>     public static void main(String argv[]) {
>         try {
>             JFrame frame = new JFrame("Test");
>             frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
>             frame.setSize(100, 100);
>             JEditorPane pane = new JEditorPane();
>             frame.add(pane);
>             frame.setVisible(true);
>             pane.setPage("file:test.html");
>         } catch (Throwable e) {
>             e.printStackTrace(System.out);
>         }
>     }
> } 
> test.html should exist in current directory and may be empty.
> This test produces the following exception on Harmony:
> java.lang.NullPointerException
>         at javax.swing.text.html.BlockView.paint(BlockView.java:77)
>         at javax.swing.text.RootView.paint(RootView.java:211)
>         at javax.swing.plaf.basic.BasicTextUI.paintSafely(BasicTextUI.java:839)
>         at javax.swing.plaf.basic.BasicTextUI.paint(BasicTextUI.java:88)
>         at javax.swing.plaf.ComponentUI.update(ComponentUI.java:38)
>         at javax.swing.plaf.basic.BasicTextUI.update(BasicTextUI.java:955)
>         at javax.swing.JComponent.paintComponent(JComponent.java:897)
>         at javax.swing.JComponent.paint(JComponent.java:994)
>         at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:1425)
>         at javax.swing.JComponent.paintImmediately(JComponent.java:156)
>         at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:186)
>         at javax.swing.RepaintManager$1.run(RepaintManager.java:80)
>         at java.awt.event.InvocationEvent.runAndNotify(InvocationEvent.java:98)
>         at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:78)
>         at java.awt.EventQueueCore.dispatchEventImpl(EventQueueCore.java:138)
>         at java.awt.EventQueue.dispatchEvent(EventQueue.java:144)
>         at java.awt.EventDispatchThread.runModalLoop(EventDispatchThread.java:74)
>         at java.awt.EventDispatchThread.run(EventDispatchThread.java:48)
> To see the exception, please enable stack trace printing at EventDispatchThread.java,
line 89.

-- 
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