[Patch] Exception after resolving conflicts
What steps will reproduce the problem?
- Purchase a data layer with some conflicts. Cheap to get by reverting changeset 8302969 (not that there is anything bad inside)
- Resolve a conflict
- Admire the exception
Tested with a blank ~/.josm plus reverter plugin
Got introduced after r10377, exists in r10392.
URL:http://josm.openstreetmap.de/svn/trunk
Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
Last:Changed Date: 2016-06-19 02:15:46 +0200 (Sun, 19 Jun 2016)
Build-Date:2016-06-19 01:34:13
Revision:10422
Relative:URL: ^/trunk
Identification: JOSM/1.5 (10422 de) Linux Debian GNU/Linux unstable (sid)
Memory Usage: 517 MB / 2222 MB (351 MB allocated, but free)
Java version: 1.8.0_91-b14, Oracle Corporation, Java HotSpot(TM) 64-Bit Server VM
VM arguments: [-Dsun.java2d.opengl=false]
Dataset consistency test: No problems found
Plugins:
- reverter (32158)
Last errors/warnings:
- W: Datei <josm.pref>/cache/tiles/TMS_INDEX_v2.data kann nicht gelöscht werden
- E: java.io.IOException: Stream closed
- W: Cannot retrieve any previous version of Punkt 568390111
- W: Konflikte gefunden - <html>44 Konflikte wurden entdeckt.</html>
- E: java.lang.IllegalArgumentException: Listener was not registered before: org.openstreetmap.josm.actions.ZoomToAction@2c5b04ba
java.lang.IllegalArgumentException: Listener was not registered before: org.openstreetmap.josm.actions.ZoomToAction@2c5b04ba
at org.openstreetmap.josm.gui.layer.LayerManager.removeLayerChangeListener(LayerManager.java:316)
at org.openstreetmap.josm.gui.layer.LayerManager.removeLayerChangeListener(LayerManager.java:304)
at org.openstreetmap.josm.gui.widgets.OsmPrimitivesTable.unlinkAsListener(OsmPrimitivesTable.java:93)
at org.openstreetmap.josm.gui.conflict.pair.ListMerger.unlinkAsListener(ListMerger.java:886)
at org.openstreetmap.josm.gui.conflict.pair.ConflictResolver.unregisterListeners(ConflictResolver.java:352)
at org.openstreetmap.josm.gui.dialogs.ConflictResolutionDialog.unregisterListeners(ConflictResolutionDialog.java:105)
at org.openstreetmap.josm.gui.dialogs.ConflictResolutionDialog.removeNotify(ConflictResolutionDialog.java:50)
at java.awt.Window$1DisposeAction.run(Window.java:1194)
at java.awt.Window.doDispose(Window.java:1210)
at java.awt.Dialog.doDispose(Dialog.java:1198)
at java.awt.Window.dispose(Window.java:1151)
at org.openstreetmap.josm.gui.dialogs.ConflictResolutionDialog.closeDialog(ConflictResolutionDialog.java:71)
at org.openstreetmap.josm.gui.dialogs.ConflictResolutionDialog.access$000(ConflictResolutionDialog.java:40)
at org.openstreetmap.josm.gui.dialogs.ConflictResolutionDialog$ApplyResolutionAction.actionPerformed(ConflictResolutionDialog.java:235)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
at java.awt.Component.processMouseEvent(Component.java:6535)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6300)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4891)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:184)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:229)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:227)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:227)
at java.awt.Dialog.show(Dialog.java:1084)
at java.awt.Component.show(Component.java:1673)
at java.awt.Component.setVisible(Component.java:1625)
at java.awt.Window.setVisible(Window.java:1014)
at java.awt.Dialog.setVisible(Dialog.java:1005)
at org.openstreetmap.josm.gui.dialogs.ConflictResolutionDialog.setVisible(ConflictResolutionDialog.java:66)
at org.openstreetmap.josm.gui.dialogs.ConflictDialog.resolve(ConflictDialog.java:225)
at org.openstreetmap.josm.gui.dialogs.ConflictDialog.access$400(ConflictDialog.java:76)
at org.openstreetmap.josm.gui.dialogs.ConflictDialog$MouseEventHandler.mouseClicked(ConflictDialog.java:361)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270)
at java.awt.Component.processMouseEvent(Component.java:6538)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6300)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4891)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4534)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
I found the problem: The listener handling in this dialog was only done on construction, that way listeners did not get added when they should.