[platform] refactoring: rename PluginModuleId.id to PluginModuleId.name for consistency (IJPL-206556)

We use 'name' attribute in XML for it, and now the module ID is composed of the name and the namespace, so it would be confusing to use 'id' for 'name'.


(cherry picked from commit 08bf12d71ca34d17d0336b10c412806f6db4dd19)

IJ-CR-178875

GitOrigin-RevId: a04de9e28e3d5143600f4d1d0ac0241c037e6792
This commit is contained in:
Nikolay Chashnikov
2025-10-20 20:00:08 +00:00
committed by intellij-monorepo-bot
parent 701daea6d3
commit 076bfd726f
27 changed files with 86 additions and 86 deletions
@@ -58,7 +58,7 @@ internal class ModuleBasedPluginXmlPathResolver(
}
override fun resolveCustomModuleClassesRoots(moduleId: PluginModuleId): List<Path> {
val moduleDescriptor = includedModules.find { it.moduleDescriptor.moduleId.stringId == moduleId.id }?.moduleDescriptor
val moduleDescriptor = includedModules.find { it.moduleDescriptor.moduleId.stringId == moduleId.name }?.moduleDescriptor
return moduleDescriptor?.resourceRootPaths ?: emptyList()
}
@@ -276,7 +276,7 @@ internal class ModuleBasedProductLoadingStrategy(internal val moduleRepository:
descriptor?.contentModules?.forEach { module ->
if (module.packagePrefix == null) {
val moduleId = module.moduleId
module.jarFiles = moduleRepository.getModule(RuntimeModuleId.module(moduleId.id)).resourceRootPaths
module.jarFiles = moduleRepository.getModule(RuntimeModuleId.module(moduleId.name)).resourceRootPaths
}
}
}
@@ -313,7 +313,7 @@ internal class ModuleBasedProductLoadingStrategy(internal val moduleRepository:
productModules.mainModuleGroup.optionalModuleIds.contains(RuntimeModuleId.raw(moduleId))
override fun findProductContentModuleClassesRoot(moduleId: PluginModuleId, moduleDir: Path): Path? {
val resolvedModule = moduleRepository.resolveModule(RuntimeModuleId.module(moduleId.id)).resolvedModule
val resolvedModule = moduleRepository.resolveModule(RuntimeModuleId.module(moduleId.name)).resolvedModule
if (resolvedModule == null) {
// https://youtrack.jetbrains.com/issue/CPP-38280
// we log here, as only for JetBrainsClient it is expected that some module is not resolved
@@ -2,8 +2,8 @@
package com.intellij.platform.bootstrap
import com.intellij.ide.plugins.DataLoader
import com.intellij.ide.plugins.PluginModuleId
import com.intellij.ide.plugins.PathResolver
import com.intellij.ide.plugins.PluginModuleId
import com.intellij.ide.plugins.toXIncludeLoader
import com.intellij.platform.plugins.parser.impl.PluginDescriptorBuilder
import com.intellij.platform.plugins.parser.impl.PluginDescriptorFromXmlStreamConsumer
@@ -33,7 +33,7 @@ internal class RunningFromSourceModuleBasedPathResolver(
}
override fun resolveCustomModuleClassesRoots(moduleId: PluginModuleId): List<Path> {
val moduleDescriptor = moduleRepository.resolveModule(RuntimeModuleId.raw(moduleId.id)).resolvedModule
val moduleDescriptor = moduleRepository.resolveModule(RuntimeModuleId.raw(moduleId.name)).resolvedModule
if (moduleDescriptor?.moduleId?.stringId?.contains(".charts") == true) {
}
return moduleDescriptor?.resourceRootPaths ?: emptyList()
@@ -360,12 +360,12 @@ class PluginDependenciesValidator private constructor(
)
val embeddedContentModules = descriptor.content.modules.filter { it.defaultLoadingRule == ModuleLoadingRule.EMBEDDED }.map { it.moduleId }
val customConfigFileToModule = descriptor.content.modules.mapNotNull {
moduleItem -> moduleItem.configFile?.let { it to moduleItem.moduleId.id.substringBefore('/') }
moduleItem -> moduleItem.configFile?.let { it to moduleItem.moduleId.name.substringBefore('/') }
}.toMap()
val pathResolver = LoadFromSourcePathResolver(pluginLayout, customConfigFileToModule, embeddedContentModules, xIncludeLoader)
val dataLoader = LoadFromSourceDataLoader(mainPluginModule = mainModule)
loadPluginSubDescriptors(descriptor, pathResolver, loadingContext = loadingContext, dataLoader = dataLoader, pluginDir = pluginDir, pool = zipPool)
descriptor.jarFiles = (pluginLayout.jpsModulesInClasspath + embeddedContentModules.map { it.id }).map { getModuleOutputDir(it) }
descriptor.jarFiles = (pluginLayout.jpsModulesInClasspath + embeddedContentModules.map { it.name }).map { getModuleOutputDir(it) }
return descriptor
}
@@ -469,7 +469,7 @@ class PluginDependenciesValidator private constructor(
if (moduleId in embeddedContentModules) {
return emptyList()
}
return listOf(getModuleOutputDir(moduleId.id.substringBefore('/')))
return listOf(getModuleOutputDir(moduleId.name.substringBefore('/')))
}
}
@@ -144,18 +144,18 @@ class ClassLoaderConfigurator(
}
else {
val mimicJarUrlConnection = module.vendor == PluginManagerCore.VENDOR_JETBRAINS
&& (module.moduleId.id == "intellij.rider.test.cases"
|| module.moduleId.id == "intellij.rider.plugins.android.test.cases"
|| module.moduleId.id == "intellij.rider.plugins.efCore.test.cases"
|| module.moduleId.id == "intellij.rider.plugins.for.tea.test.cases"
|| module.moduleId.id == "intellij.rider.plugins.fsharp.test.cases"
|| module.moduleId.id == "intellij.rider.plugins.godot.test.cases"
|| module.moduleId.id == "intellij.rider.plugins.unity.test.cases"
|| module.moduleId.id == "intellij.rider.plugins.unreal.link.test.cases"
|| module.moduleId.id == "intellij.rider.test.cases.qodana"
|| module.moduleId.id == "intellij.rider.test.cases.supplementary"
|| module.moduleId.id == "intellij.rider.test.cases.consoles"
|| module.moduleId.id == "intellij.rider.test.cases.rdct")
&& (module.moduleId.name == "intellij.rider.test.cases"
|| module.moduleId.name == "intellij.rider.plugins.android.test.cases"
|| module.moduleId.name == "intellij.rider.plugins.efCore.test.cases"
|| module.moduleId.name == "intellij.rider.plugins.for.tea.test.cases"
|| module.moduleId.name == "intellij.rider.plugins.fsharp.test.cases"
|| module.moduleId.name == "intellij.rider.plugins.godot.test.cases"
|| module.moduleId.name == "intellij.rider.plugins.unity.test.cases"
|| module.moduleId.name == "intellij.rider.plugins.unreal.link.test.cases"
|| module.moduleId.name == "intellij.rider.test.cases.qodana"
|| module.moduleId.name == "intellij.rider.test.cases.supplementary"
|| module.moduleId.name == "intellij.rider.test.cases.consoles"
|| module.moduleId.name == "intellij.rider.test.cases.rdct")
module.pluginClassLoader = PluginClassLoader(
classPath = ClassPath(customJarFiles, DEFAULT_CLASSLOADER_CONFIGURATION, resourceFileFactory, mimicJarUrlConnection),
parents = dependencies,
@@ -442,7 +442,7 @@ private fun getDependencyPackagePrefixes(descriptor: PluginMainDescriptor, plugi
for (item in dependencies) {
val packagePrefix = (pluginSet.findEnabledModule(item) ?: continue).packagePrefix
// intellij.platform.commercial.verifier is injected
if (packagePrefix != null && item.id != "intellij.platform.commercial.verifier") {
if (packagePrefix != null && item.name != "intellij.platform.commercial.verifier") {
result.add("$packagePrefix.")
}
}
@@ -14,5 +14,5 @@ class UnsuitableProductModeModuleUnavailabilityReason(
val moduleId: PluginModuleId,
val productMode: @NlsSafe String,
) : EnvironmentDependentModuleUnavailabilityReason {
override val logMessage: String get() = "Module '${moduleId.id}' is not available in '$productMode' product mode"
override val logMessage: String get() = "Module '${moduleId.name}' is not available in '$productMode' product mode"
}
@@ -8,11 +8,11 @@ import org.jetbrains.annotations.ApiStatus
@Deprecated("Use `contentModuleId`", ReplaceWith("contentModuleId"))
@get:ApiStatus.Experimental
val IdeaPluginDescriptor.contentModuleName: String?
get() = (this as? ContentModuleDescriptor)?.moduleId?.id
get() = (this as? ContentModuleDescriptor)?.moduleId?.name
@get:ApiStatus.Experimental
val IdeaPluginDescriptor.contentModuleId: String?
get() = (this as? ContentModuleDescriptor)?.moduleId?.id
get() = (this as? ContentModuleDescriptor)?.moduleId?.name
@get:ApiStatus.Experimental
val IdeaPluginDescriptor.isRequiredContentModule: Boolean
@@ -32,7 +32,7 @@ class ModuleDependenciesApi(val pluginIds: List<String>, val moduleIds: List<Str
@get:ApiStatus.Experimental
val IdeaPluginDescriptor.moduleDependencies: ModuleDependenciesApi
get() = (this as IdeaPluginDescriptorImpl).moduleDependencies.let {
ModuleDependenciesApi(it.plugins.map { it.idString }, it.modules.map { it.id })
ModuleDependenciesApi(it.plugins.map { it.idString }, it.modules.map { it.name })
}
@get:ApiStatus.Experimental
@@ -175,7 +175,7 @@ sealed class IdeaPluginDescriptorImpl(
}
val moduleDeps = ArrayList<PluginModuleId>()
val pluginDeps = ArrayList<PluginId>()
var cachedContentModuleIds: Set<String>? = null
var cachedContentModuleNames: Set<String>? = null
for (dep in dependencies) {
when (dep) {
is DependenciesElement.PluginDependency -> pluginDeps.add(PluginId.getId(dep.pluginId))
@@ -183,10 +183,10 @@ sealed class IdeaPluginDescriptorImpl(
val namespace =
dep.namespace
?: run {
if (cachedContentModuleIds == null) {
cachedContentModuleIds = parent?.content?.modules?.mapTo(HashSet()) { it.moduleId.id } ?: emptySet()
if (cachedContentModuleNames == null) {
cachedContentModuleNames = parent?.content?.modules?.mapTo(HashSet()) { it.moduleId.name } ?: emptySet()
}
if (dep.moduleName in cachedContentModuleIds) parent!!.namespace ?: parent.implicitNamespaceForPrivateModules else null
if (dep.moduleName in cachedContentModuleNames) parent!!.namespace ?: parent.implicitNamespaceForPrivateModules else null
}
?: PluginModuleId.JETBRAINS_NAMESPACE
moduleDeps.add(PluginModuleId(dep.moduleName, namespace))
@@ -215,7 +215,7 @@ sealed class IdeaPluginDescriptorImpl(
LOG.warnInProduction(PluginException(buildString {
append("Plugin descriptor for ")
when (this@logUnexpectedElement) {
is ContentModuleDescriptor -> append("content module '${moduleId.id}' of plugin '${pluginId}'")
is ContentModuleDescriptor -> append("content module '${moduleId.name}' of plugin '${pluginId}'")
is DependsSubDescriptor -> append("'depends' sub-descriptor '${descriptorPath}' of plugin '${pluginId}'")
is PluginMainDescriptor -> append("plugin '${pluginId}'")
}
@@ -622,17 +622,17 @@ class ContentModuleDescriptor(
private val resourceBundleBaseName: String? = raw.resourceBundleBaseName
/** java helper */
fun getModuleIdString(): String = moduleId.id
fun getModuleIdString(): String = moduleId.name
override fun getDescriptorPath(): String = descriptorPath
override fun getResourceBundleBaseName(): String? = resourceBundleBaseName
override fun toString(): String =
"ContentModuleDescriptor(id=${this@ContentModuleDescriptor.moduleId.id}" +
"ContentModuleDescriptor(id=${this@ContentModuleDescriptor.moduleId.name}" +
(if (moduleLoadingRule == ModuleLoadingRule.OPTIONAL) "" else ", loadingRule=$moduleLoadingRule") +
(if (packagePrefix == null) "" else ", package=$packagePrefix") +
(if (descriptorPath == "${this@ContentModuleDescriptor.moduleId.id}.xml") "" else ", descriptorPath=$descriptorPath") +
(if (descriptorPath == "${this@ContentModuleDescriptor.moduleId.name}.xml") "" else ", descriptorPath=$descriptorPath") +
") <- $parent"
init {
@@ -58,7 +58,7 @@ class PluginContentDescriptor(@JvmField val modules: List<ModuleItem>) {
val targetModule = initContext.environmentConfiguredModules[requiredIfAvailable]
if (targetModule == null) {
// TODO should lift this log out of here
logger<PluginManagerCore>().error("Plugin id='$diagnosticPluginId' uses required-if-available statement in content module '${moduleId.id}' " +
logger<PluginManagerCore>().error("Plugin id='$diagnosticPluginId' uses required-if-available statement in content module '${moduleId.name}' " +
"with a target module that is unknown or is not configured by the environment: $requiredIfAvailable")
return loadingRule
}
@@ -210,9 +210,9 @@ fun loadPluginSubDescriptors(
) {
val moduleDir = pluginDir.resolve("lib/modules").takeIf { Files.isDirectory(it) }
for (module in descriptor.content.modules) {
val subDescriptorFile = module.configFile ?: "${module.moduleId.id}.xml"
val subDescriptorFile = module.configFile ?: "${module.moduleId.name}.xml"
if (module.descriptorContent == null) {
val jarFile = moduleDir?.resolve("${module.moduleId.id}.jar")
val jarFile = moduleDir?.resolve("${module.moduleId.name}.jar")
if (jarFile != null && Files.exists(jarFile)) {
val subRaw = loadModuleFromSeparateJar(pool = pool, jarFile = jarFile, subDescriptorFile = subDescriptorFile, loadingContext = loadingContext)
val subDescriptor = descriptor.createContentModule(subRaw, subDescriptorFile, module)
@@ -241,7 +241,7 @@ fun loadPluginSubDescriptors(
subDescriptor.jarFiles = customRoots
}
else {
subDescriptor.jarFiles = Collections.singletonList(pluginDir.resolve("lib/modules/${module.moduleId.id}.jar"))
subDescriptor.jarFiles = Collections.singletonList(pluginDir.resolve("lib/modules/${module.moduleId.name}.jar"))
}
}
module.assignDescriptor(subDescriptor)
@@ -722,11 +722,11 @@ private fun loadPluginDescriptor(
val descriptor = PluginMainDescriptor(raw, pluginDir, isBundled = true)
for (module in descriptor.content.modules) {
var classPath: List<Path>? = null
val subDescriptorFile = module.configFile ?: "${module.moduleId.id}.xml"
val subDescriptorFile = module.configFile ?: "${module.moduleId.name}.xml"
val subRaw: PluginDescriptorBuilder = if (module.descriptorContent == null) {
val input = dataLoader.load(subDescriptorFile, pluginDescriptorSourceOnly = true)
if (input == null) {
val jarFile = pluginDir.resolve("lib/modules/${module.moduleId.id}.jar")
val jarFile = pluginDir.resolve("lib/modules/${module.moduleId.name}.jar")
classPath = Collections.singletonList(jarFile)
loadModuleFromSeparateJar(pool = zipPool, jarFile = jarFile, subDescriptorFile = subDescriptorFile, loadingContext = loadingContext)
}
@@ -748,7 +748,7 @@ private fun loadPluginDescriptor(
it.getBuilder()
}
if (subRaw.`package` == null || subRaw.isSeparateJar) {
classPath = Collections.singletonList(pluginDir.resolve("lib/modules/${module.moduleId.id}.jar"))
classPath = Collections.singletonList(pluginDir.resolve("lib/modules/${module.moduleId.name}.jar"))
}
subRaw
}
@@ -939,10 +939,10 @@ private fun loadContentModuleDescriptors(
}
val moduleId = module.moduleId
val subDescriptorFile = "${moduleId.id}.xml"
val subDescriptorFile = "${moduleId.name}.xml"
if (moduleDirExists &&
!isRunningFromSourcesWithoutDevBuild && moduleId.id.startsWith("intellij.") &&
!isRunningFromSourcesWithoutDevBuild && moduleId.name.startsWith("intellij.") &&
loadProductModule(
loadingStrategy = loadingStrategy,
moduleDir = moduleDir,
@@ -981,7 +981,7 @@ private fun loadProductModule(
val moduleRaw: PluginDescriptorBuilder = if (jarFile == null) {
// do not log - the severity of the error is determined by the loadingStrategy, the default strategy does not return null at all
PluginDescriptorBuilder.builder().apply {
`package` = "unresolved.${moduleId.id}"
`package` = "unresolved.${moduleId.name}"
}
}
else {
@@ -1245,7 +1245,7 @@ internal fun loadDescriptorFromResource(
if (libDir == null) {
val runFromSources = pathResolver.isRunningFromSourcesWithoutDevBuild || PluginManagerCore.isUnitTestMode || forceUseCoreClassloader()
for (module in descriptor.content.modules) {
val subDescriptorFile = module.configFile ?: "${module.moduleId.id}.xml"
val subDescriptorFile = module.configFile ?: "${module.moduleId.name}.xml"
val subRaw = pathResolver.resolveModuleFile(loadingContext.readContext, dataLoader, subDescriptorFile)
val subDescriptor = descriptor.createContentModule(subRaw, subDescriptorFile, module)
if (runFromSources && subDescriptor.packagePrefix == null) {
@@ -635,7 +635,7 @@ object PluginManagerCore {
if (corePlugin != null) {
val disabledModulesOfCorePlugin = corePlugin.contentModules.filter { it.moduleLoadingRule.required && !it.isMarkedForLoading }
if (disabledModulesOfCorePlugin.isNotEmpty()) {
throw EssentialPluginMissingException(disabledModulesOfCorePlugin.map { it.moduleId.id })
throw EssentialPluginMissingException(disabledModulesOfCorePlugin.map { it.moduleId.name })
}
}
var missing: MutableList<Pair<String, PluginNonLoadReason?>>? = null
@@ -14,8 +14,8 @@ import org.jetbrains.annotations.ApiStatus
*/
@ApiStatus.Internal
@IntellijInternalApi
class PluginModuleId private constructor(val id: String, val namespace: String) {
override fun toString(): String = id
class PluginModuleId private constructor(val name: String, val namespace: String) {
override fun toString(): String = name
override fun equals(other: Any?): Boolean {
if (this === other) return true
@@ -23,11 +23,11 @@ class PluginModuleId private constructor(val id: String, val namespace: String)
other as PluginModuleId
return id == other.id && (!useNamespaceInId || namespace == other.namespace)
return name == other.name && (!useNamespaceInId || namespace == other.namespace)
}
override fun hashCode(): Int {
return if (useNamespaceInId) id.hashCode() + 31 * namespace.hashCode() else id.hashCode()
return if (useNamespaceInId) name.hashCode() + 31 * namespace.hashCode() else name.hashCode()
}
companion object {
@@ -35,15 +35,15 @@ class PluginModuleId private constructor(val id: String, val namespace: String)
/** this property is temporarily added to allow using modules without specifying namespace */
private val useNamespaceInId = SystemProperties.getBooleanProperty("intellij.platform.plugin.modules.use.namespace.in.id", false)
fun getId(id: String, namespace: String): PluginModuleId {
val interned = interner[id]
/* Strictly speaking, a key composed of 'id' and 'namespace' should be used. However, in almost all cases ids will be unique, so using composite keys won't bring value
fun getId(name: String, namespace: String): PluginModuleId {
val interned = interner[name]
/* Strictly speaking, a key composed of 'name' and 'namespace' should be used. However, in almost all cases names will be unique, so using composite keys won't bring value
but may affect performance. Also, we'll need to store concatenated values somewhere in the model to ensure that GC won't collect the corresponding entries. */
if (interned != null && interned.namespace == namespace) {
return interned
}
val moduleId = PluginModuleId(id, namespace)
val old = interner.putIfAbsent(id, moduleId)
val moduleId = PluginModuleId(name, namespace)
val old = interner.putIfAbsent(name, moduleId)
if (old != null && old.namespace == namespace) {
return old
}
@@ -51,7 +51,7 @@ class PluginModuleId private constructor(val id: String, val namespace: String)
}
/** shorthand for [getId] in kotlin */
operator fun invoke(id: String, namespace: String): PluginModuleId = getId(id, namespace)
operator fun invoke(name: String, namespace: String): PluginModuleId = getId(name, namespace)
/**
* The namespace used for modules from the IntelliJ Platform and plugins developed by JetBrains.
@@ -60,13 +60,13 @@ class PluginModuleId private constructor(val id: String, val namespace: String)
const val JETBRAINS_NAMESPACE: String = "jetbrains"
@ApiStatus.ScheduledForRemoval
@Deprecated("Use getId(id, namespace) instead")
fun getId(id: String): PluginModuleId {
return getId(id, JETBRAINS_NAMESPACE)
@Deprecated("Use getId(name, namespace) instead")
fun getId(name: String): PluginModuleId {
return getId(name, JETBRAINS_NAMESPACE)
}
@ApiStatus.ScheduledForRemoval
@Deprecated("Use PluginModuleId(id, namespace) instead")
operator fun invoke(id: String): PluginModuleId = getId(id)
@Deprecated("Use PluginModuleId(name, namespace) instead")
operator fun invoke(name: String): PluginModuleId = getId(name)
}
}
@@ -226,14 +226,14 @@ class PluginModuleDependencyCannotBeLoadedOrMissing(
override val shouldNotifyUser: Boolean,
): PluginNonLoadReason {
private val dependencyName: String
get() = containingPlugin?.idString ?: moduleDependency.id
get() = containingPlugin?.idString ?: moduleDependency.name
// FIXME VERY confusing message
override val detailedMessage: @NlsContexts.DetailedDescription String
get() = CoreBundle.message("plugin.loading.error.long.depends.on.not.installed.plugin", plugin.name, dependencyName)
override val shortMessage: @NlsContexts.Label String
get() = CoreBundle.message("plugin.loading.error.short.depends.on.not.installed.plugin", dependencyName)
override val logMessage: @NonNls String
get() = "Plugin '${plugin.name}' (${plugin.pluginId}) has module dependency '${moduleDependency.id}' which cannot be loaded or missing"
get() = "Plugin '${plugin.name}' (${plugin.pluginId}) has module dependency '${moduleDependency.name}' which cannot be loaded or missing"
}
@ApiStatus.Internal
@@ -270,11 +270,11 @@ class PluginHasDuplicateContentModuleDeclaration(
val moduleId: PluginModuleId,
): PluginNonLoadReason {
override val detailedMessage: @NlsContexts.DetailedDescription String
get() = CoreBundle.message("plugin.loading.error.long.content.modules.are.invalid.duplicate.module", plugin.name, moduleId.id)
get() = CoreBundle.message("plugin.loading.error.long.content.modules.are.invalid.duplicate.module", plugin.name, moduleId.name)
override val shortMessage: @NlsContexts.Label String
get() = CoreBundle.message("plugin.loading.error.short.content.modules.are.invalid.duplicate.module", plugin.name)
override val logMessage: @NonNls String
get() = "Plugin '${plugin.name}' (${plugin.pluginId}) has duplicate declaration of content module '${moduleId.id}'"
get() = "Plugin '${plugin.name}' (${plugin.pluginId}) has duplicate declaration of content module '${moduleId.name}'"
override val shouldNotifyUser: Boolean
get() = true
}
@@ -121,7 +121,7 @@ class PluginSetBuilder(@JvmField val unsortedPlugins: Set<PluginMainDescriptor>)
for (module in plugin.contentModules) {
if (module.moduleLoadingRule.required && enabledRequiredContentModules.remove(module.moduleId) != null) {
module.isMarkedForLoading = false
logMessages.add("Module ${module.moduleId.id} is disabled because the containing plugin ${plugin.pluginId} won't be loaded")
logMessages.add("Module ${module.moduleId.name} is disabled because the containing plugin ${plugin.pluginId} won't be loaded")
}
}
}
@@ -160,10 +160,10 @@ class PluginSetBuilder(@JvmField val unsortedPlugins: Set<PluginMainDescriptor>)
for (ref in module.moduleDependencies.modules) {
val targetModule = enabledModuleV2Ids[ref] ?: enabledRequiredContentModules[ref]
if (targetModule == null) {
logMessages.add("Module ${module.contentModuleId ?: module.pluginId} is not enabled because dependency ${ref.id} is not available")
logMessages.add("Module ${module.contentModuleId ?: module.pluginId} is not enabled because dependency ${ref.name} is not available")
when (module) {
is ContentModuleDescriptor -> disabledModuleToProblematicPlugin.put(module.moduleId, disabledModuleToProblematicPlugin.get(ref)
?: PluginId.getId(ref.id))
?: PluginId.getId(ref.name))
is PluginMainDescriptor -> markRequiredModulesAsDisabled(module)
}
continue@m
@@ -256,7 +256,7 @@ class CoreIconManager : IconManager, CoreAwareIconManager {
return plugin.classLoader
}
else {
return plugin.contentModules.firstOrNull { it.moduleId.id == moduleId }?.classLoader
return plugin.contentModules.firstOrNull { it.moduleId.name == moduleId }?.classLoader
}
}
@@ -140,7 +140,7 @@ private class PluginDescriptionDumper(val coroutineScope: CoroutineScope) {
writeArrayFieldStart("modules")
for (module in modules) {
writeStartObject()
writeStringField("name", module.moduleId.id)
writeStringField("name", module.moduleId.name)
val isEnabled = module in PluginManagerCore.getPluginSet().getEnabledModules()
writeBooleanField("enabled", isEnabled)
if (isEnabled) {
@@ -134,7 +134,7 @@ object PluginAutoUpdater {
// checks mostly duplicate what is written in com.intellij.ide.plugins.PluginInstaller.installFromDisk. FIXME, I guess
val enabledPluginsAndModulesIds: Set<String> = currentDescriptors.getIdMap().flatMap { entry ->
val desc = entry.value
listOf(desc.pluginId.idString) + desc.pluginAliases.map { it.idString } + desc.contentModules.map { it.moduleId.id } // FIXME content module aliases are not accounted
listOf(desc.pluginId.idString) + desc.pluginAliases.map { it.idString } + desc.contentModules.map { it.moduleId.name } // FIXME content module aliases are not accounted
}.toSet()
for ((id, updateDesc) in updates) {
val existingDesc = currentDescriptors.getIdMap()[id] ?: currentDescriptors.getIncompleteIdMap()[id]
@@ -64,7 +64,7 @@ private class BundledPluginsLister : ModernApplicationStarter() {
}
for (module in plugin.contentModules) {
layout.add(LayoutItemDescriptor(
name = module.moduleId.id,
name = module.moduleId.name,
kind = if (plugin.pluginId == PluginManagerCore.CORE_ID) {
ProductInfoLayoutItemKind.productModuleV2
}
@@ -1257,7 +1257,7 @@ private fun processDependenciesOnPlugin(
val wantedIds = HashSet<String>(1 + dependencyTarget.contentModules.size)
wantedIds.add(dependencyTarget.pluginId.idString)
for (module in dependencyTarget.contentModules) {
wantedIds.add(module.moduleId.id)
wantedIds.add(module.moduleId.name)
}
// FIXME plugin aliases probably missing?
@@ -1282,7 +1282,7 @@ private fun processDependenciesOnPlugin(
}
}
for (item in module.moduleDependencies.modules) {
if (wantedIds.contains(item.id) && !processor(plugin, module)) {
if (wantedIds.contains(item.name) && !processor(plugin, module)) {
return
}
}
@@ -210,7 +210,7 @@ private fun processSearchableOptions(processor: MySearchableOptionProcessor) {
continue
}
val classifier = if (module !is ContentModuleDescriptor) "p-${module.pluginId.idString}" else "m-${module.moduleId.id}"
val classifier = if (module !is ContentModuleDescriptor) "p-${module.pluginId.idString}" else "m-${module.moduleId.name}"
val fileName = "$classifier-${SearchableOptionsRegistrar.SEARCHABLE_OPTIONS_XML_NAME}.json"
val data = classLoader.getResourceAsBytes(fileName, false)
@@ -82,7 +82,7 @@ internal class ClassLoaderConfiguratorTest {
createModuleDescriptor("com.foo.bar"),
)
sortDependenciesInPlace(modules)
assertThat(modules.map { it.moduleId.id }).containsExactly("com.foo.bar", "com.foo")
assertThat(modules.map { it.moduleId.name }).containsExactly("com.foo.bar", "com.foo")
}
@Test
@@ -35,7 +35,7 @@ internal class ContentModuleDependencyResolutionTest {
val foo = pluginSet.getEnabledModule("foo")
val bar = pluginSet.getEnabledModule("bar")
val dependency = foo.moduleDependencies.modules.single()
assertThat(dependency.id).isEqualTo("bar")
assertThat(dependency.name).isEqualTo("bar")
assertThat(dependency.namespace).isEqualTo(bar.moduleId.namespace)
}
@@ -59,7 +59,7 @@ internal class ContentModuleDependencyResolutionTest {
}
val dependency = pluginSet.getEnabledModule("foo").moduleDependencies.modules.single()
assertThat(dependency.id).isEqualTo("platform")
assertThat(dependency.name).isEqualTo("platform")
assertThat(dependency.namespace).isEqualTo(PluginModuleId.JETBRAINS_NAMESPACE)
}
@@ -84,9 +84,9 @@ internal class ContentModuleDependencyResolutionTest {
}
val foo = pluginSet.getEnabledModule("foo")
val dependency = foo.moduleDependencies.modules.single()
assertThat(dependency.id).isEqualTo("platform")
assertThat(dependency.name).isEqualTo("platform")
assertThat(dependency.namespace).isNotEqualTo(PluginModuleId.JETBRAINS_NAMESPACE)
val fooPlatform = pluginSet.getEnabledPlugin("foo").contentModules.first { it.moduleId.id == "platform" }
val fooPlatform = pluginSet.getEnabledPlugin("foo").contentModules.first { it.moduleId.name == "platform" }
assertThat(dependency.namespace).isEqualTo(fooPlatform.moduleId.namespace)
}
@@ -116,7 +116,7 @@ internal class ContentModuleDependencyResolutionTest {
}
val bar = pluginSet.getEnabledModule("bar")
val dependency = bar.moduleDependencies.modules.single()
assertThat(dependency.id).isEqualTo("foo")
assertThat(dependency.name).isEqualTo("foo")
assertThat(dependency.namespace).isEqualTo("bar_ns")
}
@@ -388,7 +388,7 @@ class PluginDescriptorTest {
assertThat(descriptor.pluginId.idString).isEqualTo("bar")
assertThat(descriptor.resourceBundleBaseName).isEqualTo("resourceBundle")
assertThat(descriptor.contentModules).hasSize(3)
assertThat(descriptor.contentModules).allMatch { it.resourceBundleBaseName == it.moduleId.id }
assertThat(descriptor.contentModules).allMatch { it.resourceBundleBaseName == it.moduleId.name }
}
@Test
@@ -471,7 +471,7 @@ class PluginDescriptorTest {
}.buildDir(pluginDirPath)
val foo = loadDescriptorInTest(pluginDirPath)
assertThat(foo).hasExactlyEnabledContentModules("foo.internal", "foo.private", "foo.public")
val contentModules = foo.contentModules.sortedBy { it.moduleId.id }
val contentModules = foo.contentModules.sortedBy { it.moduleId.name }
assertThat(contentModules[0].visibility).isEqualTo(ModuleVisibility.INTERNAL)
assertThat(contentModules[1].visibility).isEqualTo(ModuleVisibility.PRIVATE)
assertThat(contentModules[2].visibility).isEqualTo(ModuleVisibility.PUBLIC)
@@ -43,7 +43,7 @@ fun ObjectAssert<out IdeaPluginDescriptorImpl>.isNotMarkedEnabled() = apply {
}
fun ObjectAssert<out IdeaPluginDescriptorImpl>.hasExactlyEnabledContentModules(vararg ids: String) = apply {
extracting { it.contentModules.mapNotNull { it.takeIf { it.isEnabled }?.moduleId?.id } }
extracting { it.contentModules.mapNotNull { it.takeIf { it.isEnabled }?.moduleId?.name } }
.asList()
.containsExactly(*ids)
}
@@ -285,7 +285,7 @@ class PluginManagerTest {
for (descriptor in loadPluginResult.pluginSet.getEnabledModules()) {
text.append(if (descriptor.isEnabled()) "+ " else " ").append(descriptor.getPluginId().idString)
if (descriptor is ContentModuleDescriptor) {
text.append(" | ").append(descriptor.moduleId.id)
text.append(" | ").append(descriptor.moduleId.name)
}
text.append('\n')
}
@@ -1451,7 +1451,7 @@ internal fun doLoadClass(name: String, pluginDescriptor: PluginDescriptor, check
catch (e: ClassNotFoundException) {
if (checkCoreSubModules && pluginDescriptor.pluginId == PluginManagerCore.CORE_ID && pluginDescriptor is PluginMainDescriptor) {
for (module in pluginDescriptor.contentModules) {
if (module.packagePrefix == null && !module.moduleId.id.startsWith("intellij.libraries.")) {
if (module.packagePrefix == null && !module.moduleId.name.startsWith("intellij.libraries.")) {
val pluginClassLoader = module.classLoader as? PluginAwareClassLoader ?: continue
pluginClassLoader.loadClassInsideSelf(name)?.let {
assert(it.isAnnotationPresent(InternalIgnoreDependencyViolation::class.java))
@@ -258,7 +258,7 @@ class PluginBuilder() {
ModuleLoadingRule.EMBEDDED -> "loading=\"embedded\" "
ModuleLoadingRule.ON_DEMAND -> "loading=\"on-demand\" "
}
"""<module name="${moduleItem.moduleId.id}" $loadingAttribute/>"""
"""<module name="${moduleItem.moduleId.name}" $loadingAttribute/>"""
}
append("\n</content>")
}