From d2ea6087123c0872712d1d0e1b230f640a9540f2 Mon Sep 17 00:00:00 2001 From: Mattias Karlsson Date: Thu, 20 Nov 2025 13:09:01 +0100 Subject: [PATCH] Refactor Routes to use ImmutableArray and move caching to InitializeRoutesFromResource - Change _routes from ImmutableDictionary to ImmutableArray - Move null-coalescing cache assignment from GetRoutes() to InitializeRoutesFromResource() - Simplify JSON deserialization with throw expression --- src/Devlead.Testing.MockHttp.sln | 28 -------------------------- src/Devlead.Testing.MockHttp.slnx | 4 ++++ src/Devlead.Testing.MockHttp/Routes.cs | 12 +++-------- 3 files changed, 7 insertions(+), 37 deletions(-) delete mode 100644 src/Devlead.Testing.MockHttp.sln create mode 100644 src/Devlead.Testing.MockHttp.slnx diff --git a/src/Devlead.Testing.MockHttp.sln b/src/Devlead.Testing.MockHttp.sln deleted file mode 100644 index a7a2783..0000000 --- a/src/Devlead.Testing.MockHttp.sln +++ /dev/null @@ -1,28 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Devlead.Testing.MockHttp", "Devlead.Testing.MockHttp\Devlead.Testing.MockHttp.csproj", "{EC5F2F43-B0EA-47C2-BFC0-E89FE1EB49BD}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Devlead.Testing.MockHttp.Tests", "Devlead.Testing.MockHttp.Tests\Devlead.Testing.MockHttp.Tests.csproj", "{023C3066-0E23-49F5-B206-977FAF2E9DE3}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {EC5F2F43-B0EA-47C2-BFC0-E89FE1EB49BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EC5F2F43-B0EA-47C2-BFC0-E89FE1EB49BD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EC5F2F43-B0EA-47C2-BFC0-E89FE1EB49BD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EC5F2F43-B0EA-47C2-BFC0-E89FE1EB49BD}.Release|Any CPU.Build.0 = Release|Any CPU - {023C3066-0E23-49F5-B206-977FAF2E9DE3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {023C3066-0E23-49F5-B206-977FAF2E9DE3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {023C3066-0E23-49F5-B206-977FAF2E9DE3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {023C3066-0E23-49F5-B206-977FAF2E9DE3}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal diff --git a/src/Devlead.Testing.MockHttp.slnx b/src/Devlead.Testing.MockHttp.slnx new file mode 100644 index 0000000..22aebad --- /dev/null +++ b/src/Devlead.Testing.MockHttp.slnx @@ -0,0 +1,4 @@ + + + + diff --git a/src/Devlead.Testing.MockHttp/Routes.cs b/src/Devlead.Testing.MockHttp/Routes.cs index 14d520f..3415c4d 100644 --- a/src/Devlead.Testing.MockHttp/Routes.cs +++ b/src/Devlead.Testing.MockHttp/Routes.cs @@ -49,12 +49,7 @@ out var response return GetResponseBuilder; } - private static ImmutableDictionary<( - HttpMethod Method, - string AbsoluteUri - ), - Func - >? _routes; + private static ImmutableArray? _routes; private static ImmutableDictionary<( HttpMethod Method, @@ -62,7 +57,7 @@ string AbsoluteUri ), Func > GetRoutes() - => _routes ??= InitializeRoutesFromResource(); + => InitializeRoutesFromResource(); private static ImmutableDictionary<(HttpMethod Method, string PathAndQuery), Func> InitializeRoutesFromResource() @@ -70,8 +65,7 @@ string AbsoluteUri var routesJson = Resources.GetString("Routes.json"); ArgumentException.ThrowIfNullOrEmpty(routesJson); - var routes = System.Text.Json.JsonSerializer.Deserialize(routesJson); - ArgumentNullException.ThrowIfNull(routes); + var routes = _routes ??= ImmutableArray.Create(System.Text.Json.JsonSerializer.Deserialize(routesJson) ?? throw new ArgumentNullException(nameof(routesJson))); var enableRoute = routes .Aggregate(