mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[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:
committed by
intellij-monorepo-bot
parent
701daea6d3
commit
076bfd726f
+1
-1
@@ -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()
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -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
-2
@@ -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()
|
||||
|
||||
+3
-3
@@ -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.")
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -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) {
|
||||
|
||||
+1
-1
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -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)
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
+5
-5
@@ -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)
|
||||
|
||||
+1
-1
@@ -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')
|
||||
}
|
||||
|
||||
+1
-1
@@ -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>")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user