[plugins] IJPL-202170 rename ContentModuleDescriptor.moduleName to moduleId

GitOrigin-RevId: ab62fbb76c772f2a72022f808bc16000d089a9a9
This commit is contained in:
Vadim Salavatov
2025-08-15 18:59:21 +00:00
committed by intellij-monorepo-bot
parent 6be741934a
commit 621bb0a07c
21 changed files with 57 additions and 59 deletions
@@ -264,7 +264,7 @@ internal class ModuleBasedProductLoadingStrategy(internal val moduleRepository:
.also { descriptor ->
descriptor?.contentModules?.forEach { module ->
if (module.packagePrefix == null) {
val moduleName = module.moduleName
val moduleName = module.moduleId
module.jarFiles = moduleRepository.getModule(RuntimeModuleId.module(moduleName)).resourceRootPaths
}
}
@@ -144,17 +144,17 @@ class ClassLoaderConfigurator(
}
else {
val mimicJarUrlConnection = module.vendor == PluginManagerCore.VENDOR_JETBRAINS
&& (module.moduleName == "intellij.rider.test.cases"
|| module.moduleName == "intellij.rider.plugins.efCore.test.cases"
|| module.moduleName == "intellij.rider.plugins.for.tea.test.cases"
|| module.moduleName == "intellij.rider.plugins.fsharp.test.cases"
|| module.moduleName == "intellij.rider.plugins.godot.test.cases"
|| module.moduleName == "intellij.rider.plugins.unity.test.cases"
|| module.moduleName == "intellij.rider.plugins.unreal.link.test.cases"
|| module.moduleName == "intellij.rider.test.cases.qodana"
|| module.moduleName == "intellij.rider.test.cases.supplementary"
|| module.moduleName == "intellij.rider.test.cases.consoles"
|| module.moduleName == "intellij.rider.test.cases.rdct")
&& (module.moduleId == "intellij.rider.test.cases"
|| module.moduleId == "intellij.rider.plugins.efCore.test.cases"
|| module.moduleId == "intellij.rider.plugins.for.tea.test.cases"
|| module.moduleId == "intellij.rider.plugins.fsharp.test.cases"
|| module.moduleId == "intellij.rider.plugins.godot.test.cases"
|| module.moduleId == "intellij.rider.plugins.unity.test.cases"
|| module.moduleId == "intellij.rider.plugins.unreal.link.test.cases"
|| module.moduleId == "intellij.rider.test.cases.qodana"
|| module.moduleId == "intellij.rider.test.cases.supplementary"
|| module.moduleId == "intellij.rider.test.cases.consoles"
|| module.moduleId == "intellij.rider.test.cases.rdct")
module.pluginClassLoader = PluginClassLoader(
classPath = ClassPath(customJarFiles, DEFAULT_CLASSLOADER_CONFIGURATION, resourceFileFactory, mimicJarUrlConnection),
parents = dependencies,
@@ -426,7 +426,7 @@ private fun getPackagePrefixesLoadedBySeparateClassLoaders(descriptor: PluginMai
throw PluginException("Package is not specified (module=$module)", module.pluginId)
}
}
result.add("$packagePrefix." to module.moduleName)
result.add("$packagePrefix." to module.moduleId)
}
return result
}
@@ -7,7 +7,7 @@ import org.jetbrains.annotations.ApiStatus
@get:ApiStatus.Experimental
val IdeaPluginDescriptor.contentModuleName: String?
get() = (this as? ContentModuleDescriptor)?.moduleName
get() = (this as? ContentModuleDescriptor)?.moduleId
@get:ApiStatus.Experimental
val IdeaPluginDescriptor.isRequiredContentModule: Boolean
@@ -199,7 +199,7 @@ sealed class IdeaPluginDescriptorImpl(
LOG.warnInProduction(PluginException(buildString {
append("Plugin descriptor for ")
when (this@logUnexpectedElement) {
is ContentModuleDescriptor -> append("content module '${moduleName}' of plugin '${pluginId}'")
is ContentModuleDescriptor -> append("content module '${moduleId}' of plugin '${pluginId}'")
is DependsSubDescriptor -> append("'depends' sub-descriptor '${descriptorPath}' of plugin '${pluginId}'")
is PluginMainDescriptor -> error("not intended")
}
@@ -594,7 +594,7 @@ class ContentModuleDescriptor(
moduleLoadingRule: ModuleLoadingRule,
private val descriptorPath: String
): PluginModuleDescriptor(raw) {
val moduleName: String = moduleName
val moduleId: String = moduleName
val moduleLoadingRule: ModuleLoadingRule = moduleLoadingRule
override val useCoreClassLoader: Boolean
@@ -609,10 +609,10 @@ class ContentModuleDescriptor(
override fun getResourceBundleBaseName(): String? = resourceBundleBaseName
override fun toString(): String =
"ContentModuleDescriptor(moduleName=$moduleName" +
"ContentModuleDescriptor(moduleName=$moduleId" +
(if (moduleLoadingRule == ModuleLoadingRule.OPTIONAL) "" else ", loadingRule=$moduleLoadingRule") +
(if (packagePrefix == null) "" else ", package=$packagePrefix") +
(if (descriptorPath == "$moduleName.xml") "" else ", descriptorPath=$descriptorPath") +
(if (descriptorPath == "$moduleId.xml") "" else ", descriptorPath=$descriptorPath") +
") <- $parent"
init {
@@ -41,7 +41,7 @@ internal fun createModulesWithDependenciesAndAdditionalEdges(plugins: Collection
modules.add(module)
for (subModule in module.contentModules) {
modules.add(subModule)
moduleMap.put(subModule.moduleName, subModule)
moduleMap.put(subModule.moduleId, subModule)
for (pluginAlias in subModule.pluginAliases) {
moduleMap.put(pluginAlias.idString, subModule)
}
@@ -288,7 +288,7 @@ private fun collectDirectDependenciesInNewFormat(
can be loaded or not. */
for (item in module.contentModules) {
if (item.moduleLoadingRule.required) {
val descriptor = idMap.get(item.moduleName)
val descriptor = idMap.get(item.moduleId)
if (descriptor != null) {
additionalEdges.add(descriptor)
}
@@ -488,10 +488,10 @@ object PluginManagerCore {
}.toMap()
val fullContentModuleIdMap = HashMap<String, ContentModuleDescriptor>()
for (descriptor in loadingResult.getIncompleteIdMap().values) {
descriptor.contentModules.associateByTo(fullContentModuleIdMap) { it.moduleName }
descriptor.contentModules.associateByTo(fullContentModuleIdMap) { it.moduleId }
}
for (descriptor in idMap.values) {
descriptor.contentModules.associateByTo(fullContentModuleIdMap) { it.moduleName }
descriptor.contentModules.associateByTo(fullContentModuleIdMap) { it.moduleId }
}
if (initContext.checkEssentialPlugins && !idMap.containsKey(CORE_ID)) {
@@ -579,7 +579,7 @@ object PluginManagerCore {
val pluginsToLoad = LinkedHashSet<IdeaPluginDescriptorImpl>(rootPluginsToLoad.size)
val contentModuleIdMap = HashMap<String, ContentModuleDescriptor>()
for (descriptor in descriptors) {
descriptor.contentModules.associateByTo(contentModuleIdMap) { it.moduleName }
descriptor.contentModules.associateByTo(contentModuleIdMap) { it.moduleId }
}
for (id in rootPluginsToLoad) {
val descriptor = idMap[id] ?: continue
@@ -630,7 +630,7 @@ object PluginManagerCore {
corePlugin.contentModules
.filter { it.moduleLoadingRule.required && !it.isMarkedForLoading }
if (disabledModulesOfCorePlugin.isNotEmpty()) {
throw EssentialPluginMissingException(disabledModulesOfCorePlugin.map { it.moduleName })
throw EssentialPluginMissingException(disabledModulesOfCorePlugin.map { it.moduleId })
}
}
var missing: MutableList<Pair<String, PluginNonLoadReason?>>? = null
@@ -89,11 +89,11 @@ class PluginSet internal constructor(
val enabledPluginIds = enabledPlugins.mapTo(HashSet()) { it.pluginId }
for (plugin in allPlugins) {
if (plugin.pluginId !in enabledPluginIds) {
plugin.contentModules.associateByTo(result, ContentModuleDescriptor::moduleName)
plugin.contentModules.associateByTo(result, ContentModuleDescriptor::moduleId)
}
}
for (plugin in enabledPlugins) {
plugin.contentModules.associateByTo(result, ContentModuleDescriptor::moduleName)
plugin.contentModules.associateByTo(result, ContentModuleDescriptor::moduleId)
}
return result
}
@@ -97,7 +97,7 @@ class PluginSetBuilder(@JvmField val unsortedPlugins: Set<PluginMainDescriptor>)
val enabledRequiredContentModules = HashMap<String, ContentModuleDescriptor>()
val disabledModuleToProblematicPlugin = HashMap<String, PluginId>()
for (incompletePlugin in incompletePlugins) {
incompletePlugin.contentModules.associateByTo(disabledModuleToProblematicPlugin, { it.moduleName }, { incompletePlugin.pluginId })
incompletePlugin.contentModules.associateByTo(disabledModuleToProblematicPlugin, { it.moduleId }, { incompletePlugin.pluginId })
}
val moduleIncompatibleWithCurrentMode = getModuleIncompatibleWithCurrentProductMode(currentProductModeEvaluator)
val usedPackagePrefixes = HashMap<String, IdeaPluginDescriptorImpl>()
@@ -106,15 +106,15 @@ class PluginSetBuilder(@JvmField val unsortedPlugins: Set<PluginMainDescriptor>)
fun registerLoadingError(plugin: IdeaPluginDescriptorImpl, disabledModule: ContentModuleDescriptor) {
loadingErrors.add(createCannotLoadError(
descriptor = plugin,
dependencyPluginId = disabledModuleToProblematicPlugin.get(disabledModule.moduleName) ?: PluginId.getId(disabledModule.moduleName),
dependencyPluginId = disabledModuleToProblematicPlugin.get(disabledModule.moduleId) ?: PluginId.getId(disabledModule.moduleId),
errors = emptyMap(),
isNotifyUser = !plugin.isImplementationDetail))
}
m@ for (module in sortedModulesWithDependencies.modules) {
if (module is ContentModuleDescriptor && module.moduleName == moduleIncompatibleWithCurrentMode) {
if (module is ContentModuleDescriptor && module.moduleId == moduleIncompatibleWithCurrentMode) {
module.isMarkedForLoading = false
logMessages.add("Module ${module.moduleName} is disabled because it is not compatible with the current product mode")
logMessages.add("Module ${module.moduleId} is disabled because it is not compatible with the current product mode")
continue
}
@@ -130,7 +130,7 @@ class PluginSetBuilder(@JvmField val unsortedPlugins: Set<PluginMainDescriptor>)
}
}
else if (!module.isRequiredContentModule && !enabledPluginIds.containsKey(module.pluginId)) {
disabledModuleToProblematicPlugin.put(module.moduleName, module.pluginId)
disabledModuleToProblematicPlugin.put(module.moduleId, module.pluginId)
continue
}
@@ -138,7 +138,7 @@ class PluginSetBuilder(@JvmField val unsortedPlugins: Set<PluginMainDescriptor>)
if (!enabledModuleV2Ids.containsKey(ref.name) && !enabledRequiredContentModules.containsKey(ref.name)) {
logMessages.add("Module ${module.contentModuleName ?: module.pluginId} is not enabled because dependency ${ref.name} is not available")
if (module is ContentModuleDescriptor) {
disabledModuleToProblematicPlugin.put(module.moduleName, disabledModuleToProblematicPlugin.get(ref.name) ?: PluginId.getId(ref.name))
disabledModuleToProblematicPlugin.put(module.moduleId, disabledModuleToProblematicPlugin.get(ref.name) ?: PluginId.getId(ref.name))
}
continue@m
}
@@ -147,7 +147,7 @@ class PluginSetBuilder(@JvmField val unsortedPlugins: Set<PluginMainDescriptor>)
if (!enabledPluginIds.containsKey(ref.id)) {
logMessages.add("Module ${module.contentModuleName ?: module.pluginId} is not enabled because dependency ${ref.id} is not available")
if (module is ContentModuleDescriptor) {
disabledModuleToProblematicPlugin.put(module.moduleName, ref.id)
disabledModuleToProblematicPlugin.put(module.moduleId, ref.id)
}
continue@m
}
@@ -170,10 +170,10 @@ class PluginSetBuilder(@JvmField val unsortedPlugins: Set<PluginMainDescriptor>)
is PluginMainDescriptor -> {
if (module.pluginId != PluginManagerCore.CORE_ID) {
for (contentModule in module.contentModules) {
if (contentModule.moduleLoadingRule.required && !enabledRequiredContentModules.containsKey(contentModule.moduleName)) {
if (contentModule.moduleLoadingRule.required && !enabledRequiredContentModules.containsKey(contentModule.moduleId)) {
module.isMarkedForLoading = false
if (isDisabledDueToPackagePrefixConflict.containsKey(contentModule.moduleName)) {
val alreadyRegistered = isDisabledDueToPackagePrefixConflict[contentModule.moduleName]!!
if (isDisabledDueToPackagePrefixConflict.containsKey(contentModule.moduleId)) {
val alreadyRegistered = isDisabledDueToPackagePrefixConflict[contentModule.moduleId]!!
loadingErrors.add(PluginPackagePrefixConflict(module, contentModule, alreadyRegistered))
} else {
registerLoadingError(module, contentModule)
@@ -193,18 +193,18 @@ class PluginSetBuilder(@JvmField val unsortedPlugins: Set<PluginMainDescriptor>)
if (module.pluginId != PluginManagerCore.CORE_ID) {
for (contentModule in module.contentModules) {
if (contentModule.moduleLoadingRule.required) {
val requiredContentModule = enabledRequiredContentModules.remove(contentModule.moduleName)!!
markModuleAsEnabled(contentModule.moduleName, requiredContentModule)
val requiredContentModule = enabledRequiredContentModules.remove(contentModule.moduleId)!!
markModuleAsEnabled(contentModule.moduleId, requiredContentModule)
}
}
}
}
is ContentModuleDescriptor -> {
if (module.isRequiredContentModule && module.pluginId != PluginManagerCore.CORE_ID) {
enabledRequiredContentModules.put(module.moduleName, module)
enabledRequiredContentModules.put(module.moduleId, module)
}
else {
markModuleAsEnabled(module.moduleName, module)
markModuleAsEnabled(module.moduleId, module)
}
}
}
@@ -213,7 +213,7 @@ class PluginSetBuilder(@JvmField val unsortedPlugins: Set<PluginMainDescriptor>)
val corePlugin = enabledPluginIds.get(PluginManagerCore.CORE_ID)
if (corePlugin != null) {
for (moduleItem in corePlugin.contentModules) {
if (moduleItem.moduleLoadingRule.required && !enabledModuleV2Ids.containsKey(moduleItem.moduleName)) {
if (moduleItem.moduleLoadingRule.required && !enabledModuleV2Ids.containsKey(moduleItem.moduleId)) {
moduleItem.isMarkedForLoading = false
registerLoadingError(corePlugin, moduleItem)
}
@@ -265,7 +265,7 @@ class PluginSetBuilder(@JvmField val unsortedPlugins: Set<PluginMainDescriptor>)
val java11Shim = Java11Shim.INSTANCE
fun isPluginModuleEnabled(module: PluginModuleDescriptor): Boolean {
if (module !is ContentModuleDescriptor) return module.isMarkedForLoading
return enabledModuleV2Ids[module.moduleName] === module
return enabledModuleV2Ids[module.moduleId] === module
}
return PluginSet(
@@ -256,7 +256,7 @@ class CoreIconManager : IconManager, CoreAwareIconManager {
return plugin.classLoader
}
else {
return plugin.contentModules.firstOrNull { it.moduleName == moduleId }?.classLoader
return plugin.contentModules.firstOrNull { it.moduleId == moduleId }?.classLoader
}
}
@@ -137,7 +137,7 @@ private class PluginDescriptionDumper(val coroutineScope: CoroutineScope) {
writeArrayFieldStart("modules")
for (module in modules) {
writeStartObject()
writeStringField("name", module.moduleName)
writeStringField("name", module.moduleId)
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.moduleName } // FIXME content module aliases are not accounted
listOf(desc.pluginId.idString) + desc.pluginAliases.map { it.idString } + desc.contentModules.map { it.moduleId } // 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.moduleName,
name = module.moduleId,
kind = if (plugin.pluginId == PluginManagerCore.CORE_ID) {
ProductInfoLayoutItemKind.productModuleV2
}
@@ -328,7 +328,7 @@ object DynamicPlugins {
checkUnloadActions(module)?.let { return it }
for (moduleRef in module.contentModules) {
if (pluginSet.isModuleEnabled(moduleRef.moduleName)) {
if (pluginSet.isModuleEnabled(moduleRef.moduleId)) {
checkCanUnloadWithoutRestart(module = moduleRef,
parentModule = module,
optionalDependencyPluginId = null,
@@ -999,7 +999,7 @@ object DynamicPlugins {
classLoaderConfigurator = classLoaderConfigurator,
pluginSet = pluginSet).filter { descriptorImpl ->
when (descriptorImpl) {
is ContentModuleDescriptor if !pluginSet.isModuleEnabled(descriptorImpl.moduleName) -> false
is ContentModuleDescriptor if !pluginSet.isModuleEnabled(descriptorImpl.moduleId) -> false
is PluginMainDescriptor if !pluginSet.isPluginEnabled(descriptorImpl.pluginId) -> false
else -> true
}
@@ -1251,7 +1251,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.moduleName)
wantedIds.add(module.moduleId)
}
// FIXME plugin aliases probably missing?
@@ -210,7 +210,7 @@ private fun processSearchableOptions(processor: MySearchableOptionProcessor) {
continue
}
val classifier = if (module !is ContentModuleDescriptor) "p-${module.pluginId.idString}" else "m-${module.moduleName}"
val classifier = if (module !is ContentModuleDescriptor) "p-${module.pluginId.idString}" else "m-${module.moduleId}"
val fileName = "$classifier-${SearchableOptionsRegistrar.SEARCHABLE_OPTIONS_XML_NAME}.json"
val data = classLoader.getResourceAsBytes(fileName, false)
@@ -70,7 +70,7 @@ internal class ClassLoaderConfiguratorTest {
createModuleDescriptor("com.foo.bar"),
)
sortDependenciesInPlace(modules)
assertThat(modules.map { it.moduleName }).containsExactly("com.foo.bar", "com.foo")
assertThat(modules.map { it.moduleId }).containsExactly("com.foo.bar", "com.foo")
}
@Test
@@ -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.moduleName }
assertThat(descriptor.contentModules).allMatch { it.resourceBundleBaseName == it.moduleId }
}
@Test
@@ -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 }?.moduleName } }
extracting { it.contentModules.mapNotNull { it.takeIf { it.isEnabled }?.moduleId } }
.asList()
.containsExactly(*ids)
}
@@ -276,7 +276,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.moduleName)
text.append(" | ").append(descriptor.moduleId)
}
text.append('\n')
}
@@ -9,8 +9,6 @@ import com.intellij.openapi.application.impl.ApplicationInfoImpl;
import com.intellij.openapi.client.ClientKind;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.extensions.PluginId;
import com.intellij.openapi.progress.CeProcessCanceledException;
import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.BuildNumber;
import com.intellij.openapi.util.ClearableLazyValue;
@@ -442,7 +440,7 @@ public class Invoker implements InvokerMBean {
List<ContentModuleDescriptor> modules = IdeaPluginDescriptorImplKt.getContentModules((IdeaPluginDescriptorImpl)plugin);
for (var module : modules) {
if (Objects.equals(moduleId, module.getModuleName())) {
if (Objects.equals(moduleId, module.getModuleId())) {
return requireNonNull(module.getPluginClassLoader());
}
}
@@ -1438,7 +1438,7 @@ internal fun doLoadClass(name: String, pluginDescriptor: PluginDescriptor, check
catch (e: ClassNotFoundException) {
if (checkCoreSubModules && pluginDescriptor.pluginId == PluginManagerCore.CORE_ID && pluginDescriptor is IdeaPluginDescriptorImpl) {
for (module in pluginDescriptor.contentModules) {
if (module.packagePrefix == null && !module.moduleName.startsWith("intellij.libraries.")) {
if (module.packagePrefix == null && !module.moduleId.startsWith("intellij.libraries.")) {
val pluginClassLoader = module.classLoader as? PluginAwareClassLoader ?: continue
pluginClassLoader.loadClassInsideSelf(name)?.let {
assert(it.isAnnotationPresent(InternalIgnoreDependencyViolation::class.java))
@@ -33,7 +33,7 @@ public class RunServiceInPlugin extends RunClassInPlugin {
List<ContentModuleDescriptor> modules = IdeaPluginDescriptorImplKt.getContentModules((IdeaPluginDescriptorImpl)plugin);
if (!modules.isEmpty()) {
for (var module : modules) {
if (myClazzName.contains(module.getModuleName())) {
if (myClazzName.contains(module.getModuleId())) {
loader = module.getClassLoader();
}
}