From 7360d9e2666b220260b17467ea81ee2360cf8bf4 Mon Sep 17 00:00:00 2001 From: Nikolay Chashnikov Date: Mon, 10 Jun 2024 17:35:46 +0200 Subject: [PATCH] [modular loader] diagnostics: provide more information in the exception message if plugin.xml cannot be found GitOrigin-RevId: c9e5962ee5374fe4494d788ebe20ffa21f2cad8f --- .../build/impl/moduleBased/OriginalModuleRepositoryImpl.kt | 4 ++++ .../runtime/product/src/serialization/RawProductModules.kt | 6 +++++- .../product/src/serialization/impl/PluginXmlReader.java | 3 ++- tools/devLauncher/src/IntellijDevLauncher.kt | 4 ++++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/moduleBased/OriginalModuleRepositoryImpl.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/moduleBased/OriginalModuleRepositoryImpl.kt index 5aa634fd0a43..b33eb460aef2 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/moduleBased/OriginalModuleRepositoryImpl.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/moduleBased/OriginalModuleRepositoryImpl.kt @@ -49,6 +49,10 @@ class OriginalModuleRepositoryImpl(private val context: CompilationContext) : Or override fun readResourceFile(moduleId: RuntimeModuleId, relativePath: String): InputStream? { return context.findFileInModuleSources(context.findRequiredModule(moduleId.stringId), relativePath)?.inputStream() } + + override fun toString(): String { + return "source file based resolver for '${context.paths.projectHome}' project" + } } return ProductModulesSerialization.readProductModulesAndMergeIncluded(productModulesFile.inputStream(), productModulesFile.pathString, resolver) diff --git a/platform/runtime/product/src/serialization/RawProductModules.kt b/platform/runtime/product/src/serialization/RawProductModules.kt index e2314aa459bd..e6bbbe07d1a3 100644 --- a/platform/runtime/product/src/serialization/RawProductModules.kt +++ b/platform/runtime/product/src/serialization/RawProductModules.kt @@ -33,7 +33,11 @@ interface ResourceFileResolver { return object : ResourceFileResolver { override fun readResourceFile(moduleId: RuntimeModuleId, relativePath: String): InputStream? { return moduleRepository.getModule(moduleId).readFile(relativePath) - } + } + + override fun toString(): String { + return "default resolver" + } } } } diff --git a/platform/runtime/product/src/serialization/impl/PluginXmlReader.java b/platform/runtime/product/src/serialization/impl/PluginXmlReader.java index 238f1ceb8652..be99e00d83dc 100644 --- a/platform/runtime/product/src/serialization/impl/PluginXmlReader.java +++ b/platform/runtime/product/src/serialization/impl/PluginXmlReader.java @@ -29,7 +29,8 @@ public final class PluginXmlReader { addedModules.add(mainModule.getModuleId().getStringId()); try (InputStream inputStream = resourceFileResolver.readResourceFile(mainModule.getModuleId(), PLUGIN_XML_PATH)) { if (inputStream == null) { - throw new MalformedRepositoryException(PLUGIN_XML_PATH + " is not found in '" + mainModule.getModuleId().getStringId() + "' module in " + repository); + throw new MalformedRepositoryException(PLUGIN_XML_PATH + " is not found in '" + mainModule.getModuleId().getStringId() + "' module in " + + repository + " using " + resourceFileResolver + "; resources roots: " + mainModule.getResourceRootPaths()); } XMLStreamReader reader = XMLInputFactory.newDefaultFactory().createXMLStreamReader(inputStream); int level = 0; diff --git a/tools/devLauncher/src/IntellijDevLauncher.kt b/tools/devLauncher/src/IntellijDevLauncher.kt index 3e7a2e5a42b8..493ea65e478b 100644 --- a/tools/devLauncher/src/IntellijDevLauncher.kt +++ b/tools/devLauncher/src/IntellijDevLauncher.kt @@ -67,6 +67,10 @@ private fun loadProductModules(moduleRepository: RuntimeModuleRepository, projec override fun readResourceFile(moduleId: RuntimeModuleId, relativePath: String): InputStream? { return resourceFileFinder.findResourceFile(moduleId.stringId, relativePath)?.inputStream() } + + override fun toString(): String { + return "source file based resolver for '$projectHome' project" + } } val productModulesPath = "META-INF/$rootModuleName/product-modules.xml" val productModulesXmlStream = resourceFileResolver.readResourceFile(RuntimeModuleId.module(rootModuleName), productModulesPath)