Don't crash with old versions of Android Gradle plugin

#KT-21383 Fixed
This commit is contained in:
Dmitry Jemerov
2017-11-22 14:08:06 +01:00
parent 236ba1d2f2
commit e00cc5ab3d
@@ -32,11 +32,13 @@
package org.jetbrains.kotlin.android.configure
import com.android.builder.model.Library
import com.android.tools.idea.gradle.project.sync.idea.data.service.AndroidProjectKeys
import com.intellij.openapi.externalSystem.model.DataNode
import com.intellij.openapi.externalSystem.model.project.ModuleData
import com.intellij.openapi.externalSystem.model.project.ProjectData
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
import org.gradle.tooling.model.UnsupportedMethodException
import org.gradle.tooling.model.idea.IdeaProject
import org.jetbrains.kotlin.idea.inspections.gradle.KotlinGradleModelFacade
import org.jetbrains.kotlin.idea.inspections.gradle.findModulesByNames
@@ -65,7 +67,7 @@ class AndroidGradleModelFacade : KotlinGradleModelFacade {
ExternalSystemApiUtil.find(ideModule, AndroidProjectKeys.ANDROID_MODEL)?.let { androidModel ->
val libraries = androidModel.data.mainArtifact.dependencies.javaLibraries
val projects = androidModel.data.mainArtifact.dependencies.projects
val projectIds = libraries.mapNotNull { it.project } + projects
val projectIds = libraries.mapNotNull { it.projectSafe } + projects
return projectIds.mapNotNullTo(LinkedHashSet()) { projectId ->
ExternalSystemApiUtil.findFirstRecursively(ideProject) {
(it.data as? ModuleData)?.id == projectId
@@ -76,3 +78,11 @@ class AndroidGradleModelFacade : KotlinGradleModelFacade {
return emptyList()
}
}
// com.android.builder.model.Library.getProject() is not present in 2.1.0
private val Library.projectSafe: String?
get() = try {
project
} catch(e: UnsupportedMethodException) {
null
}