Java Solaris Communities Sun Store Join SDN My Profile Why Join?
 
Bug Database
Bug Detail
Quick Lists
Top 25 Bugs
Top 25 RFE's
Recently Closed Bugs
Printable Page Printable Page


Bug Database
Bug ID: 6612531
Votes 2
Synopsis api/javax_swing/ScrollPaneLayout/index.html#xxxLayoutSize[ScrollPaneLayout2024] throws NPE
Category java:classes_swing
Reported Against b01 , b20
Release Fixed 7(b27), 6-open(b04) (Bug ID:2158212)
State 10-Fix Delivered, Verified, bug
Priority: 2-High
Related Bugs 6274267 , 6660477 , 6668267
Submit Date 03-OCT-2007
Description
JCK: JCK-runtime-6b b07
J2SE: FAIL - 7 b20 PASS 7 b19 6u4 b03 
Platform[s]: FAIL -  All
switch/Mode: FAIL - default

Test api/javax_swing/ScrollPaneLayout/index.html#xxxLayoutSize[ScrollPaneLayout2024] throws NPE since JDK 7 b20.
Posted Date : 2007-10-03 15:26:02.0

Copied from the description of 6660477:

When using Netbeans 6.0, randomly from time to time, following exception is thrown from ScrollPaneLayout:

java.lang.NullPointerException
        at javax.swing.ScrollPaneLayout.preferredLayoutSize(ScrollPaneLayout.java:494)
        at java.awt.Container.preferredSize(Container.java:1669)
        at java.awt.Container.getPreferredSize(Container.java:1654)
        at javax.swing.JComponent.getPreferredSize(JComponent.java:1645)
        at java.awt.GridBagLayout.GetLayoutInfo(GridBagLayout.java:1109)
        at java.awt.GridBagLayout.GetLayoutInfo(GridBagLayout.java:910)
        at java.awt.GridBagLayout.preferredLayoutSize(GridBagLayout.java:730)
        at java.awt.Container.preferredSize(Container.java:1669)
        at java.awt.Container.getPreferredSize(Container.java:1654)
        at javax.swing.JComponent.getPreferredSize(JComponent.java:1645)
        at java.awt.BorderLayout.preferredLayoutSize(BorderLayout.java:724)
        at java.awt.Container.preferredSize(Container.java:1669)
        at java.awt.Container.getPreferredSize(Container.java:1654)
        at javax.swing.JComponent.getPreferredSize(JComponent.java:1645)
        at java.awt.GridBagLayout.GetLayoutInfo(GridBagLayout.java:1109)
        at java.awt.GridBagLayout.GetLayoutInfo(GridBagLayout.java:910)
        at java.awt.GridBagLayout.ArrangeGrid(GridBagLayout.java:2065)
        at java.awt.GridBagLayout.ArrangeGrid(GridBagLayout.java:2025)
        at java.awt.GridBagLayout.layoutContainer(GridBagLayout.java:806)
        at java.awt.Container.layout(Container.java:1485)
        at java.awt.Container.doLayout(Container.java:1474)
        at java.awt.Container.validateTree(Container.java:1572)
        at java.awt.Container.validateTree(Container.java:1579)
        at java.awt.Container.validateTree(Container.java:1579)
        at java.awt.Container.validateTree(Container.java:1579)
        at java.awt.Container.validateTree(Container.java:1579)
        at java.awt.Container.validateTree(Container.java:1579)
        at java.awt.Container.validateTree(Container.java:1579)
        at java.awt.Container.validate(Container.java:1544)
        at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:652)
        at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1549)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:226)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:602)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:194)
        at java.awt.Dialog$1.run(Dialog.java:1072)
        at java.awt.Dialog$3.run(Dialog.java:1126)
        at java.security.AccessController.doPrivileged(AccessController.java:0)
        at java.awt.Dialog.show(Dialog.java:1124)
        at org.netbeans.core.windows.services.NbPresenter.superShow(NbPresenter.java:834)
        at org.netbeans.core.windows.services.NbPresenter.doShow(NbPresenter.java:868)
        at org.netbeans.core.windows.services.NbPresenter.run(NbPresenter.java:856)
        at org.netbeans.core.windows.services.NbPresenter.run(NbPresenter.java:104)
        at org.openide.util.Mutex.doEventAccess(Mutex.java:1355)
        at org.openide.util.Mutex.readAccess(Mutex.java:268)
        at org.netbeans.core.windows.services.NbPresenter.show(NbPresenter.java:841)
        at java.awt.Component.show(Component.java:1455)
        at java.awt.Component.setVisible(Component.java:1407)
        at java.awt.Window.setVisible(Window.java:870)
        at java.awt.Dialog.setVisible(Dialog.java:1011)
        at org.openide.loaders.TemplateWizard.instantiateImpl(TemplateWizard.java:502)
        at org.openide.loaders.TemplateWizard.instantiate(TemplateWizard.java:369)
        at org.netbeans.modules.project.ui.actions.NewProject$2.run(NewProject.java:139)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:226)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:602)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:194)
        at java.awt.Dialog$1.run(Dialog.java:1072)
        at java.awt.Dialog$3.run(Dialog.java:1126)
        at java.security.AccessController.doPrivileged(AccessController.java:0)
        at java.awt.Dialog.show(Dialog.java:1124)
        at org.netbeans.core.windows.services.NbPresenter.superShow(NbPresenter.java:834)
        at org.netbeans.core.windows.services.NbPresenter.doShow(NbPresenter.java:868)
        at org.netbeans.core.windows.services.NbPresenter.run(NbPresenter.java:856)
        at org.netbeans.core.windows.services.NbPresenter.run(NbPresenter.java:104)
        at org.openide.util.Mutex.doEventAccess(Mutex.java:1355)
        at org.openide.util.Mutex.readAccess(Mutex.java:268)
        at org.netbeans.core.windows.services.NbPresenter.show(NbPresenter.java:841)
        at java.awt.Component.show(Component.java:1455)
        at java.awt.Component.setVisible(Component.java:1407)
        at java.awt.Window.setVisible(Window.java:870)
        at java.awt.Dialog.setVisible(Dialog.java:1011)
        at org.openide.loaders.TemplateWizard.instantiateImpl(TemplateWizard.java:502)
        at org.openide.loaders.TemplateWizard.instantiate(TemplateWizard.java:369)
        at org.netbeans.modules.project.ui.actions.NewProject$2.run(NewProject.java:139)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:226)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:602)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:194)
        at java.awt.Dialog$1.run(Dialog.java:1072)
        at java.awt.Dialog$3.run(Dialog.java:1126)
        at java.security.AccessController.doPrivileged(AccessController.java:0)
        at java.awt.Dialog.show(Dialog.java:1124)
        at org.netbeans.core.windows.services.NbPresenter.superShow(NbPresenter.java:834)
        at org.netbeans.core.windows.services.NbPresenter.doShow(NbPresenter.java:868)
        at org.netbeans.core.windows.services.NbPresenter.run(NbPresenter.java:856)
        at org.netbeans.core.windows.services.NbPresenter.run(NbPresenter.java:104)
        at org.openide.util.Mutex.doEventAccess(Mutex.java:1355)
        at org.openide.util.Mutex.readAccess(Mutex.java:268)
        at org.netbeans.core.windows.services.NbPresenter.show(NbPresenter.java:841)
        at java.awt.Component.show(Component.java:1455)
        at java.awt.Component.setVisible(Component.java:1407)
        at java.awt.Window.setVisible(Window.java:870)
        at java.awt.Dialog.setVisible(Dialog.java:1011)
        at org.openide.loaders.TemplateWizard.instantiateImpl(TemplateWizard.java:502)
        at org.openide.loaders.TemplateWizard.instantiate(TemplateWizard.java:369)
        at org.netbeans.modules.project.ui.actions.NewProject$2.run(NewProject.java:139)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:226)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:602)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:194)
        at java.awt.Dialog$1.run(Dialog.java:1072)
        at java.awt.Dialog$3.run(Dialog.java:1126)
        at java.security.AccessController.doPrivileged(AccessController.java:0)
        at java.awt.Dialog.show(Dialog.java:1124)
        at org.netbeans.core.windows.services.NbPresenter.superShow(NbPresenter.java:834)
        at org.netbeans.core.windows.services.NbPresenter.doShow(NbPresenter.java:868)
        at org.netbeans.core.windows.services.NbPresenter.run(NbPresenter.java:856)
        at org.netbeans.core.windows.services.NbPresenter.run(NbPresenter.java:104)
        at org.openide.util.Mutex.doEventAccess(Mutex.java:1355)
        at org.openide.util.Mutex.readAccess(Mutex.java:268)
        at org.netbeans.core.windows.services.NbPresenter.show(NbPresenter.java:841)
        at java.awt.Component.show(Component.java:1455)
        at java.awt.Component.setVisible(Component.java:1407)
        at java.awt.Window.setVisible(Window.java:870)
        at java.awt.Dialog.setVisible(Dialog.java:1011)
        at org.openide.loaders.TemplateWizard.instantiateImpl(TemplateWizard.java:502)
        at org.openide.loaders.TemplateWizard.instantiate(TemplateWizard.java:369)
        at org.netbeans.modules.project.ui.actions.NewProject$2.run(NewProject.java:139)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:226)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:602)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)

It seems to be regression in newer JDK builds, namely "Java HotSpot(TM) Client VM, 12.0-b01" version. To see details in Netbeans exception reporter, please go to http://statistics.netbeans.org/analytics/detail.do?id=17307

Original netbeans issue entered in Issuezilla is here:
http://www.netbeans.org/issues/show_bug.cgi?id=126466
Posted Date : 2008-03-13 10:29:18.0

Copied from the description of 6668267:

FULL PRODUCT VERSION :
java version "1.7.0-ea"
Java(TM) SE Runtime Environment (build 1.7.0-ea-b24)
Java HotSpot(TM) Client VM (build 12.0-b01, mixed mode, sharing)


ADDITIONAL OS VERSION INFORMATION :
Linux d600 2.6.24-7-generic #1 SMP Thu Feb 7 01:29:58 UTC 2008 i686 GNU/Linux


A DESCRIPTION OF THE PROBLEM :
NullPointerException at javax.swing.ScrollPaneLayout.preferredLayoutSize(ScollPaneLayout.java:494) on executing the webstart application. Same application runs fine with 1.6.0_05.

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Only one step: jdk1.7.0/jre/bin/javaws http://jawe.objectweb.org/twe.jnlp

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Application Window to appear

ERROR MESSAGES/STACK TRACES THAT OCCUR :
NullPointerException at javax.swing.ScrollPaneLayout.preferredLayoutSize(ScollPaneLayout.java:494)

REPRODUCIBILITY :
This bug can be reproduced always.

Release Regression From : 6u5
The above release value was the last known release where this 
bug was not reproducible. Since then there has been a regression.
Posted Date : 2008-03-13 10:31:36.0
Work Around
Avoid using of JViewPort that have not any child components. I.e. every view port should contain at least one nested component to avoid the NPE.
Evaluation
It looks like a regression of the fix for 6274267
Posted Date : 2007-10-04 15:22:20.0

Thanks to pavel.stepanov, who entirely described the problem. The problem in the following code:
if (viewport !=  null) {
    extentSize = viewport.getPreferredSize();
    view = viewport.getView();
    viewSize  = view.getPreferredSize();
}

The viewport.getView() can return null. This causes NPE. 
The fix is simple. Null check should be added:

if (viewport !=  null) {
    extentSize = viewport.getPreferredSize();
    view = viewport.getView();
    if (view != null) {
        viewSize = view.getPreferredSize();
    } else {
        viewSize = new Dimension(0, 0);
    }
}
Posted Date : 2007-11-19 12:24:30.0
Comments
  
  Include a link with my name & email   

Submitted On 09-NOV-2007
Please fix this soon. It makes it impossible to use Netbeans' editor hints feature.



PLEASE NOTE: JDK6 is formerly known as Project Mustang