public static <T> void registerExtensionPoint(
ExtensionPointName<T> name, Class<T> clazz, Disposable parentDisposable) {
ExtensionsArea area = Extensions.getRootArea();
String epName = name.getName();
area.registerExtensionPoint(epName, clazz.getName());
Disposer.register(parentDisposable, () -> area.unregisterExtensionPoint(epName));
}
public static void doRegisterExtensionPoint(String extensionPointName, Object extension, Project project) {
// Dynamic registering exp point for IDEA 7
ExtensionsArea area = project != null ? Extensions.getArea(project): Extensions.getRootArea();
if (area != null && area.hasExtensionPoint(extensionPointName)) {
area.getExtensionPoint(extensionPointName).registerExtension(extension, LoadingOrder.ANY);
}
}
public JavaAnalyzer() {
Disposable d = () -> {
};
CoreApplicationEnvironment.registerExtensionPoint(Extensions.getRootArea(), ClsCustomNavigationPolicy.EP_NAME, ClsCustomNavigationPolicy.class);
ExtensionsArea area = Extensions.getRootArea();
CoreApplicationEnvironment.registerExtensionPoint(area, BinaryFileStubBuilders.EP_NAME, FileTypeExtensionPoint.class);
CoreApplicationEnvironment.registerExtensionPoint(area, FileContextProvider.EP_NAME, FileContextProvider.class);
CoreApplicationEnvironment.registerExtensionPoint(area, MetaDataContributor.EP_NAME, MetaDataContributor.class);
CoreApplicationEnvironment.registerExtensionPoint(area, PsiAugmentProvider.EP_NAME, PsiAugmentProvider.class);
CoreApplicationEnvironment.registerExtensionPoint(area, JavaMainMethodProvider.EP_NAME, JavaMainMethodProvider.class);
CoreApplicationEnvironment.registerExtensionPoint(area, ContainerProvider.EP_NAME, ContainerProvider.class);
CoreApplicationEnvironment.registerExtensionPoint(area, ClassFileDecompilers.EP_NAME, ClassFileDecompilers.Decompiler.class);
CoreApplicationEnvironment.registerExtensionPoint(area, TypeAnnotationModifier.EP_NAME, TypeAnnotationModifier.class);
CoreApplicationEnvironment.registerExtensionPoint(area, MetaLanguage.EP_NAME, MetaLanguage.class);
CoreApplicationEnvironment.registerExtensionPoint(area, JavaModuleSystem.EP_NAME, JavaModuleSystem.class);
CoreApplicationEnvironment.registerApplicationExtensionPoint(ContainerProvider.EP_NAME, JavaContainerProvider.class);
appEnvironment = new JavaCoreApplicationEnvironment(d);
appEnvironment.registerApplicationService(JavaClassSupers.class, new JavaClassSupersImpl());
javaEnvironment = new JavaCoreProjectEnvironment(d, appEnvironment) {
@Override
protected void preregisterServices() {
ExtensionsArea a = Extensions.getArea(myProject);
CoreApplicationEnvironment.registerExtensionPoint(a, PsiTreeChangePreprocessor.EP_NAME, PsiTreeChangePreprocessor.class);
CoreApplicationEnvironment.registerExtensionPoint(a, PsiElementFinder.EP_NAME, PsiElementFinder.class);
CoreApplicationEnvironment.registerExtensionPoint(a, JvmElementProvider.EP_NAME, JvmElementProvider.class);
}
@Override
protected void registerJavaPsiFacade() {
JavaFileManager javaFileManager = getProject().getComponent(JavaFileManager.class);
CoreJavaFileManager coreJavaFileManager = (CoreJavaFileManager) javaFileManager;
ServiceManager.getService(getProject(), CoreJavaFileManager.class);
getProject().registerService(CoreJavaFileManager.class, coreJavaFileManager);
getProject().registerService(PsiNameHelper.class, PsiNameHelperImpl.getInstance());
PsiElementFinder finder = new PsiElementFinderImpl(getProject(), coreJavaFileManager);
ExtensionsArea area = Extensions.getArea(getProject());
area.getExtensionPoint(PsiElementFinder.EP_NAME).registerExtension(finder);
super.registerJavaPsiFacade();
}
};
System.setProperty("idea.use.native.fs.for.win", "false");
}
@NotNull
@Override
public ExtensionsArea getExtensionArea() {
return null;
}