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
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);
}
@Nullable
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);
}
}
@@ -61,25 +61,25 @@ public class JavaRuntimePresentationProvider extends LibraryPresentationProvider
@Nullable
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)));
}
@Nullable
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);
}
@Nullable
public static VirtualFile getRuntimeSrcJar(@NotNull Library library) {
return LibraryPresentationProviderUtil.isExternalLibrary(library) ? null :
return LibraryPresentationProviderUtilKt.isExternalLibrary(library) ? null :
getRuntimeSrcJar(Arrays.asList(library.getFiles(OrderRootType.SOURCES)));
}
@Nullable
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);
}
}
@@ -14,38 +14,30 @@
* 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.util.ExternalSystemApiUtil;
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 org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
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
import com.intellij.openapi.roots.libraries.LibraryProperties
import java.util.*
import java.util.Arrays;
public class LibraryPresentationProviderUtil {
private LibraryPresentationProviderUtil() {}
public static <LP extends LibraryProperties> boolean isDetected(@NotNull LibraryPresentationProvider<LP> provider, @NotNull Library library) {
return getLibraryProperties(provider, library) != null;
}
@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);
}
fun <LP : LibraryProperties<out Any>> isDetected(provider: LibraryPresentationProvider<LP>, library: Library): Boolean {
return getLibraryProperties(provider, library) != null
}
fun <LP : LibraryProperties<out Any>> getLibraryProperties(provider: LibraryPresentationProvider<LP>, library: Library): LP? {
if (isExternalLibrary(library)) return null
return provider.detect(Arrays.asList(*library.getFiles(OrderRootType.CLASSES)))
}
private val MAVEN_SYSTEM_ID = ProjectSystemId("MAVEN")
private val GRADLE_SYSTEM_ID = ProjectSystemId("GRADLE")
fun isExternalLibrary(library: Library): Boolean {
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.framework.JSLibraryStdPresentationProvider
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.utils.KotlinJavascriptMetadataUtils
import org.jetbrains.kotlin.utils.PathUtil
@@ -75,7 +75,7 @@ fun updateLibraries(project: Project, libraries: Collection<Library>) {
val collector = createConfigureKotlinNotificationCollector(project)
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.getReflectJar(library), LibraryJarDescriptor.REFLECT_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)
}
}
else if (LibraryPresentationProviderUtil.isDetected(JSLibraryStdPresentationProvider.getInstance(), library)) {
else if (isDetected(JSLibraryStdPresentationProvider.getInstance(), library)) {
updateJar(project, JSLibraryStdPresentationProvider.getJsStdLibJar(library), LibraryJarDescriptor.JS_STDLIB_JAR)
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.framework.JSLibraryStdPresentationProvider
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 java.io.IOException
import javax.swing.event.HyperlinkEvent
@@ -50,8 +51,8 @@ fun findOutdatedKotlinLibraries(project: Project): List<VersionedLibrary> {
for ((library, modules) in findAllUsedLibraries(project).entrySet()) {
val libraryVersionProperties =
LibraryPresentationProviderUtil.getLibraryProperties(JavaRuntimePresentationProvider.getInstance(), library) ?:
LibraryPresentationProviderUtil.getLibraryProperties(JSLibraryStdPresentationProvider.getInstance(), library) ?:
getLibraryProperties(JavaRuntimePresentationProvider.getInstance(), library) ?:
getLibraryProperties(JSLibraryStdPresentationProvider.getInstance(), library) ?:
continue
val libraryVersion = libraryVersionProperties.versionString
@@ -136,7 +137,7 @@ private fun suggestDeleteKotlinJsIfNeeded(project: Project, outdatedLibraries: C
var addNotification = false
for (library in outdatedLibraries) {
if (LibraryPresentationProviderUtil.isDetected(JSLibraryStdPresentationProvider.getInstance(), library)) {
if (isDetected(JSLibraryStdPresentationProvider.getInstance(), library)) {
val jsStdlibJar = JSLibraryStdPresentationProvider.getJsStdLibJar(library)
assert(jsStdlibJar != null) { "jslibFile should not be null" }