Don't detect libraries in maven, gradle and ide systems as runtime libraries

#KT-11072 Fixed
 #KT-10918 Fixed
This commit is contained in:
Nikolay Krasko
2016-02-26 21:04:02 +03:00
parent b70d0f8c28
commit 97837e6315
4 changed files with 25 additions and 9 deletions
@@ -71,11 +71,13 @@ public class JSLibraryStdPresentationProvider extends LibraryPresentationProvide
@Nullable
public static VirtualFile getJsStdLibJar(@NotNull Library library) {
return LibraryUtils.getJarFile(Arrays.asList(library.getFiles(OrderRootType.CLASSES)), PathUtil.JS_LIB_JAR_NAME);
return LibraryPresentationProviderUtil.isExternalLibrary(library) ? null :
LibraryUtils.getJarFile(Arrays.asList(library.getFiles(OrderRootType.CLASSES)), PathUtil.JS_LIB_JAR_NAME);
}
@Nullable
public static VirtualFile getJsStdLibSrcJar(@NotNull Library library) {
return LibraryUtils.getJarFile(Arrays.asList(library.getFiles(OrderRootType.SOURCES)), PathUtil.JS_LIB_SRC_JAR_NAME);
return LibraryPresentationProviderUtil.isExternalLibrary(library) ? null :
LibraryUtils.getJarFile(Arrays.asList(library.getFiles(OrderRootType.SOURCES)), PathUtil.JS_LIB_SRC_JAR_NAME);
}
}
@@ -61,21 +61,25 @@ public class JavaRuntimePresentationProvider extends LibraryPresentationProvider
@Nullable
public static VirtualFile getRuntimeJar(@NotNull Library library) {
return JavaRuntimeDetectionUtil.getRuntimeJar(Arrays.asList(library.getFiles(OrderRootType.CLASSES)));
return LibraryPresentationProviderUtil.isExternalLibrary(library) ? null :
JavaRuntimeDetectionUtil.getRuntimeJar(Arrays.asList(library.getFiles(OrderRootType.CLASSES)));
}
@Nullable
public static VirtualFile getReflectJar(@NotNull Library library) {
return LibraryUtils.getJarFile(Arrays.asList(library.getFiles(OrderRootType.CLASSES)), PathUtil.KOTLIN_JAVA_REFLECT_JAR);
return LibraryPresentationProviderUtil.isExternalLibrary(library) ? null :
LibraryUtils.getJarFile(Arrays.asList(library.getFiles(OrderRootType.CLASSES)), PathUtil.KOTLIN_JAVA_REFLECT_JAR);
}
@Nullable
public static VirtualFile getRuntimeSrcJar(@NotNull Library library) {
return getRuntimeSrcJar(Arrays.asList(library.getFiles(OrderRootType.SOURCES)));
return LibraryPresentationProviderUtil.isExternalLibrary(library) ? null :
getRuntimeSrcJar(Arrays.asList(library.getFiles(OrderRootType.SOURCES)));
}
@Nullable
public static VirtualFile getTestJar(@NotNull Library library) {
return LibraryUtils.getJarFile(Arrays.asList(library.getFiles(OrderRootType.CLASSES)), PathUtil.KOTLIN_TEST_JAR);
return LibraryPresentationProviderUtil.isExternalLibrary(library) ? null :
LibraryUtils.getJarFile(Arrays.asList(library.getFiles(OrderRootType.CLASSES)), PathUtil.KOTLIN_TEST_JAR);
}
}
@@ -16,6 +16,8 @@
package org.jetbrains.kotlin.idea.framework;
import com.intellij.openapi.externalSystem.model.ProjectSystemId;
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil;
import com.intellij.openapi.roots.OrderRootType;
import com.intellij.openapi.roots.libraries.Library;
import com.intellij.openapi.roots.libraries.LibraryPresentationProvider;
@@ -34,6 +36,16 @@ public class LibraryPresentationProviderUtil {
@Nullable
public static <LP extends LibraryProperties> LP getLibraryProperties(@NotNull LibraryPresentationProvider<LP> provider, @NotNull Library library) {
if (isExternalLibrary(library)) return null;
return provider.detect(Arrays.asList(library.getFiles(OrderRootType.CLASSES)));
}
private static final ProjectSystemId MAVEN_SYSTEM_ID = new ProjectSystemId("MAVEN");
private static final ProjectSystemId GRADLE_SYSTEM_ID = new ProjectSystemId("GRADLE");
public static boolean isExternalLibrary(@NotNull Library library) {
return ExternalSystemApiUtil.isExternalSystemLibrary(library, ProjectSystemId.IDE) ||
ExternalSystemApiUtil.isExternalSystemLibrary(library, GRADLE_SYSTEM_ID) ||
ExternalSystemApiUtil.isExternalSystemLibrary(library, MAVEN_SYSTEM_ID);
}
}
@@ -64,9 +64,7 @@ fun getLibraryRootsWithAbiIncompatibleForKotlinJs(module: Module): Collection<Vi
}
fun updateLibraries(
project: Project,
libraries: Collection<Library>) {
fun updateLibraries(project: Project, libraries: Collection<Library>) {
ApplicationManager.getApplication().invokeLater {
val kJvmConfigurator = getConfiguratorByName(KotlinJavaModuleConfigurator.NAME) as KotlinJavaModuleConfigurator? ?:
error("Configurator with given name doesn't exists: " + KotlinJavaModuleConfigurator.NAME)