[JAVA] - fix BUG 14233 code gen support multiple accept headers, fallback is json/application (#15245)

This commit is contained in:
Breus Blaauwendraad 2024-01-12 05:39:11 +01:00 committed by GitHub
parent 62459f4a9a
commit e384201416
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 25 deletions

View File

@ -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<String> producesInfo = getProducesInfo(openAPI, operation);
private static String getAccepts(OpenAPI openAPIArg, Operation operation) {
final Set<String> producesInfo = getProducesInfo(openAPIArg, operation);
if (producesInfo != null && !producesInfo.isEmpty()) {
ArrayList<String> 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

View File

@ -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