From 2d1fc4b7982f25fc453a58639111bddfb6525be6 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Wed, 25 Jul 2018 17:12:21 +0300 Subject: [PATCH] Fix incompatibility because of KotlinGradleModelFacade change (KT-25713) AndroidGradleModelFacade was moved to android plugin in AS 3.3, so now changes in KotlinGradleModelFacade should be binary compatible. Current fix rewrite KotlinGradleModelFacade to Java because of default methods. Also current implementation abuses the fact that AndroidGradleModelFacade don't use groupId parameter for getting library versions. #KT-25713 Fixed --- .../configure/AndroidGradleModelFacade.kt | 3 +- .../gradle/KotlinGradleModelFacade.java | 39 +++++++++++++++++++ .../gradle/KotlinGradleModelFacade.kt | 10 ----- 3 files changed, 41 insertions(+), 11 deletions(-) create mode 100644 idea/idea-gradle/src/org/jetbrains/kotlin/idea/inspections/gradle/KotlinGradleModelFacade.java diff --git a/idea/idea-android/src/org/jetbrains/kotlin/android/configure/AndroidGradleModelFacade.kt b/idea/idea-android/src/org/jetbrains/kotlin/android/configure/AndroidGradleModelFacade.kt index 32e6905e2b6..d87bd47e3bb 100644 --- a/idea/idea-android/src/org/jetbrains/kotlin/android/configure/AndroidGradleModelFacade.kt +++ b/idea/idea-android/src/org/jetbrains/kotlin/android/configure/AndroidGradleModelFacade.kt @@ -44,7 +44,8 @@ import org.jetbrains.kotlin.idea.inspections.gradle.KotlinGradleModelFacade import org.jetbrains.kotlin.idea.inspections.gradle.findModulesByNames class AndroidGradleModelFacade : KotlinGradleModelFacade { - override fun getResolvedVersionByModuleData(moduleData: DataNode<*>, groupId: String, libraryIds: List): String? { + @Suppress("OverridingDeprecatedMember") + override fun getResolvedKotlinStdlibVersionByModuleData(moduleData: DataNode<*>, libraryIds: List): String? { ExternalSystemApiUtil .findAllRecursively(moduleData, AndroidProjectKeys.JAVA_MODULE_MODEL).asSequence() .flatMap { it.data.jarLibraryDependencies.asSequence() } diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/inspections/gradle/KotlinGradleModelFacade.java b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/inspections/gradle/KotlinGradleModelFacade.java new file mode 100644 index 00000000000..afd81b0a156 --- /dev/null +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/inspections/gradle/KotlinGradleModelFacade.java @@ -0,0 +1,39 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.inspections.gradle; + +import com.intellij.openapi.extensions.ExtensionPointName; +import com.intellij.openapi.externalSystem.model.DataNode; +import com.intellij.openapi.externalSystem.model.project.ModuleData; +import org.gradle.tooling.model.idea.IdeaProject; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Collection; +import java.util.List; + +public interface KotlinGradleModelFacade { + ExtensionPointName EP_NAME = ExtensionPointName.create("org.jetbrains.kotlin.gradleModelFacade"); + + @Deprecated + @Nullable + default String getResolvedKotlinStdlibVersionByModuleData(@NotNull DataNode moduleData, @NotNull List libraryIds) { + return null; + } + + @Nullable + default String getResolvedVersionByModuleData( + @NotNull DataNode moduleData, + @NotNull String groupId, + @NotNull List libraryIds + ) { + //noinspection deprecation + return getResolvedKotlinStdlibVersionByModuleData(moduleData, libraryIds); + } + + @NotNull + Collection> getDependencyModules(@NotNull DataNode ideModule, @NotNull IdeaProject gradleIdeaProject); +} diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/inspections/gradle/KotlinGradleModelFacade.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/inspections/gradle/KotlinGradleModelFacade.kt index c84d69d042b..52e7aba4979 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/inspections/gradle/KotlinGradleModelFacade.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/inspections/gradle/KotlinGradleModelFacade.kt @@ -16,7 +16,6 @@ package org.jetbrains.kotlin.idea.inspections.gradle -import com.intellij.openapi.extensions.ExtensionPointName import com.intellij.openapi.extensions.Extensions import com.intellij.openapi.externalSystem.model.DataNode import com.intellij.openapi.externalSystem.model.ProjectKeys @@ -25,15 +24,6 @@ import com.intellij.openapi.externalSystem.model.project.ProjectData import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil import org.gradle.tooling.model.idea.IdeaProject -interface KotlinGradleModelFacade { - companion object { - val EP_NAME: ExtensionPointName = ExtensionPointName.create("org.jetbrains.kotlin.gradleModelFacade") - } - - fun getResolvedVersionByModuleData(moduleData: DataNode<*>, groupId: String, libraryIds: List): String? - fun getDependencyModules(ideModule: DataNode, gradleIdeaProject: IdeaProject): Collection> -} - class DefaultGradleModelFacade : KotlinGradleModelFacade { override fun getResolvedVersionByModuleData(moduleData: DataNode<*>, groupId: String, libraryIds: List): String? { for (libraryDependencyData in ExternalSystemApiUtil.findAllRecursively(moduleData, ProjectKeys.LIBRARY_DEPENDENCY)) {