diff -r 7c987de275c5 autoupdate.pluginimporter/manifest.mf --- a/autoupdate.pluginimporter/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/autoupdate.pluginimporter/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 autoupdate.pluginimporter/src/org/netbeans/modules/autoupdate/pluginimporter/Installer.java --- a/autoupdate.pluginimporter/src/org/netbeans/modules/autoupdate/pluginimporter/Installer.java Sat Mar 24 20:16:18 2012 -0400 +++ b/autoupdate.pluginimporter/src/org/netbeans/modules/autoupdate/pluginimporter/Installer.java Sat Mar 24 22:59:32 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 () { diff -r 7c987de275c5 autoupdate.ui/manifest.mf --- a/autoupdate.ui/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/autoupdate.ui/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 autoupdate.ui/src/org/netbeans/modules/autoupdate/ui/actions/Installer.java --- a/autoupdate.ui/src/org/netbeans/modules/autoupdate/ui/actions/Installer.java Sat Mar 24 20:16:18 2012 -0400 +++ b/autoupdate.ui/src/org/netbeans/modules/autoupdate/ui/actions/Installer.java Sat Mar 24 22:59:32 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; diff -r 7c987de275c5 core.startup/src/org/netbeans/core/startup/ModuleSystem.java --- a/core.startup/src/org/netbeans/core/startup/ModuleSystem.java Sat Mar 24 20:16:18 2012 -0400 +++ b/core.startup/src/org/netbeans/core/startup/ModuleSystem.java Sat Mar 24 22:59:32 2012 -0400 @@ -297,7 +297,8 @@ } finally { mgr.mutexPrivileged().exitWriteAccess(); } - ev.log(Events.PERF_END, "ModuleSystem.restore"); // NOI18N + ev.log(Events.PERF_END, "ModuleSystem.restore"); // NOI18N + installer.waitOnStart(); } /** Shut down the system: ask modules to shut down. diff -r 7c987de275c5 core.startup/src/org/netbeans/core/startup/NbInstaller.java --- a/core.startup/src/org/netbeans/core/startup/NbInstaller.java Sat Mar 24 20:16:18 2012 -0400 +++ b/core.startup/src/org/netbeans/core/startup/NbInstaller.java Sat Mar 24 22:59:32 2012 -0400 @@ -65,6 +65,7 @@ import java.util.StringTokenizer; import java.util.TreeMap; import java.util.TreeSet; +import java.util.concurrent.Callable; import java.util.jar.Attributes; import java.util.jar.JarEntry; import java.util.jar.JarFile; @@ -83,12 +84,17 @@ import org.openide.modules.Dependency; import org.openide.modules.ModuleInfo; import org.openide.modules.ModuleInstall; +import org.openide.modules.Modules; import org.openide.modules.SpecificationVersion; +import org.openide.util.Lookup; import org.openide.util.NbCollections; import org.openide.util.SharedClassObject; import org.openide.util.NbBundle; +import org.openide.util.RequestProcessor; +import org.openide.util.RequestProcessor.Task; import org.openide.util.Utilities; import org.openide.util.lookup.InstanceContent; +import org.openide.util.lookup.Lookups; import org.xml.sax.SAXException; /** Concrete implementation of the module installation functionality. @@ -318,10 +324,34 @@ } } + private static final RequestProcessor onStartStop = new RequestProcessor("On Start/Stop", 8); // NOI18N + private final Map onStart = new HashMap(); @Override protected void classLoaderUp(ClassLoader cl) { MainLookup.systemClassLoaderChanged(cl); ev.log(Events.PERF_TICK, "META-INF/services/ additions registered"); // NOI18N + + for (Lookup.Item item : Lookups.forPath("Modules/Start").lookupResult(Runnable.class).allItems()) { + synchronized (onStart) { + Task already = onStart.get(item.getId()); + if (already == null) { + Runnable r = item.getInstance(); + if (r != null) { + onStart.put(item.getId(), onStartStop.post(r)); + } + } + } + } + } + + final void waitOnStart() { + Task[] all; + synchronized (onStart) { + all = onStart.values().toArray(new Task[0]); + } + for (Task t : all) { + t.waitFinished(); + } } @Override @@ -651,7 +681,7 @@ public boolean closing(List modules) { Util.err.fine("closing: " + modules); - for (Module m: modules) { + for (Module m: modules) { Class instClazz = installs.get(m); if (instClazz != null) { try { @@ -668,6 +698,19 @@ } } } + for (Callable c : Lookups.forPath("Modules/Stop").lookupAll(Callable.class)) { // NOI18N + if (!modules.contains(Modules.getDefault().ownerOf(c.getClass()))) { + continue; + } + try { + if (Boolean.TRUE.equals(c.call())) { + Util.err.log(Level.FINE, "{0} refused to close", c.getClass()); // NOI18N + } + } catch (Exception ex) { + Util.err.log(Level.FINE, c.getClass() + " thrown an exception", ex); // NOI18N + return false; + } + } return true; } @@ -675,6 +718,13 @@ Util.err.fine("close: " + modules); ev.log(Events.CLOSE); moduleList.shutDown(); + List waitFor = new ArrayList(); + for (Runnable r : Lookups.forPath("Modules/Stop").lookupAll(Runnable.class)) { // NOI18N + if (!modules.contains(Modules.getDefault().ownerOf(r.getClass()))) { + continue; + } + waitFor.add(onStartStop.post(r)); + } // [PENDING] this may need to write out changed ModuleInstall externalized // forms...is that really necessary to do here, or isn't it enough to // do right after loading etc.? Currently these are only written when @@ -695,6 +745,9 @@ } } } + for (Task t : waitFor) { + t.waitFinished(); + } } private static String cacheCnb; diff -r 7c987de275c5 core.windows/src/org/netbeans/core/windows/WindowManagerImpl.java --- a/core.windows/src/org/netbeans/core/windows/WindowManagerImpl.java Sat Mar 24 20:16:18 2012 -0400 +++ b/core.windows/src/org/netbeans/core/windows/WindowManagerImpl.java Sat Mar 24 22:59:32 2012 -0400 @@ -59,6 +59,7 @@ import org.netbeans.core.windows.view.ui.MainWindow; import org.openide.nodes.Node; import org.openide.util.*; +import org.openide.util.lookup.Lookups; import org.openide.windows.*; /** @@ -1455,6 +1456,7 @@ private static final class Exclusive implements Runnable, ActionListener { /** lists of runnables to run */ private ArrayList arr = new ArrayList(); + private boolean subsequent; /** Registers given runnable and ensures that it is run when UI * of the system is ready. @@ -1469,6 +1471,12 @@ if (!WindowManagerImpl.getInstance().isVisible()) { return; } + if (!subsequent) { + subsequent = true; + for (Runnable r : Lookups.forPath("Modules/UIReady").lookupAll(Runnable.class)) { // NOI18N + SwingUtilities.invokeLater(r); + } + } synchronized (this) { if (arr.isEmpty()) { diff -r 7c987de275c5 db/manifest.mf --- a/db/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/db/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 db/src/org/netbeans/modules/db/DatabaseModule.java --- a/db/src/org/netbeans/modules/db/DatabaseModule.java Sat Mar 24 20:16:18 2012 -0400 +++ b/db/src/org/netbeans/modules/db/DatabaseModule.java Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 editor.completion/manifest.mf --- a/editor.completion/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/editor.completion/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 editor.completion/src/org/netbeans/modules/editor/completion/CompletionModule.java --- a/editor.completion/src/org/netbeans/modules/editor/completion/CompletionModule.java Sat Mar 24 20:16:18 2012 -0400 +++ b/editor.completion/src/org/netbeans/modules/editor/completion/CompletionModule.java Sat Mar 24 22:59:32 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(); } } diff -r 7c987de275c5 form.j2ee/manifest.mf --- a/form.j2ee/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/form.j2ee/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 form.j2ee/src/org/netbeans/modules/form/j2ee/Installer.java --- a/form.j2ee/src/org/netbeans/modules/form/j2ee/Installer.java Sat Mar 24 20:16:18 2012 -0400 +++ b/form.j2ee/src/org/netbeans/modules/form/j2ee/Installer.java Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 glassfish.common/manifest.mf --- a/glassfish.common/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/glassfish.common/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 glassfish.common/src/org/netbeans/modules/glassfish/common/Installer.java --- a/glassfish.common/src/org/netbeans/modules/glassfish/common/Installer.java Sat Mar 24 20:16:18 2012 -0400 +++ b/glassfish.common/src/org/netbeans/modules/glassfish/common/Installer.java Sat Mar 24 22:59:32 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)) { diff -r 7c987de275c5 httpserver/manifest.mf --- a/httpserver/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/httpserver/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 httpserver/src/org/netbeans/modules/httpserver/HttpServerModule.java --- a/httpserver/src/org/netbeans/modules/httpserver/HttpServerModule.java Sat Mar 24 20:16:18 2012 -0400 +++ b/httpserver/src/org/netbeans/modules/httpserver/HttpServerModule.java Sat Mar 24 22:59:32 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(); diff -r 7c987de275c5 hudson/manifest.mf --- a/hudson/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/hudson/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 hudson/src/org/netbeans/modules/hudson/Installer.java --- a/hudson/src/org/netbeans/modules/hudson/Installer.java Sat Mar 24 20:16:18 2012 -0400 +++ b/hudson/src/org/netbeans/modules/hudson/Installer.java Sat Mar 24 22:59:32 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(); + } } } diff -r 7c987de275c5 i18n.form/src/org/netbeans/modules/i18n/form/I18nFormCrossModule.java --- a/i18n.form/src/org/netbeans/modules/i18n/form/I18nFormCrossModule.java Sat Mar 24 20:16:18 2012 -0400 +++ b/i18n.form/src/org/netbeans/modules/i18n/form/I18nFormCrossModule.java Sat Mar 24 22:59:32 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; diff -r 7c987de275c5 j2eeserver/src/org/netbeans/modules/j2ee/deployment/impl/Install.java --- a/j2eeserver/src/org/netbeans/modules/j2ee/deployment/impl/Install.java Sat Mar 24 20:16:18 2012 -0400 +++ b/j2eeserver/src/org/netbeans/modules/j2ee/deployment/impl/Install.java Sat Mar 24 22:59:32 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();) { diff -r 7c987de275c5 java.j2seplatform/src/org/netbeans/modules/java/j2seplatform/J2SEPlatformModule.java --- a/java.j2seplatform/src/org/netbeans/modules/java/j2seplatform/J2SEPlatformModule.java Sat Mar 24 20:16:18 2012 -0400 +++ b/java.j2seplatform/src/org/netbeans/modules/java/j2seplatform/J2SEPlatformModule.java Sat Mar 24 22:59:32 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) { diff -r 7c987de275c5 java.source/src/org/netbeans/modules/java/source/JBrowseModule.java --- a/java.source/src/org/netbeans/modules/java/source/JBrowseModule.java Sat Mar 24 20:16:18 2012 -0400 +++ b/java.source/src/org/netbeans/modules/java/source/JBrowseModule.java Sat Mar 24 22:59:32 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(); } } diff -r 7c987de275c5 java.sourceui/src/org/netbeans/modules/java/source/ui/JavaSourceUIModule.java --- a/java.sourceui/src/org/netbeans/modules/java/source/ui/JavaSourceUIModule.java Sat Mar 24 20:16:18 2012 -0400 +++ b/java.sourceui/src/org/netbeans/modules/java/source/ui/JavaSourceUIModule.java Sat Mar 24 22:59:32 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(); } diff -r 7c987de275c5 javadoc/src/org/netbeans/modules/javadoc/JavadocModule.java --- a/javadoc/src/org/netbeans/modules/javadoc/JavadocModule.java Sat Mar 24 20:16:18 2012 -0400 +++ b/javadoc/src/org/netbeans/modules/javadoc/JavadocModule.java Sat Mar 24 22:59:32 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) { diff -r 7c987de275c5 javascript.editing/manifest.mf --- a/javascript.editing/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/javascript.editing/manifest.mf Sat Mar 24 22:59:32 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.104 diff -r 7c987de275c5 javascript.editing/src/org/netbeans/modules/javascript/editing/Installer.java --- a/javascript.editing/src/org/netbeans/modules/javascript/editing/Installer.java Sat Mar 24 20:16:18 2012 -0400 +++ b/javascript.editing/src/org/netbeans/modules/javascript/editing/Installer.java Sat Mar 24 22:59:32 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() }); } diff -r 7c987de275c5 localhistory/manifest.mf --- a/localhistory/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/localhistory/manifest.mf Sat Mar 24 22:59:32 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.17 diff -r 7c987de275c5 localhistory/src/org/netbeans/modules/localhistory/ModuleLifecycleManager.java --- a/localhistory/src/org/netbeans/modules/localhistory/ModuleLifecycleManager.java Sat Mar 24 20:16:18 2012 -0400 +++ b/localhistory/src/org/netbeans/modules/localhistory/ModuleLifecycleManager.java Sat Mar 24 22:59:32 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(); } } diff -r 7c987de275c5 masterfs/manifest.mf --- a/masterfs/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/masterfs/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 masterfs/src/org/netbeans/modules/masterfs/Installer.java --- a/masterfs/src/org/netbeans/modules/masterfs/Installer.java Sat Mar 24 20:16:18 2012 -0400 +++ b/masterfs/src/org/netbeans/modules/masterfs/Installer.java Sat Mar 24 22:59:32 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(); + } } } diff -r 7c987de275c5 maven.indexer/manifest.mf --- a/maven.indexer/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/maven.indexer/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 maven.indexer/src/org/netbeans/modules/maven/indexer/Installer.java --- a/maven.indexer/src/org/netbeans/modules/maven/indexer/Installer.java Sat Mar 24 20:16:18 2012 -0400 +++ b/maven.indexer/src/org/netbeans/modules/maven/indexer/Installer.java Sat Mar 24 22:59:32 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. diff -r 7c987de275c5 mobility.cldcplatform/src/org/netbeans/modules/mobility/cldcplatform/startup/DefaultEmulatorInstall.java --- a/mobility.cldcplatform/src/org/netbeans/modules/mobility/cldcplatform/startup/DefaultEmulatorInstall.java Sat Mar 24 20:16:18 2012 -0400 +++ b/mobility.cldcplatform/src/org/netbeans/modules/mobility/cldcplatform/startup/DefaultEmulatorInstall.java Sat Mar 24 22:59:32 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(); diff -r 7c987de275c5 openide.modules/manifest.mf --- a/openide.modules/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/openide.modules/manifest.mf Sat Mar 24 22:59:32 2012 -0400 @@ -1,5 +1,5 @@ Manifest-Version: 1.0 OpenIDE-Module: org.openide.modules OpenIDE-Module-Localizing-Bundle: org/openide/modules/Bundle.properties -OpenIDE-Module-Specification-Version: 7.28 +OpenIDE-Module-Specification-Version: 7.29 diff -r 7c987de275c5 openide.modules/src/org/openide/modules/OnStart.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/openide.modules/src/org/openide/modules/OnStart.java Sat Mar 24 22:59:32 2012 -0400 @@ -0,0 +1,55 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright 2012 Oracle and/or its affiliates. All rights reserved. + * + * Oracle and Java are registered trademarks of Oracle and/or its affiliates. + * Other names may be trademarks of their respective owners. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + * + * Portions Copyrighted 2012 Sun Microsystems, Inc. + */ +package org.openide.modules; + +import org.openide.util.lookup.NamedServiceDefinition; + +/** + * + * + * @since 7.29 + * @author Jaroslav Tulach + */ +@NamedServiceDefinition(path="Modules/Start", serviceType=Runnable.class) +public @interface OnStart { + +} diff -r 7c987de275c5 openide.modules/src/org/openide/modules/OnStop.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/openide.modules/src/org/openide/modules/OnStop.java Sat Mar 24 22:59:32 2012 -0400 @@ -0,0 +1,56 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright 2012 Oracle and/or its affiliates. All rights reserved. + * + * Oracle and Java are registered trademarks of Oracle and/or its affiliates. + * Other names may be trademarks of their respective owners. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + * + * Portions Copyrighted 2012 Sun Microsystems, Inc. + */ +package org.openide.modules; + +import java.util.concurrent.Callable; +import org.openide.util.lookup.NamedServiceDefinition; + +/** + * + * @since 7.29 + * @author Jaroslav Tulach + */ +@NamedServiceDefinition( + path="Modules/Stop", serviceType={ Runnable.class, Callable.class } +) +public @interface OnStop { +} diff -r 7c987de275c5 openide.text/manifest.mf --- a/openide.text/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/openide.text/manifest.mf Sat Mar 24 22:59:32 2012 -0400 @@ -1,6 +1,5 @@ Manifest-Version: 1.0 OpenIDE-Module: org.openide.text -OpenIDE-Module-Install: org/netbeans/modules/openide/text/Installer.class OpenIDE-Module-Specification-Version: 6.44 OpenIDE-Module-Localizing-Bundle: org/openide/text/Bundle.properties AutoUpdate-Essential-Module: true diff -r 7c987de275c5 openide.text/src/org/netbeans/modules/openide/text/Installer.java --- a/openide.text/src/org/netbeans/modules/openide/text/Installer.java Sat Mar 24 20:16:18 2012 -0400 +++ b/openide.text/src/org/netbeans/modules/openide/text/Installer.java Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 openide.windows/manifest.mf --- a/openide.windows/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/openide.windows/manifest.mf Sat Mar 24 22:59:32 2012 -0400 @@ -1,6 +1,6 @@ Manifest-Version: 1.0 OpenIDE-Module: org.openide.windows -OpenIDE-Module-Specification-Version: 6.52 +OpenIDE-Module-Specification-Version: 6.53 OpenIDE-Module-Localizing-Bundle: org/openide/windows/Bundle.properties AutoUpdate-Essential-Module: true diff -r 7c987de275c5 openide.windows/src/org/openide/windows/OnShowing.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/openide.windows/src/org/openide/windows/OnShowing.java Sat Mar 24 22:59:32 2012 -0400 @@ -0,0 +1,54 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright 2012 Oracle and/or its affiliates. All rights reserved. + * + * Oracle and Java are registered trademarks of Oracle and/or its affiliates. + * Other names may be trademarks of their respective owners. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + * + * Portions Copyrighted 2012 Sun Microsystems, Inc. + */ +package org.openide.windows; + +import org.openide.util.lookup.NamedServiceDefinition; + +/** + * + * @since 6.53 + * @author Jaroslav Tulach + */ +@NamedServiceDefinition(path="Modules/UIReady", serviceType=Runnable.class) +public @interface OnShowing { + +} diff -r 7c987de275c5 parsing.api/manifest.mf --- a/parsing.api/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/parsing.api/manifest.mf Sat Mar 24 22:59:32 2012 -0400 @@ -1,7 +1,6 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.modules.parsing.api/1 OpenIDE-Module-Implementation-Version: 6 -OpenIDE-Module-Install: org/netbeans/modules/parsing/impl/Installer.class OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/parsing/impl/Bundle.properties OpenIDE-Module-Layer: org/netbeans/modules/parsing/impl/layer.xml AutoUpdate-Show-In-Client: false diff -r 7c987de275c5 parsing.api/src/org/netbeans/modules/parsing/impl/Installer.java --- a/parsing.api/src/org/netbeans/modules/parsing/impl/Installer.java Sat Mar 24 20:16:18 2012 -0400 +++ b/parsing.api/src/org/netbeans/modules/parsing/impl/Installer.java Sat Mar 24 22:59:32 2012 -0400 @@ -4,38 +4,41 @@ */ package org.netbeans.modules.parsing.impl; +import java.awt.EventQueue; import org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater; -import org.openide.modules.ModuleInstall; +import org.openide.modules.OnStart; 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 { +@OnStart +public class Installer implements Runnable { @Override - public void restored () { - super.restored(); + public void run() { RepositoryUpdater.getDefault().start(false); - - WindowManager.getDefault().invokeWhenUIReady(new Runnable() { - public void run () { - RequestProcessor.getDefault().post(new Runnable() { - public void run() { - Schedulers.init(); - } - }); + } + + @OnShowing + public static class UI implements Runnable { + @Override + public void run() { + if (EventQueue.isDispatchThread()) { + RequestProcessor.getDefault().post(this); + } else { + Schedulers.init(); } - }); + } } - @Override - public boolean closing () { - final boolean ret = super.closing(); - RepositoryUpdater.getDefault().stop(); - return ret; + @OnStart + public static class Stop implements Runnable { + @Override + public void run() { + RepositoryUpdater.getDefault().stop(); + } } - } diff -r 7c987de275c5 profiler.drilldown/manifest.mf --- a/profiler.drilldown/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/profiler.drilldown/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 profiler.drilldown/src/org/netbeans/modules/profiler/drilldown/Installer.java --- a/profiler.drilldown/src/org/netbeans/modules/profiler/drilldown/Installer.java Sat Mar 24 20:16:18 2012 -0400 +++ b/profiler.drilldown/src/org/netbeans/modules/profiler/drilldown/Installer.java Sat Mar 24 22:59:32 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(); } } diff -r 7c987de275c5 profiler.ppoints/manifest.mf --- a/profiler.ppoints/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/profiler.ppoints/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 profiler.ppoints/src/org/netbeans/modules/profiler/ppoints/Installer.java --- a/profiler.ppoints/src/org/netbeans/modules/profiler/ppoints/Installer.java Sat Mar 24 20:16:18 2012 -0400 +++ b/profiler.ppoints/src/org/netbeans/modules/profiler/ppoints/Installer.java Sat Mar 24 22:59:32 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; } - - } diff -r 7c987de275c5 project.ant/manifest.mf --- a/project.ant/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/project.ant/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 project.ant/src/org/netbeans/modules/project/ant/AntProjectModule.java --- a/project.ant/src/org/netbeans/modules/project/ant/AntProjectModule.java Sat Mar 24 20:16:18 2012 -0400 +++ b/project.ant/src/org/netbeans/modules/project/ant/AntProjectModule.java Sat Mar 24 22:59:32 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 ; diff -r 7c987de275c5 project.libraries/manifest.mf --- a/project.libraries/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/project.libraries/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 project.libraries/src/org/netbeans/modules/project/libraries/LibrariesModule.java --- a/project.libraries/src/org/netbeans/modules/project/libraries/LibrariesModule.java Sat Mar 24 20:16:18 2012 -0400 +++ b/project.libraries/src/org/netbeans/modules/project/libraries/LibrariesModule.java Sat Mar 24 22:59:32 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(); } diff -r 7c987de275c5 projectapi/manifest.mf --- a/projectapi/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/projectapi/manifest.mf Sat Mar 24 22:59:32 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.42 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/projectapi/Bundle.properties OpenIDE-Module-Layer: org/netbeans/modules/projectapi/layer.xml diff -r 7c987de275c5 projectapi/src/org/netbeans/modules/projectapi/Installer.java --- a/projectapi/src/org/netbeans/modules/projectapi/Installer.java Sat Mar 24 20:16:18 2012 -0400 +++ b/projectapi/src/org/netbeans/modules/projectapi/Installer.java Sat Mar 24 22:59:32 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(); + } } } diff -r 7c987de275c5 projectui/manifest.mf --- a/projectui/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/projectui/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 projectui/src/org/netbeans/modules/project/ui/ProjectUiModule.java --- a/projectui/src/org/netbeans/modules/project/ui/ProjectUiModule.java Sat Mar 24 20:16:18 2012 -0400 +++ b/projectui/src/org/netbeans/modules/project/ui/ProjectUiModule.java Sat Mar 24 22:59:32 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); + } } } - } diff -r 7c987de275c5 properties.syntax/src/org/netbeans/modules/properties/syntax/RestoreColoring.java --- a/properties.syntax/src/org/netbeans/modules/properties/syntax/RestoreColoring.java Sat Mar 24 20:16:18 2012 -0400 +++ b/properties.syntax/src/org/netbeans/modules/properties/syntax/RestoreColoring.java Sat Mar 24 22:59:32 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. */ diff -r 7c987de275c5 spi.debugger.ui/manifest.mf --- a/spi.debugger.ui/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/spi.debugger.ui/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 spi.debugger.ui/src/org/netbeans/modules/debugger/ui/DebuggerModule.java --- a/spi.debugger.ui/src/org/netbeans/modules/debugger/ui/DebuggerModule.java Sat Mar 24 20:16:18 2012 -0400 +++ b/spi.debugger.ui/src/org/netbeans/modules/debugger/ui/DebuggerModule.java Sat Mar 24 22:59:32 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; } diff -r 7c987de275c5 spi.editor.hints/manifest.mf --- a/spi.editor.hints/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/spi.editor.hints/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 spi.editor.hints/src/org/netbeans/modules/editor/hints/HintsModule.java --- a/spi.editor.hints/src/org/netbeans/modules/editor/hints/HintsModule.java Sat Mar 24 20:16:18 2012 -0400 +++ b/spi.editor.hints/src/org/netbeans/modules/editor/hints/HintsModule.java Sat Mar 24 22:59:32 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(); } diff -r 7c987de275c5 spi.palette/manifest.mf --- a/spi.palette/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/spi.palette/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 spi.palette/src/org/netbeans/spi/palette/PaletteModule.java --- a/spi.palette/src/org/netbeans/spi/palette/PaletteModule.java Sat Mar 24 20:16:18 2012 -0400 +++ b/spi.palette/src/org/netbeans/spi/palette/PaletteModule.java Sat Mar 24 22:59:32 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(); } } diff -r 7c987de275c5 subversion/src/org/netbeans/modules/subversion/ModuleLifecycleManager.java --- a/subversion/src/org/netbeans/modules/subversion/ModuleLifecycleManager.java Sat Mar 24 20:16:18 2012 -0400 +++ b/subversion/src/org/netbeans/modules/subversion/ModuleLifecycleManager.java Sat Mar 24 22:59:32 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 = { diff -r 7c987de275c5 timers/src/org/netbeans/modules/timers/Install.java --- a/timers/src/org/netbeans/modules/timers/Install.java Sat Mar 24 20:16:18 2012 -0400 +++ b/timers/src/org/netbeans/modules/timers/Install.java Sat Mar 24 22:59:32 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 ; } diff -r 7c987de275c5 versioning.system.cvss/src/org/netbeans/modules/versioning/system/cvss/ModuleLifecycleManager.java --- a/versioning.system.cvss/src/org/netbeans/modules/versioning/system/cvss/ModuleLifecycleManager.java Sat Mar 24 20:16:18 2012 -0400 +++ b/versioning.system.cvss/src/org/netbeans/modules/versioning/system/cvss/ModuleLifecycleManager.java Sat Mar 24 22:59:32 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 = { diff -r 7c987de275c5 webpreview/manifest.mf --- a/webpreview/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/webpreview/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 webpreview/src/org/netbeans/modules/webpreview/Installer.java --- a/webpreview/src/org/netbeans/modules/webpreview/Installer.java Sat Mar 24 20:16:18 2012 -0400 +++ b/webpreview/src/org/netbeans/modules/webpreview/Installer.java Sat Mar 24 22:59:32 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(); + } } } diff -r 7c987de275c5 websvc.jaxrpc/manifest.mf --- a/websvc.jaxrpc/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/websvc.jaxrpc/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 websvc.jaxrpc/src/org/netbeans/modules/websvc/jaxrpc/Installer.java --- a/websvc.jaxrpc/src/org/netbeans/modules/websvc/jaxrpc/Installer.java Sat Mar 24 20:16:18 2012 -0400 +++ b/websvc.jaxrpc/src/org/netbeans/modules/websvc/jaxrpc/Installer.java Sat Mar 24 22:59:32 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); + } } } diff -r 7c987de275c5 websvc.manager/manifest.mf --- a/websvc.manager/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/websvc.manager/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 websvc.manager/src/org/netbeans/modules/websvc/manager/WebServiceModuleInstaller.java --- a/websvc.manager/src/org/netbeans/modules/websvc/manager/WebServiceModuleInstaller.java Sat Mar 24 20:16:18 2012 -0400 +++ b/websvc.manager/src/org/netbeans/modules/websvc/manager/WebServiceModuleInstaller.java Sat Mar 24 22:59:32 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(); - } -} +} diff -r 7c987de275c5 welcome/manifest.mf --- a/welcome/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/welcome/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 welcome/src/org/netbeans/modules/welcome/Installer.java --- a/welcome/src/org/netbeans/modules/welcome/Installer.java Sat Mar 24 20:16:18 2012 -0400 +++ b/welcome/src/org/netbeans/modules/welcome/Installer.java Sat Mar 24 22:59:32 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(); } } diff -r 7c987de275c5 xml.tax/src/org/netbeans/modules/xml/tax/TAXModuleInstall.java --- a/xml.tax/src/org/netbeans/modules/xml/tax/TAXModuleInstall.java Sat Mar 24 20:16:18 2012 -0400 +++ b/xml.tax/src/org/netbeans/modules/xml/tax/TAXModuleInstall.java Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 xml/manifest.mf --- a/xml/manifest.mf Sat Mar 24 20:16:18 2012 -0400 +++ b/xml/manifest.mf Sat Mar 24 22:59:32 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 diff -r 7c987de275c5 xml/src/org/netbeans/modules/xml/CoreModuleInstall.java --- a/xml/src/org/netbeans/modules/xml/CoreModuleInstall.java Sat Mar 24 20:16:18 2012 -0400 +++ b/xml/src/org/netbeans/modules/xml/CoreModuleInstall.java Sat Mar 24 22:59:32 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(); } }