Bug 27511

Summary: Closing a window trigger NPE inside application code in openjump
Product: classpath Reporter: pere
Component: swingAssignee: Roman Kennke <roman>
Status: UNCONFIRMED ---    
Severity: normal CC: bug-classpath
Priority: P3    
Version: 0.91   
Target Milestone: ---   
Host: Target:
Build: Known to work:
Known to fail: Last reconfirmed:

Description pere 2006-05-08 21:16:25 UTC
When bug #27484 was fixed, openjump now triggers a NullPointerException
when trying to close a project window inside the application window by
clicking on the little 'x' in the upper right corner.

I tested using the CVS version of Classpath, jamvm and the debian/unstable
version of openjump.

The source for openjump is available from www.openjump.org, or
from <URL: ftp://ftp.no.debian.org/debian/pool/contrib/o/openjump/ >.

This is the backtrace:

java.lang.NullPointerException
   at com.vividsolutions.jump.workbench.ui.TaskFrame.memoryCleanup(TaskFrame.java:175)
   at com.vividsolutions.jump.workbench.ui.TaskFrame$1.internalFrameClosed(TaskFrame.java:114)
   at javax.swing.JInternalFrame.fireInternalFrameEvent(JInternalFrame.java:716)
   at javax.swing.JInternalFrame.dispose(JInternalFrame.java:662)
   at javax.swing.JInternalFrame.setClosed(JInternalFrame.java:1311)
   at javax.swing.plaf.basic.BasicInternalFrameTitlePane$CloseAction.actionPerformed(BasicInternalFrameTitlePane.java:104)
   at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1099)
   at javax.swing.AbstractButton$1.actionPerformed(AbstractButton.java:1909)
   at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:298)
   at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:403)
   at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:188)
   at java.awt.Component.processMouseEvent(Component.java:3105)
   at java.awt.Component.processEvent(Component.java:2964)
   at java.awt.Container.processEvent(Container.java:914)
   at java.awt.Component.dispatchEventImpl(Component.java:5033)
   at java.awt.Container.dispatchEventImpl(Container.java:1741)
   at java.awt.Component.dispatchEvent(Component.java:2322)
   at java.awt.LightweightDispatcher.handleMouseEvent(LightweightDispatcher.java:197)
   at java.awt.LightweightDispatcher.dispatchEvent(LightweightDispatcher.java:116)
   at java.awt.Container.dispatchEventImpl(Container.java:1731)
   at java.awt.Window.dispatchEventImpl(Window.java:642)
   at java.awt.Component.dispatchEvent(Component.java:2322)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:474)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:75)
java.lang.NullPointerException
   at com.vividsolutions.jump.workbench.ui.TaskFrame.memoryCleanup(TaskFrame.java:175)
   at com.vividsolutions.jump.workbench.ui.TaskFrame$1.internalFrameClosed(TaskFrame.java:114)
   at javax.swing.JInternalFrame.fireInternalFrameEvent(JInternalFrame.java:716)
   at javax.swing.JInternalFrame.setClosed(JInternalFrame.java:1314)
   at javax.swing.plaf.basic.BasicInternalFrameTitlePane$CloseAction.actionPerformed(BasicInternalFrameTitlePane.java:104)
   at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1099)
   at javax.swing.AbstractButton$1.actionPerformed(AbstractButton.java:1909)
   at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:298)
   at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:403)
   at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:188)
   at java.awt.Component.processMouseEvent(Component.java:3105)
   at java.awt.Component.processEvent(Component.java:2964)
   at java.awt.Container.processEvent(Container.java:914)
   at java.awt.Component.dispatchEventImpl(Component.java:5033)
   at java.awt.Container.dispatchEventImpl(Container.java:1741)
   at java.awt.Component.dispatchEvent(Component.java:2322)
   at java.awt.LightweightDispatcher.handleMouseEvent(LightweightDispatcher.java:197)
   at java.awt.LightweightDispatcher.dispatchEvent(LightweightDispatcher.java:116)
   at java.awt.Container.dispatchEventImpl(Container.java:1731)
   at java.awt.Window.dispatchEventImpl(Window.java:642)
   at java.awt.Component.dispatchEvent(Component.java:2322)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:474)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:75)
Comment 1 pere 2006-05-16 18:52:36 UTC
I asked about a related issue on the openjump developers mailing list,
<URL:http://sourceforge.net/mailarchive/forum.php?forum=jump-pilot-devel>,
and among other things got this answer:

  There seems to be an implied EnableCheck in EnableCheckFactory that
  does Assert.isTrue(workbenchContext != null) that would be used in
  configLayer() of JUMPConfiguration.

I suspect the missing context value might be the problem here too.