diff --git a/idea/resources/META-INF/parcelize.xml b/idea/resources/META-INF/parcelize.xml
index 9e47ccce9c9..17927db032c 100644
--- a/idea/resources/META-INF/parcelize.xml
+++ b/idea/resources/META-INF/parcelize.xml
@@ -10,6 +10,10 @@
+
+
+
+
diff --git a/plugins/parcelize/parcelize-ide/build.gradle.kts b/plugins/parcelize/parcelize-ide/build.gradle.kts
index eab842eaefe..7db699163ff 100644
--- a/plugins/parcelize/parcelize-ide/build.gradle.kts
+++ b/plugins/parcelize/parcelize-ide/build.gradle.kts
@@ -12,6 +12,7 @@ dependencies {
compile(project(":compiler:frontend.java"))
compile(project(":compiler:light-classes"))
compile(project(":idea"))
+ compile(project(":idea:idea-gradle"))
compile(project(":plugins:parcelize:parcelize-compiler"))
compile(project(":plugins:parcelize:parcelize-runtime"))
diff --git a/plugins/parcelize/parcelize-ide/src/org/jetbrains/kotlin/parcelize/ide/ParcelizeAvailability.kt b/plugins/parcelize/parcelize-ide/src/org/jetbrains/kotlin/parcelize/ide/ParcelizeAvailability.kt
index aeada03a410..6cba9bbdd1e 100644
--- a/plugins/parcelize/parcelize-ide/src/org/jetbrains/kotlin/parcelize/ide/ParcelizeAvailability.kt
+++ b/plugins/parcelize/parcelize-ide/src/org/jetbrains/kotlin/parcelize/ide/ParcelizeAvailability.kt
@@ -32,6 +32,6 @@ object ParcelizeAvailability {
val path = ExternalSystemApiUtil.getExternalProjectPath(module) ?: return false
val externalProjectInfo = ExternalSystemUtil.getExternalProjectInfo(module.project, GradleConstants.SYSTEM_ID, path) ?: return false
val moduleData = GradleProjectResolverUtil.findModule(externalProjectInfo.externalProjectStructure, path) ?: return false
- return moduleData.getCopyableUserData(ParcelizeProjectResolverExtension.KEY)?.isEnabled ?: false
+ return ExternalSystemApiUtil.find(moduleData, ParcelizeIdeModel.KEY)?.data?.isEnabled ?: false
}
}
\ No newline at end of file
diff --git a/plugins/parcelize/parcelize-ide/src/org/jetbrains/kotlin/parcelize/ide/ParcelizeProjectResolverExtension.kt b/plugins/parcelize/parcelize-ide/src/org/jetbrains/kotlin/parcelize/ide/ParcelizeProjectResolverExtension.kt
index 9a7f0aaa272..fe2ce61898e 100644
--- a/plugins/parcelize/parcelize-ide/src/org/jetbrains/kotlin/parcelize/ide/ParcelizeProjectResolverExtension.kt
+++ b/plugins/parcelize/parcelize-ide/src/org/jetbrains/kotlin/parcelize/ide/ParcelizeProjectResolverExtension.kt
@@ -6,17 +6,30 @@
package org.jetbrains.kotlin.parcelize.ide
import com.intellij.openapi.externalSystem.model.DataNode
+import com.intellij.openapi.externalSystem.model.Key
+import com.intellij.openapi.externalSystem.model.ProjectKeys
+import com.intellij.openapi.externalSystem.model.project.AbstractExternalEntityData
import com.intellij.openapi.externalSystem.model.project.ModuleData
-import com.intellij.openapi.util.Key
+import com.intellij.openapi.externalSystem.service.project.manage.AbstractProjectDataService
+import com.intellij.serialization.PropertyMapping
import org.gradle.tooling.model.idea.IdeaModule
import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension
+import org.jetbrains.plugins.gradle.util.GradleConstants
+
+class ParcelizeIdeModel @PropertyMapping("isEnabled") constructor(
+ val isEnabled: Boolean
+) : AbstractExternalEntityData(GradleConstants.SYSTEM_ID) {
+ companion object {
+ val KEY = Key.create(ParcelizeIdeModel::class.java, ProjectKeys.CONTENT_ROOT.processingWeight + 1)
+ }
+}
+
+class ParcelizeIdeModelDataService : AbstractProjectDataService() {
+ override fun getTargetDataKey() = ParcelizeIdeModel.KEY
+}
@Suppress("unused")
class ParcelizeProjectResolverExtension : AbstractProjectResolverExtension() {
- companion object {
- val KEY = Key("ParcelizeModel")
- }
-
override fun getExtraProjectModelClasses() = setOf(ParcelizeGradleModel::class.java)
override fun getToolingExtensionsClasses() = setOf(ParcelizeModelBuilderService::class.java, Unit::class.java)
@@ -24,7 +37,7 @@ class ParcelizeProjectResolverExtension : AbstractProjectResolverExtension() {
val parcelizeModel = resolverCtx.getExtraProject(gradleModule, ParcelizeGradleModel::class.java)
if (parcelizeModel != null && parcelizeModel.isEnabled) {
- ideModule.putCopyableUserData(KEY, ParcelizeGradleModelImpl(isEnabled = parcelizeModel.isEnabled))
+ ideModule.createChild(ParcelizeIdeModel.KEY, ParcelizeIdeModel(isEnabled = parcelizeModel.isEnabled))
}
super.populateModuleExtraModels(gradleModule, ideModule)