Make Kotlin accessible for UpSource.

Extracted some initialization of JetCoreEnvironment.
This commit is contained in:
Alexey Kudravtsev
2014-07-04 16:47:45 +04:00
committed by Evgeny Gerashchenko
parent 28c29dbfde
commit 5489ae08da
@@ -137,22 +137,31 @@ public class JetCoreEnvironment {
}
}
private static JavaCoreApplicationEnvironment createApplicationEnvironment(Disposable parentDisposable) {
@NotNull
private static JavaCoreApplicationEnvironment createApplicationEnvironment(@NotNull Disposable parentDisposable) {
JavaCoreApplicationEnvironment applicationEnvironment = new JavaCoreApplicationEnvironment(parentDisposable);
registerApplicationServicesForCLI(applicationEnvironment);
registerApplicationServices(applicationEnvironment);
return applicationEnvironment;
}
private static void registerApplicationServicesForCLI(@NotNull JavaCoreApplicationEnvironment applicationEnvironment) {
// ability to get text from annotations xml files
applicationEnvironment.registerFileType(PlainTextFileType.INSTANCE, "xml");
applicationEnvironment.registerParserDefinition(new JavaParserDefinition());
}
// made public for Upsource
public static void registerApplicationServices(@NotNull JavaCoreApplicationEnvironment applicationEnvironment) {
applicationEnvironment.registerFileType(JetFileType.INSTANCE, "kt");
applicationEnvironment.registerFileType(JetFileType.INSTANCE, "ktm");
applicationEnvironment.registerFileType(JetFileType.INSTANCE, JetParserDefinition.STD_SCRIPT_SUFFIX); // should be renamed to kts
applicationEnvironment.registerParserDefinition(new JavaParserDefinition());
applicationEnvironment.registerParserDefinition(new JetParserDefinition());
applicationEnvironment.getApplication().registerService(OperationModeProvider.class, new CompilerModeProvider());
applicationEnvironment.getApplication().registerService(KotlinBinaryClassCache.class, new KotlinBinaryClassCache());
return applicationEnvironment;
}
private final JavaCoreProjectEnvironment projectEnvironment;
@@ -174,17 +183,12 @@ public class JetCoreEnvironment {
projectEnvironment = new JavaCoreProjectEnvironment(parentDisposable, applicationEnvironment);
MockProject project = projectEnvironment.getProject();
project.registerService(JetScriptDefinitionProvider.class, new JetScriptDefinitionProvider());
project.registerService(CoreJavaFileManager.class, (CoreJavaFileManager) ServiceManager.getService(project, JavaFileManager.class));
annotationsManager = new CoreExternalAnnotationsManager(project.getComponent(PsiManager.class));
project.registerService(ExternalAnnotationsManager.class, annotationsManager);
project.registerService(DeclarationProviderFactoryService.class, new CliDeclarationProviderFactoryService(sourceFiles));
CliLightClassGenerationSupport cliLightClassGenerationSupport = new CliLightClassGenerationSupport();
project.registerService(LightClassGenerationSupport.class, cliLightClassGenerationSupport);
project.registerService(CliLightClassGenerationSupport.class, cliLightClassGenerationSupport);
project.registerService(KotlinLightClassForPackage.FileStubCache.class, new KotlinLightClassForPackage.FileStubCache(project));
Extensions.getArea(project)
.getExtensionPoint(PsiElementFinder.EP_NAME)
.registerExtension(new JavaElementFinder(project, cliLightClassGenerationSupport));
registerProjectServicesForCLI(projectEnvironment);
registerProjectServices(projectEnvironment);
// This extension points should be registered in JavaCoreApplicationEnvironment
CoreApplicationEnvironment.registerExtensionPoint(Extensions.getRootArea(), ClsCustomNavigationPolicy.EP_NAME,
@@ -192,9 +196,6 @@ public class JetCoreEnvironment {
CoreApplicationEnvironment.registerExtensionPoint(Extensions.getRootArea(), ClassFileDecompilers.EP_NAME,
ClassFileDecompilers.Decompiler.class);
annotationsManager = new CoreExternalAnnotationsManager(project.getComponent(PsiManager.class));
project.registerService(ExternalAnnotationsManager.class, annotationsManager);
for (File path : configuration.getList(JVMConfigurationKeys.CLASSPATH_KEY)) {
addToClasspath(path);
}
@@ -203,19 +204,38 @@ public class JetCoreEnvironment {
}
sourceFiles.addAll(
CompileEnvironmentUtil
.getJetFiles(getProject(), configuration.getList(CommonConfigurationKeys.SOURCE_ROOTS_KEY), new Function1<String, Unit>() {
@Override
public Unit invoke(String s) {
report(ERROR, s);
return Unit.VALUE;
}
}));
.getJetFiles(getProject(), configuration.getList(CommonConfigurationKeys.SOURCE_ROOTS_KEY),
new Function1<String, Unit>() {
@Override
public Unit invoke(String s) {
report(ERROR, s);
return Unit.VALUE;
}
}));
JetScriptDefinitionProvider.getInstance(project).addScriptDefinitions(
configuration.getList(CommonConfigurationKeys.SCRIPT_DEFINITIONS_KEY));
project.registerService(VirtualFileFinder.class, new CliVirtualFileFinder(classPath));
project.registerService(DeclarationProviderFactoryService.class, new CliDeclarationProviderFactoryService(sourceFiles));
}
// made public for Upsource
public static void registerProjectServices(@NotNull JavaCoreProjectEnvironment projectEnvironment) {
MockProject project = projectEnvironment.getProject();
project.registerService(JetScriptDefinitionProvider.class, new JetScriptDefinitionProvider());
CliLightClassGenerationSupport cliLightClassGenerationSupport = new CliLightClassGenerationSupport();
project.registerService(LightClassGenerationSupport.class, cliLightClassGenerationSupport);
project.registerService(CliLightClassGenerationSupport.class, cliLightClassGenerationSupport);
project.registerService(KotlinLightClassForPackage.FileStubCache.class, new KotlinLightClassForPackage.FileStubCache(project));
Extensions.getArea(project)
.getExtensionPoint(PsiElementFinder.EP_NAME)
.registerExtension(new JavaElementFinder(project, cliLightClassGenerationSupport));
}
private static void registerProjectServicesForCLI(@NotNull JavaCoreProjectEnvironment projectEnvironment) {
MockProject project = projectEnvironment.getProject();
project.registerService(CoreJavaFileManager.class, (CoreJavaFileManager) ServiceManager.getService(project, JavaFileManager.class));
}
public CompilerConfiguration getConfiguration() {