From 7f4d9874cefb29e39fe4a55e0f32c3109f3efd05 Mon Sep 17 00:00:00 2001 From: "Jeremy D. Miller" Date: Sun, 29 Mar 2026 09:12:08 -0500 Subject: [PATCH] Fix codegen for Startup.Configure pattern - upgrade JasperFx to 1.22.0 Fixes #2363 Co-Authored-By: Claude Opus 4.6 (1M context) --- Directory.Packages.props | 2 +- .../WolverineHandlers/GET_api_test.cs | 38 +++++++++++++++++ .../WolverineHandlers/POST_api_items.cs | 41 +++++++++++++++++++ src/Http/StartupStyleTarget/Program.cs | 18 ++++++++ src/Http/StartupStyleTarget/Startup.cs | 22 ++++++++++ .../StartupStyleTarget.csproj | 13 ++++++ src/Http/StartupStyleTarget/TestEndpoint.cs | 20 +++++++++ 7 files changed, 153 insertions(+), 1 deletion(-) create mode 100644 src/Http/StartupStyleTarget/Internal/Generated/WolverineHandlers/GET_api_test.cs create mode 100644 src/Http/StartupStyleTarget/Internal/Generated/WolverineHandlers/POST_api_items.cs create mode 100644 src/Http/StartupStyleTarget/Program.cs create mode 100644 src/Http/StartupStyleTarget/Startup.cs create mode 100644 src/Http/StartupStyleTarget/StartupStyleTarget.csproj create mode 100644 src/Http/StartupStyleTarget/TestEndpoint.cs diff --git a/Directory.Packages.props b/Directory.Packages.props index 3cac04452..ab2abddb2 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -21,7 +21,7 @@ - + diff --git a/src/Http/StartupStyleTarget/Internal/Generated/WolverineHandlers/GET_api_test.cs b/src/Http/StartupStyleTarget/Internal/Generated/WolverineHandlers/GET_api_test.cs new file mode 100644 index 000000000..2da4f88fb --- /dev/null +++ b/src/Http/StartupStyleTarget/Internal/Generated/WolverineHandlers/GET_api_test.cs @@ -0,0 +1,38 @@ +// +#pragma warning disable +using Microsoft.AspNetCore.Routing; +using System; +using System.Linq; +using Wolverine.Http; + +namespace Internal.Generated.WolverineHandlers +{ + // START: GET_api_test + [global::System.CodeDom.Compiler.GeneratedCode("JasperFx", "1.0.0")] + public sealed class GET_api_test : Wolverine.Http.HttpHandler + { + private readonly Wolverine.Http.WolverineHttpOptions _wolverineHttpOptions; + + public GET_api_test(Wolverine.Http.WolverineHttpOptions wolverineHttpOptions) : base(wolverineHttpOptions) + { + _wolverineHttpOptions = wolverineHttpOptions; + } + + + + public override async System.Threading.Tasks.Task Handle(Microsoft.AspNetCore.Http.HttpContext httpContext) + { + + // The actual HTTP request handler execution + var result_of_Get = StartupStyleTarget.TestEndpoint.Get(); + + await WriteString(httpContext, result_of_Get); + } + + } + + // END: GET_api_test + + +} + diff --git a/src/Http/StartupStyleTarget/Internal/Generated/WolverineHandlers/POST_api_items.cs b/src/Http/StartupStyleTarget/Internal/Generated/WolverineHandlers/POST_api_items.cs new file mode 100644 index 000000000..d62ce869f --- /dev/null +++ b/src/Http/StartupStyleTarget/Internal/Generated/WolverineHandlers/POST_api_items.cs @@ -0,0 +1,41 @@ +// +#pragma warning disable +using Microsoft.AspNetCore.Routing; +using System; +using System.Linq; +using Wolverine.Http; + +namespace Internal.Generated.WolverineHandlers +{ + // START: POST_api_items + [global::System.CodeDom.Compiler.GeneratedCode("JasperFx", "1.0.0")] + public sealed class POST_api_items : Wolverine.Http.HttpHandler + { + private readonly Wolverine.Http.WolverineHttpOptions _wolverineHttpOptions; + + public POST_api_items(Wolverine.Http.WolverineHttpOptions wolverineHttpOptions) : base(wolverineHttpOptions) + { + _wolverineHttpOptions = wolverineHttpOptions; + } + + + + public override async System.Threading.Tasks.Task Handle(Microsoft.AspNetCore.Http.HttpContext httpContext) + { + // Reading the request body via JSON deserialization + var (request, jsonContinue) = await ReadJsonAsync(httpContext); + if (jsonContinue == Wolverine.HandlerContinuation.Stop) return; + + // The actual HTTP request handler execution + var result_of_Post = StartupStyleTarget.TestEndpoint.Post(request); + + await WriteString(httpContext, result_of_Post); + } + + } + + // END: POST_api_items + + +} + diff --git a/src/Http/StartupStyleTarget/Program.cs b/src/Http/StartupStyleTarget/Program.cs new file mode 100644 index 000000000..07e800f36 --- /dev/null +++ b/src/Http/StartupStyleTarget/Program.cs @@ -0,0 +1,18 @@ +using JasperFx; +using Wolverine; + +namespace StartupStyleTarget; + +public class Program +{ + public static Task Main(string[] args) + { + return Host.CreateDefaultBuilder(args) + .UseWolverine() + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStartup(); + }) + .RunJasperFxCommands(args); + } +} diff --git a/src/Http/StartupStyleTarget/Startup.cs b/src/Http/StartupStyleTarget/Startup.cs new file mode 100644 index 000000000..cf9cf4f31 --- /dev/null +++ b/src/Http/StartupStyleTarget/Startup.cs @@ -0,0 +1,22 @@ +using Wolverine; +using Wolverine.Http; + +namespace StartupStyleTarget; + +public class Startup +{ + public void ConfigureServices(IServiceCollection services) + { + services.AddWolverineHttp(); + } + + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + app.UseRouting(); + + app.UseEndpoints(endpoints => + { + endpoints.MapWolverineEndpoints(); + }); + } +} diff --git a/src/Http/StartupStyleTarget/StartupStyleTarget.csproj b/src/Http/StartupStyleTarget/StartupStyleTarget.csproj new file mode 100644 index 000000000..a8512635e --- /dev/null +++ b/src/Http/StartupStyleTarget/StartupStyleTarget.csproj @@ -0,0 +1,13 @@ + + + + net9.0 + enable + enable + + + + + + + diff --git a/src/Http/StartupStyleTarget/TestEndpoint.cs b/src/Http/StartupStyleTarget/TestEndpoint.cs new file mode 100644 index 000000000..ce0c6c6c3 --- /dev/null +++ b/src/Http/StartupStyleTarget/TestEndpoint.cs @@ -0,0 +1,20 @@ +using Wolverine.Http; + +namespace StartupStyleTarget; + +public static class TestEndpoint +{ + [WolverineGet("/api/test")] + public static string Get() + { + return "tested"; + } + + [WolverinePost("/api/items")] + public static string Post(CreateItemRequest request) + { + return $"Created: {request.Name}"; + } +} + +public record CreateItemRequest(string Name);