Perspective switch:java.lang.IllegalArgumentException: placeholders does contain a nu

java.lang.IllegalArgumentException: placeholders does contain a null value
	at bibliothek.gui.dock.station.support.PlaceholderMap$PlaceholderKey.<init>(PlaceholderMap.java:987) ~[dockingFramesCore.jar:na]
	at bibliothek.gui.dock.station.support.PlaceholderMap$PlaceholderKey.shrink(PlaceholderMap.java:1096) ~[dockingFramesCore.jar:na]
	at bibliothek.gui.dock.station.support.PlaceholderMap.removeAll(PlaceholderMap.java:557) ~[dockingFramesCore.jar:na]
	at bibliothek.gui.dock.station.split.SplitPlaceholderSet.removeDoublePlaceholders(SplitPlaceholderSet.java:190) ~[dockingFramesCore.jar:na]
	at bibliothek.gui.dock.station.split.SplitNode.setPlaceholderMap(SplitNode.java:198) ~[dockingFramesCore.jar:na]
	at bibliothek.gui.dock.station.split.Leaf.setDockable(Leaf.java:148) ~[dockingFramesCore.jar:na]
	at bibliothek.gui.dock.SplitDockStation.removeDockable(SplitDockStation.java:2549) ~[dockingFramesCore.jar:na]
	at bibliothek.gui.dock.SplitDockStation.drag(SplitDockStation.java:2150) ~[dockingFramesCore.jar:na]
	at bibliothek.gui.dock.control.SingleParentRemover.test(SingleParentRemover.java:150) ~[dockingFramesCore.jar:na]
	at bibliothek.gui.dock.control.SingleParentRemover.testAll(SingleParentRemover.java:86) ~[dockingFramesCore.jar:na]
	at bibliothek.gui.dock.control.SingleParentRemover$DockRegisterObserver.dockableUnregistered(SingleParentRemover.java:205) ~[dockingFramesCore.jar:na]
	at bibliothek.gui.dock.control.DockRegister.fireDockableUnregistered(DockRegister.java:394) ~[dockingFramesCore.jar:na]
	at bibliothek.gui.dock.control.DockRegister.unregister(DockRegister.java:316) ~[dockingFramesCore.jar:na]
	at bibliothek.gui.dock.control.DockRegister$StationListener.removeDockable(DockRegister.java:621) ~[dockingFramesCore.jar:na]
	at bibliothek.gui.dock.control.DockRegister$StationListener.fire(DockRegister.java:498) ~[dockingFramesCore.jar:na]
	at bibliothek.gui.dock.control.DockRegister.setStalled(DockRegister.java:457) ~[dockingFramesCore.jar:na]
	at bibliothek.gui.dock.support.mode.ModeManager.runTransaction(ModeManager.java:489) ~[dockingFramesCommon.jar:na]
	at bibliothek.gui.dock.support.mode.ModeManager.runTransaction(ModeManager.java:446) ~[dockingFramesCommon.jar:na]
	at bibliothek.gui.dock.support.mode.ModeManager.runTransaction(ModeManager.java:427) ~[dockingFramesCommon.jar:na]
	at bibliothek.gui.dock.common.mode.CLocationModeManager.resetWorkingAreaChildren(CLocationModeManager.java:444) ~[dockingFramesCommon.jar:na]
	at bibliothek.gui.dock.common.intern.CDockFrontend.setSetting(CDockFrontend.java:154) ~[dockingFramesCommon.jar:na]
	at bibliothek.gui.DockFrontend.load(DockFrontend.java:1380) ~[dockingFramesCore.jar:na]
	at bibliothek.gui.dock.common.CControl.load(CControl.java:2673) ~[dockingFramesCommon.jar:na]
	at com.mt.core.DockingContentView.loadPerspective(DockingContentView.java:239) ~[CFETS_Common/:na]
	at com.mt.core.ContentViewMainFrame.loadPerspective(ContentViewMainFrame.java:49) [CFETS_Common/:na]
	at com.mt.core.MainFrame.loadPerspective_PL(MainFrame.java:523) [CFETS_Common/:na]
	at com.mt.core.MainFrame.access$700(MainFrame.java:51) [CFETS_Common/:na]
	at com.mt.core.MainFrame$PerspectiveGlobalSearchItemHandler.procGlobalSearchItem(MainFrame.java:695) [CFETS_Common/:na]
	at com.mt.core.MainFrame$GlobalSearchPopupView.startSelItem(MainFrame.java:917) [CFETS_Common/:na]
	at com.mt.core.MainFrame$6.keyReleased(MainFrame.java:558) [CFETS_Common/:na]
	at java.awt.Component.processKeyEvent(Component.java:6228) [na:1.6.0_22]
	at javax.swing.JComponent.processKeyEvent(JComponent.java:2801) [na:1.6.0_22]
	at java.awt.Component.processEvent(Component.java:6044) [na:1.6.0_22]
	at java.awt.Container.processEvent(Container.java:2041) [na:1.6.0_22]
	at java.awt.Component.dispatchEventImpl(Component.java:4630) [na:1.6.0_22]
	at java.awt.Container.dispatchEventImpl(Container.java:2099) [na:1.6.0_22]
	at java.awt.Component.dispatchEvent(Component.java:4460) [na:1.6.0_22]
	at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1850) [na:1.6.0_22]
	at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:712) [na:1.6.0_22]
	at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:990) [na:1.6.0_22]
	at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:855) [na:1.6.0_22]
	at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:676) [na:1.6.0_22]
	at java.awt.Component.dispatchEventImpl(Component.java:4502) [na:1.6.0_22]
	at java.awt.Container.dispatchEventImpl(Container.java:2099) [na:1.6.0_22]
	at java.awt.Window.dispatchEventImpl(Window.java:2478) [na:1.6.0_22]
	at java.awt.Component.dispatchEvent(Component.java:4460) [na:1.6.0_22]
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) [na:1.6.0_22]
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) [na:1.6.0_22]
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) [na:1.6.0_22]
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) [na:1.6.0_22]
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) [na:1.6.0_22]
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) [na:1.6.0_22]
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) [na:1.6.0_22]

I should in Swing EDT.

This is not necessarily happen, but it seems the problem is not thread-safe

I cannot explain this error other than with missing thread safety. If you access the framework by “EventQueue.invokeLater/invokeAndWait” the exception probably will not appear.

I’ll add some thread safety for the next version and then we will see if that helps.

[Edit… or maybe there is a much simpler explanation - like using the wrong array for an “array.length” operation]

Just uploaded a new version, hopefully we will never see this exception again.

Thanks.