From faa1580d5404c8761d6dcd0acfe33abbb971cf1a Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 21 Oct 2011 14:40:16 +0200 Subject: [PATCH] inline ApplicationComponentLocator --- .../ApplicationComponentLocator.java | 42 ------------------- .../openapi/components/ServiceManager.java | 4 +- .../fileEditor/FileDocumentManager.java | 4 +- .../openapi/vfs/VirtualFileManager.java | 4 +- .../com/intellij/core/CoreEnvironment.java | 2 - .../openapi/fileTypes/FileTypeManager.java | 6 ++- .../application/ex/ApplicationManagerEx.java | 2 - .../intellij/idea/IdeaTestApplication.java | 16 ++++++- 8 files changed, 24 insertions(+), 56 deletions(-) delete mode 100644 platform/core-api/src/com/intellij/openapi/application/ApplicationComponentLocator.java diff --git a/platform/core-api/src/com/intellij/openapi/application/ApplicationComponentLocator.java b/platform/core-api/src/com/intellij/openapi/application/ApplicationComponentLocator.java deleted file mode 100644 index 58741c32e16b..000000000000 --- a/platform/core-api/src/com/intellij/openapi/application/ApplicationComponentLocator.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2000-2011 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.intellij.openapi.application; - -import com.intellij.openapi.components.ComponentManager; - -/** - * @author yole - */ -public class ApplicationComponentLocator { - private static ComponentManager ourInstance; - - public static T getComponent(Class interfaceClass) { - return ourInstance.getComponent(interfaceClass); - } - - public static Object getComponentInstance(Object componentKey) { - return ourInstance.getPicoContainer().getComponentInstance(componentKey); - } - - public static void setInstance(ComponentManager instance) { - ourInstance = instance; - } - - public static boolean initialized() { - return ourInstance != null; - } -} - diff --git a/platform/core-api/src/com/intellij/openapi/components/ServiceManager.java b/platform/core-api/src/com/intellij/openapi/components/ServiceManager.java index 78a55abe0160..2e7b6e448670 100644 --- a/platform/core-api/src/com/intellij/openapi/components/ServiceManager.java +++ b/platform/core-api/src/com/intellij/openapi/components/ServiceManager.java @@ -16,7 +16,7 @@ package com.intellij.openapi.components; -import com.intellij.openapi.application.ApplicationComponentLocator; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.NotNullLazyKey; import com.intellij.util.NotNullFunction; @@ -33,7 +33,7 @@ public class ServiceManager { } public static T getService(@NotNull Class serviceClass) { - return (T)ApplicationComponentLocator.getComponentInstance(serviceClass.getName()); + return (T)ApplicationManager.getApplication().getPicoContainer().getComponentInstance(serviceClass.getName()); } public static T getService(@NotNull Project project, @NotNull Class serviceClass) { diff --git a/platform/core-api/src/com/intellij/openapi/fileEditor/FileDocumentManager.java b/platform/core-api/src/com/intellij/openapi/fileEditor/FileDocumentManager.java index 4efc4c285078..2d9825df0102 100644 --- a/platform/core-api/src/com/intellij/openapi/fileEditor/FileDocumentManager.java +++ b/platform/core-api/src/com/intellij/openapi/fileEditor/FileDocumentManager.java @@ -15,7 +15,7 @@ */ package com.intellij.openapi.fileEditor; -import com.intellij.openapi.application.ApplicationComponentLocator; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.editor.Document; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.SavingRequestor; @@ -25,7 +25,7 @@ import org.jetbrains.annotations.Nullable; public abstract class FileDocumentManager implements SavingRequestor { public static FileDocumentManager getInstance() { - return ApplicationComponentLocator.getComponent(FileDocumentManager.class); + return ApplicationManager.getApplication().getComponent(FileDocumentManager.class); } @Nullable diff --git a/platform/core-api/src/com/intellij/openapi/vfs/VirtualFileManager.java b/platform/core-api/src/com/intellij/openapi/vfs/VirtualFileManager.java index 8c0016d7a42a..ef25cece390e 100644 --- a/platform/core-api/src/com/intellij/openapi/vfs/VirtualFileManager.java +++ b/platform/core-api/src/com/intellij/openapi/vfs/VirtualFileManager.java @@ -16,7 +16,7 @@ package com.intellij.openapi.vfs; import com.intellij.openapi.Disposable; -import com.intellij.openapi.application.ApplicationComponentLocator; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.util.ModificationTracker; import com.intellij.openapi.vfs.newvfs.BulkFileListener; import com.intellij.util.messages.Topic; @@ -41,7 +41,7 @@ public abstract class VirtualFileManager implements ModificationTracker{ */ @NotNull public static VirtualFileManager getInstance(){ - return ApplicationComponentLocator.getComponent(VirtualFileManager.class); + return ApplicationManager.getApplication().getComponent(VirtualFileManager.class); } /** diff --git a/platform/core-impl/src/com/intellij/core/CoreEnvironment.java b/platform/core-impl/src/com/intellij/core/CoreEnvironment.java index 8b3333ff3625..67ee2d29ee9c 100644 --- a/platform/core-impl/src/com/intellij/core/CoreEnvironment.java +++ b/platform/core-impl/src/com/intellij/core/CoreEnvironment.java @@ -19,7 +19,6 @@ import com.intellij.lang.*; import com.intellij.lang.impl.PsiBuilderFactoryImpl; import com.intellij.mock.*; import com.intellij.openapi.Disposable; -import com.intellij.openapi.application.ApplicationComponentLocator; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.impl.DocumentImpl; @@ -94,7 +93,6 @@ public class CoreEnvironment { new ApplicationManager() {{ ourApplication = myApplication; }}; - ApplicationComponentLocator.setInstance(myApplication); myLocalFileSystem = new CoreLocalFileSystem(); myJarFileSystem = new CoreJarFileSystem(); diff --git a/platform/platform-api/src/com/intellij/openapi/fileTypes/FileTypeManager.java b/platform/platform-api/src/com/intellij/openapi/fileTypes/FileTypeManager.java index 1112275b0dd7..0b14ba6f12fc 100644 --- a/platform/platform-api/src/com/intellij/openapi/fileTypes/FileTypeManager.java +++ b/platform/platform-api/src/com/intellij/openapi/fileTypes/FileTypeManager.java @@ -15,7 +15,8 @@ */ package com.intellij.openapi.fileTypes; -import com.intellij.openapi.application.ApplicationComponentLocator; +import com.intellij.openapi.application.Application; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.CachedSingletonsRegistry; import com.intellij.openapi.util.Getter; import com.intellij.openapi.vfs.VirtualFile; @@ -52,7 +53,8 @@ public abstract class FileTypeManager extends FileTypeRegistry { */ public static FileTypeManager getInstance() { if (ourInstance == null) { - ourInstance = ApplicationComponentLocator.initialized() ? ApplicationComponentLocator.getComponent(FileTypeManager.class) : new MockFileTypeManager(); + Application app = ApplicationManager.getApplication(); + ourInstance = app != null ? app.getComponent(FileTypeManager.class) : new MockFileTypeManager(); } return ourInstance; } diff --git a/platform/platform-impl/src/com/intellij/openapi/application/ex/ApplicationManagerEx.java b/platform/platform-impl/src/com/intellij/openapi/application/ex/ApplicationManagerEx.java index 9b9145e05dd9..27fc44b0b3ff 100644 --- a/platform/platform-impl/src/com/intellij/openapi/application/ex/ApplicationManagerEx.java +++ b/platform/platform-impl/src/com/intellij/openapi/application/ex/ApplicationManagerEx.java @@ -17,7 +17,6 @@ package com.intellij.openapi.application.ex; import com.intellij.openapi.Disposable; import com.intellij.openapi.application.Application; -import com.intellij.openapi.application.ApplicationComponentLocator; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.CachedSingletonsRegistry; import com.intellij.openapi.application.impl.ApplicationImpl; @@ -46,7 +45,6 @@ public class ApplicationManagerEx extends ApplicationManager { private static void setApplication(Application instance) { ourApplication = instance; - ApplicationComponentLocator.setInstance(instance); CachedSingletonsRegistry.cleanupCachedFields(); } diff --git a/platform/testFramework/src/com/intellij/idea/IdeaTestApplication.java b/platform/testFramework/src/com/intellij/idea/IdeaTestApplication.java index 12d368da4731..99692b6b6c93 100644 --- a/platform/testFramework/src/com/intellij/idea/IdeaTestApplication.java +++ b/platform/testFramework/src/com/intellij/idea/IdeaTestApplication.java @@ -18,10 +18,13 @@ package com.intellij.idea; import com.intellij.ide.plugins.PluginManager; import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.DataProvider; +import com.intellij.openapi.application.Application; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.Result; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.application.ex.ApplicationEx; import com.intellij.openapi.application.ex.ApplicationManagerEx; +import com.intellij.openapi.application.impl.ApplicationImpl; import com.intellij.openapi.util.Disposer; import org.jetbrains.annotations.Nullable; @@ -42,7 +45,12 @@ public class IdeaTestApplication extends CommandLineApplication implements Dispo } public static synchronized IdeaTestApplication getInstance(@Nullable final String configPath) { - if (ourInstance == null) { + final boolean isForeignApp = !(ApplicationManager.getApplication() instanceof ApplicationImpl); + if (ourInstance == null || isForeignApp) { + if (isForeignApp) { + disposeInstance(); + PluginManager.invalidatePlugins(); + } new IdeaTestApplication(); PluginManager.getPlugins(); final ApplicationEx app = ApplicationManagerEx.getApplicationEx(); @@ -61,8 +69,12 @@ public class IdeaTestApplication extends CommandLineApplication implements Dispo @Override public void dispose() { + disposeInstance(); + } + + private static void disposeInstance() { if (ourInstance == null) return; - ApplicationEx applicationEx = ApplicationManagerEx.getApplicationEx(); + Application applicationEx = ApplicationManager.getApplication(); if (applicationEx != null) { Disposer.dispose(applicationEx); //ApplicationManagerEx.setApplication(null); it will set automatically back to null