mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
IJPL-157852: CustomModuleComponentSerializer should not know anything about components and iml file structure
GitOrigin-RevId: 61b8964d965af37ad51e91b2681a71ada8c49a31
This commit is contained in:
committed by
intellij-monorepo-bot
parent
a1210118c0
commit
e7b290710f
@@ -2,8 +2,8 @@
|
||||
package com.intellij.platform.workspace.jps.serialization.impl
|
||||
|
||||
import com.intellij.platform.workspace.jps.entities.ModuleEntity
|
||||
import com.intellij.platform.workspace.storage.url.VirtualFileUrl
|
||||
import com.intellij.platform.workspace.storage.url.VirtualFileUrlManager
|
||||
import org.jdom.Element
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
|
||||
/**
|
||||
@@ -21,10 +21,11 @@ interface CustomModuleComponentSerializer {
|
||||
* [detachedModuleEntity] - module entity that is not added to the builder. You can change it by casting to builder and modify properties
|
||||
*/
|
||||
fun loadComponent(detachedModuleEntity: ModuleEntity.Builder,
|
||||
reader: JpsFileContentReader,
|
||||
imlFileUrl: VirtualFileUrl,
|
||||
componentTag: Element,
|
||||
errorReporter: ErrorReporter,
|
||||
virtualFileManager: VirtualFileUrlManager)
|
||||
|
||||
fun saveComponent(moduleEntity: ModuleEntity, imlFileUrl: VirtualFileUrl, writer: JpsFileContentWriter)
|
||||
fun saveComponent(moduleEntity: ModuleEntity): Element?
|
||||
|
||||
val componentName: String
|
||||
}
|
||||
@@ -250,7 +250,10 @@ internal open class ModuleImlFileEntitiesSerializer(internal val modulePath: Mod
|
||||
}
|
||||
|
||||
context.customModuleComponentSerializers.forEach {
|
||||
it.loadComponent(moduleEntity, reader, fileUrl, errorReporter, virtualFileManager)
|
||||
val componentTag = reader.loadComponent(fileUrl.url, it.componentName)
|
||||
if (componentTag != null) {
|
||||
it.loadComponent(moduleEntity, componentTag, errorReporter, virtualFileManager)
|
||||
}
|
||||
}
|
||||
|
||||
runCatchingXmlIssues(exceptionsCollector) {
|
||||
@@ -695,7 +698,10 @@ internal open class ModuleImlFileEntitiesSerializer(internal val modulePath: Mod
|
||||
saveRootManagerElement(module, customImlData, entities, writer)
|
||||
}
|
||||
for (it in context.customModuleComponentSerializers) {
|
||||
it.saveComponent(module, fileUrl, writer)
|
||||
val componentTag = it.saveComponent(module)
|
||||
if (componentTag != null) {
|
||||
writer.saveComponent(fileUrl.url, it.componentName, componentTag)
|
||||
}
|
||||
}
|
||||
saveTestModuleProperty(module, writer)
|
||||
}
|
||||
|
||||
@@ -5,9 +5,6 @@ import com.intellij.platform.workspace.jps.entities.ModuleEntity
|
||||
import com.intellij.platform.workspace.jps.entities.customImlData
|
||||
import com.intellij.platform.workspace.jps.serialization.impl.CustomModuleComponentSerializer
|
||||
import com.intellij.platform.workspace.jps.serialization.impl.ErrorReporter
|
||||
import com.intellij.platform.workspace.jps.serialization.impl.JpsFileContentReader
|
||||
import com.intellij.platform.workspace.jps.serialization.impl.JpsFileContentWriter
|
||||
import com.intellij.platform.workspace.storage.url.VirtualFileUrl
|
||||
import com.intellij.platform.workspace.storage.url.VirtualFileUrlManager
|
||||
import org.jdom.Element
|
||||
import org.jetbrains.idea.eclipse.config.EclipseModuleManagerImpl.*
|
||||
@@ -19,17 +16,17 @@ import org.jetbrains.jps.model.serialization.JpsProjectLoader
|
||||
* Implements loading and saving configuration from [EclipseModuleManagerImpl] in iml file when workspace model is used
|
||||
*/
|
||||
class EclipseModuleManagerSerializer : CustomModuleComponentSerializer {
|
||||
override val componentName: String = "EclipseModuleManager"
|
||||
|
||||
override fun loadComponent(detachedModuleEntity: ModuleEntity.Builder,
|
||||
reader: JpsFileContentReader,
|
||||
imlFileUrl: VirtualFileUrl,
|
||||
componentTag: Element,
|
||||
errorReporter: ErrorReporter,
|
||||
virtualFileManager: VirtualFileUrlManager) {
|
||||
val componentTag = reader.loadComponent(imlFileUrl.url, "EclipseModuleManager") ?: return
|
||||
val entity = EclipseProjectPropertiesEntity(LinkedHashMap(), ArrayList(), ArrayList(), ArrayList(), false, 0,
|
||||
LinkedHashMap(), detachedModuleEntity.entitySource) {
|
||||
this.module = detachedModuleEntity
|
||||
}
|
||||
(entity as EclipseProjectPropertiesEntity.Builder).apply {
|
||||
entity.apply {
|
||||
componentTag.getChildren(LIBELEMENT).forEach {
|
||||
eclipseUrls.add(virtualFileManager.getOrCreateFromUrl(it.getAttributeValue(VALUE_ATTR)!!))
|
||||
}
|
||||
@@ -55,15 +52,15 @@ class EclipseModuleManagerSerializer : CustomModuleComponentSerializer {
|
||||
}
|
||||
}
|
||||
|
||||
override fun saveComponent(moduleEntity: ModuleEntity, imlFileUrl: VirtualFileUrl, writer: JpsFileContentWriter) {
|
||||
override fun saveComponent(moduleEntity: ModuleEntity): Element? {
|
||||
val moduleOptions = moduleEntity.customImlData?.customModuleOptions
|
||||
if (moduleOptions != null && moduleOptions[JpsProjectLoader.CLASSPATH_ATTRIBUTE] == JpsEclipseClasspathSerializer.CLASSPATH_STORAGE_ID) {
|
||||
return
|
||||
return null
|
||||
}
|
||||
val eclipseProperties = moduleEntity.eclipseProperties
|
||||
if (eclipseProperties == null || eclipseProperties.eclipseUrls.isEmpty() && eclipseProperties.variablePaths.isEmpty()
|
||||
&& !eclipseProperties.forceConfigureJdk && eclipseProperties.unknownCons.isEmpty()) {
|
||||
return
|
||||
return null
|
||||
}
|
||||
|
||||
val componentTag = JDomSerializationUtil.createComponentElement("EclipseModuleManager")
|
||||
@@ -92,6 +89,6 @@ class EclipseModuleManagerSerializer : CustomModuleComponentSerializer {
|
||||
srcDescriptionTag.addContent(Element(SRC_FOLDER).setAttribute(VALUE_ATTR, url).setAttribute(EXPECTED_POSITION, position.toString()))
|
||||
}
|
||||
componentTag.addContent(srcDescriptionTag)
|
||||
writer.saveComponent(imlFileUrl.url, "EclipseModuleManager", componentTag)
|
||||
return componentTag
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user