Browse Source

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.
pull/24434/head
SALİH ÖZKARA 6 months ago
parent
commit
7980362650
  1. 47
      framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Providers/TelemetrySolutionInfoEnricher.cs

47
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<Dictionary<string, object?>> 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<string, object?>
{
modules.Add(new Dictionary<string, object?>
{
{ 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)

Loading…
Cancel
Save