Refactoring: rename and move KotlinFrameworkDetector to ProjectStructureUtil

This commit is contained in:
Nikolay Krasko
2013-10-25 14:49:21 +04:00
parent e3882e2dfb
commit da8a3c52a0
17 changed files with 88 additions and 40 deletions
@@ -28,7 +28,7 @@ import com.intellij.psi.util.PsiModificationTracker;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
import org.jetbrains.jet.lang.resolve.java.JetFilesProvider;
import org.jetbrains.jet.plugin.framework.KotlinFrameworkDetector;
import org.jetbrains.jet.plugin.project.ProjectStructureUtil;
import org.jetbrains.jet.plugin.project.TargetPlatform;
import org.jetbrains.k2js.analyze.AnalyzerFacadeForJS;
import org.jetbrains.k2js.config.EcmaVersion;
@@ -51,7 +51,7 @@ class JSDeclarationsCacheProvider extends DeclarationsCacheProvider {
synchronized (declarationAnalysisLock) {
LibrarySourcesConfig config = new LibrarySourcesConfig(
project, "default",
KotlinFrameworkDetector.getLibLocationForProject(project),
ProjectStructureUtil.getLibLocationForProject(project),
EcmaVersion.defaultVersion(), false);
AnalyzeExhaust analyzeExhaust = AnalyzerFacadeForJS.analyzeFiles(
@@ -41,7 +41,7 @@ import org.jetbrains.jet.plugin.JetFileType;
import org.jetbrains.jet.plugin.compiler.configuration.Kotlin2JvmCompilerArgumentsHolder;
import org.jetbrains.jet.plugin.compiler.configuration.KotlinCommonCompilerArgumentsHolder;
import org.jetbrains.jet.plugin.compiler.configuration.KotlinCompilerSettings;
import org.jetbrains.jet.plugin.framework.KotlinFrameworkDetector;
import org.jetbrains.jet.plugin.project.ProjectStructureUtil;
import java.io.File;
import java.io.IOException;
@@ -54,7 +54,7 @@ public class JetCompiler implements TranslatingCompiler {
return false;
}
Module module = compileContext.getModuleByFile(virtualFile);
if (module != null && KotlinFrameworkDetector.isJsKotlinModule(module)) {
if (module != null && ProjectStructureUtil.isJsKotlinModule(module)) {
return false;
}
return true;
@@ -42,7 +42,7 @@ import org.jetbrains.jet.plugin.JetFileType;
import org.jetbrains.jet.plugin.compiler.configuration.Kotlin2JsCompilerArgumentsHolder;
import org.jetbrains.jet.plugin.compiler.configuration.KotlinCommonCompilerArgumentsHolder;
import org.jetbrains.jet.plugin.compiler.configuration.KotlinCompilerSettings;
import org.jetbrains.jet.plugin.framework.KotlinFrameworkDetector;
import org.jetbrains.jet.plugin.project.ProjectStructureUtil;
import java.io.File;
import java.util.ArrayList;
@@ -59,7 +59,7 @@ public final class K2JSCompiler implements TranslatingCompiler {
if (module == null) {
return false;
}
return KotlinFrameworkDetector.isJsKotlinModule(module);
return ProjectStructureUtil.isJsKotlinModule(module);
}
@Override
@@ -156,7 +156,7 @@ public final class K2JSCompiler implements TranslatingCompiler {
private static List<String> getLibraryFiles(@NotNull Module module) {
List<String> result = new ArrayList<String>();
List<String> libLocationAndTarget = KotlinFrameworkDetector.getLibLocationForProject(module);
List<String> libLocationAndTarget = ProjectStructureUtil.getLibLocationForProject(module);
THashSet<Module> modules = new THashSet<Module>();
collectModuleDependencies(module, modules);
@@ -32,7 +32,7 @@ import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import org.jetbrains.jet.plugin.caches.JetFromJavaDescriptorHelper;
import org.jetbrains.jet.plugin.caches.JetShortNamesCache;
import org.jetbrains.jet.plugin.framework.KotlinFrameworkDetector;
import org.jetbrains.jet.plugin.project.ProjectStructureUtil;
public class JetTypesCompletionHelper {
private JetTypesCompletionHelper() {
@@ -51,7 +51,7 @@ public class JetTypesCompletionHelper {
jetCompletionResult.addAllElements(namesCache.getJetClassesDescriptors(
jetCompletionResult.getShortNameFilter(), jetCompletionResult.getResolveSession(), GlobalSearchScope.allScope(project)));
if (!KotlinFrameworkDetector.isJsKotlinModule((JetFile) parameters.getOriginalFile())) {
if (!ProjectStructureUtil.isJsKotlinModule((JetFile) parameters.getOriginalFile())) {
addAdaptedJavaCompletion(parameters, jetCompletionResult);
}
}
@@ -27,7 +27,7 @@ import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.plugin.completion.JetLookupObject;
import org.jetbrains.jet.plugin.framework.KotlinFrameworkDetector;
import org.jetbrains.jet.plugin.project.ProjectStructureUtil;
import org.jetbrains.jet.plugin.quickfix.ImportInsertHelper;
public class JetClassInsertHandler implements InsertHandler<LookupElement> {
@@ -60,7 +60,7 @@ public class JetClassInsertHandler implements InsertHandler<LookupElement> {
if (targetElement != null) {
ImportInsertHelper.addImportDirectiveOrChangeToFqName(fqn, jetFile, context.getStartOffset(), targetElement);
}
else if (KotlinFrameworkDetector.isJsKotlinModule(jetFile)) {
else if (ProjectStructureUtil.isJsKotlinModule(jetFile)) {
ImportInsertHelper.addImportDirectiveIfNeeded(fqn, jetFile);
}
}
@@ -1,3 +1,19 @@
/*
* Copyright 2010-2013 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 org.jetbrains.jet.plugin.configuration;
import com.intellij.openapi.application.ApplicationManager;
@@ -6,13 +22,12 @@ import com.intellij.openapi.module.impl.scopes.LibraryScope;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.OrderRootType;
import com.intellij.openapi.roots.libraries.Library;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.plugin.framework.JavaRuntimeLibraryDescription;
import org.jetbrains.jet.plugin.framework.JavaRuntimePresentationProvider;
import org.jetbrains.jet.plugin.framework.KotlinFrameworkDetector;
import org.jetbrains.jet.plugin.framework.ui.CreateJavaLibraryDialogWithModules;
import org.jetbrains.jet.plugin.project.ProjectStructureUtil;
import org.jetbrains.jet.plugin.versions.KotlinRuntimeLibraryUtil;
import org.jetbrains.jet.utils.PathUtil;
@@ -26,7 +41,7 @@ public class KotlinJavaModuleConfigurator extends KotlinWithLibraryConfigurator
@Override
public boolean isConfigured(@NotNull Module module) {
return KotlinFrameworkDetector.isJavaKotlinModule(module);
return ProjectStructureUtil.isJavaKotlinModule(module);
}
@NotNull
@@ -1,3 +1,19 @@
/*
* Copyright 2010-2013 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 org.jetbrains.jet.plugin.configuration;
import com.intellij.openapi.module.Module;
@@ -6,9 +22,9 @@ import com.intellij.openapi.roots.OrderRootType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.plugin.framework.JSLibraryStdDescription;
import org.jetbrains.jet.plugin.framework.KotlinFrameworkDetector;
import org.jetbrains.jet.plugin.framework.ui.CreateJavaScriptLibraryDialogWithModules;
import org.jetbrains.jet.plugin.framework.ui.FileUIUtils;
import org.jetbrains.jet.plugin.project.ProjectStructureUtil;
import org.jetbrains.jet.utils.PathUtil;
import java.io.File;
@@ -31,7 +47,7 @@ public class KotlinJsModuleConfigurator extends KotlinWithLibraryConfigurator {
@Override
public boolean isConfigured(@NotNull Module module) {
if (KotlinFrameworkDetector.isJsKotlinModule(module)) {
if (ProjectStructureUtil.isJsKotlinModule(module)) {
String pathFromLibrary = getPathFromLibrary(module.getProject(), OrderRootType.CLASSES);
return pathFromLibrary != null && getFileInDir(getJarName(), pathFromLibrary).exists();
}
@@ -44,8 +44,8 @@ import org.jetbrains.idea.maven.dom.model.*;
import org.jetbrains.idea.maven.project.MavenProjectsManager;
import org.jetbrains.jet.cli.common.KotlinVersion;
import org.jetbrains.jet.plugin.JetPluginUtil;
import org.jetbrains.jet.plugin.framework.KotlinFrameworkDetector;
import org.jetbrains.jet.plugin.framework.ui.ConfigureDialogWithModulesAndVersion;
import org.jetbrains.jet.plugin.project.ProjectStructureUtil;
import java.util.List;
@@ -66,7 +66,7 @@ public class KotlinMavenConfigurator implements KotlinProjectConfigurator {
@Override
public boolean isConfigured(@NotNull Module module) {
if (KotlinFrameworkDetector.isJavaKotlinModule(module)) {
if (ProjectStructureUtil.isJavaKotlinModule(module)) {
return true;
}
@@ -33,8 +33,8 @@ import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.plugin.framework.KotlinFrameworkDetector;
import org.jetbrains.jet.plugin.framework.ui.ConfigureDialogWithModulesAndVersion;
import org.jetbrains.jet.plugin.project.ProjectStructureUtil;
import org.jetbrains.plugins.gradle.util.GradleConstants;
import org.jetbrains.plugins.groovy.lang.psi.GroovyFile;
import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory;
@@ -64,7 +64,7 @@ public abstract class KotlinWithGradleConfigurator implements KotlinProjectConfi
@Override
public boolean isConfigured(@NotNull Module module) {
if (KotlinFrameworkDetector.isJavaKotlinModule(module)) {
if (ProjectStructureUtil.isJavaKotlinModule(module)) {
return true;
}
@@ -36,7 +36,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.plugin.configuration.AbsentSdkAnnotationsNotificationManager;
import org.jetbrains.jet.plugin.configuration.ConfigureKotlinInProjectUtils;
import org.jetbrains.jet.plugin.configuration.ui.notifications.NotificationsPackage;
import org.jetbrains.jet.plugin.framework.KotlinFrameworkDetector;
import org.jetbrains.jet.plugin.project.ProjectStructureUtil;
import org.jetbrains.jet.plugin.versions.KotlinRuntimeLibraryUtil;
import java.util.Collection;
@@ -111,7 +111,7 @@ public class AbsentJdkAnnotationsComponent extends AbstractProjectComponent {
private Collection<Sdk> collectSdksWithoutAnnotations() {
Set<Sdk> sdks = Sets.newHashSet();
for (Module module : ConfigureKotlinInProjectUtils.getModulesWithKotlinFiles(myProject)) {
if (KotlinFrameworkDetector.isJavaKotlinModule(module)) {
if (ProjectStructureUtil.isJavaKotlinModule(module)) {
Sdk sdk = ModuleRootManager.getInstance(module).getSdk();
if (sdk != null && !isAnnotationsArePresent(sdk)) {
sdks.add(sdk);
@@ -1,3 +1,19 @@
/*
* Copyright 2010-2013 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 org.jetbrains.jet.plugin.debugger;
import com.intellij.openapi.module.Module;
@@ -6,7 +22,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.PairProcessor;
import org.jetbrains.jet.plugin.JetFileType;
import org.jetbrains.jet.plugin.framework.KotlinFrameworkDetector;
import org.jetbrains.jet.plugin.project.ProjectStructureUtil;
public class KotlinJavaScriptBreakpointAware implements PairProcessor<VirtualFile, Project> {
@Override
@@ -14,7 +30,7 @@ public class KotlinJavaScriptBreakpointAware implements PairProcessor<VirtualFil
if (file.getFileType() == JetFileType.INSTANCE) {
Module module = ModuleUtilCore.findModuleForFile(file, project);
if (module != null) {
return KotlinFrameworkDetector.isJsKotlinModule(module);
return ProjectStructureUtil.isJsKotlinModule(module);
}
}
return false;
@@ -18,12 +18,11 @@ package org.jetbrains.jet.plugin.project;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.plugin.framework.KotlinFrameworkDetector;
import org.jetbrains.k2js.config.EcmaVersion;
import org.jetbrains.k2js.config.LibrarySourcesConfig;
public final class IDEAConfig extends LibrarySourcesConfig {
public IDEAConfig(@NotNull Project project) {
super(project, "default", KotlinFrameworkDetector.getLibLocationForProject(project), EcmaVersion.defaultVersion(), false);
super(project, "default", ProjectStructureUtil.getLibLocationForProject(project), EcmaVersion.defaultVersion(), false);
}
}
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.jetbrains.jet.plugin.framework;
package org.jetbrains.jet.plugin.project;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
@@ -41,16 +41,19 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.plugin.configuration.ConfigureKotlinInProjectUtils;
import org.jetbrains.jet.plugin.framework.JSLibraryStdPresentationProvider;
import org.jetbrains.jet.plugin.framework.JsHeaderLibraryPresentationProvider;
import org.jetbrains.jet.plugin.framework.LibraryPresentationProviderUtil;
import org.jetbrains.jet.plugin.versions.KotlinRuntimeLibraryUtil;
import java.util.Collections;
import java.util.List;
import java.util.Set;
public class KotlinFrameworkDetector {
public class ProjectStructureUtil {
private static final Key<CachedValue<Boolean>> IS_KOTLIN_JS_MODULE = Key.create("IS_KOTLIN_JS_MODULE");
private KotlinFrameworkDetector() {
private ProjectStructureUtil() {
}
public static boolean isJsKotlinModule(@NotNull JetFile file) {
@@ -70,7 +73,8 @@ public class KotlinFrameworkDetector {
result = CachedValuesManager.getManager(module.getProject()).createCachedValue(new CachedValueProvider<Boolean>() {
@Override
public Result<Boolean> compute() {
return Result.create(getJSStandardLibrary(module) != null, ProjectRootModificationTracker.getInstance(module.getProject()));
return Result.create(getJSStandardLibrary(module) != null, ProjectRootModificationTracker
.getInstance(module.getProject()));
}
}, false);
@@ -123,7 +127,6 @@ public class KotlinFrameworkDetector {
return Lists.newArrayList(pathsToJSLib);
}
@Nullable
private static Library getJSStandardLibrary(final Module module) {
return ApplicationManager.getApplication().runReadAction(new Computable<Library>() {
@@ -23,7 +23,6 @@ import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.analyzer.AnalyzerFacade;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.plugin.framework.KotlinFrameworkDetector;
public class TargetPlatformDetector {
public static final TargetPlatformDetector INSTANCE = new TargetPlatformDetector();
@@ -48,7 +47,7 @@ public class TargetPlatformDetector {
@NotNull
public static TargetPlatform getPlatform(@NotNull Module module) {
if (KotlinFrameworkDetector.isJsKotlinModule(module)) {
if (ProjectStructureUtil.isJsKotlinModule(module)) {
return TargetPlatform.JS;
}
return TargetPlatform.JVM;
@@ -51,9 +51,9 @@ import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.plugin.JetBundle;
import org.jetbrains.jet.plugin.actions.JetAddImportAction;
import org.jetbrains.jet.plugin.caches.JetShortNamesCache;
import org.jetbrains.jet.plugin.framework.KotlinFrameworkDetector;
import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache;
import org.jetbrains.jet.plugin.project.CancelableResolveSession;
import org.jetbrains.jet.plugin.project.ProjectStructureUtil;
import org.jetbrains.jet.plugin.util.JetPsiHeuristicsUtil;
import java.util.Collection;
@@ -163,7 +163,7 @@ public class AutoImportFix extends JetHintAction<JetSimpleNameExpression> implem
public static Collection<FqName> getClassNames(@NotNull String referenceName, @NotNull JetFile file, @NotNull KotlinCodeAnalyzer analyzer) {
Set<FqName> possibleResolveNames = Sets.newHashSet();
if (!KotlinFrameworkDetector.isJsKotlinModule(file)) {
if (!ProjectStructureUtil.isJsKotlinModule(file)) {
possibleResolveNames.addAll(getClassesFromCache(referenceName, file));
}
else {
@@ -200,7 +200,7 @@ public class AutoImportFix extends JetHintAction<JetSimpleNameExpression> implem
}
private static PsiShortNamesCache getShortNamesCache(@NotNull JetFile jetFile) {
if (KotlinFrameworkDetector.isJsKotlinModule(jetFile)) {
if (ProjectStructureUtil.isJsKotlinModule(jetFile)) {
return JetShortNamesCache.getKotlinInstance(jetFile.getProject());
}
@@ -36,8 +36,8 @@ import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.lang.types.TypeUtils;
import org.jetbrains.jet.plugin.JetPluginUtil;
import org.jetbrains.jet.plugin.framework.KotlinFrameworkDetector;
import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache;
import org.jetbrains.jet.plugin.project.ProjectStructureUtil;
import org.jetbrains.jet.plugin.references.JetPsiReference;
import org.jetbrains.jet.util.QualifiedNamesUtil;
import org.jetbrains.k2js.analyze.JsConfiguration;
@@ -164,7 +164,7 @@ public class ImportInsertHelper {
if (isImportedWithKotlinDefault(importPath)) return true;
if (KotlinFrameworkDetector.isJsKotlinModule(jetFile)) {
if (ProjectStructureUtil.isJsKotlinModule(jetFile)) {
return isImportedWithJsDefault(importPath);
}
else {
@@ -33,7 +33,7 @@ import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.plugin.JetMainDetector;
import org.jetbrains.jet.plugin.JetPluginUtil;
import org.jetbrains.jet.plugin.framework.KotlinFrameworkDetector;
import org.jetbrains.jet.plugin.project.ProjectStructureUtil;
import java.util.List;
@@ -58,7 +58,7 @@ public class JetRunConfigurationProducer extends RuntimeConfigurationProducer im
return null;
}
if (KotlinFrameworkDetector.isJsKotlinModule(module)) {
if (ProjectStructureUtil.isJsKotlinModule(module)) {
return null;
}