openjump-gis / openjump

OpenJUMP, the Open Source GIS with more than one trick in its kangaroo pocket, takes the leap from svn to git. join the effort!
http://openjump.org
GNU General Public License v2.0
28 stars 14 forks source link

Closing a project makes the whole application instable #59

Closed mukoki closed 1 year ago

mukoki commented 1 year ago

Sequence to reproduce the problem : 1 - Launch OpenJUMP, a default project is created 2 - Create a second project (File > New > Project) 3 - Close the second project - confirm

The following execption is thrown (visible if the console is opened) and the whole workbench is now instable

Exception in thread "AWT-EventQueue-0" org.locationtech.jts.util.AssertionFailedException: LayerViewPanel should have a parent WorkbenchFrame at org.locationtech.jts.util.Assert.isTrue(Assert.java:46) at com.vividsolutions.jump.workbench.ui.LayerViewPanel.getWorkBenchFrame(LayerViewPanel.java:363) at com.vividsolutions.jump.workbench.ui.cursortool.QuasimodeTool.deactivate(QuasimodeTool.java:319) at com.vividsolutions.jump.workbench.ui.LayerViewPanel.removeCurrentCursorTool(LayerViewPanel.java:349) at com.vividsolutions.jump.workbench.ui.LayerViewPanel.setCurrentCursorTool(LayerViewPanel.java:330) at com.vividsolutions.jump.workbench.ui.LayerViewPanel.reSetCurrentCursorTool(LayerViewPanel.java:306) at com.vividsolutions.jump.workbench.ui.TaskFrame$1.internalFrameActivated(TaskFrame.java:114) at java.desktop/javax.swing.JInternalFrame.fireInternalFrameEvent(JInternalFrame.java:1565) at java.desktop/javax.swing.JInternalFrame.setSelected(JInternalFrame.java:1094) at java.desktop/javax.swing.DefaultDesktopManager.closeFrame(DefaultDesktopManager.java:122) at com.vividsolutions.jump.workbench.ui.GUIUtil.dispose(GUIUtil.java:1488) at com.vividsolutions.jump.workbench.ui.WorkbenchFrame.closeTaskFrame(WorkbenchFrame.java:1996) at com.vividsolutions.jump.workbench.ui.WorkbenchFrame.access$1700(WorkbenchFrame.java:137) at com.vividsolutions.jump.workbench.ui.WorkbenchFrame$DefaultInternalFrameCloser.close(WorkbenchFrame.java:1925) at com.vividsolutions.jump.workbench.ui.WorkbenchFrame$17.internalFrameClosing(WorkbenchFrame.java:1027) at java.desktop/javax.swing.JInternalFrame.fireInternalFrameEvent(JInternalFrame.java:1553) at java.desktop/javax.swing.JInternalFrame.doDefaultCloseAction(JInternalFrame.java:1596) at java.desktop/javax.swing.plaf.basic.BasicInternalFrameTitlePane$CloseAction.actionPerformed(BasicInternalFrameTitlePane.java:790) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389) at java.desktop/java.awt.Component.processEvent(Component.java:6391) at java.desktop/java.awt.Container.processEvent(Container.java:2266) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90) Exception in thread "AWT-EventQueue-0" org.locationtech.jts.util.AssertionFailedException: LayerViewPanel should have a parent WorkbenchFrame at org.locationtech.jts.util.Assert.isTrue(Assert.java:46) at com.vividsolutions.jump.workbench.ui.LayerViewPanel.getWorkBenchFrame(LayerViewPanel.java:363) at com.vividsolutions.jump.workbench.ui.cursortool.QuasimodeTool.deactivate(QuasimodeTool.java:319) at com.vividsolutions.jump.workbench.ui.LayerViewPanel.removeCurrentCursorTool(LayerViewPanel.java:349) at com.vividsolutions.jump.workbench.ui.LayerViewPanel.setCurrentCursorTool(LayerViewPanel.java:330) at com.vividsolutions.jump.workbench.ui.LayerViewPanel.reSetCurrentCursorTool(LayerViewPanel.java:306) at com.vividsolutions.jump.workbench.ui.WorkbenchFrame$27.windowActivated(WorkbenchFrame.java:1522) at java.desktop/java.awt.AWTEventMulticaster.windowActivated(AWTEventMulticaster.java:397) at java.desktop/java.awt.AWTEventMulticaster.windowActivated(AWTEventMulticaster.java:397) at java.desktop/java.awt.AWTEventMulticaster.windowActivated(AWTEventMulticaster.java:397) at java.desktop/java.awt.AWTEventMulticaster.windowActivated(AWTEventMulticaster.java:397) at java.desktop/java.awt.AWTEventMulticaster.windowActivated(AWTEventMulticaster.java:397) at java.desktop/java.awt.Window.processWindowEvent(Window.java:2097) at java.desktop/javax.swing.JFrame.processWindowEvent(JFrame.java:298) at java.desktop/java.awt.Window.processEvent(Window.java:2044) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1952) at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1070) at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:566) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4882) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743) at java.desktop/java.awt.SentEvent.dispatch(SentEvent.java:75) at java.desktop/java.awt.DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent.dispatch(DefaultKeyboardFocusManager.java:261) at java.desktop/java.awt.DefaultKeyboardFocusManager.sendMessage(DefaultKeyboardFocusManager.java:288) at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:438) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4882) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743) at java.desktop/java.awt.SequencedEvent.dispatch(SequencedEvent.java:206) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:771) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

mukoki commented 1 year ago

Seems to happen after migration to github but before official 2.0 release, between r4918 and r4925 (june 2021)

edeso commented 1 year ago

good catch. very helpful that you pinpointed the possibly offending commits! :)

it's this one https://github.com/openjump-gis/openjump/commit/ccb6b540576301295755f8a5f009151682e2494b#diff-dfa7d0bab5f49cad49aa6d0acc70ef78fe563741ff2d03ebd326774ff33a18db

i'll push a fix.

edeso commented 1 year ago

@mukoki please test. should be fixed in latest snapshot.

mukoki commented 1 year ago

Yes fixed for me, thank you for the quick fix