From 8eae9cacdf7d34123d2895e022621406908d2e60 Mon Sep 17 00:00:00 2001 From: Ihar Hrachyshka Date: Mon, 22 Sep 2025 22:26:18 -0400 Subject: [PATCH] go: Fix missing imports for optional body params. Previous mustache template was using #isBodyParam outside of #operation context, so it was not effective. Even if we'd add the proper context, we'd then risk generating duplicate imports for multiple matching parameters. For this reason, this patch implements detection of an optional body parameter in code, making sure the corresponding import is added just once. Fixes #19237 --- .../java/org/openapitools/codegen/CodegenOperation.java | 9 +++++++++ .../openapitools/codegen/languages/GoServerCodegen.java | 5 +++++ .../src/main/resources/go-server/controller-api.mustache | 6 ++---- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java index d204fe4246af..9dca0e0e048e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java @@ -115,6 +115,15 @@ public boolean getHasBodyParam() { return nonEmpty(bodyParams); } + /** + * Check if there's at least one optional body parameter + * + * @return true if optional body parameter exists, false otherwise + */ + public boolean getHasOptionalBodyParam() { + return nonEmpty(bodyParams) && nonEmpty(optionalParams) && bodyParams.stream().anyMatch(optionalParams::contains); + } + /** * Check if there's at least one query parameter * diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java index 54b0292fc309..fbec59327245 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java @@ -410,6 +410,7 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List