J2K: LibraryPresentationProviderUtil convert

This commit is contained in:
Nikolay Krasko
2016-03-01 13:52:32 +03:00
parent 6349285b06
commit 0594abbad6
5 changed files with 38 additions and 45 deletions
@@ -71,13 +71,13 @@ public class JSLibraryStdPresentationProvider extends LibraryPresentationProvide
@Nullable @Nullable
public static VirtualFile getJsStdLibJar(@NotNull Library library) { public static VirtualFile getJsStdLibJar(@NotNull Library library) {
return LibraryPresentationProviderUtil.isExternalLibrary(library) ? null : return LibraryPresentationProviderUtilKt.isExternalLibrary(library) ? null :
LibraryUtils.getJarFile(Arrays.asList(library.getFiles(OrderRootType.CLASSES)), PathUtil.JS_LIB_JAR_NAME); LibraryUtils.getJarFile(Arrays.asList(library.getFiles(OrderRootType.CLASSES)), PathUtil.JS_LIB_JAR_NAME);
} }
@Nullable @Nullable
public static VirtualFile getJsStdLibSrcJar(@NotNull Library library) { public static VirtualFile getJsStdLibSrcJar(@NotNull Library library) {
return LibraryPresentationProviderUtil.isExternalLibrary(library) ? null : return LibraryPresentationProviderUtilKt.isExternalLibrary(library) ? null :
LibraryUtils.getJarFile(Arrays.asList(library.getFiles(OrderRootType.SOURCES)), PathUtil.JS_LIB_SRC_JAR_NAME); LibraryUtils.getJarFile(Arrays.asList(library.getFiles(OrderRootType.SOURCES)), PathUtil.JS_LIB_SRC_JAR_NAME);
} }
} }
@@ -61,25 +61,25 @@ public class JavaRuntimePresentationProvider extends LibraryPresentationProvider
@Nullable @Nullable
public static VirtualFile getRuntimeJar(@NotNull Library library) { public static VirtualFile getRuntimeJar(@NotNull Library library) {
return LibraryPresentationProviderUtil.isExternalLibrary(library) ? null : return LibraryPresentationProviderUtilKt.isExternalLibrary(library) ? null :
JavaRuntimeDetectionUtil.getRuntimeJar(Arrays.asList(library.getFiles(OrderRootType.CLASSES))); JavaRuntimeDetectionUtil.getRuntimeJar(Arrays.asList(library.getFiles(OrderRootType.CLASSES)));
} }
@Nullable @Nullable
public static VirtualFile getReflectJar(@NotNull Library library) { public static VirtualFile getReflectJar(@NotNull Library library) {
return LibraryPresentationProviderUtil.isExternalLibrary(library) ? null : return LibraryPresentationProviderUtilKt.isExternalLibrary(library) ? null :
LibraryUtils.getJarFile(Arrays.asList(library.getFiles(OrderRootType.CLASSES)), PathUtil.KOTLIN_JAVA_REFLECT_JAR); LibraryUtils.getJarFile(Arrays.asList(library.getFiles(OrderRootType.CLASSES)), PathUtil.KOTLIN_JAVA_REFLECT_JAR);
} }
@Nullable @Nullable
public static VirtualFile getRuntimeSrcJar(@NotNull Library library) { public static VirtualFile getRuntimeSrcJar(@NotNull Library library) {
return LibraryPresentationProviderUtil.isExternalLibrary(library) ? null : return LibraryPresentationProviderUtilKt.isExternalLibrary(library) ? null :
getRuntimeSrcJar(Arrays.asList(library.getFiles(OrderRootType.SOURCES))); getRuntimeSrcJar(Arrays.asList(library.getFiles(OrderRootType.SOURCES)));
} }
@Nullable @Nullable
public static VirtualFile getTestJar(@NotNull Library library) { public static VirtualFile getTestJar(@NotNull Library library) {
return LibraryPresentationProviderUtil.isExternalLibrary(library) ? null : return LibraryPresentationProviderUtilKt.isExternalLibrary(library) ? null :
LibraryUtils.getJarFile(Arrays.asList(library.getFiles(OrderRootType.CLASSES)), PathUtil.KOTLIN_TEST_JAR); LibraryUtils.getJarFile(Arrays.asList(library.getFiles(OrderRootType.CLASSES)), PathUtil.KOTLIN_TEST_JAR);
} }
} }
@@ -14,38 +14,30 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.kotlin.idea.framework; package org.jetbrains.kotlin.idea.framework
import com.intellij.openapi.externalSystem.model.ProjectSystemId; import com.intellij.openapi.externalSystem.model.ProjectSystemId
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil; import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
import com.intellij.openapi.roots.OrderRootType; import com.intellij.openapi.roots.OrderRootType
import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.libraries.Library
import com.intellij.openapi.roots.libraries.LibraryPresentationProvider; import com.intellij.openapi.roots.libraries.LibraryPresentationProvider
import com.intellij.openapi.roots.libraries.LibraryProperties; import com.intellij.openapi.roots.libraries.LibraryProperties
import org.jetbrains.annotations.NotNull; import java.util.*
import org.jetbrains.annotations.Nullable;
import java.util.Arrays; fun <LP : LibraryProperties<out Any>> isDetected(provider: LibraryPresentationProvider<LP>, library: Library): Boolean {
return getLibraryProperties(provider, library) != null
public class LibraryPresentationProviderUtil { }
private LibraryPresentationProviderUtil() {}
fun <LP : LibraryProperties<out Any>> getLibraryProperties(provider: LibraryPresentationProvider<LP>, library: Library): LP? {
public static <LP extends LibraryProperties> boolean isDetected(@NotNull LibraryPresentationProvider<LP> provider, @NotNull Library library) { if (isExternalLibrary(library)) return null
return getLibraryProperties(provider, library) != null; return provider.detect(Arrays.asList(*library.getFiles(OrderRootType.CLASSES)))
} }
@Nullable private val MAVEN_SYSTEM_ID = ProjectSystemId("MAVEN")
public static <LP extends LibraryProperties> LP getLibraryProperties(@NotNull LibraryPresentationProvider<LP> provider, @NotNull Library library) { private val GRADLE_SYSTEM_ID = ProjectSystemId("GRADLE")
if (isExternalLibrary(library)) return null;
return provider.detect(Arrays.asList(library.getFiles(OrderRootType.CLASSES))); fun isExternalLibrary(library: Library): Boolean {
} return ExternalSystemApiUtil.isExternalSystemLibrary(library, ProjectSystemId.IDE) ||
ExternalSystemApiUtil.isExternalSystemLibrary(library, GRADLE_SYSTEM_ID) ||
private static final ProjectSystemId MAVEN_SYSTEM_ID = new ProjectSystemId("MAVEN"); ExternalSystemApiUtil.isExternalSystemLibrary(library, MAVEN_SYSTEM_ID)
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);
}
} }
@@ -44,7 +44,7 @@ import org.jetbrains.kotlin.idea.configuration.createConfigureKotlinNotification
import org.jetbrains.kotlin.idea.configuration.getConfiguratorByName import org.jetbrains.kotlin.idea.configuration.getConfiguratorByName
import org.jetbrains.kotlin.idea.framework.JSLibraryStdPresentationProvider import org.jetbrains.kotlin.idea.framework.JSLibraryStdPresentationProvider
import org.jetbrains.kotlin.idea.framework.JavaRuntimePresentationProvider import org.jetbrains.kotlin.idea.framework.JavaRuntimePresentationProvider
import org.jetbrains.kotlin.idea.framework.LibraryPresentationProviderUtil import org.jetbrains.kotlin.idea.framework.isDetected
import org.jetbrains.kotlin.serialization.deserialization.BinaryVersion import org.jetbrains.kotlin.serialization.deserialization.BinaryVersion
import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils
import org.jetbrains.kotlin.utils.PathUtil import org.jetbrains.kotlin.utils.PathUtil
@@ -75,7 +75,7 @@ fun updateLibraries(project: Project, libraries: Collection<Library>) {
val collector = createConfigureKotlinNotificationCollector(project) val collector = createConfigureKotlinNotificationCollector(project)
for (library in libraries) { for (library in libraries) {
if (LibraryPresentationProviderUtil.isDetected(JavaRuntimePresentationProvider.getInstance(), library)) { if (isDetected(JavaRuntimePresentationProvider.getInstance(), library)) {
updateJar(project, JavaRuntimePresentationProvider.getRuntimeJar(library), LibraryJarDescriptor.RUNTIME_JAR) updateJar(project, JavaRuntimePresentationProvider.getRuntimeJar(library), LibraryJarDescriptor.RUNTIME_JAR)
updateJar(project, JavaRuntimePresentationProvider.getReflectJar(library), LibraryJarDescriptor.REFLECT_JAR) updateJar(project, JavaRuntimePresentationProvider.getReflectJar(library), LibraryJarDescriptor.REFLECT_JAR)
updateJar(project, JavaRuntimePresentationProvider.getTestJar(library), LibraryJarDescriptor.TEST_JAR) updateJar(project, JavaRuntimePresentationProvider.getTestJar(library), LibraryJarDescriptor.TEST_JAR)
@@ -87,7 +87,7 @@ fun updateLibraries(project: Project, libraries: Collection<Library>) {
updateJar(project, JavaRuntimePresentationProvider.getRuntimeSrcJar(library), LibraryJarDescriptor.RUNTIME_SRC_JAR) updateJar(project, JavaRuntimePresentationProvider.getRuntimeSrcJar(library), LibraryJarDescriptor.RUNTIME_SRC_JAR)
} }
} }
else if (LibraryPresentationProviderUtil.isDetected(JSLibraryStdPresentationProvider.getInstance(), library)) { else if (isDetected(JSLibraryStdPresentationProvider.getInstance(), library)) {
updateJar(project, JSLibraryStdPresentationProvider.getJsStdLibJar(library), LibraryJarDescriptor.JS_STDLIB_JAR) updateJar(project, JSLibraryStdPresentationProvider.getJsStdLibJar(library), LibraryJarDescriptor.JS_STDLIB_JAR)
if (kJsConfigurator.changeOldSourcesPathIfNeeded(library, collector)) { if (kJsConfigurator.changeOldSourcesPathIfNeeded(library, collector)) {
@@ -30,7 +30,8 @@ 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.JSLibraryStdPresentationProvider
import org.jetbrains.kotlin.idea.framework.JavaRuntimePresentationProvider import org.jetbrains.kotlin.idea.framework.JavaRuntimePresentationProvider
import org.jetbrains.kotlin.idea.framework.LibraryPresentationProviderUtil 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
@@ -50,8 +51,8 @@ fun findOutdatedKotlinLibraries(project: Project): List<VersionedLibrary> {
for ((library, modules) in findAllUsedLibraries(project).entrySet()) { for ((library, modules) in findAllUsedLibraries(project).entrySet()) {
val libraryVersionProperties = val libraryVersionProperties =
LibraryPresentationProviderUtil.getLibraryProperties(JavaRuntimePresentationProvider.getInstance(), library) ?: getLibraryProperties(JavaRuntimePresentationProvider.getInstance(), library) ?:
LibraryPresentationProviderUtil.getLibraryProperties(JSLibraryStdPresentationProvider.getInstance(), library) ?: getLibraryProperties(JSLibraryStdPresentationProvider.getInstance(), library) ?:
continue continue
val libraryVersion = libraryVersionProperties.versionString val libraryVersion = libraryVersionProperties.versionString
@@ -136,7 +137,7 @@ private fun suggestDeleteKotlinJsIfNeeded(project: Project, outdatedLibraries: C
var addNotification = false var addNotification = false
for (library in outdatedLibraries) { for (library in outdatedLibraries) {
if (LibraryPresentationProviderUtil.isDetected(JSLibraryStdPresentationProvider.getInstance(), library)) { if (isDetected(JSLibraryStdPresentationProvider.getInstance(), library)) {
val jsStdlibJar = JSLibraryStdPresentationProvider.getJsStdLibJar(library) val jsStdlibJar = JSLibraryStdPresentationProvider.getJsStdLibJar(library)
assert(jsStdlibJar != null) { "jslibFile should not be null" } assert(jsStdlibJar != null) { "jslibFile should not be null" }