summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuriy Solodkyy <solodkyy@google.com>2022-07-07 16:50:17 +0100
committerYuriy Solodkyy <solodkyy@google.com>2022-07-11 13:04:14 +0000
commit7a13ce4e8873f40796d3c772ba4fbde069baee8d (patch)
tree1ad9e8b4809385c0117a7f3a9cf9b062093d3554
parent84fda5ecebf42e908e30bb33234acd4aa5fe70bd (diff)
downloadidea-7a13ce4e8873f40796d3c772ba4fbde069baee8d.tar.gz
Extract project various project ids into IdeProjectPath
Note, `IdeModelDumper` is intentionally updated not to keep snapshots intact. The format will change soon with automatic dumping. Bug: 238292294 Test: snapshots not changed Change-Id: If26d89eeaa44a2bb85f884f98d33e2dacf478b7a
-rw-r--r--android-lint/src/com/android/tools/idea/lint/model/LintModelFactory.kt6
-rw-r--r--android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleTestUtils.kt11
-rw-r--r--project-system-gradle-models/src/com/android/tools/idea/gradle/model/IdeAndroidProject.kt25
-rw-r--r--project-system-gradle-models/src/com/android/tools/idea/gradle/model/IdeProjectPath.kt50
-rw-r--r--project-system-gradle-models/src/com/android/tools/idea/gradle/model/impl/IdeAndroidProjectImpl.kt5
-rw-r--r--project-system-gradle-models/src/com/android/tools/idea/gradle/model/impl/IdeProjectPathImpl.kt27
-rw-r--r--project-system-gradle-sync/src/com/android/tools/idea/gradle/project/sync/ModelCacheV1Impl.kt11
-rw-r--r--project-system-gradle-sync/src/com/android/tools/idea/gradle/project/sync/ModelCacheV2Impl.kt11
-rw-r--r--project-system-gradle/src/com/android/tools/idea/gradle/project/sync/internal/IdeModelDumper.kt8
-rw-r--r--project-system-gradle/src/com/android/tools/idea/projectsystem/gradle/sync/AndroidModuleDataService.kt4
10 files changed, 110 insertions, 48 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 0a3f0db5927..30e14561ea5 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
@@ -116,7 +116,7 @@ class LintModelFactory : LintModelModuleLoader {
val module = DefaultLintModelModule(
loader = this,
dir = dir,
- modulePath = project.projectPath,
+ modulePath = project.projectPath.projectPath,
type = getModuleType(project.projectType),
mavenName = getMavenName(project),
gradleVersion = gradleVersion,
@@ -602,7 +602,7 @@ class LintModelFactory : LintModelModuleLoader {
private fun getMavenName(androidProject: IdeAndroidProject): LintModelMavenName? {
val groupId = androidProject.groupId ?: return null
- return DefaultLintModelMavenName(groupId, androidProject.projectPath, "")
+ return DefaultLintModelMavenName(groupId, androidProject.projectPath.projectPath, "")
}
private fun getMavenName(artifactAddress: String): LintModelMavenName {
@@ -689,7 +689,7 @@ class LintModelFactory : LintModelModuleLoader {
override val gradleVersion: GradleVersion?
) : LintModelModule {
override val modulePath: String
- get() = project.projectPath
+ get() = project.projectPath.projectPath
override val type: LintModelModuleType
get() = getModuleType(project.projectType)
override val mavenName: LintModelMavenName?
diff --git a/android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleTestUtils.kt b/android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleTestUtils.kt
index 6271586c433..0c2d41e648a 100644
--- a/android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleTestUtils.kt
+++ b/android-test-framework/testSrc/com/android/tools/idea/testing/AndroidGradleTestUtils.kt
@@ -55,6 +55,7 @@ import com.android.tools.idea.gradle.model.impl.IdeLintOptionsImpl
import com.android.tools.idea.gradle.model.impl.IdeModuleLibraryImpl
import com.android.tools.idea.gradle.model.impl.IdeProductFlavorContainerImpl
import com.android.tools.idea.gradle.model.impl.IdeProductFlavorImpl
+import com.android.tools.idea.gradle.model.impl.IdeProjectPathImpl
import com.android.tools.idea.gradle.model.impl.IdeSourceProviderContainerImpl
import com.android.tools.idea.gradle.model.impl.IdeSourceProviderImpl
import com.android.tools.idea.gradle.model.impl.IdeVariantBuildInformationImpl
@@ -1020,10 +1021,12 @@ fun AndroidProjectStubBuilder.buildAndroidProjectStub(): IdeAndroidProjectImpl {
val projectType = projectType
return IdeAndroidProjectImpl(
agpVersion = agpVersion,
- rootBuildId = File("/"),
- buildId = File("/"),
- buildName = ":",
- projectPath = gradleProjectPath,
+ projectPath = IdeProjectPathImpl(
+ rootBuildId = File("/"),
+ buildId = File("/"),
+ buildName = ":",
+ projectPath = gradleProjectPath
+ ),
projectType = projectType,
defaultConfig = defaultConfig,
buildTypes = buildTypes,
diff --git a/project-system-gradle-models/src/com/android/tools/idea/gradle/model/IdeAndroidProject.kt b/project-system-gradle-models/src/com/android/tools/idea/gradle/model/IdeAndroidProject.kt
index 99d38a0a67e..86f3f669d8a 100644
--- a/project-system-gradle-models/src/com/android/tools/idea/gradle/model/IdeAndroidProject.kt
+++ b/project-system-gradle-models/src/com/android/tools/idea/gradle/model/IdeAndroidProject.kt
@@ -25,30 +25,9 @@ interface IdeAndroidProject : Serializable {
val agpVersion: String
/**
- * The build ID (directory containing the settings file) of the root build of this project.
- *
- * Note, this directory might be different from the root directory of the root project of the root build if the root project directory is
- * relocated.
- */
- val rootBuildId: File
-
- /**
- * The build ID (directory containing the settings file) of the (included) build containing this project.
- *
- * Note, this directory might be different from the root directory of the root project of the root build if the root project directory is
- * relocated.
- */
- val buildId: File
-
- /**
- * The name of the included build containing this project or ":" if this project belongs to the root build.
- */
- val buildName: String
-
- /**
- * Returns the Gradle project path of the module (excluding the build name, if in an included build).
+ * Returns a project path together with the name and location of the build containing it.
*/
- val projectPath: String
+ val projectPath: IdeProjectPath
/**
* Returns the type of project: Android application, library, feature, instantApp.
diff --git a/project-system-gradle-models/src/com/android/tools/idea/gradle/model/IdeProjectPath.kt b/project-system-gradle-models/src/com/android/tools/idea/gradle/model/IdeProjectPath.kt
new file mode 100644
index 00000000000..2f09b8aa676
--- /dev/null
+++ b/project-system-gradle-models/src/com/android/tools/idea/gradle/model/IdeProjectPath.kt
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.tools.idea.gradle.model
+
+import java.io.File
+import java.io.Serializable
+
+/**
+ * A project path together with the name and location of the build containing it.
+ */
+interface IdeProjectPath: Serializable {
+ /**
+ * The build ID (directory containing the settings file) of the root build of this project.
+ *
+ * Note, this directory might be different from the root directory of the root project of the root build if the root project directory is
+ * relocated.
+ */
+ val rootBuildId: File
+
+ /**
+ * The build ID (directory containing the settings file) of the (included) build containing this project.
+ *
+ * Note, this directory might be different from the root directory of the root project of the root build if the root project directory is
+ * relocated.
+ */
+ val buildId: File
+
+ /**
+ * The name of the included build containing this project or ":" if this project belongs to the root build.
+ */
+ val buildName: String
+
+ /**
+ * Returns the Gradle project path of the module (excluding the build name, if in an included build).
+ */
+ val projectPath: String
+} \ No newline at end of file
diff --git a/project-system-gradle-models/src/com/android/tools/idea/gradle/model/impl/IdeAndroidProjectImpl.kt b/project-system-gradle-models/src/com/android/tools/idea/gradle/model/impl/IdeAndroidProjectImpl.kt
index 3d498a2f245..a0c8ced5147 100644
--- a/project-system-gradle-models/src/com/android/tools/idea/gradle/model/impl/IdeAndroidProjectImpl.kt
+++ b/project-system-gradle-models/src/com/android/tools/idea/gradle/model/impl/IdeAndroidProjectImpl.kt
@@ -22,10 +22,7 @@ import java.io.Serializable
data class IdeAndroidProjectImpl(
override val agpVersion: String,
- override val rootBuildId: File,
- override val buildId: File,
- override val buildName: String,
- override val projectPath: String,
+ override val projectPath: IdeProjectPathImpl,
override val projectType: IdeAndroidProjectType,
override val defaultConfig: IdeProductFlavorContainerImpl,
override val buildTypes: Collection<IdeBuildTypeContainerImpl>,
diff --git a/project-system-gradle-models/src/com/android/tools/idea/gradle/model/impl/IdeProjectPathImpl.kt b/project-system-gradle-models/src/com/android/tools/idea/gradle/model/impl/IdeProjectPathImpl.kt
new file mode 100644
index 00000000000..8048dce1ff8
--- /dev/null
+++ b/project-system-gradle-models/src/com/android/tools/idea/gradle/model/impl/IdeProjectPathImpl.kt
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.tools.idea.gradle.model.impl
+
+import com.android.tools.idea.gradle.model.IdeProjectPath
+import java.io.File
+import java.io.Serializable
+
+data class IdeProjectPathImpl(
+ override val rootBuildId: File,
+ override val buildId: File,
+ override val buildName: String,
+ override val projectPath: String
+): IdeProjectPath, Serializable \ No newline at end of file
diff --git a/project-system-gradle-sync/src/com/android/tools/idea/gradle/project/sync/ModelCacheV1Impl.kt b/project-system-gradle-sync/src/com/android/tools/idea/gradle/project/sync/ModelCacheV1Impl.kt
index 8d9d366ad3d..2f33c0a88e6 100644
--- a/project-system-gradle-sync/src/com/android/tools/idea/gradle/project/sync/ModelCacheV1Impl.kt
+++ b/project-system-gradle-sync/src/com/android/tools/idea/gradle/project/sync/ModelCacheV1Impl.kt
@@ -98,6 +98,7 @@ import com.android.tools.idea.gradle.model.impl.IdeMavenCoordinatesImpl
import com.android.tools.idea.gradle.model.impl.IdePreResolvedModuleLibraryImpl
import com.android.tools.idea.gradle.model.impl.IdeProductFlavorContainerImpl
import com.android.tools.idea.gradle.model.impl.IdeProductFlavorImpl
+import com.android.tools.idea.gradle.model.impl.IdeProjectPathImpl
import com.android.tools.idea.gradle.model.impl.IdeSigningConfigImpl
import com.android.tools.idea.gradle.model.impl.IdeSourceProviderContainerImpl
import com.android.tools.idea.gradle.model.impl.IdeSourceProviderImpl
@@ -1237,10 +1238,12 @@ internal fun modelCacheV1Impl(internedModels: InternedModels, buildFolderPaths:
}
return IdeAndroidProjectImpl(
agpVersion = project.modelVersion,
- rootBuildId = rootBuildId.asFile,
- buildId = buildId.asFile,
- buildName = buildName,
- projectPath = projectPath,
+ projectPath = IdeProjectPathImpl(
+ rootBuildId = rootBuildId.asFile,
+ buildId = buildId.asFile,
+ buildName = buildName,
+ projectPath = projectPath
+ ),
defaultConfig = defaultConfigCopy,
buildTypes = buildTypesCopy,
productFlavors = productFlavorCopy,
diff --git a/project-system-gradle-sync/src/com/android/tools/idea/gradle/project/sync/ModelCacheV2Impl.kt b/project-system-gradle-sync/src/com/android/tools/idea/gradle/project/sync/ModelCacheV2Impl.kt
index 60e0f2962f4..641bd1e07cf 100644
--- a/project-system-gradle-sync/src/com/android/tools/idea/gradle/project/sync/ModelCacheV2Impl.kt
+++ b/project-system-gradle-sync/src/com/android/tools/idea/gradle/project/sync/ModelCacheV2Impl.kt
@@ -96,6 +96,7 @@ import com.android.tools.idea.gradle.model.impl.IdeModelSyncFileImpl
import com.android.tools.idea.gradle.model.impl.IdePreResolvedModuleLibraryImpl
import com.android.tools.idea.gradle.model.impl.IdeProductFlavorContainerImpl
import com.android.tools.idea.gradle.model.impl.IdeProductFlavorImpl
+import com.android.tools.idea.gradle.model.impl.IdeProjectPathImpl
import com.android.tools.idea.gradle.model.impl.IdeSigningConfigImpl
import com.android.tools.idea.gradle.model.impl.IdeSourceProviderContainerImpl
import com.android.tools.idea.gradle.model.impl.IdeSourceProviderImpl
@@ -1187,10 +1188,12 @@ internal fun modelCacheV2Impl(internedModels: InternedModels, lock: ReentrantLoc
return IdeAndroidProjectImpl(
agpVersion = modelsVersions.agp,
- rootBuildId = rootBuildId.asFile,
- buildId = buildId.asFile,
- buildName = basicProject.buildName,
- projectPath = basicProject.path,
+ projectPath = IdeProjectPathImpl(
+ rootBuildId = rootBuildId.asFile,
+ buildId = buildId.asFile,
+ buildName = basicProject.buildName,
+ projectPath = basicProject.path,
+ ),
defaultConfig = defaultConfigCopy,
buildTypes = buildTypesCopy,
productFlavors = productFlavorCopy,
diff --git a/project-system-gradle/src/com/android/tools/idea/gradle/project/sync/internal/IdeModelDumper.kt b/project-system-gradle/src/com/android/tools/idea/gradle/project/sync/internal/IdeModelDumper.kt
index 4ecf72d3179..35fa4539048 100644
--- a/project-system-gradle/src/com/android/tools/idea/gradle/project/sync/internal/IdeModelDumper.kt
+++ b/project-system-gradle/src/com/android/tools/idea/gradle/project/sync/internal/IdeModelDumper.kt
@@ -205,10 +205,10 @@ private fun ideModelDumper(projectDumper: ProjectDumper) = with(projectDumper) {
val modelDumper = ModelDumper(jbModelDumpers)
object {
fun dump(ideAndroidModel: IdeAndroidProject) {
- prop("RootBuildId") { ideAndroidModel.rootBuildId.path.toPrintablePath() }
- prop("BuildId") { ideAndroidModel.buildId.path.toPrintablePath() }
- prop("BuildName") { ideAndroidModel.buildName }
- prop("ProjectPath") { ideAndroidModel.projectPath }
+ prop("RootBuildId") { ideAndroidModel.projectPath.rootBuildId.path.toPrintablePath() }
+ prop("BuildId") { ideAndroidModel.projectPath.buildId.path.toPrintablePath() }
+ prop("BuildName") { ideAndroidModel.projectPath.buildName }
+ prop("ProjectPath") { ideAndroidModel.projectPath.projectPath }
prop("ModelVersion") { ideAndroidModel.agpVersion.replaceKnownPatterns() }
prop("ProjectType") { ideAndroidModel.projectType.toString() }
prop("CompileTarget") { ideAndroidModel.compileTarget.replaceCurrentSdkVersion() }
diff --git a/project-system-gradle/src/com/android/tools/idea/projectsystem/gradle/sync/AndroidModuleDataService.kt b/project-system-gradle/src/com/android/tools/idea/projectsystem/gradle/sync/AndroidModuleDataService.kt
index 9a7a7d2a8d4..44189097e2c 100644
--- a/project-system-gradle/src/com/android/tools/idea/projectsystem/gradle/sync/AndroidModuleDataService.kt
+++ b/project-system-gradle/src/com/android/tools/idea/projectsystem/gradle/sync/AndroidModuleDataService.kt
@@ -254,7 +254,7 @@ internal constructor(private val myModuleValidatorFactory: AndroidModuleValidato
// Android model is null for the root project module.
val sdkToUse = AndroidSdks.getInstance().computeSdkReloadingAsNeeded(
project,
- androidModel.androidProject.projectPath,
+ androidModel.androidProject.projectPath.projectPath,
androidModel.androidProject.compileTarget,
androidModel.androidProject.bootClasspath,
IdeSdks.getInstance()
@@ -262,7 +262,7 @@ internal constructor(private val myModuleValidatorFactory: AndroidModuleValidato
if (sdkToUse == null) {
modulesWithSDKSetupFailureByCompileTarget.getOrPut(androidModel.androidProject.compileTarget) { mutableListOf() }
- .add(androidModel.androidProject.projectPath)
+ .add(androidModel.androidProject.projectPath.projectPath)
}
val modules = mainIdeModule.getAllLinkedModules()