[project model] move serialization-related constants from ExternalProjectSystemRegistry to SerializationConstants

This is needed to get rid of dependency from intellij.platform.workspaceModel.jps on intellij.platform.projectModel module (IDEA-252970).

GitOrigin-RevId: 7ddff607cca36d21afb976d46ad21c4a54a9860c
This commit is contained in:
Nikolay Chashnikov
2023-02-13 09:00:37 +01:00
committed by intellij-monorepo-bot
parent 901ad04ac0
commit 31b6df024c
11 changed files with 46 additions and 18 deletions

View File

@@ -13,4 +13,18 @@ public final class SerializationConstants {
* {@link com.intellij.openapi.components.StateSplitterEx}.
*/
public static final String EXTERNAL_SYSTEM_ID_IN_INTERNAL_STORAGE_ATTRIBUTE = "external-system-id";
/**
* Specifies value of 'external system ID' for elements imported from Maven.
* Historically, we used a special format to mark iml files of modules imported from Maven, so this constant is currently referenced from
* the platform code.
*/
public static final String MAVEN_EXTERNAL_SOURCE_ID = "Maven";
/**
* Specifies name of the root tag's attribute in iml module which is used to mark modules imported from Maven.
* Historically, we used a special format to mark iml files of modules imported from Maven, so this constant is currently referenced from
* the platform code.
*/
public static final String IS_MAVEN_MODULE_IML_ATTRIBUTE = "org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule";
}

View File

@@ -19,6 +19,7 @@ import com.intellij.openapi.module.Module
import com.intellij.openapi.roots.ExternalProjectSystemRegistry
import com.intellij.openapi.roots.ProjectModelExternalSource
import com.intellij.openapi.util.text.StringUtil
import org.jetbrains.jps.model.serialization.SerializationConstants
import java.util.*
import java.util.concurrent.ConcurrentHashMap
@@ -33,7 +34,7 @@ class ExternalProjectSystemRegistryImpl : ExternalProjectSystemRegistry {
}
if (modulePropertyManager.isMavenized()) {
return getSourceById(ExternalProjectSystemRegistry.MAVEN_EXTERNAL_SOURCE_ID)
return getSourceById(SerializationConstants.MAVEN_EXTERNAL_SOURCE_ID)
}
return null

View File

@@ -8,7 +8,6 @@ import com.intellij.openapi.externalSystem.model.project.ModuleData
import com.intellij.openapi.externalSystem.model.project.ProjectData
import com.intellij.openapi.module.Module
import com.intellij.openapi.project.isExternalStorageEnabled
import com.intellij.openapi.roots.ExternalProjectSystemRegistry
import com.intellij.platform.workspaceModel.jps.JpsFileEntitySource
import com.intellij.platform.workspaceModel.jps.JpsImportedEntitySource
import com.intellij.workspaceModel.ide.WorkspaceModel
@@ -18,6 +17,7 @@ import com.intellij.workspaceModel.ide.legacyBridge.ModuleBridge
import com.intellij.workspaceModel.storage.MutableEntityStorage
import com.intellij.workspaceModel.storage.bridgeEntities.ExternalSystemModuleOptionsEntity
import com.intellij.workspaceModel.storage.bridgeEntities.getOrCreateExternalSystemModuleOptions
import org.jetbrains.jps.model.serialization.SerializationConstants
class ExternalSystemModulePropertyManagerBridge(private val module: Module) : ExternalSystemModulePropertyManager() {
private fun findEntity(): ExternalSystemModuleOptionsEntity? {
@@ -86,7 +86,7 @@ class ExternalSystemModulePropertyManagerBridge(private val module: Module) : Ex
override fun getLinkedProjectId(): String? = findEntity()?.linkedProjectId
override fun getRootProjectPath(): String? = findEntity()?.rootProjectPath
override fun getLinkedProjectPath(): String? = findEntity()?.linkedProjectPath
override fun isMavenized(): Boolean = getExternalSystemId() == ExternalProjectSystemRegistry.MAVEN_EXTERNAL_SOURCE_ID
override fun isMavenized(): Boolean = getExternalSystemId() == SerializationConstants.MAVEN_EXTERNAL_SOURCE_ID
override fun setMavenized(mavenized: Boolean) {
setMavenized(mavenized, getModuleDiff())
@@ -97,7 +97,7 @@ class ExternalSystemModulePropertyManagerBridge(private val module: Module) : Ex
unlinkExternalOptions(storageBuilder)
}
editEntity(storageBuilder) {
externalSystem = if (mavenized) ExternalProjectSystemRegistry.MAVEN_EXTERNAL_SOURCE_ID else null
externalSystem = if (mavenized) SerializationConstants.MAVEN_EXTERNAL_SOURCE_ID else null
}
updateSource(storageBuilder)
}

View File

@@ -55,6 +55,7 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
import org.assertj.core.api.Assertions.assertThat
import org.jetbrains.jps.model.serialization.SerializationConstants
import org.junit.Assert.*
import org.junit.Assume.assumeFalse
import org.junit.Before
@@ -65,7 +66,6 @@ import java.io.File
import java.nio.file.Files
import java.nio.file.Path
import java.nio.file.Paths
import java.util.*
class ExternalSystemStorageTest {
companion object {
@@ -304,7 +304,7 @@ class ExternalSystemStorageTest {
fun `save imported facet in imported module`() = saveProjectInExternalStorageAndCheckResult("importedFacetInImportedModule") { project, projectDir ->
val imported = ModuleManager.getInstance(project).newModule(projectDir.resolve("imported.iml").systemIndependentPath, ModuleTypeId.JAVA_MODULE)
val facetRoot = VfsUtilCore.pathToUrl(projectDir.resolve("facet").systemIndependentPath)
addFacet(imported, ExternalProjectSystemRegistry.MAVEN_EXTERNAL_SOURCE_ID, "imported", listOf(facetRoot))
addFacet(imported, SerializationConstants.MAVEN_EXTERNAL_SOURCE_ID, "imported", listOf(facetRoot))
ExternalSystemModulePropertyManager.getInstance(imported).setMavenized(true)
}
@@ -374,7 +374,8 @@ class ExternalSystemStorageTest {
assertThat(ExternalSystemModulePropertyManager.getInstance(module).isMavenized()).isTrue()
val facet = FacetManager.getInstance(module).allFacets.single() as MockFacet
assertThat(facet.name).isEqualTo("imported")
assertThat(facet.externalSource!!.id).isEqualTo(ExternalProjectSystemRegistry.MAVEN_EXTERNAL_SOURCE_ID)
assertThat(facet.externalSource!!.id).isEqualTo(
SerializationConstants.MAVEN_EXTERNAL_SOURCE_ID)
val facetRoot = VfsUtil.pathToUrl(project.basePath!!) + "/facet"
assertThat(facet.configuration.rootUrls).containsExactly(facetRoot)
}

View File

@@ -20,9 +20,16 @@ public interface ExternalProjectSystemRegistry {
ProjectModelExternalSource getExternalSource(@NotNull Module module);
/**
* These fields are temporary added to API until we have proper extension points for different external systems.
* @deprecated use {@link org.jetbrains.jps.model.serialization.SerializationConstants#MAVEN_EXTERNAL_SOURCE_ID} instead
*/
@Deprecated
String MAVEN_EXTERNAL_SOURCE_ID = "Maven";
String EXTERNAL_SYSTEM_ID_KEY = "external.system.id";
/**
* @deprecated use {@link org.jetbrains.jps.model.serialization.SerializationConstants#IS_MAVEN_MODULE_IML_ATTRIBUTE} instead
*/
@Deprecated
String IS_MAVEN_MODULE_KEY = "org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule";
}

View File

@@ -3,7 +3,6 @@ package com.intellij.workspaceModel.ide.impl.jps.serialization
import com.intellij.openapi.diagnostic.logger
import com.intellij.openapi.extensions.ExtensionPointName
import com.intellij.openapi.roots.ExternalProjectSystemRegistry
import com.intellij.openapi.util.JDOMUtil
import com.intellij.platform.workspaceModel.jps.*
import com.intellij.platform.workspaceModel.jps.serialization.SerializationContext
@@ -21,6 +20,7 @@ import org.jdom.Element
import org.jdom.JDOMException
import org.jetbrains.jps.model.serialization.JDomSerializationUtil
import org.jetbrains.jps.model.serialization.JpsProjectLoader
import org.jetbrains.jps.model.serialization.SerializationConstants
import org.jetbrains.jps.model.serialization.facet.JpsFacetSerializer
import org.jetbrains.jps.model.serialization.java.JpsJavaModelSerializerExtension.*
import org.jetbrains.jps.model.serialization.module.JpsModuleRootModelSerializer.*
@@ -318,7 +318,7 @@ internal open class ModuleImlFileEntitiesSerializer(internal val modulePath: Mod
protected open fun readExternalSystemOptions(reader: JpsFileContentReader,
moduleOptions: Map<String?, String?>): Pair<Map<String?, String?>, String?> {
val externalSystemId = moduleOptions["external.system.id"]
?: if (moduleOptions[ExternalProjectSystemRegistry.IS_MAVEN_MODULE_KEY] == true.toString()) ExternalProjectSystemRegistry.MAVEN_EXTERNAL_SOURCE_ID
?: if (moduleOptions[SerializationConstants.IS_MAVEN_MODULE_IML_ATTRIBUTE] == true.toString()) SerializationConstants.MAVEN_EXTERNAL_SOURCE_ID
else null
return Pair(moduleOptions, externalSystemId)
}
@@ -825,8 +825,8 @@ internal open class ModuleImlFileEntitiesSerializer(internal val modulePath: Mod
writer: JpsFileContentWriter) {
val optionsMap = TreeMap<String, String?>()
if (externalSystemOptions != null) {
if (externalSystemOptions.externalSystem == ExternalProjectSystemRegistry.MAVEN_EXTERNAL_SOURCE_ID) {
optionsMap[ExternalProjectSystemRegistry.IS_MAVEN_MODULE_KEY] = true.toString()
if (externalSystemOptions.externalSystem == SerializationConstants.MAVEN_EXTERNAL_SOURCE_ID) {
optionsMap[SerializationConstants.IS_MAVEN_MODULE_IML_ATTRIBUTE] = true.toString()
}
else {
optionsMap["external.system.id"] = externalSystemOptions.externalSystem

View File

@@ -5,7 +5,6 @@ import com.intellij.conversion.*
import com.intellij.conversion.impl.ConversionContextImpl
import com.intellij.openapi.roots.ExternalProjectSystemRegistry
import com.intellij.openapi.roots.OrderRootType
import com.intellij.openapi.roots.impl.libraries.ApplicationLibraryTable
import com.intellij.openapi.roots.impl.libraries.LibraryEx
import com.intellij.openapi.roots.libraries.Library
import com.intellij.openapi.roots.libraries.LibraryKindRegistry
@@ -20,6 +19,7 @@ import org.jetbrains.jps.model.java.JavaResourceRootType
import org.jetbrains.jps.model.java.JavaSourceRootType
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
import org.jetbrains.jps.model.module.JpsTypedModuleSourceRoot
import org.jetbrains.jps.model.serialization.SerializationConstants
import org.jetbrains.jps.model.serialization.facet.JpsFacetSerializer
import org.jetbrains.jps.model.serialization.module.JpsModuleRootModelSerializer.*
import org.jetbrains.kotlin.config.getFacetPlatformByConfigurationElement
@@ -182,7 +182,8 @@ internal class KotlinNonJvmSourceRootConverterProvider : ConverterProvider() {
private fun ModuleSettings.isExternalModule(): Boolean {
return when {
rootElement.getAttributeValue(ExternalProjectSystemRegistry.EXTERNAL_SYSTEM_ID_KEY) != null -> true
rootElement.getAttributeValue(ExternalProjectSystemRegistry.IS_MAVEN_MODULE_KEY)?.toBoolean() ?: false -> true
rootElement.getAttributeValue(
SerializationConstants.IS_MAVEN_MODULE_IML_ATTRIBUTE)?.toBoolean() ?: false -> true
else -> false
}
}

View File

@@ -30,6 +30,7 @@ import org.jetbrains.idea.maven.project.*
import org.jetbrains.idea.maven.utils.resolved
import org.jetbrains.jps.model.java.JavaSourceRootType
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
import org.jetbrains.jps.model.serialization.SerializationConstants
import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments
import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
import org.jetbrains.kotlin.cli.common.arguments.parseCommandLineArguments
@@ -317,7 +318,7 @@ class KotlinMavenImporter : MavenImporter(KOTLIN_PLUGIN_GROUP_ID, KOTLIN_PLUGIN_
val kotlinFacet = module.getOrCreateFacet(
modifiableModelsProvider,
false,
ExternalProjectSystemRegistry.MAVEN_EXTERNAL_SOURCE_ID
SerializationConstants.MAVEN_EXTERNAL_SOURCE_ID
)
// TODO There should be a way to figure out the correct platform version

View File

@@ -29,6 +29,7 @@ import org.jetbrains.idea.maven.utils.Path;
import org.jetbrains.jps.model.JpsElement;
import org.jetbrains.jps.model.java.JavaSourceRootType;
import org.jetbrains.jps.model.module.JpsModuleSourceRootType;
import org.jetbrains.jps.model.serialization.SerializationConstants;
import java.io.File;
@@ -189,7 +190,7 @@ public class MavenRootModelAdapter implements MavenRootModelAdapterInterface {
}
public static ProjectModelExternalSource getMavenExternalSource() {
return ExternalProjectSystemRegistry.getInstance().getSourceById(ExternalProjectSystemRegistry.MAVEN_EXTERNAL_SOURCE_ID);
return ExternalProjectSystemRegistry.getInstance().getSourceById(SerializationConstants.MAVEN_EXTERNAL_SOURCE_ID);
}
@Nullable

View File

@@ -34,6 +34,7 @@ import org.jetbrains.jps.model.JpsElement;
import org.jetbrains.jps.model.java.JavaSourceRootType;
import org.jetbrains.jps.model.java.JpsJavaExtensionService;
import org.jetbrains.jps.model.module.JpsModuleSourceRootType;
import org.jetbrains.jps.model.serialization.SerializationConstants;
import java.io.File;
import java.nio.file.Files;
@@ -494,7 +495,7 @@ public class MavenRootModelAdapterLegacyImpl implements MavenRootModelAdapterInt
}
public static ProjectModelExternalSource getMavenExternalSource() {
return ExternalProjectSystemRegistry.getInstance().getSourceById(ExternalProjectSystemRegistry.MAVEN_EXTERNAL_SOURCE_ID);
return ExternalProjectSystemRegistry.getInstance().getSourceById(SerializationConstants.MAVEN_EXTERNAL_SOURCE_ID);
}
@Nullable

View File

@@ -34,6 +34,7 @@ import org.jetbrains.idea.maven.model.MavenConstants
import org.jetbrains.idea.maven.project.MavenImportingSettings
import org.jetbrains.idea.maven.project.MavenProject
import org.jetbrains.idea.maven.utils.MavenLog
import org.jetbrains.jps.model.serialization.SerializationConstants
import org.jetbrains.jps.model.serialization.library.JpsLibraryTableSerializer
internal class WorkspaceModuleImporter(
@@ -274,7 +275,7 @@ internal class WorkspaceModuleImporter(
companion object {
val JAVADOC_TYPE: LibraryRootTypeId = LibraryRootTypeId("JAVADOC")
val EXTERNAL_SOURCE_ID get() = ExternalProjectSystemRegistry.MAVEN_EXTERNAL_SOURCE_ID
val EXTERNAL_SOURCE_ID get() = SerializationConstants.MAVEN_EXTERNAL_SOURCE_ID
}
class ExternalSystemData(val moduleEntity: ModuleEntity, val mavenProjectFilePath: String, val mavenModuleType: StandardMavenModuleType) {