--- a/autoupdate.pluginimporter/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/autoupdate.pluginimporter/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -1,7 +1,6 @@ Manifest-Version: 1.0 AutoUpdate-Show-In-Client: false OpenIDE-Module: org.netbeans.modules.autoupdate.pluginimporter -OpenIDE-Module-Install: org/netbeans/modules/autoupdate/pluginimporter/Installer.class OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/autoupdate/pluginimporter/Bundle.properties OpenIDE-Module-Specification-Version: 1.4 --- a/autoupdate.pluginimporter/src/org/netbeans/modules/autoupdate/pluginimporter/Installer.java Tue Mar 27 20:33:08 2012 -0400 +++ a/autoupdate.pluginimporter/src/org/netbeans/modules/autoupdate/pluginimporter/Installer.java Wed Mar 28 09:22:06 2012 -0400 @@ -54,16 +54,16 @@ import org.netbeans.api.autoupdate.UpdateUnit; import org.netbeans.api.autoupdate.UpdateUnitProvider; import org.netbeans.api.autoupdate.UpdateUnitProviderFactory; -import org.openide.modules.ModuleInstall; import org.openide.util.NbPreferences; import org.openide.util.RequestProcessor; -import org.openide.windows.WindowManager; +import org.openide.windows.OnShowing; /** * Manages a module's lifecycle. Remember that an installer is optional and * often not needed at all. */ -public class Installer extends ModuleInstall { +@OnShowing +public class Installer implements Runnable { public static final String KEY_IMPORT_FROM = "import-from"; public static final String CODE_NAME = "ClusterUpdateProvider"; @@ -78,7 +78,7 @@ private static final String IMPORTED = "imported"; // NOI18N @Override - public void restored () { + public void run() { // don't try to invoke at all in these special cases if (Boolean.getBoolean("netbeans.full.hack") || Boolean.getBoolean("netbeans.close")) { // NOI18N return; @@ -88,14 +88,7 @@ Preferences au_pref = NbPreferences.root ().node ("/org/netbeans/modules/autoupdate"); // NOI18N au_pref.node (Installer.CODE_NAME + Installer.REMOVED).putBoolean (Installer.REMOVED, true); - // install plugin importer when UI is ready (main window shown) - WindowManager.getDefault ().invokeWhenUIReady (new Runnable () { - - @Override - public void run () { - RequestProcessor.getDefault ().post (doCheck, getImportDelay ()); // XXX: Need to wait until UC downloaded&parsed - } - }); + RequestProcessor.getDefault ().post (doCheck, getImportDelay ()); // XXX: Need to wait until UC downloaded&parsed } private Runnable doCheck = new Runnable () { --- a/autoupdate.ui/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/autoupdate.ui/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -1,6 +1,5 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.modules.autoupdate.ui -OpenIDE-Module-Install: org/netbeans/modules/autoupdate/ui/actions/Installer.class OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/autoupdate/ui/resources/Bundle.properties OpenIDE-Module-Specification-Version: 1.26 AutoUpdate-Show-In-Client: false --- a/autoupdate.ui/src/org/netbeans/modules/autoupdate/ui/actions/Installer.java Tue Mar 27 20:33:08 2012 -0400 +++ a/autoupdate.ui/src/org/netbeans/modules/autoupdate/ui/actions/Installer.java Wed Mar 28 09:22:06 2012 -0400 @@ -44,18 +44,18 @@ package org.netbeans.modules.autoupdate.ui.actions; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStart; import org.openide.util.RequestProcessor; /** * Manages a module's lifecycle. Remember that an installer is optional and * often not needed at all. */ -public class Installer extends ModuleInstall { +@OnStart +public class Installer implements Runnable { public static final RequestProcessor RP = new RequestProcessor("AutoUpdate-UI"); // NOI18N - @Override - public void restored () { + public void run() { // don't try to invoke at all in these special cases if (Boolean.getBoolean("netbeans.full.hack") || Boolean.getBoolean("netbeans.close")) { // NOI18N return; --- a/db/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/db/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -1,6 +1,5 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.modules.db/1 -OpenIDE-Module-Install: org/netbeans/modules/db/DatabaseModule.class OpenIDE-Module-Implementation-Version: 30 OpenIDE-Module-Layer: org/netbeans/modules/db/resources/mf-layer.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/db/resources/Bundle.properties --- a/db/src/org/netbeans/modules/db/DatabaseModule.java Tue Mar 27 20:33:08 2012 -0400 +++ a/db/src/org/netbeans/modules/db/DatabaseModule.java Wed Mar 28 09:22:06 2012 -0400 @@ -51,9 +51,10 @@ import org.netbeans.modules.db.explorer.DatabaseConnection; import org.netbeans.modules.db.runtime.DatabaseRuntimeManager; import org.netbeans.spi.db.explorer.DatabaseRuntime; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStop; -public class DatabaseModule extends ModuleInstall { +@OnStop +public class DatabaseModule implements Runnable { public static final String IDENTIFIER_MYSQL = "MySQL"; // NOI18N public static final String IDENTIFIER_ORACLE = "Oracle"; // NOI18N @@ -61,7 +62,7 @@ public static final String IDENTIFIER_ORACLE_OCI_DRIVER = "OCI"; // NOI18N @Override - public void close () { + public void run() { // XXX this method is called in the event thread and could take long // to execute --- a/editor.completion/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/editor.completion/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -1,7 +1,6 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.modules.editor.completion/1 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/editor/completion/Bundle.properties -OpenIDE-Module-Install: org/netbeans/modules/editor/completion/CompletionModule.class OpenIDE-Module-Layer: org/netbeans/modules/editor/completion/resources/layer.xml OpenIDE-Module-Implementation-Version: 1 AutoUpdate-Show-In-Client: false --- a/editor.completion/src/org/netbeans/modules/editor/completion/CompletionModule.java Tue Mar 27 20:33:08 2012 -0400 +++ a/editor.completion/src/org/netbeans/modules/editor/completion/CompletionModule.java Wed Mar 28 09:22:06 2012 -0400 @@ -44,15 +44,16 @@ package org.netbeans.modules.editor.completion; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStart; /** * * @author Dusan Balek */ -public class CompletionModule extends ModuleInstall { - - public void restored() { +@OnStart +public class CompletionModule implements Runnable { + @Override + public void run() { CompletionImpl.get(); } } --- a/form.j2ee/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/form.j2ee/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -1,6 +1,5 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.modules.form.j2ee/0 -OpenIDE-Module-Install: org/netbeans/modules/form/j2ee/Installer.class OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/form/j2ee/Bundle2.properties OpenIDE-Module-Layer: org/netbeans/modules/form/j2ee/resources/layer.xml OpenIDE-Module-Implementation-Version: 1 --- a/form.j2ee/src/org/netbeans/modules/form/j2ee/Installer.java Tue Mar 27 20:33:08 2012 -0400 +++ a/form.j2ee/src/org/netbeans/modules/form/j2ee/Installer.java Wed Mar 28 09:22:06 2012 -0400 @@ -45,20 +45,21 @@ import org.netbeans.modules.form.CreationDescriptor; import org.netbeans.modules.form.CreationFactory; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStart; /** * Management of form/j2ee module's lifecycle. * * @author Jan Stola */ -public class Installer extends ModuleInstall { +@OnStart +public class Installer implements Runnable { /** * Registers creation descriptors. */ @Override - public void restored() { + public void run() { // Install creator for EntityManager CreationDescriptor cd = new CreationDescriptor() { @Override --- a/glassfish.common/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/glassfish.common/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -1,6 +1,5 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.modules.glassfish.common/0 -OpenIDE-Module-Install: org/netbeans/modules/glassfish/common/Installer.class OpenIDE-Module-Layer: org/netbeans/modules/glassfish/common/layer.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/glassfish/common/Bundle.properties OpenIDE-Module-Specification-Version: 1.21 --- a/glassfish.common/src/org/netbeans/modules/glassfish/common/Installer.java Tue Mar 27 20:33:08 2012 -0400 +++ a/glassfish.common/src/org/netbeans/modules/glassfish/common/Installer.java Wed Mar 28 09:22:06 2012 -0400 @@ -41,7 +41,7 @@ */ package org.netbeans.modules.glassfish.common; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStop; /** * Manages a module's lifecycle. Remember that an installer is optional and @@ -49,12 +49,10 @@ * * @auther Peter Williams */ -public class Installer extends ModuleInstall { - +@OnStop +public class Installer implements Runnable { @Override - public void close() { - super.close(); - + public void run() { // Send a shutdown message to any V3 server instances we started. if (GlassfishInstanceProvider.initialized()) { for(GlassfishInstanceProvider provider: GlassfishInstanceProvider.getProviders(false)) { --- a/httpserver/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/httpserver/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -2,7 +2,6 @@ OpenIDE-Module: org.netbeans.modules.httpserver/2 OpenIDE-Module-Implementation-Version: 42 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/httpserver/Bundle.properties -OpenIDE-Module-Install: org/netbeans/modules/httpserver/HttpServerModule.class OpenIDE-Module-Layer: org/netbeans/modules/httpserver/layer.xml OpenIDE-Module-Provides: org.openide.util.HttpServer$Impl AutoUpdate-Show-In-Client: false --- a/httpserver/src/org/netbeans/modules/httpserver/HttpServerModule.java Tue Mar 27 20:33:08 2012 -0400 +++ a/httpserver/src/org/netbeans/modules/httpserver/HttpServerModule.java Wed Mar 28 09:22:06 2012 -0400 @@ -44,7 +44,6 @@ package org.netbeans.modules.httpserver; -import java.io.Externalizable; import java.io.File; import java.net.MalformedURLException; import java.util.Enumeration; @@ -60,7 +59,7 @@ import org.apache.tomcat.logging.TomcatLogger; import org.apache.tomcat.service.PoolTcpConnector; import org.openide.filesystems.FileUtil; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStop; import org.openide.util.Lookup; import org.openide.util.LookupEvent; import org.openide.util.LookupListener; @@ -72,7 +71,8 @@ * * @author Petr Jiricka */ -public class HttpServerModule extends ModuleInstall implements Externalizable { +@OnStop +public class HttpServerModule implements Runnable { private static ContextManager server; @@ -84,7 +84,8 @@ private static boolean inSetRunning = false; /** Module is being closed. */ - public void close () { + @Override + public void run() { // stop the server, don't set the running status synchronized (HttpServerSettings.httpLock ()) { stopHTTPServer(); --- a/hudson/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/hudson/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -1,6 +1,5 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.modules.hudson -OpenIDE-Module-Install: org/netbeans/modules/hudson/Installer.class OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/hudson/Bundle.properties OpenIDE-Module-Layer: org/netbeans/modules/hudson/layer.xml OpenIDE-Module-Specification-Version: 1.18 --- a/hudson/src/org/netbeans/modules/hudson/Installer.java Tue Mar 27 20:33:08 2012 -0400 +++ a/hudson/src/org/netbeans/modules/hudson/Installer.java Wed Mar 28 09:22:06 2012 -0400 @@ -46,26 +46,31 @@ import java.util.prefs.BackingStoreException; import org.netbeans.modules.hudson.impl.HudsonManagerImpl; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStop; import org.openide.util.Exceptions; import org.openide.util.NbPreferences; -import org.openide.windows.WindowManager; +import org.openide.windows.OnShowing; -public class Installer extends ModuleInstall implements Runnable { +@OnShowing +public class Installer implements Runnable { - public @Override void restored() { + public @Override void run() { if (active()) { - WindowManager.getDefault().invokeWhenUIReady(this); + init(); } } - public void run() { + private void init() { HudsonManagerImpl.getDefault().getInstances(); } - public @Override void uninstalled() { - if (active()) { - HudsonManagerImpl.getDefault().terminate(); + @OnStop + public static final class Down implements Runnable { + @Override + public void run() { + if (active()) { + HudsonManagerImpl.getDefault().terminate(); + } } } --- a/i18n.form/src/org/netbeans/modules/i18n/form/I18nFormCrossModule.java Tue Mar 27 20:33:08 2012 -0400 +++ a/i18n.form/src/org/netbeans/modules/i18n/form/I18nFormCrossModule.java Wed Mar 28 09:22:06 2012 -0400 @@ -45,8 +45,7 @@ package org.netbeans.modules.i18n.form; import org.netbeans.modules.form.FormPropertyEditorManager; -import org.netbeans.modules.i18n.I18nSupport; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStart; /** * Installation class for i18n to form cross dependency module. @@ -54,15 +53,11 @@ * * @author Peter Zavadsky */ -public class I18nFormCrossModule extends ModuleInstall { - +@OnStart +public class I18nFormCrossModule implements Runnable { /** Registers property editor in form module and factory in i18n module. */ - public void restored() { - registerFormPropertyEditor(); - } - - /** Registers FormI18nStringEditor form property editor to form module. */ - private void registerFormPropertyEditor() { + @Override + public void run() { Class newEditorClass = FormI18nStringEditor.class; Class newEditorClassInteger = FormI18nIntegerEditor.class; Class newEditorClassMnemonic = FormI18nMnemonicEditor.class; --- a/j2eeserver/src/org/netbeans/modules/j2ee/deployment/impl/Install.java Tue Mar 27 20:33:08 2012 -0400 +++ a/j2eeserver/src/org/netbeans/modules/j2ee/deployment/impl/Install.java Wed Mar 28 09:22:06 2012 -0400 @@ -46,18 +46,15 @@ import java.util.Collection; import java.util.Iterator; +import org.openide.modules.OnStop; /** * @author nn136682 */ -public class Install extends org.openide.modules.ModuleInstall { - - /** Creates a new instance of Install */ - public Install() { - } - - @Override public void close() { +@OnStop +public class Install implements Runnable { + @Override public void run() { if (ServerRegistry.wasInitialized ()) { Collection instances = ServerRegistry.getInstance().getInstances(); for (Iterator i=instances.iterator(); i.hasNext();) { --- a/java.j2seplatform/src/org/netbeans/modules/java/j2seplatform/J2SEPlatformModule.java Tue Mar 27 20:33:08 2012 -0400 +++ a/java.j2seplatform/src/org/netbeans/modules/java/j2seplatform/J2SEPlatformModule.java Wed Mar 28 09:22:06 2012 -0400 @@ -49,32 +49,26 @@ import org.openide.cookies.InstanceCookie; import org.openide.filesystems.FileObject; import org.openide.loaders.DataObject; -import org.openide.modules.ModuleInstall; import org.openide.util.Exceptions; import org.netbeans.api.project.ProjectManager; import org.openide.filesystems.FileUtil; +import org.openide.modules.OnStart; -public class J2SEPlatformModule extends ModuleInstall { +@OnStart +public class J2SEPlatformModule implements Runnable { private static final String DEFAULT_PLATFORM = "Services/Platforms/org-netbeans-api-java-Platform/default_platform.xml"; //NOI18N - public void restored() { - super.restored(); - ProjectManager.mutex().postWriteRequest( - new Runnable () { - public void run () { - recoverDefaultPlatform (); - } - } - ); - + @Override + public void run() { + if (ProjectManager.mutex().isWriteAccess()) { + recoverDefaultPlatform(); + } else { + ProjectManager.mutex().postWriteRequest(this); + } } - - - - private static void recoverDefaultPlatform () { final FileObject defaultPlatform = FileUtil.getConfigFile(DEFAULT_PLATFORM); if (defaultPlatform != null) { --- a/java.source/src/org/netbeans/modules/java/source/JBrowseModule.java Tue Mar 27 20:33:08 2012 -0400 +++ a/java.source/src/org/netbeans/modules/java/source/JBrowseModule.java Wed Mar 28 09:22:06 2012 -0400 @@ -45,22 +45,16 @@ package org.netbeans.modules.java.source; import org.netbeans.modules.java.source.usages.ClassIndexManager; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStop; /** * * @author Petr Hrebejk * @author Tomas Zezula */ -public class JBrowseModule extends ModuleInstall { - - /** Creates a new instance of JBrowseModule */ - public JBrowseModule() { - } - - - public @Override void close () { - super.close(); +@OnStop +public class JBrowseModule implements Runnable { + public @Override void run() { ClassIndexManager.getDefault().close(); } } --- a/java.sourceui/src/org/netbeans/modules/java/source/ui/JavaSourceUIModule.java Tue Mar 27 20:33:08 2012 -0400 +++ a/java.sourceui/src/org/netbeans/modules/java/source/ui/JavaSourceUIModule.java Wed Mar 28 09:22:06 2012 -0400 @@ -41,17 +41,17 @@ */ package org.netbeans.modules.java.source.ui; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStart; /** * Activates the GPR Listener that prepares 'fast index' * * @author sdedic */ -public class JavaSourceUIModule extends ModuleInstall { +@OnStart +public class JavaSourceUIModule implements Runnable { @Override - public void restored() { - super.restored(); + public void run() { // attach to GPR OpenProjectFastIndex.getDefault(); } --- a/javadoc/src/org/netbeans/modules/javadoc/JavadocModule.java Tue Mar 27 20:33:08 2012 -0400 +++ a/javadoc/src/org/netbeans/modules/javadoc/JavadocModule.java Wed Mar 28 09:22:06 2012 -0400 @@ -49,14 +49,15 @@ import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStop; import org.openide.windows.TopComponent; /** * Class for initializing Javadoc module on IDE startup. * @author Petr Hrebejk */ -public final class JavadocModule extends ModuleInstall { +@OnStop +public final class JavadocModule implements Runnable { private static Collection/**/ floatingTopComponents; @@ -72,7 +73,8 @@ floatingTopComponents.remove(tc); } - public void uninstalled() { + @Override + public void run() { Collection c; synchronized (JavadocModule.class) { if (floatingTopComponents != null) { --- a/javascript.editing/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/javascript.editing/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -1,6 +1,5 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.modules.javascript.editing/1 -OpenIDE-Module-Install: org/netbeans/modules/javascript/editing/Installer.class OpenIDE-Module-Layer: org/netbeans/modules/javascript/editing/layer.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/javascript/editing/Bundle.properties OpenIDE-Module-Specification-Version: 0.105 --- a/javascript.editing/src/org/netbeans/modules/javascript/editing/Installer.java Tue Mar 27 20:33:08 2012 -0400 +++ a/javascript.editing/src/org/netbeans/modules/javascript/editing/Installer.java Wed Mar 28 09:22:06 2012 -0400 @@ -43,16 +43,12 @@ import org.netbeans.api.java.classpath.ClassPath; import org.netbeans.api.java.classpath.GlobalPathRegistry; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStop; -/** - * Manages a module's lifecycle. Remember that an installer is optional and - * often not needed at all. - */ -public class Installer extends ModuleInstall { - +@OnStop +public class Installer implements Runnable { @Override - public void uninstalled() { + public void run() { GlobalPathRegistry.getDefault().unregister(JsClassPathProvider.BOOT_CP, new ClassPath[] { JsClassPathProvider.getBootClassPath() }); } --- a/localhistory/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/localhistory/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -1,5 +1,4 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.modules.localhistory -OpenIDE-Module-Install: org/netbeans/modules/localhistory/ModuleLifecycleManager.class OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/localhistory/Bundle.properties OpenIDE-Module-Specification-Version: 1.18 --- a/localhistory/src/org/netbeans/modules/localhistory/ModuleLifecycleManager.java Tue Mar 27 20:33:08 2012 -0400 +++ a/localhistory/src/org/netbeans/modules/localhistory/ModuleLifecycleManager.java Wed Mar 28 09:22:06 2012 -0400 @@ -43,14 +43,16 @@ */ package org.netbeans.modules.localhistory; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStart; /** * * @author Tomas Stupka */ -public class ModuleLifecycleManager extends ModuleInstall { - public void restored() { +@OnStart +public class ModuleLifecycleManager implements Runnable { + @Override + public void run() { LocalHistory.getInstance().init(); } } --- a/masterfs/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/masterfs/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -1,6 +1,5 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.modules.masterfs/2 -OpenIDE-Module-Install: org/netbeans/modules/masterfs/Installer.class OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/masterfs/resources/Bundle.properties OpenIDE-Module-Specification-Version: 2.37 OpenIDE-Module-Recommends: org.netbeans.modules.masterfs.providers.Notifier --- a/masterfs/src/org/netbeans/modules/masterfs/Installer.java Tue Mar 27 20:33:08 2012 -0400 +++ a/masterfs/src/org/netbeans/modules/masterfs/Installer.java Wed Mar 28 09:22:06 2012 -0400 @@ -42,23 +42,23 @@ package org.netbeans.modules.masterfs; import org.netbeans.modules.masterfs.watcher.Watcher; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStart; +import org.openide.modules.OnStop; /** Shutdown the watcher system. */ -public final class Installer extends ModuleInstall { +@OnStart +public final class Installer implements Runnable { @Override - public void restored() { + public void run() { Watcher.isEnabled(); } - @Override - public void uninstalled() { - close(); - } - - @Override - public void close() { - Watcher.shutdown(); + @OnStop + public static final class Down implements Runnable { + @Override + public void run() { + Watcher.shutdown(); + } } } --- a/maven.indexer/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/maven.indexer/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -1,5 +1,4 @@ Manifest-Version: 1.0 -OpenIDE-Module-Install: org/netbeans/modules/maven/indexer/Installer.class OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/maven/indexer/Bundle.properties AutoUpdate-Show-In-Client: false OpenIDE-Module-Specification-Version: 2.9 --- a/maven.indexer/src/org/netbeans/modules/maven/indexer/Installer.java Tue Mar 27 20:33:08 2012 -0400 +++ a/maven.indexer/src/org/netbeans/modules/maven/indexer/Installer.java Wed Mar 28 09:22:06 2012 -0400 @@ -45,13 +45,14 @@ import java.util.logging.Level; import java.util.logging.Logger; import org.netbeans.modules.maven.indexer.spi.RepositoryIndexerImplementation; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStop; import org.openide.util.Lookup; -public class Installer extends ModuleInstall { +@OnStop +public class Installer implements Runnable { @SuppressWarnings("deprecation") - public @Override void close() { + public @Override void run() { Logger LOG = Logger.getLogger(Installer.class.getName()); if (!Cancellation.cancelAll()) { // Cf. #188883. Hard to kill HTTP connections. --- a/mobility.cldcplatform/src/org/netbeans/modules/mobility/cldcplatform/startup/DefaultEmulatorInstall.java Tue Mar 27 20:33:08 2012 -0400 +++ a/mobility.cldcplatform/src/org/netbeans/modules/mobility/cldcplatform/startup/DefaultEmulatorInstall.java Wed Mar 28 09:22:06 2012 -0400 @@ -70,7 +70,7 @@ import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; import org.openide.modules.InstalledFileLocator; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStart; import org.openide.util.RequestProcessor; import org.openide.xml.XMLUtil; import org.w3c.dom.Attr; @@ -81,11 +81,13 @@ /** * @author David Kaspar */ -public class DefaultEmulatorInstall extends ModuleInstall { +@OnStart +public class DefaultEmulatorInstall implements Runnable { static private final String EMU_MARKER="emu_installed.mark"; static private final String DSC_MARKER="dsc_installed.mark"; - public void restored() { + @Override + public void run() { new LibraryConverter(); installEmulators(); installDescriptors(); --- a/openide.text/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/openide.text/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -1,7 +1,6 @@ Manifest-Version: 1.0 OpenIDE-Module: org.openide.text OpenIDE-Module-Implementation-Version: 1 -OpenIDE-Module-Install: org/netbeans/modules/openide/text/Installer.class OpenIDE-Module-Localizing-Bundle: org/openide/text/Bundle.properties AutoUpdate-Essential-Module: true --- a/openide.text/src/org/netbeans/modules/openide/text/Installer.java Tue Mar 27 20:33:08 2012 -0400 +++ a/openide.text/src/org/netbeans/modules/openide/text/Installer.java Wed Mar 28 09:22:06 2012 -0400 @@ -47,7 +47,7 @@ import java.util.logging.Level; import java.util.logging.LogRecord; import java.util.logging.Logger; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStop; /** * Log number of editors opened during IDE session by mime type. @@ -55,7 +55,8 @@ * * @author Marek Slama */ -public class Installer extends ModuleInstall { +@OnStop +public class Installer implements Runnable { private static Map mimeTypes = new HashMap(); @@ -71,7 +72,7 @@ } @Override - public void close() { + public void run() { for (String s : mimeTypes.keySet()) { Logger logger = Logger.getLogger("org.netbeans.ui.metrics.editor"); //NOI18N LogRecord rec = new LogRecord(Level.INFO, "USG_EDITOR_MIME_TYPE"); //NOI18N --- a/profiler.drilldown/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/profiler.drilldown/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -1,7 +1,6 @@ Manifest-Version: 1.0 AutoUpdate-Show-In-Client: false OpenIDE-Module: org.netbeans.modules.profiler.drilldown/1 -OpenIDE-Module-Install: org/netbeans/modules/profiler/drilldown/Installer.class OpenIDE-Module-Layer: org/netbeans/modules/profiler/drilldown/layer.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/profiler/drilldown/Bundle.properties OpenIDE-Module-Specification-Version: 1.2 --- a/profiler.drilldown/src/org/netbeans/modules/profiler/drilldown/Installer.java Tue Mar 27 20:33:08 2012 -0400 +++ a/profiler.drilldown/src/org/netbeans/modules/profiler/drilldown/Installer.java Wed Mar 28 09:22:06 2012 -0400 @@ -41,16 +41,16 @@ */ package org.netbeans.modules.profiler.drilldown; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStop; /** * Manages a module's lifecycle. Remember that an installer is optional and * often not needed at all. */ -public class Installer extends ModuleInstall { - +@OnStop +public class Installer implements Runnable { @Override - public void uninstalled() { + public void run() { DrillDownWindow.closeIfOpened(); } } --- a/profiler.ppoints/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/profiler.ppoints/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -1,6 +1,5 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.modules.profiler.ppoints -OpenIDE-Module-Install: org/netbeans/modules/profiler/ppoints/Installer.class OpenIDE-Module-Layer: org/netbeans/modules/profiler/ppoints/layer.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/profiler/ppoints/Bundle.properties OpenIDE-Module-Specification-Version: 1.2 --- a/profiler.ppoints/src/org/netbeans/modules/profiler/ppoints/Installer.java Tue Mar 27 20:33:08 2012 -0400 +++ a/profiler.ppoints/src/org/netbeans/modules/profiler/ppoints/Installer.java Wed Mar 28 09:22:06 2012 -0400 @@ -41,19 +41,16 @@ */ package org.netbeans.modules.profiler.ppoints; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStop; /** * Manages a module's lifecycle. Remember that an installer is optional and * often not needed at all. */ -public class Installer extends ModuleInstall { - +@OnStop +public class Installer implements Runnable { @Override - public boolean closing() { + public void run() { ProfilingPointsManager.getDefault().ideClosing(); // TODO: dirty profiling points should be persisted on document save! - return true; } - - } --- a/project.ant/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/project.ant/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -3,5 +3,4 @@ OpenIDE-Module-Specification-Version: 1.47 OpenIDE-Module-Layer: org/netbeans/modules/project/ant/resources/mf-layer.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/project/ant/Bundle.properties -OpenIDE-Module-Install: org/netbeans/modules/project/ant/AntProjectModule.class --- a/project.ant/src/org/netbeans/modules/project/ant/AntProjectModule.java Tue Mar 27 20:33:08 2012 -0400 +++ a/project.ant/src/org/netbeans/modules/project/ant/AntProjectModule.java Wed Mar 28 09:22:06 2012 -0400 @@ -63,7 +63,7 @@ import org.openide.DialogDisplayer; import org.openide.LifecycleManager; import org.openide.NotifyDescriptor; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStart; import org.openide.util.NbBundle; import org.openide.windows.WindowManager; import org.openide.xml.XMLUtil; @@ -75,11 +75,9 @@ * @author Jan Lahoda * @see "issue #70130" */ -public class AntProjectModule extends ModuleInstall { - - public @Override void restored() { - super.restored(); - +@OnStart +public class AntProjectModule implements Runnable { + public @Override void run() { if (Boolean.getBoolean("netbeans.do.not.check.xalan")) // NOI18N return ; --- a/project.libraries/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/project.libraries/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -1,6 +1,5 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.modules.project.libraries/1 -OpenIDE-Module-Install: org/netbeans/modules/project/libraries/LibrariesModule.class OpenIDE-Module-Layer: org/netbeans/modules/project/libraries/resources/mf-layer.xml OpenIDE-Module-Specification-Version: 1.35 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/project/libraries/resources/Bundle.properties --- a/project.libraries/src/org/netbeans/modules/project/libraries/LibrariesModule.java Tue Mar 27 20:33:08 2012 -0400 +++ a/project.libraries/src/org/netbeans/modules/project/libraries/LibrariesModule.java Wed Mar 28 09:22:06 2012 -0400 @@ -43,9 +43,9 @@ */ package org.netbeans.modules.project.libraries; -import org.openide.modules.ModuleInstall; import org.openide.util.Lookup; import org.netbeans.spi.project.libraries.LibraryProvider; +import org.openide.modules.OnStart; /** * Ensures that all {@link LibraryProvider}s are actually loaded. @@ -54,14 +54,9 @@ * This needs to happen before any Ant build is run. * @author Tomas Zezula */ -public class LibrariesModule extends ModuleInstall { - - @Override public void restored() { - super.restored(); - this.initProviders(); - } - - private void initProviders () { +@OnStart +public class LibrariesModule implements Runnable { + @Override public void run() { for (LibraryProvider lp : Lookup.getDefault().lookupAll(LibraryProvider.class)) { lp.getLibraries(); } --- a/projectapi/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/projectapi/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -1,6 +1,5 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.modules.projectapi/1 -OpenIDE-Module-Install: org/netbeans/modules/projectapi/Installer.class OpenIDE-Module-Specification-Version: 1.43 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/projectapi/Bundle.properties OpenIDE-Module-Layer: org/netbeans/modules/projectapi/layer.xml --- a/projectapi/src/org/netbeans/modules/projectapi/Installer.java Tue Mar 27 20:33:08 2012 -0400 +++ a/projectapi/src/org/netbeans/modules/projectapi/Installer.java Wed Mar 28 09:22:06 2012 -0400 @@ -44,23 +44,27 @@ package org.netbeans.modules.projectapi; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStart; +import org.openide.modules.OnStop; /** * Manages a module's lifecycle. Remember that an installer is optional and * often not needed at all. */ -public class Installer extends ModuleInstall { - +@OnStart +public class Installer implements Runnable { @Override - public void restored() { + public void run() { //#125582 SimpleFileOwnerQueryImplementation.deserialize(); } - @Override - public void close() { - //#125582 - SimpleFileOwnerQueryImplementation.serialize(); + @OnStop + public static final class Down implements Runnable { + @Override + public void run() { + //#125582 + SimpleFileOwnerQueryImplementation.serialize(); + } } } --- a/projectui/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/projectui/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -1,6 +1,5 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.modules.projectui -OpenIDE-Module-Install: org/netbeans/modules/project/ui/ProjectUiModule.class OpenIDE-Module-Layer: org/netbeans/modules/project/ui/resources/layer.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/project/ui/Bundle.properties OpenIDE-Module-Provides: org.netbeans.modules.project.uiapi.ActionsFactory, org.netbeans.modules.project.uiapi.OpenProjectsTrampoline, org.netbeans.modules.project.uiapi.ProjectChooserFactory --- a/projectui/src/org/netbeans/modules/project/ui/ProjectUiModule.java Tue Mar 27 20:33:08 2012 -0400 +++ a/projectui/src/org/netbeans/modules/project/ui/ProjectUiModule.java Wed Mar 28 09:22:06 2012 -0400 @@ -48,28 +48,33 @@ import java.io.IOException; import org.netbeans.api.project.ProjectManager; import org.openide.ErrorManager; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStop; +import org.openide.windows.OnShowing; /** * Startup and shutdown hooks for projectui module. * @author Jesse Glick */ -public class ProjectUiModule extends ModuleInstall { - - public void restored() { +@OnShowing +public class ProjectUiModule implements Runnable { + @Override + public void run() { if (!GraphicsEnvironment.isHeadless()) { Hacks.keepCurrentProjectNameUpdated(); } } - public void close() { - OpenProjectList.shutdown(); - // Just in case something was modified outside the usual customizer dialog: - try { - ProjectManager.getDefault().saveAllProjects(); - } catch (IOException e) { - ErrorManager.getDefault().notify(e); + @OnStop + public static final class Down implements Runnable { + @Override + public void run() { + OpenProjectList.shutdown(); + // Just in case something was modified outside the usual customizer dialog: + try { + ProjectManager.getDefault().saveAllProjects(); + } catch (IOException e) { + ErrorManager.getDefault().notify(e); + } } } - } --- a/properties.syntax/src/org/netbeans/modules/properties/syntax/RestoreColoring.java Tue Mar 27 20:33:08 2012 -0400 +++ a/properties.syntax/src/org/netbeans/modules/properties/syntax/RestoreColoring.java Wed Mar 28 09:22:06 2012 -0400 @@ -56,6 +56,7 @@ * * @author Petr Jiricka, Libor Kramolis, Jesse Glick */ +// XXX: Rewrite LocalizerSupport to obtain the registration via Lookup public class RestoreColoring extends ModuleInstall { /** Localizer passed to editor. */ --- a/spi.debugger.ui/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/spi.debugger.ui/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -4,4 +4,3 @@ OpenIDE-Module-Layer: org/netbeans/modules/debugger/resources/mf-layer.xml OpenIDE-Module-Specification-Version: 2.30 OpenIDE-Module-Provides: org.netbeans.spi.debugger.ui -OpenIDE-Module-Install: org/netbeans/modules/debugger/ui/DebuggerModule.class --- a/spi.debugger.ui/src/org/netbeans/modules/debugger/ui/DebuggerModule.java Tue Mar 27 20:33:08 2012 -0400 +++ a/spi.debugger.ui/src/org/netbeans/modules/debugger/ui/DebuggerModule.java Wed Mar 28 09:22:06 2012 -0400 @@ -44,19 +44,18 @@ package org.netbeans.modules.debugger.ui; -import org.openide.modules.ModuleInstall; +import java.util.concurrent.Callable; +import org.openide.modules.OnStop; /** * * @author Martin Entlicher */ -public class DebuggerModule extends ModuleInstall { - - /** Creates a new instance of DebuggerModule */ - public DebuggerModule() { - } - - public boolean closing() { +@OnStop +public class DebuggerModule implements Callable { + /** called on closing */ + @Override + public Boolean call() { DebuggerManagerListener.closeDebuggerUI(); return true; } --- a/spi.editor.hints/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/spi.editor.hints/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -3,5 +3,4 @@ OpenIDE-Module-Implementation-Version: 7 OpenIDE-Module-Layer: org/netbeans/modules/editor/hints/resources/layer.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/editor/hints/resources/Bundle.properties -OpenIDE-Module-Install: org/netbeans/modules/editor/hints/HintsModule.class AutoUpdate-Show-In-Client: false --- a/spi.editor.hints/src/org/netbeans/modules/editor/hints/HintsModule.java Tue Mar 27 20:33:08 2012 -0400 +++ a/spi.editor.hints/src/org/netbeans/modules/editor/hints/HintsModule.java Wed Mar 28 09:22:06 2012 -0400 @@ -44,16 +44,17 @@ package org.netbeans.modules.editor.hints; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStart; /** * Module installation class for HintsModule. * * @author Jan Lahoda */ -public final class HintsModule extends ModuleInstall { - - public void restored () { +@OnStart +public final class HintsModule implements Runnable { + @Override + public void run() { //create HintsUI (which registers some listeners) HintsUI.getDefault(); } --- a/spi.palette/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/spi.palette/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -3,4 +3,3 @@ OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/palette/resources/Bundle.properties OpenIDE-Module-Specification-Version: 1.30 OpenIDE-Module-Layer: org/netbeans/modules/palette/resources/layer.xml -OpenIDE-Module-Install: org/netbeans/spi/palette/PaletteModule.class --- a/spi.palette/src/org/netbeans/spi/palette/PaletteModule.java Tue Mar 27 20:33:08 2012 -0400 +++ a/spi.palette/src/org/netbeans/spi/palette/PaletteModule.java Wed Mar 28 09:22:06 2012 -0400 @@ -44,29 +44,19 @@ package org.netbeans.spi.palette; -import org.openide.modules.ModuleInstall; -import org.openide.windows.WindowManager; +import org.openide.windows.OnShowing; /** * * @author S. Aubrecht * @since 1.10 */ -public class PaletteModule extends ModuleInstall { - - /** Creates a new instance of ModuleInstall */ - public PaletteModule() { - } - +@OnShowing +public class PaletteModule implements Runnable { @Override - public void restored() { - super.restored(); - WindowManager.getDefault().invokeWhenUIReady( new Runnable() { - public void run() { - //start listening to activated TopComponents and Nodes - //to see if palette window should be displayed - PaletteSwitch.getDefault().startListening(); - } - }); + public void run() { + //start listening to activated TopComponents and Nodes + //to see if palette window should be displayed + PaletteSwitch.getDefault().startListening(); } } --- a/subversion/src/org/netbeans/modules/subversion/ModuleLifecycleManager.java Tue Mar 27 20:33:08 2012 -0400 +++ a/subversion/src/org/netbeans/modules/subversion/ModuleLifecycleManager.java Wed Mar 28 09:22:06 2012 -0400 @@ -72,6 +72,7 @@ * @author Petr Kuzel * @author Maros Sandor */ +// XXX: No longer needed, I guess public final class ModuleLifecycleManager extends ModuleInstall implements ErrorHandler, EntityResolver { static final String [] vcsGenericModules = { --- a/timers/src/org/netbeans/modules/timers/Install.java Tue Mar 27 20:33:08 2012 -0400 +++ a/timers/src/org/netbeans/modules/timers/Install.java Wed Mar 28 09:22:06 2012 -0400 @@ -57,13 +57,14 @@ import org.netbeans.api.editor.EditorRegistry; import org.openide.filesystems.FileObject; import org.openide.loaders.DataObject; -import org.openide.modules.ModuleInstall; +import org.openide.windows.OnShowing; /** * * @author nenik */ -public class Install extends ModuleInstall { +@OnShowing +public class Install implements Runnable { static final boolean ENABLED; @@ -80,7 +81,7 @@ private static String INSTANCES = "Important instances"; - public @Override void restored() { + public @Override void run() { if (!ENABLED) { return ; } --- a/versioning.system.cvss/src/org/netbeans/modules/versioning/system/cvss/ModuleLifecycleManager.java Tue Mar 27 20:33:08 2012 -0400 +++ a/versioning.system.cvss/src/org/netbeans/modules/versioning/system/cvss/ModuleLifecycleManager.java Wed Mar 28 09:22:06 2012 -0400 @@ -73,6 +73,7 @@ * @author Petr Kuzel * @author Maros Sandor */ +// XXX: No longer needed I guess public final class ModuleLifecycleManager extends ModuleInstall implements ErrorHandler, EntityResolver { static final String [] vcsGenericModules = { --- a/webpreview/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/webpreview/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -1,7 +1,6 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.modules.webpreview/1 OpenIDE-Module-Implementation-Version: 1 -OpenIDE-Module-Install: org/netbeans/modules/webpreview/Installer.class OpenIDE-Module-Layer: org/netbeans/modules/webpreview/resources/layer.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/webpreview/resources/Bundle.properties --- a/webpreview/src/org/netbeans/modules/webpreview/Installer.java Tue Mar 27 20:33:08 2012 -0400 +++ a/webpreview/src/org/netbeans/modules/webpreview/Installer.java Wed Mar 28 09:22:06 2012 -0400 @@ -42,23 +42,27 @@ package org.netbeans.modules.webpreview; import org.netbeans.api.editor.EditorRegistry; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStart; +import org.openide.modules.OnStop; /** * Web Preview module install */ -public class Installer extends ModuleInstall { +@OnStart +public class Installer implements Runnable { @Override - public void restored() { + public void run() { EditorRegistry.addPropertyChangeListener(new WebPreviewControler()); } - @Override - public boolean closing() { - // we don't want the browser to open on IDE startup - WebPreviewTopComponent.findInstance().close(); - return super.closing(); + @OnStop + public static final class Down implements Runnable { + @Override + public void run() { + // we don't want the browser to open on IDE startup + WebPreviewTopComponent.findInstance().close(); + } } } --- a/websvc.jaxrpc/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/websvc.jaxrpc/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -1,6 +1,5 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.modules.websvc.jaxrpc -OpenIDE-Module-Install: org/netbeans/modules/websvc/jaxrpc/Installer.class OpenIDE-Module-Layer: org/netbeans/modules/websvc/jaxrpc/layer.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/websvc/jaxrpc/Bundle.properties OpenIDE-Module-Specification-Version: 1.1 --- a/websvc.jaxrpc/src/org/netbeans/modules/websvc/jaxrpc/Installer.java Tue Mar 27 20:33:08 2012 -0400 +++ a/websvc.jaxrpc/src/org/netbeans/modules/websvc/jaxrpc/Installer.java Wed Mar 28 09:22:06 2012 -0400 @@ -46,6 +46,7 @@ import java.io.File; import java.io.IOException; +import java.util.MissingResourceException; import org.netbeans.api.project.ProjectManager; import org.netbeans.modules.websvc.api.client.WebServicesClientSupport; import org.netbeans.spi.project.support.ant.EditableProperties; @@ -54,42 +55,43 @@ import org.openide.ErrorManager; import org.openide.NotifyDescriptor; import org.openide.modules.InstalledFileLocator; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStart; import org.openide.util.NbBundle; /** * @author Peter Williams */ -public class Installer extends ModuleInstall { - - public Installer() { - super(); +@OnStart +public class Installer implements Runnable { + @Override + public void run() { + if (ProjectManager.mutex().isWriteAccess()) { + init(); + } else { + ProjectManager.mutex().postWriteRequest(this); + } } - - public void restored() { - ProjectManager.mutex().postWriteRequest(new Runnable(){ - public void run() { - try { - EditableProperties ep = PropertyUtils.getGlobalProperties(); - boolean changed = false; - File wsclient_update = InstalledFileLocator.getDefault().locate("ant/extra/wsclientuptodate.jar", null, false); - if (wsclient_update == null) { - String msg = NbBundle.getMessage(Installer.class, "MSG_WSClientUpdateMissing"); - DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message(msg, NotifyDescriptor.ERROR_MESSAGE)); - } else { - String wsclient_update_old = ep.getProperty(WebServicesClientSupport.WSCLIENTUPTODATE_CLASSPATH); - if (wsclient_update_old == null || !wsclient_update_old.equals(wsclient_update.toString())) { - ep.setProperty(WebServicesClientSupport.WSCLIENTUPTODATE_CLASSPATH, wsclient_update.toString()); - changed = true; - } - } - if (changed) { - PropertyUtils.putGlobalProperties(ep); - } - } catch (IOException ioe) { - ErrorManager.getDefault().notify(ioe); + + private void init() throws MissingResourceException { + try { + EditableProperties ep = PropertyUtils.getGlobalProperties(); + boolean changed = false; + File wsclient_update = InstalledFileLocator.getDefault().locate("ant/extra/wsclientuptodate.jar", null, false); + if (wsclient_update == null) { + String msg = NbBundle.getMessage(Installer.class, "MSG_WSClientUpdateMissing"); + DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message(msg, NotifyDescriptor.ERROR_MESSAGE)); + } else { + String wsclient_update_old = ep.getProperty(WebServicesClientSupport.WSCLIENTUPTODATE_CLASSPATH); + if (wsclient_update_old == null || !wsclient_update_old.equals(wsclient_update.toString())) { + ep.setProperty(WebServicesClientSupport.WSCLIENTUPTODATE_CLASSPATH, wsclient_update.toString()); + changed = true; } } - }); + if (changed) { + PropertyUtils.putGlobalProperties(ep); + } + } catch (IOException ioe) { + ErrorManager.getDefault().notify(ioe); + } } } --- a/websvc.manager/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/websvc.manager/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -2,6 +2,5 @@ AutoUpdate-Show-In-Client: false OpenIDE-Module: org.netbeans.modules.websvc.manager OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/websvc/manager/Bundle.properties -OpenIDE-Module-Install: org/netbeans/modules/websvc/manager/WebServiceModuleInstaller.class OpenIDE-Module-Specification-Version: 1.14 --- a/websvc.manager/src/org/netbeans/modules/websvc/manager/WebServiceModuleInstaller.java Tue Mar 27 20:33:08 2012 -0400 +++ a/websvc.manager/src/org/netbeans/modules/websvc/manager/WebServiceModuleInstaller.java Wed Mar 28 09:22:06 2012 -0400 @@ -45,22 +45,19 @@ package org.netbeans.modules.websvc.manager; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStop; // This is here just to persist the snippets -public class WebServiceModuleInstaller extends ModuleInstall { +@OnStop +public class WebServiceModuleInstaller implements Runnable { @Override - public void close() { + public void run() { /** * Persist the Webservice meta data in the user's directory. */ WebServicePersistenceManager persistenceManager = new WebServicePersistenceManager(); persistenceManager.save(); } - - public void uninstalled() { - close(); - } -} +} --- a/welcome/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/welcome/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -1,5 +1,4 @@ Manifest-Version: 1.0 -OpenIDE-Module-Install: org/netbeans/modules/welcome/Installer.class OpenIDE-Module-Specification-Version: 1.28 OpenIDE-Module: org.netbeans.modules.welcome/1 OpenIDE-Module-Layer: org/netbeans/modules/welcome/resources/layer.xml --- a/welcome/src/org/netbeans/modules/welcome/Installer.java Tue Mar 27 20:33:08 2012 -0400 +++ a/welcome/src/org/netbeans/modules/welcome/Installer.java Wed Mar 28 09:22:06 2012 -0400 @@ -31,8 +31,8 @@ package org.netbeans.modules.welcome; import java.util.Set; -import org.openide.modules.ModuleInstall; import org.openide.windows.Mode; +import org.openide.windows.OnShowing; import org.openide.windows.TopComponent; import org.openide.windows.WindowManager; import org.openide.windows.WindowSystemEvent; @@ -41,10 +41,10 @@ /** * Checks the feedback survey. */ -public class Installer extends ModuleInstall implements Runnable { +@OnShowing +public class Installer implements Runnable { - @Override public void restored() { - WindowManager.getDefault().invokeWhenUIReady(this); + private void initListener() { WindowManager.getDefault().addWindowSystemListener( new WindowSystemListener() { @Override @@ -90,6 +90,7 @@ @Override public void run() { + initListener(); FeedbackSurvey.start(); } } --- a/xml.tax/src/org/netbeans/modules/xml/tax/TAXModuleInstall.java Tue Mar 27 20:33:08 2012 -0400 +++ a/xml.tax/src/org/netbeans/modules/xml/tax/TAXModuleInstall.java Wed Mar 28 09:22:06 2012 -0400 @@ -55,6 +55,8 @@ * * @author Libor Kramolis */ +// XXX: Modifications to bean search path should not run in parallel, otherwise +// we risk race condition with others (Form?) public class TAXModuleInstall extends ModuleInstall { private static final String BEANINFO_PATH = "org.netbeans.modules.xml.tax.beans.beaninfo"; // NOI18N --- a/xml/manifest.mf Tue Mar 27 20:33:08 2012 -0400 +++ a/xml/manifest.mf Wed Mar 28 09:22:06 2012 -0400 @@ -1,7 +1,6 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.modules.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/xml/resources/Bundle.properties -OpenIDE-Module-Install: org/netbeans/modules/xml/CoreModuleInstall.class OpenIDE-Module-Layer: org/netbeans/modules/xml/resources/mf-layer.xml AutoUpdate-Show-In-Client: false OpenIDE-Module-Specification-Version: 1.16 --- a/xml/src/org/netbeans/modules/xml/CoreModuleInstall.java Tue Mar 27 20:33:08 2012 -0400 +++ a/xml/src/org/netbeans/modules/xml/CoreModuleInstall.java Wed Mar 28 09:22:06 2012 -0400 @@ -45,16 +45,17 @@ package org.netbeans.modules.xml; import org.netbeans.modules.xml.actions.InputOutputReporter; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStop; /** * Module installation class for core module. * * @author Libor Kramolis */ -public class CoreModuleInstall extends ModuleInstall { - - public void uninstalled() { +@OnStop +public class CoreModuleInstall implements Runnable { + @Override + public void run() { InputOutputReporter.releaseAllAnnotations(); } }