This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 248545 - TopComponent is created twice
Summary: TopComponent is created twice
Status: NEW
Alias: None
Product: platform
Classification: Unclassified
Component: Window System (show other bugs)
Version: 8.0.1
Hardware: PC Windows 7
: P3 normal with 1 vote (vote)
Assignee: Stanislav Aubrecht
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-11-10 14:50 UTC by cezariusz
Modified: 2014-11-10 14:50 UTC (History)
0 users

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments
Full output log (21.21 KB, text/plain)
2014-11-10 14:50 UTC, cezariusz
Details

Note You need to log in before you can comment on or make changes to this bug.
Description cezariusz 2014-11-10 14:50:44 UTC
Created attachment 150397 [details]
Full output log

When running my application based on the NetBeans platform, my MapTopComponent is being created twice (bad), but only one is displayed (good). From stack traces it seems to me, that the first one is created because of the findTopComponent call from an other component (ChatTopComponent), and the second one is created by PersistenceManager, because it was opened when closing the application. I've added "new Throwable().printStackTrace()" to the main window of the MapTopComponent and it has been called three times (full log in the attachment):

INFO [com.company.navi.map.MapTopComponent]: Creating MapTopComponent
INFO [com.company.navi.MainMap]: Constructing MainMap class instance
java.lang.Throwable
	at com.company.navi.MainMap.<init>(MainMap.java:277)
	at com.company.navi.map.MapTopComponent.initComponents(MapTopComponent.java:72)
	at com.company.navi.map.MapTopComponent.<init>(MapTopComponent.java:45)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
	at org.netbeans.modules.settings.convertors.XMLSettingsSupport.newInstance(XMLSettingsSupport.java:100)
	at org.netbeans.modules.settings.convertors.XMLPropertiesConvertor.defaultInstanceCreate(XMLPropertiesConvertor.java:228)
	at org.netbeans.modules.settings.convertors.XMLPropertiesConvertor.read(XMLPropertiesConvertor.java:99)
	at org.netbeans.modules.settings.InstanceProvider$InstanceCookieImpl.instanceCreate(InstanceProvider.java:317)
	at org.netbeans.core.windows.persistence.PersistenceManager.getTopComponentPersistentForID(PersistenceManager.java:571)
	at org.netbeans.core.windows.persistence.PersistenceManager.getTopComponentForID(PersistenceManager.java:681)
	at org.netbeans.core.windows.PersistenceHandler.getTopComponentForID(PersistenceHandler.java:478)
	at org.netbeans.core.windows.WindowManagerImpl.getTopComponentForID(WindowManagerImpl.java:962)
	at org.netbeans.core.windows.WindowManagerImpl.findTopComponent(WindowManagerImpl.java:292)
	at com.company.navi.map.ChatTopComponent.<init>(ChatTopComponent.java:50)
	...
INFO [com.company.navi.map.MapTopComponent]: Creating MapTopComponent
INFO [com.company.navi.MainMap]: Constructing MainMap class instance
java.lang.Throwable
	at com.company.navi.MainMap.<init>(MainMap.java:277)
	at com.company.navi.map.MapTopComponent.initComponents(MapTopComponent.java:72)
	at com.company.navi.map.MapTopComponent.<init>(MapTopComponent.java:45)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
	at org.netbeans.modules.settings.convertors.XMLSettingsSupport.newInstance(XMLSettingsSupport.java:100)
	at org.netbeans.modules.settings.convertors.XMLPropertiesConvertor.defaultInstanceCreate(XMLPropertiesConvertor.java:228)
	at org.netbeans.modules.settings.convertors.XMLPropertiesConvertor.read(XMLPropertiesConvertor.java:99)
	at org.netbeans.modules.settings.InstanceProvider$InstanceCookieImpl.instanceCreate(InstanceProvider.java:317)
	at org.netbeans.core.windows.persistence.PersistenceManager.getTopComponentPersistentForID(PersistenceManager.java:571)
	at org.netbeans.core.windows.persistence.PersistenceManager.getTopComponentForID(PersistenceManager.java:681)
	at org.netbeans.core.windows.PersistenceHandler.getTopComponentForID(PersistenceHandler.java:478)
	at org.netbeans.core.windows.LazyLoader.lazyLoad(LazyLoader.java:138)
	at org.netbeans.core.windows.PersistenceHandler.initModeFromConfig(PersistenceHandler.java:441)
	at org.netbeans.core.windows.PersistenceHandler.load(PersistenceHandler.java:204)
	at org.netbeans.core.windows.WindowSystemImpl.load(WindowSystemImpl.java:81)
	at org.netbeans.core.GuiRunLevel$InitWinSys.run(GuiRunLevel.java:229)
	...
INFO [com.company.navi.map.MapTopComponent]: Creating MapTopComponent
INFO [com.company.navi.MainMap]: Constructing MainMap class instance
java.lang.Throwable
	at com.company.navi.MainMap.<init>(MainMap.java:277)
	at com.company.navi.map.MapTopComponent.initComponents(MapTopComponent.java:72)
	at com.company.navi.map.MapTopComponent.<init>(MapTopComponent.java:45)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
	at org.netbeans.modules.settings.convertors.XMLSettingsSupport.newInstance(XMLSettingsSupport.java:100)
	at org.netbeans.modules.settings.convertors.XMLPropertiesConvertor.defaultInstanceCreate(XMLPropertiesConvertor.java:228)
	at org.netbeans.modules.settings.convertors.XMLPropertiesConvertor.read(XMLPropertiesConvertor.java:99)
	at org.netbeans.modules.settings.InstanceProvider$InstanceCookieImpl.instanceCreate(InstanceProvider.java:317)
	at org.netbeans.core.windows.persistence.PersistenceManager.getTopComponentPersistentForID(PersistenceManager.java:571)
	at org.netbeans.core.windows.persistence.PersistenceManager.getTopComponentForID(PersistenceManager.java:681)
	at org.netbeans.core.windows.PersistenceHandler.getTopComponentForID(PersistenceHandler.java:478)
	at org.netbeans.core.windows.WindowManagerImpl.getTopComponentForID(WindowManagerImpl.java:962)
	at org.netbeans.core.windows.model.TopComponentSubModel.getTopComponent(TopComponentSubModel.java:378)
	at org.netbeans.core.windows.model.TopComponentSubModel.getTopComponents(TopComponentSubModel.java:90)
	at org.netbeans.core.windows.model.DefaultModeModel.getTopComponents(DefaultModeModel.java:356)
	at org.netbeans.core.windows.model.DefaultModel.getModeTopComponents(DefaultModel.java:944)
	at org.netbeans.core.windows.Central.getModeTopComponents(Central.java:1577)
	at org.netbeans.core.windows.ModeImpl.getTopComponents(ModeImpl.java:220)
	at org.netbeans.core.windows.model.DefaultModel.isModePermanent(DefaultModel.java:874)
	at org.netbeans.core.windows.Central.isModePermanent(Central.java:1556)
	at org.netbeans.core.windows.ModeImpl.isPermanent(ModeImpl.java:422)
	at org.netbeans.core.windows.PersistenceHandler.getConfigFromMode(PersistenceHandler.java:730)
	at org.netbeans.core.windows.PersistenceHandler.getConfig(PersistenceHandler.java:626)
	at org.netbeans.core.windows.PersistenceHandler.save(PersistenceHandler.java:314)
	at org.netbeans.core.windows.WindowSystemImpl.save(WindowSystemImpl.java:93)
	at org.netbeans.core.NbLifeExit.doStopInfra(NbLifeExit.java:150)
	at org.netbeans.core.NbLifeExit.run(NbLifeExit.java:97)
	at org.netbeans.core.startup.ModuleSystem$2.run(ModuleSystem.java:343)
	at org.netbeans.ModuleManager.shutDownAsync(ModuleManager.java:1991)
	at org.netbeans.core.startup.ModuleSystem.shutDownAsync(ModuleSystem.java:349)
	at org.netbeans.core.NbLifeExit.doExit(NbLifeExit.java:137)
	at org.netbeans.core.NbLifeExit.run(NbLifeExit.java:94)
	at org.openide.util.Mutex.doEvent(Mutex.java:1356)
	at org.openide.util.Mutex.readAccess(Mutex.java:355)
	at org.netbeans.core.NbLifecycleManager.exit(NbLifecycleManager.java:213)
	at org.netbeans.core.NbLifecycleManager.exit(NbLifecycleManager.java:119)
	at org.netbeans.core.windows.view.ui.MainWindow$9.windowClosing(MainWindow.java:525)
	at java.awt.AWTEventMulticaster.windowClosing(AWTEventMulticaster.java:349)
	...


@ConvertAsProperties(
        dtd = "-//com.company.navi.map//Map//EN",
        autostore = false)
@TopComponent.Description(
        preferredID = "MapTopComponent",
        iconBase = "com/company/navi/map/maps.png",
        persistenceType = TopComponent.PERSISTENCE_ALWAYS)
@TopComponent.Registration(mode = "editor", openAtStartup = true)
@ActionID(category = "Window", id = "com.company.navi.map.MapTopComponent")
@ActionReferences({
    @ActionReference(path = "Menu/Window", position = 1),
    @ActionReference(path = "Toolbars/File", position = 1)})
@TopComponent.OpenActionRegistration(
        displayName = "#CTL_MapAction")
public final class MapTopComponent extends TopComponent {

    private static final Logger logger = Logger.getLogger(MapTopComponent.class.getName());
    private MainMap main;

    public MapTopComponent() {
        logger.info("Creating MapTopComponent");
        initComponents();
        setName(NbBundle.getMessage(MapTopComponent.class, "CTL_MapTopComponent"));
        setToolTipText(NbBundle.getMessage(MapTopComponent.class, "HINT_MapTopComponent"));
    }

    private void initComponents() {
        main = new MainMap();
    }

public final class ChatTopComponent extends TopComponent {
    public ChatTopComponent() {
        TopComponent tc = WindowManager.getDefault().findTopComponent("MapTopComponent");
    }
}