Refactoring: extract methods from JavaRuntimePresentationProvider
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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<LibraryVersionProperties> {
|
||||
@@ -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<VirtualFile> 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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 <LP : LibraryProperties<out Any>> isDetected(provider: LibraryPresentationProvider<LP>, 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)
|
||||
}
|
||||
}
|
||||
|
||||
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>): VirtualFile? {
|
||||
return LibraryUtils.getJarFile(classesRoots, PathUtil.KOTLIN_JAVA_RUNTIME_SRC_JAR);
|
||||
}
|
||||
|
||||
@@ -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<K
|
||||
val collector = createConfigureKotlinNotificationCollector(project)
|
||||
|
||||
for (library in findAllUsedLibraries(project).keySet()) {
|
||||
val runtimeJar = JavaRuntimePresentationProvider.getRuntimeJar(library) ?: continue
|
||||
val runtimeJar = getRuntimeJar(library) ?: continue
|
||||
if (hasLibJarInLibrary(library)) continue
|
||||
|
||||
val model = library.modifiableModel
|
||||
|
||||
@@ -42,9 +42,7 @@ import org.jetbrains.kotlin.idea.configuration.KotlinJavaModuleConfigurator
|
||||
import org.jetbrains.kotlin.idea.configuration.KotlinJsModuleConfigurator
|
||||
import org.jetbrains.kotlin.idea.configuration.createConfigureKotlinNotificationCollector
|
||||
import org.jetbrains.kotlin.idea.configuration.getConfiguratorByName
|
||||
import org.jetbrains.kotlin.idea.framework.JSLibraryStdPresentationProvider
|
||||
import org.jetbrains.kotlin.idea.framework.JavaRuntimePresentationProvider
|
||||
import org.jetbrains.kotlin.idea.framework.isDetected
|
||||
import org.jetbrains.kotlin.idea.framework.*
|
||||
import org.jetbrains.kotlin.serialization.deserialization.BinaryVersion
|
||||
import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils
|
||||
import org.jetbrains.kotlin.utils.PathUtil
|
||||
@@ -76,15 +74,15 @@ fun updateLibraries(project: Project, libraries: Collection<Library>) {
|
||||
|
||||
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)) {
|
||||
|
||||
+2
-2
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user