Fix Parcelize settings serialization (KT-42958)
This commit is contained in:
@@ -10,6 +10,10 @@
|
|||||||
<quickFixContributor implementation="org.jetbrains.kotlin.parcelize.ide.quickfixes.ParcelizeQuickFixContributor"/>
|
<quickFixContributor implementation="org.jetbrains.kotlin.parcelize.ide.quickfixes.ParcelizeQuickFixContributor"/>
|
||||||
</extensions>
|
</extensions>
|
||||||
|
|
||||||
|
<extensions defaultExtensionNs="com.intellij">
|
||||||
|
<externalProjectDataService implementation="org.jetbrains.kotlin.parcelize.ide.ParcelizeIdeModelDataService"/>
|
||||||
|
</extensions>
|
||||||
|
|
||||||
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
|
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
|
||||||
<projectResolve implementation="org.jetbrains.kotlin.parcelize.ide.ParcelizeProjectResolverExtension" order="last"/>
|
<projectResolve implementation="org.jetbrains.kotlin.parcelize.ide.ParcelizeProjectResolverExtension" order="last"/>
|
||||||
</extensions>
|
</extensions>
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ dependencies {
|
|||||||
compile(project(":compiler:frontend.java"))
|
compile(project(":compiler:frontend.java"))
|
||||||
compile(project(":compiler:light-classes"))
|
compile(project(":compiler:light-classes"))
|
||||||
compile(project(":idea"))
|
compile(project(":idea"))
|
||||||
|
compile(project(":idea:idea-gradle"))
|
||||||
compile(project(":plugins:parcelize:parcelize-compiler"))
|
compile(project(":plugins:parcelize:parcelize-compiler"))
|
||||||
compile(project(":plugins:parcelize:parcelize-runtime"))
|
compile(project(":plugins:parcelize:parcelize-runtime"))
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -32,6 +32,6 @@ object ParcelizeAvailability {
|
|||||||
val path = ExternalSystemApiUtil.getExternalProjectPath(module) ?: return false
|
val path = ExternalSystemApiUtil.getExternalProjectPath(module) ?: return false
|
||||||
val externalProjectInfo = ExternalSystemUtil.getExternalProjectInfo(module.project, GradleConstants.SYSTEM_ID, path) ?: return false
|
val externalProjectInfo = ExternalSystemUtil.getExternalProjectInfo(module.project, GradleConstants.SYSTEM_ID, path) ?: return false
|
||||||
val moduleData = GradleProjectResolverUtil.findModule(externalProjectInfo.externalProjectStructure, 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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+19
-6
@@ -6,17 +6,30 @@
|
|||||||
package org.jetbrains.kotlin.parcelize.ide
|
package org.jetbrains.kotlin.parcelize.ide
|
||||||
|
|
||||||
import com.intellij.openapi.externalSystem.model.DataNode
|
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.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.gradle.tooling.model.idea.IdeaModule
|
||||||
import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension
|
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<ParcelizeIdeModel, Void>() {
|
||||||
|
override fun getTargetDataKey() = ParcelizeIdeModel.KEY
|
||||||
|
}
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
class ParcelizeProjectResolverExtension : AbstractProjectResolverExtension() {
|
class ParcelizeProjectResolverExtension : AbstractProjectResolverExtension() {
|
||||||
companion object {
|
|
||||||
val KEY = Key<ParcelizeGradleModel>("ParcelizeModel")
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getExtraProjectModelClasses() = setOf(ParcelizeGradleModel::class.java)
|
override fun getExtraProjectModelClasses() = setOf(ParcelizeGradleModel::class.java)
|
||||||
override fun getToolingExtensionsClasses() = setOf(ParcelizeModelBuilderService::class.java, Unit::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)
|
val parcelizeModel = resolverCtx.getExtraProject(gradleModule, ParcelizeGradleModel::class.java)
|
||||||
|
|
||||||
if (parcelizeModel != null && parcelizeModel.isEnabled) {
|
if (parcelizeModel != null && parcelizeModel.isEnabled) {
|
||||||
ideModule.putCopyableUserData(KEY, ParcelizeGradleModelImpl(isEnabled = parcelizeModel.isEnabled))
|
ideModule.createChild(ParcelizeIdeModel.KEY, ParcelizeIdeModel(isEnabled = parcelizeModel.isEnabled))
|
||||||
}
|
}
|
||||||
|
|
||||||
super.populateModuleExtraModels(gradleModule, ideModule)
|
super.populateModuleExtraModels(gradleModule, ideModule)
|
||||||
|
|||||||
Reference in New Issue
Block a user