From 79803626503313122cb1f1a0d422433cff00a905 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?SAL=C4=B0H=20=C3=96ZKARA?= Date: Tue, 16 Dec 2025 17:31:12 +0300 Subject: [PATCH] Refactor module import extraction logic Moved module import extraction into a new ExtractModuleImportsInfo method for better readability and recursion. This change improves maintainability and enables recursive processing of module imports. --- .../TelemetrySolutionInfoEnricher.cs | 47 ++++++++++++------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Providers/TelemetrySolutionInfoEnricher.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Providers/TelemetrySolutionInfoEnricher.cs index c57d51e6f2..49b4c2edbd 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Providers/TelemetrySolutionInfoEnricher.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Providers/TelemetrySolutionInfoEnricher.cs @@ -113,29 +113,42 @@ internal sealed class TelemetrySolutionInfoEnricher : TelemetryActivityEventEnri continue; } - var moduleJsonFileContent = File.ReadAllText(modulePath); - using var moduleDoc = JsonDocument.Parse(moduleJsonFileContent, new JsonDocumentOptions - { - AllowTrailingCommas = true - }); + ExtractModuleImportsInfo(modulePath, modules); + } + + context.Current[ActivityPropertyNames.InstalledModules] = modules; + } + + private static void ExtractModuleImportsInfo(string modulePath, List> modules) + { + var moduleJsonFileContent = File.ReadAllText(modulePath); + using var moduleDoc = JsonDocument.Parse(moduleJsonFileContent, new JsonDocumentOptions + { + AllowTrailingCommas = true + }); - if (!moduleDoc.RootElement.TryGetProperty("imports", out var imports)) + if (!moduleDoc.RootElement.TryGetProperty("imports", out var imports)) + { + return; + } + + foreach (var import in imports.EnumerateObject()) + { + var importPath = GetModuleFilePath(modulePath, import); + + if (!importPath.IsNullOrEmpty()) { + ExtractModuleImportsInfo(importPath, modules); continue; } - - foreach (var import in imports.EnumerateObject()) + + modules.Add(new Dictionary { - modules.Add(new Dictionary - { - { ActivityPropertyNames.ModuleName, import.Name }, - { ActivityPropertyNames.ModuleVersion, TelemetryJsonExtensions.GetStringOrNull(import.Value, "version") }, - { ActivityPropertyNames.ModuleInstallationTime, TelemetryJsonExtensions.GetDateTimeOffsetOrNull(import.Value, "creationTime") } - }); - } + { ActivityPropertyNames.ModuleName, import.Name }, + { ActivityPropertyNames.ModuleVersion, TelemetryJsonExtensions.GetStringOrNull(import.Value, "version") }, + { ActivityPropertyNames.ModuleInstallationTime, TelemetryJsonExtensions.GetDateTimeOffsetOrNull(import.Value, "creationTime") } + }); } - - context.Current[ActivityPropertyNames.InstalledModules] = modules; } private static string? GetModuleFilePath(string solutionPath, JsonProperty module)