inline ApplicationComponentLocator

This commit is contained in:
Dmitry Jemerov
2011-10-21 15:31:45 +02:00
parent d8488504ef
commit faa1580d54
8 changed files with 24 additions and 56 deletions
@@ -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> T getComponent(Class<T> 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;
}
}
@@ -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> T getService(@NotNull Class<T> serviceClass) {
return (T)ApplicationComponentLocator.getComponentInstance(serviceClass.getName());
return (T)ApplicationManager.getApplication().getPicoContainer().getComponentInstance(serviceClass.getName());
}
public static <T> T getService(@NotNull Project project, @NotNull Class<T> serviceClass) {
@@ -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
@@ -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);
}
/**
@@ -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();
@@ -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;
}
@@ -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();
}
@@ -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