Fix Parcelize settings serialization (KT-42958)
This commit is contained in:
@@ -10,6 +10,10 @@
|
||||
<quickFixContributor implementation="org.jetbrains.kotlin.parcelize.ide.quickfixes.ParcelizeQuickFixContributor"/>
|
||||
</extensions>
|
||||
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
<externalProjectDataService implementation="org.jetbrains.kotlin.parcelize.ide.ParcelizeIdeModelDataService"/>
|
||||
</extensions>
|
||||
|
||||
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
|
||||
<projectResolve implementation="org.jetbrains.kotlin.parcelize.ide.ParcelizeProjectResolverExtension" order="last"/>
|
||||
</extensions>
|
||||
|
||||
@@ -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"))
|
||||
|
||||
|
||||
+1
-1
@@ -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
|
||||
}
|
||||
}
|
||||
+19
-6
@@ -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<ParcelizeIdeModel, Void>() {
|
||||
override fun getTargetDataKey() = ParcelizeIdeModel.KEY
|
||||
}
|
||||
|
||||
@Suppress("unused")
|
||||
class ParcelizeProjectResolverExtension : AbstractProjectResolverExtension() {
|
||||
companion object {
|
||||
val KEY = Key<ParcelizeGradleModel>("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)
|
||||
|
||||
Reference in New Issue
Block a user