From e384201416f48a79e7f640e5f00b57ecb7fff07b Mon Sep 17 00:00:00 2001 From: Breus Blaauwendraad Date: Fri, 12 Jan 2024 05:39:11 +0100 Subject: [PATCH] [JAVA] - fix BUG 14233 code gen support multiple accept headers, fallback is json/application (#15245) --- .../languages/AbstractJavaCodegen.java | 31 ++++++------------- .../codegen/java/AbstractJavaCodegenTest.java | 5 ++- 2 files changed, 11 insertions(+), 25 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java index e43242f3c7b..6c4d06cf45d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java @@ -1736,7 +1736,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code String contentType = consumes.isEmpty() ? defaultContentType : consumes.get(0); operation.addExtension("x-content-type", contentType); } - String accepts = getAccept(openAPI, operation); + String accepts = getAccepts(openAPI, operation); operation.addExtension("x-accepts", accepts); } } @@ -1787,32 +1787,19 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code } } - private static String getAccept(OpenAPI openAPI, Operation operation) { - String accepts = null; - String defaultContentType = "application/json"; - Set producesInfo = getProducesInfo(openAPI, operation); + private static String getAccepts(OpenAPI openAPIArg, Operation operation) { + final Set producesInfo = getProducesInfo(openAPIArg, operation); if (producesInfo != null && !producesInfo.isEmpty()) { - ArrayList produces = new ArrayList<>(producesInfo); StringBuilder sb = new StringBuilder(); - for (String produce : produces) { - if (defaultContentType.equalsIgnoreCase(produce)) { - accepts = defaultContentType; - break; - } else { - if (sb.length() > 0) { - sb.append(","); - } - sb.append(produce); + for (String produce : producesInfo) { + if (sb.length() > 0) { + sb.append(","); } + sb.append(produce); } - if (accepts == null) { - accepts = sb.toString(); - } - } else { - accepts = defaultContentType; + return sb.toString(); } - - return accepts; + return "application/json"; // default media type } @Override diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java index 31c97e6c65f..aeee65e8b46 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java @@ -73,14 +73,13 @@ public class AbstractJavaCodegenTest { } @Test - public void testPreprocessOpenAPI() throws Exception { + public void testPreprocessOpenApiIncludeAllMediaTypesInAcceptHeader() throws Exception { final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml"); final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); - codegen.preprocessOpenAPI(openAPI); Assert.assertEquals(codegen.getArtifactVersion(), openAPI.getInfo().getVersion()); - Assert.assertEquals(openAPI.getPaths().get("/pet").getPost().getExtensions().get("x-accepts"), "application/json"); + Assert.assertEquals(openAPI.getPaths().get("/pet").getPost().getExtensions().get("x-accepts"), "application/json,application/xml"); } @Test