diff options
author | Yuriy Solodkyy <solodkyy@google.com> | 2022-01-03 21:54:25 +0000 |
---|---|---|
committer | Yuriy Solodkyy <solodkyy@google.com> | 2022-01-07 17:21:56 +0000 |
commit | a6d0e430efbda4510ca928d4d129eb7feca88b75 (patch) | |
tree | 12f790a1b164f252e974086201026cb4eeef192d /android-lint/src | |
parent | 522bc26ecc241a6bf1b7a4329ecdc930d3a8f8aa (diff) | |
download | idea-a6d0e430efbda4510ca928d4d129eb7feca88b75.tar.gz |
Split library interfaces into dependency and library ones
This is a first step towards exposing the hierarchy of transitive
dependencies to consumers.
Bug: n/a
Test: n/a
Change-Id: I6fe3471e8cd8eff34f015ade9008386790127bff
Diffstat (limited to 'android-lint/src')
-rw-r--r-- | android-lint/src/com/android/tools/idea/lint/model/LintModelFactory.kt | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/android-lint/src/com/android/tools/idea/lint/model/LintModelFactory.kt b/android-lint/src/com/android/tools/idea/lint/model/LintModelFactory.kt index b3093365be5..433bc0a0bf0 100644 --- a/android-lint/src/com/android/tools/idea/lint/model/LintModelFactory.kt +++ b/android-lint/src/com/android/tools/idea/lint/model/LintModelFactory.kt @@ -36,7 +36,10 @@ import com.android.tools.idea.gradle.model.IdeSourceProviderContainer import com.android.tools.idea.gradle.model.IdeVariant import com.android.ide.common.repository.GradleVersion import com.android.sdklib.AndroidVersion +import com.android.tools.idea.gradle.model.IdeAndroidLibraryDependency import com.android.tools.idea.gradle.model.IdeArtifactLibrary +import com.android.tools.idea.gradle.model.IdeJavaLibraryDependency +import com.android.tools.idea.gradle.model.IdeModuleDependency import com.android.tools.lint.model.DefaultLintModelAndroidArtifact import com.android.tools.lint.model.DefaultLintModelAndroidLibrary import com.android.tools.lint.model.DefaultLintModelBuildFeatures @@ -160,7 +163,8 @@ class LintModelFactory : LintModelModuleLoader { ) ) - private fun getLibrary(library: IdeAndroidLibrary): LintModelLibrary { + private fun getLibrary(dependency: IdeAndroidLibraryDependency): LintModelLibrary { + val library = dependency.target // TODO: Construct file objects lazily! return DefaultLintModelAndroidLibrary( identifier = library.getIdentifier(), @@ -174,28 +178,29 @@ class LintModelFactory : LintModelModuleLoader { publicResources = File(library.publicResources), symbolFile = File(library.symbolFile), externalAnnotations = File(library.externalAnnotations), - provided = library.isProvided, + provided = dependency.isProvided, resolvedCoordinates = library.getMavenName(), proguardRules = File(library.proguardRules) ) } - private fun getLibrary(library: IdeJavaLibrary): LintModelLibrary { + private fun getLibrary(dependency: IdeJavaLibraryDependency): LintModelLibrary { + val library = dependency.target return DefaultLintModelJavaLibrary( identifier = library.getIdentifier(), // TODO - expose compile jar vs impl jar? jarFiles = listOf(library.artifact), - provided = library.isProvided, + provided = dependency.isProvided, resolvedCoordinates = library.getMavenName() ) } - private fun getLibrary(library: IdeModuleLibrary): LintModelLibrary { - val projectPath = library.projectPath + private fun getLibrary(dependency: IdeModuleDependency): LintModelLibrary { + val projectPath = dependency.projectPath return DefaultLintModelModuleLibrary( - identifier = library.getIdentifier(), + identifier = dependency.getIdentifier(), projectPath = projectPath, - lintJar = library.lintJar?.let(::File), + lintJar = dependency.target.lintJar?.let(::File), provided = false ) } @@ -206,11 +211,11 @@ class LintModelFactory : LintModelModuleLoader { private fun IdeJavaLibrary.getArtifactName(): String = getMavenName().let { mavenName -> "${mavenName.groupId}:${mavenName.artifactId}" } - private fun IdeModuleLibrary.getArtifactName(): String = "artifacts:$projectPath" + private fun IdeModuleDependency.getArtifactName(): String = "artifacts:$projectPath" private fun IdeArtifactLibrary.getMavenName(): LintModelMavenName = getMavenName(artifactAddress) - private fun IdeModuleLibrary.getIdentifier(): String = "$projectPath@${sourceSet.sourceSetName}" + private fun IdeModuleDependency.getIdentifier(): String = "$projectPath@${sourceSet.sourceSetName}" private fun IdeArtifactLibrary.getIdentifier(): String = name @@ -241,10 +246,11 @@ class LintModelFactory : LintModelModuleLoader { val dependencies = artifact.level2Dependencies for (dependency in dependencies.androidLibraries) { - if (dependency.isValid()) { + val androidLibrary = dependency.target + if (androidLibrary.isValid()) { val lintModelDependency = getGraphItem( - dependency.getIdentifier(), - dependency.getArtifactName(), + androidLibrary.getIdentifier(), + androidLibrary.getArtifactName(), ) { getLibrary(dependency) } @@ -255,10 +261,11 @@ class LintModelFactory : LintModelModuleLoader { } } for (dependency in dependencies.javaLibraries) { - if (dependency.isValid()) { + val javaLibrary = dependency.target + if (javaLibrary.isValid()) { val lintModelDependency = getGraphItem( - dependency.getIdentifier(), - dependency.getArtifactName(), + javaLibrary.getIdentifier(), + javaLibrary.getArtifactName(), ) { getLibrary(dependency) } |