Refactoring: extract methods from JSLibraryStdPresentationProvider

This commit is contained in:
Nikolay Krasko
2016-03-01 15:34:20 +03:00
parent a21a6c9906
commit 59e2449d4e
6 changed files with 18 additions and 25 deletions
@@ -22,7 +22,7 @@ import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.idea.framework.JSLibraryStdDescription; import org.jetbrains.kotlin.idea.framework.JSLibraryStdDescription;
import org.jetbrains.kotlin.idea.framework.JSLibraryStdPresentationProvider; import org.jetbrains.kotlin.idea.framework.LibraryPresentationProviderUtilKt;
import org.jetbrains.kotlin.idea.project.ProjectStructureUtil; import org.jetbrains.kotlin.idea.project.ProjectStructureUtil;
import org.jetbrains.kotlin.js.JavaScript; import org.jetbrains.kotlin.js.JavaScript;
import org.jetbrains.kotlin.js.resolve.JsPlatform; import org.jetbrains.kotlin.js.resolve.JsPlatform;
@@ -97,7 +97,7 @@ public class KotlinJsModuleConfigurator extends KotlinWithLibraryConfigurator {
@Nullable @Nullable
@Override @Override
protected String getOldSourceRootUrl(@NotNull Library library) { protected String getOldSourceRootUrl(@NotNull Library library) {
VirtualFile jsStdLibJar = JSLibraryStdPresentationProvider.getJsStdLibJar(library); VirtualFile jsStdLibJar = LibraryPresentationProviderUtilKt.getJsStdLibJar(library);
return jsStdLibJar != null ? jsStdLibJar.getUrl() : null; return jsStdLibJar != null ? jsStdLibJar.getUrl() : null;
} }
} }
@@ -25,11 +25,9 @@ import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.idea.KotlinIcons; import org.jetbrains.kotlin.idea.KotlinIcons;
import org.jetbrains.kotlin.utils.LibraryUtils;
import org.jetbrains.kotlin.utils.PathUtil; import org.jetbrains.kotlin.utils.PathUtil;
import javax.swing.*; import javax.swing.*;
import java.util.Arrays;
import java.util.List; import java.util.List;
public class JSLibraryStdPresentationProvider extends LibraryPresentationProvider<LibraryVersionProperties> { public class JSLibraryStdPresentationProvider extends LibraryPresentationProvider<LibraryVersionProperties> {
@@ -68,16 +66,4 @@ public class JSLibraryStdPresentationProvider extends LibraryPresentationProvide
return false; return false;
} }
@Nullable
public static VirtualFile getJsStdLibJar(@NotNull Library library) {
return LibraryPresentationProviderUtilKt.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 LibraryPresentationProviderUtilKt.isExternalLibrary(library) ? null :
LibraryUtils.getJarFile(Arrays.asList(library.getFiles(OrderRootType.SOURCES)), PathUtil.JS_LIB_SRC_JAR_NAME);
}
} }
@@ -65,6 +65,16 @@ fun getTestJar(library: Library): VirtualFile? {
return LibraryUtils.getJarFile(Arrays.asList(*library.getFiles(OrderRootType.CLASSES)), PathUtil.KOTLIN_TEST_JAR) return LibraryUtils.getJarFile(Arrays.asList(*library.getFiles(OrderRootType.CLASSES)), PathUtil.KOTLIN_TEST_JAR)
} }
fun getJsStdLibJar(library: Library): VirtualFile? {
if (isExternalLibrary(library)) return null
return LibraryUtils.getJarFile(Arrays.asList(*library.getFiles(OrderRootType.CLASSES)), PathUtil.JS_LIB_JAR_NAME)
}
fun getJsStdLibSrcJar(library: Library): VirtualFile? {
if (isExternalLibrary(library)) return null
return LibraryUtils.getJarFile(Arrays.asList(*library.getFiles(OrderRootType.SOURCES)), PathUtil.JS_LIB_SRC_JAR_NAME)
}
private fun getRuntimeSrcJar(classesRoots: List<VirtualFile>): VirtualFile? { private fun getRuntimeSrcJar(classesRoots: List<VirtualFile>): VirtualFile? {
return LibraryUtils.getJarFile(classesRoots, PathUtil.KOTLIN_JAVA_RUNTIME_SRC_JAR); return LibraryUtils.getJarFile(classesRoots, PathUtil.KOTLIN_JAVA_RUNTIME_SRC_JAR);
} }
@@ -86,13 +86,13 @@ fun updateLibraries(project: Project, libraries: Collection<Library>) {
} }
} }
else if (isDetected(JSLibraryStdPresentationProvider.getInstance(), library)) { else if (isDetected(JSLibraryStdPresentationProvider.getInstance(), library)) {
updateJar(project, JSLibraryStdPresentationProvider.getJsStdLibJar(library), LibraryJarDescriptor.JS_STDLIB_JAR) updateJar(project, getJsStdLibJar(library), LibraryJarDescriptor.JS_STDLIB_JAR)
if (kJsConfigurator.changeOldSourcesPathIfNeeded(library, collector)) { if (kJsConfigurator.changeOldSourcesPathIfNeeded(library, collector)) {
kJsConfigurator.copySourcesToPathFromLibrary(library, collector) kJsConfigurator.copySourcesToPathFromLibrary(library, collector)
} }
else { else {
updateJar(project, JSLibraryStdPresentationProvider.getJsStdLibSrcJar(library), LibraryJarDescriptor.JS_STDLIB_SRC_JAR) updateJar(project, getJsStdLibSrcJar(library), LibraryJarDescriptor.JS_STDLIB_SRC_JAR)
} }
} }
} }
@@ -28,10 +28,7 @@ import com.intellij.openapi.roots.libraries.Library
import com.intellij.util.PathUtil.getLocalFile import com.intellij.util.PathUtil.getLocalFile
import com.intellij.util.text.VersionComparatorUtil import com.intellij.util.text.VersionComparatorUtil
import org.jetbrains.kotlin.idea.KotlinPluginUtil import org.jetbrains.kotlin.idea.KotlinPluginUtil
import org.jetbrains.kotlin.idea.framework.JSLibraryStdPresentationProvider import org.jetbrains.kotlin.idea.framework.*
import org.jetbrains.kotlin.idea.framework.JavaRuntimePresentationProvider
import org.jetbrains.kotlin.idea.framework.getLibraryProperties
import org.jetbrains.kotlin.idea.framework.isDetected
import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.idea.util.application.runWriteAction
import java.io.IOException import java.io.IOException
import javax.swing.event.HyperlinkEvent import javax.swing.event.HyperlinkEvent
@@ -138,7 +135,7 @@ private fun suggestDeleteKotlinJsIfNeeded(project: Project, outdatedLibraries: C
var addNotification = false var addNotification = false
for (library in outdatedLibraries) { for (library in outdatedLibraries) {
if (isDetected(JSLibraryStdPresentationProvider.getInstance(), library)) { if (isDetected(JSLibraryStdPresentationProvider.getInstance(), library)) {
val jsStdlibJar = JSLibraryStdPresentationProvider.getJsStdLibJar(library) val jsStdlibJar = getJsStdLibJar(library)
assert(jsStdlibJar != null) { "jslibFile should not be null" } assert(jsStdlibJar != null) { "jslibFile should not be null" }
if (jsStdlibJar!!.findFileByRelativePath("kotlin.js") == null) { if (jsStdlibJar!!.findFileByRelativePath("kotlin.js") == null) {
@@ -42,7 +42,7 @@ import com.intellij.ui.EditorNotificationPanel
import com.intellij.ui.EditorNotifications import com.intellij.ui.EditorNotifications
import com.intellij.ui.HyperlinkLabel import com.intellij.ui.HyperlinkLabel
import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.idea.framework.JSLibraryStdPresentationProvider import org.jetbrains.kotlin.idea.framework.getJsStdLibJar
import org.jetbrains.kotlin.idea.framework.getRuntimeJar import org.jetbrains.kotlin.idea.framework.getRuntimeJar
import java.text.MessageFormat import java.text.MessageFormat
import javax.swing.Icon import javax.swing.Icon
@@ -72,7 +72,7 @@ class UnsupportedAbiVersionNotificationPanelProvider(private val project: Projec
val kotlinLibraries = findAllUsedLibraries(project).keySet() val kotlinLibraries = findAllUsedLibraries(project).keySet()
val badRuntimeLibraries = kotlinLibraries.filter { library -> val badRuntimeLibraries = kotlinLibraries.filter { library ->
val runtimeJar = getLocalJar(getRuntimeJar(library)) val runtimeJar = getLocalJar(getRuntimeJar(library))
val jsLibJar = getLocalJar(JSLibraryStdPresentationProvider.getJsStdLibJar(library)) val jsLibJar = getLocalJar(getJsStdLibJar(library))
badRoots.contains(runtimeJar) || badRoots.contains(jsLibJar) badRoots.contains(runtimeJar) || badRoots.contains(jsLibJar)
} }