From a21a6c99069c228d5de24d8e616a066a9121590a Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Tue, 1 Mar 2016 15:29:27 +0300 Subject: [PATCH] Refactoring: extract methods from JavaRuntimePresentationProvider --- .../KotlinJavaModuleConfigurator.java | 4 +-- .../JavaRuntimePresentationProvider.java | 34 ------------------- .../LibraryPresentationProviderUtil.kt | 29 +++++++++++++++- .../idea/inspections/AddKotlinLibQuickFix.kt | 10 +++--- .../idea/versions/KotlinRuntimeLibraryUtil.kt | 12 +++---- ...rtedAbiVersionNotificationPanelProvider.kt | 4 +-- 6 files changed, 43 insertions(+), 50 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaModuleConfigurator.java b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaModuleConfigurator.java index cf474d37550..a1c247e2260 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaModuleConfigurator.java +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaModuleConfigurator.java @@ -24,7 +24,7 @@ import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.idea.framework.JavaRuntimeLibraryDescription; -import org.jetbrains.kotlin.idea.framework.JavaRuntimePresentationProvider; +import org.jetbrains.kotlin.idea.framework.LibraryPresentationProviderUtilKt; import org.jetbrains.kotlin.idea.project.ProjectStructureUtil; import org.jetbrains.kotlin.idea.versions.KotlinRuntimeLibraryCoreUtil; import org.jetbrains.kotlin.resolve.TargetPlatform; @@ -96,7 +96,7 @@ public class KotlinJavaModuleConfigurator extends KotlinWithLibraryConfigurator @Nullable @Override protected String getOldSourceRootUrl(@NotNull Library library) { - VirtualFile runtimeJarPath = JavaRuntimePresentationProvider.getRuntimeJar(library); + VirtualFile runtimeJarPath = LibraryPresentationProviderUtilKt.getRuntimeJar(library); return runtimeJarPath != null ? runtimeJarPath.getUrl() + "src" : null; } diff --git a/idea/src/org/jetbrains/kotlin/idea/framework/JavaRuntimePresentationProvider.java b/idea/src/org/jetbrains/kotlin/idea/framework/JavaRuntimePresentationProvider.java index 4cf36677644..961326baeaa 100644 --- a/idea/src/org/jetbrains/kotlin/idea/framework/JavaRuntimePresentationProvider.java +++ b/idea/src/org/jetbrains/kotlin/idea/framework/JavaRuntimePresentationProvider.java @@ -17,19 +17,14 @@ package org.jetbrains.kotlin.idea.framework; import com.intellij.framework.library.LibraryVersionProperties; -import com.intellij.openapi.roots.OrderRootType; -import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.libraries.LibraryPresentationProvider; import com.intellij.openapi.roots.libraries.LibraryProperties; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.idea.KotlinIcons; -import org.jetbrains.kotlin.utils.LibraryUtils; -import org.jetbrains.kotlin.utils.PathUtil; import javax.swing.*; -import java.util.Arrays; import java.util.List; public class JavaRuntimePresentationProvider extends LibraryPresentationProvider { @@ -53,33 +48,4 @@ public class JavaRuntimePresentationProvider extends LibraryPresentationProvider String version = JavaRuntimeDetectionUtil.getJavaRuntimeVersion(classesRoots); return version == null ? null : new LibraryVersionProperties(version); } - - @Nullable - private static VirtualFile getRuntimeSrcJar(@NotNull List classesRoots) { - return LibraryUtils.getJarFile(classesRoots, PathUtil.KOTLIN_JAVA_RUNTIME_SRC_JAR); - } - - @Nullable - public static VirtualFile getRuntimeJar(@NotNull Library library) { - return LibraryPresentationProviderUtilKt.isExternalLibrary(library) ? null : - JavaRuntimeDetectionUtil.getRuntimeJar(Arrays.asList(library.getFiles(OrderRootType.CLASSES))); - } - - @Nullable - public static VirtualFile getReflectJar(@NotNull Library library) { - return LibraryPresentationProviderUtilKt.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 LibraryPresentationProviderUtilKt.isExternalLibrary(library) ? null : - getRuntimeSrcJar(Arrays.asList(library.getFiles(OrderRootType.SOURCES))); - } - - @Nullable - public static VirtualFile getTestJar(@NotNull Library library) { - return LibraryPresentationProviderUtilKt.isExternalLibrary(library) ? null : - LibraryUtils.getJarFile(Arrays.asList(library.getFiles(OrderRootType.CLASSES)), PathUtil.KOTLIN_TEST_JAR); - } } diff --git a/idea/src/org/jetbrains/kotlin/idea/framework/LibraryPresentationProviderUtil.kt b/idea/src/org/jetbrains/kotlin/idea/framework/LibraryPresentationProviderUtil.kt index d82bd2d07e5..0c67aa8296f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/framework/LibraryPresentationProviderUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/framework/LibraryPresentationProviderUtil.kt @@ -22,6 +22,9 @@ import com.intellij.openapi.roots.OrderRootType import com.intellij.openapi.roots.libraries.Library import com.intellij.openapi.roots.libraries.LibraryPresentationProvider import com.intellij.openapi.roots.libraries.LibraryProperties +import com.intellij.openapi.vfs.VirtualFile +import org.jetbrains.kotlin.utils.LibraryUtils +import org.jetbrains.kotlin.utils.PathUtil import java.util.* fun > isDetected(provider: LibraryPresentationProvider, library: Library): Boolean { @@ -40,4 +43,28 @@ fun isExternalLibrary(library: Library): Boolean { return ExternalSystemApiUtil.isExternalSystemLibrary(library, ProjectSystemId.IDE) || ExternalSystemApiUtil.isExternalSystemLibrary(library, GRADLE_SYSTEM_ID) || ExternalSystemApiUtil.isExternalSystemLibrary(library, MAVEN_SYSTEM_ID) -} \ No newline at end of file +} + +fun getRuntimeJar(library: Library): VirtualFile? { + if (isExternalLibrary(library)) return null + return JavaRuntimeDetectionUtil.getRuntimeJar(Arrays.asList(*library.getFiles(OrderRootType.CLASSES))) +} + +fun getReflectJar(library: Library): VirtualFile? { + if (isExternalLibrary(library)) return null + return LibraryUtils.getJarFile(Arrays.asList(*library.getFiles(OrderRootType.CLASSES)), PathUtil.KOTLIN_JAVA_REFLECT_JAR) +} + +fun getRuntimeSrcJar(library: Library): VirtualFile? { + if (isExternalLibrary(library)) return null + return getRuntimeSrcJar(Arrays.asList(*library.getFiles(OrderRootType.SOURCES))) +} + +fun getTestJar(library: Library): VirtualFile? { + if (isExternalLibrary(library)) return null + return LibraryUtils.getJarFile(Arrays.asList(*library.getFiles(OrderRootType.CLASSES)), PathUtil.KOTLIN_TEST_JAR) +} + +private fun getRuntimeSrcJar(classesRoots: List): VirtualFile? { + return LibraryUtils.getJarFile(classesRoots, PathUtil.KOTLIN_JAVA_RUNTIME_SRC_JAR); +} diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/AddKotlinLibQuickFix.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/AddKotlinLibQuickFix.kt index 46828bd0dc9..3e02c43b0a3 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/AddKotlinLibQuickFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/AddKotlinLibQuickFix.kt @@ -39,7 +39,9 @@ import org.jetbrains.kotlin.idea.configuration.KotlinJavaModuleConfigurator import org.jetbrains.kotlin.idea.configuration.KotlinProjectConfigurator import org.jetbrains.kotlin.idea.configuration.KotlinWithGradleConfigurator import org.jetbrains.kotlin.idea.configuration.createConfigureKotlinNotificationCollector -import org.jetbrains.kotlin.idea.framework.JavaRuntimePresentationProvider +import org.jetbrains.kotlin.idea.framework.getReflectJar +import org.jetbrains.kotlin.idea.framework.getRuntimeJar +import org.jetbrains.kotlin.idea.framework.getTestJar import org.jetbrains.kotlin.idea.quickfix.KotlinQuickFixAction import org.jetbrains.kotlin.idea.quickfix.KotlinSingleIntentionActionFactory import org.jetbrains.kotlin.idea.quickfix.quickfixUtil.createIntentionForFirstParentOfType @@ -59,7 +61,7 @@ class AddReflectionQuickFix(element: KtElement) : AddKotlinLibQuickFix(element) override fun libraryPath(): String = PathUtil.KOTLIN_JAVA_REFLECT_JAR override fun getLibFile(): File = PathUtil.getKotlinPathsForIdeaPlugin().reflectPath - override fun hasLibJarInLibrary(library: Library): Boolean = JavaRuntimePresentationProvider.getReflectJar(library) != null + override fun hasLibJarInLibrary(library: Library): Boolean = getReflectJar(library) != null override fun getLibraryDescriptor(module: Module) = MavenExternalLibraryDescriptor("org.jetbrains.kotlin", "kotlin-reflect", AddKotlinLibQuickFix.getKotlinStdlibVersion(module)) @@ -74,7 +76,7 @@ class AddTestLibQuickFix(element: KtElement) : AddKotlinLibQuickFix(element) { override fun libraryPath(): String = PathUtil.KOTLIN_TEST_JAR override fun getLibFile(): File = PathUtil.getKotlinPathsForIdeaPlugin().kotlinTestPath - override fun hasLibJarInLibrary(library: Library): Boolean = JavaRuntimePresentationProvider.getTestJar(library) != null + override fun hasLibJarInLibrary(library: Library): Boolean = getTestJar(library) != null override fun getLibraryDescriptor(module: Module) = MavenExternalLibraryDescriptor("org.jetbrains.kotlin", "kotlin-test", AddKotlinLibQuickFix.getKotlinStdlibVersion(module)) @@ -159,7 +161,7 @@ abstract class AddKotlinLibQuickFix(element: KtElement) : KotlinQuickFixAction) { for (library in libraries) { if (isDetected(JavaRuntimePresentationProvider.getInstance(), library)) { - updateJar(project, JavaRuntimePresentationProvider.getRuntimeJar(library), LibraryJarDescriptor.RUNTIME_JAR) - updateJar(project, JavaRuntimePresentationProvider.getReflectJar(library), LibraryJarDescriptor.REFLECT_JAR) - updateJar(project, JavaRuntimePresentationProvider.getTestJar(library), LibraryJarDescriptor.TEST_JAR) + updateJar(project, getRuntimeJar(library), LibraryJarDescriptor.RUNTIME_JAR) + updateJar(project, getReflectJar(library), LibraryJarDescriptor.REFLECT_JAR) + updateJar(project, getTestJar(library), LibraryJarDescriptor.TEST_JAR) if (kJvmConfigurator.changeOldSourcesPathIfNeeded(library, collector)) { kJvmConfigurator.copySourcesToPathFromLibrary(library, collector) } else { - updateJar(project, JavaRuntimePresentationProvider.getRuntimeSrcJar(library), LibraryJarDescriptor.RUNTIME_SRC_JAR) + updateJar(project, getRuntimeSrcJar(library), LibraryJarDescriptor.RUNTIME_SRC_JAR) } } else if (isDetected(JSLibraryStdPresentationProvider.getInstance(), library)) { diff --git a/idea/src/org/jetbrains/kotlin/idea/versions/UnsupportedAbiVersionNotificationPanelProvider.kt b/idea/src/org/jetbrains/kotlin/idea/versions/UnsupportedAbiVersionNotificationPanelProvider.kt index fdb1939bbfc..a50e7ee1055 100644 --- a/idea/src/org/jetbrains/kotlin/idea/versions/UnsupportedAbiVersionNotificationPanelProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/versions/UnsupportedAbiVersionNotificationPanelProvider.kt @@ -43,7 +43,7 @@ import com.intellij.ui.EditorNotifications import com.intellij.ui.HyperlinkLabel import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.framework.JSLibraryStdPresentationProvider -import org.jetbrains.kotlin.idea.framework.JavaRuntimePresentationProvider +import org.jetbrains.kotlin.idea.framework.getRuntimeJar import java.text.MessageFormat import javax.swing.Icon @@ -71,7 +71,7 @@ class UnsupportedAbiVersionNotificationPanelProvider(private val project: Projec val kotlinLibraries = findAllUsedLibraries(project).keySet() val badRuntimeLibraries = kotlinLibraries.filter { library -> - val runtimeJar = getLocalJar(JavaRuntimePresentationProvider.getRuntimeJar(library)) + val runtimeJar = getLocalJar(getRuntimeJar(library)) val jsLibJar = getLocalJar(JSLibraryStdPresentationProvider.getJsStdLibJar(library)) badRoots.contains(runtimeJar) || badRoots.contains(jsLibJar) }