mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
introduce ApplicationComponentLocator; use it for implementing getInstance()
This commit is contained in:
+42
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* 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.ApplicationManager;
|
||||
import com.intellij.openapi.application.ApplicationComponentLocator;
|
||||
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)ApplicationManager.getApplication().getPicoContainer().getComponentInstance(serviceClass.getName());
|
||||
return (T)ApplicationComponentLocator.getComponentInstance(serviceClass.getName());
|
||||
}
|
||||
|
||||
public static <T> T getService(@NotNull Project project, @NotNull Class<T> serviceClass) {
|
||||
|
||||
@@ -15,8 +15,7 @@
|
||||
*/
|
||||
package com.intellij.openapi.fileTypes;
|
||||
|
||||
import com.intellij.openapi.application.Application;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.ApplicationComponentLocator;
|
||||
import com.intellij.openapi.application.CachedSingletonsRegistry;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
@@ -39,8 +38,7 @@ public abstract class FileTypeManager{
|
||||
*/
|
||||
public static FileTypeManager getInstance() {
|
||||
if (ourInstance == null) {
|
||||
Application app = ApplicationManager.getApplication();
|
||||
ourInstance = app != null ? app.getComponent(FileTypeManager.class) : new MockFileTypeManager();
|
||||
ourInstance = ApplicationComponentLocator.initialized() ? ApplicationComponentLocator.getComponent(FileTypeManager.class) : new MockFileTypeManager();
|
||||
}
|
||||
return ourInstance;
|
||||
}
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
*/
|
||||
package com.intellij.openapi.vfs;
|
||||
|
||||
import com.intellij.openapi.application.Application;
|
||||
import com.intellij.openapi.application.ModalityState;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
package com.intellij.openapi.vfs;
|
||||
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.ApplicationComponentLocator;
|
||||
import com.intellij.openapi.application.ModalityState;
|
||||
import com.intellij.openapi.util.ModificationTracker;
|
||||
import com.intellij.openapi.vfs.newvfs.BulkFileListener;
|
||||
@@ -42,7 +42,7 @@ public abstract class VirtualFileManager implements ModificationTracker{
|
||||
*/
|
||||
@NotNull
|
||||
public static VirtualFileManager getInstance(){
|
||||
return ApplicationManager.getApplication().getComponent(VirtualFileManager.class);
|
||||
return ApplicationComponentLocator.getComponent(VirtualFileManager.class);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+2
@@ -17,6 +17,7 @@ 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;
|
||||
@@ -45,6 +46,7 @@ public class ApplicationManagerEx extends ApplicationManager {
|
||||
|
||||
public static void setApplication(Application instance) {
|
||||
ourApplication = instance;
|
||||
ApplicationComponentLocator.setInstance(instance);
|
||||
CachedSingletonsRegistry.cleanupCachedFields();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user