forked from loafle/openapi-generator-original
Do not apply content-type header if no request body (#6648)
* Do not apply content-type header if no request body * Set content-type header if there are form params * Add tests * Run update script * Regenerated sample clients
This commit is contained in:
committed by
William Cheng
parent
a8642dbdfc
commit
02bcc55e23
@@ -30,6 +30,7 @@ import io.swagger.models.Model;
|
||||
import io.swagger.models.Operation;
|
||||
import io.swagger.models.Path;
|
||||
import io.swagger.models.Swagger;
|
||||
import io.swagger.models.parameters.BodyParameter;
|
||||
import io.swagger.models.parameters.FormParameter;
|
||||
import io.swagger.models.parameters.Parameter;
|
||||
import io.swagger.models.properties.ArrayProperty;
|
||||
@@ -941,13 +942,16 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
|
||||
}
|
||||
for (Operation operation : path.getOperations()) {
|
||||
boolean hasFormParameters = false;
|
||||
boolean hasBodyParameters = false;
|
||||
for (Parameter parameter : operation.getParameters()) {
|
||||
if (parameter instanceof FormParameter) {
|
||||
hasFormParameters = true;
|
||||
}
|
||||
if (parameter instanceof BodyParameter) {
|
||||
hasBodyParameters = true;
|
||||
}
|
||||
}
|
||||
//only add content-Type if its no a GET-Method
|
||||
if(path.getGet() != null || ! operation.equals(path.getGet())){
|
||||
if (hasBodyParameters || hasFormParameters){
|
||||
String defaultContentType = hasFormParameters ? "application/x-www-form-urlencoded" : "application/json";
|
||||
String contentType = operation.getConsumes() == null || operation.getConsumes().isEmpty() ? defaultContentType : operation.getConsumes().get(0);
|
||||
operation.setVendorExtension("x-contentType", contentType);
|
||||
|
||||
@@ -37,8 +37,8 @@ public interface {{classname}} extends ApiClient.Api {
|
||||
*/
|
||||
@RequestLine("{{httpMethod}} {{{path}}}{{#hasQueryParams}}?{{/hasQueryParams}}{{#queryParams}}{{baseName}}={{=<% %>=}}{<%paramName%>}<%={{ }}=%>{{#hasMore}}&{{/hasMore}}{{/queryParams}}")
|
||||
@Headers({
|
||||
"Content-Type: {{vendorExtensions.x-contentType}}",
|
||||
"Accept: {{vendorExtensions.x-accepts}}",{{#headerParams}}
|
||||
{{#vendorExtensions.x-contentType}} "Content-Type: {{vendorExtensions.x-contentType}}",
|
||||
{{/vendorExtensions.x-contentType}} "Accept: {{vendorExtensions.x-accepts}}",{{#headerParams}}
|
||||
"{{baseName}}: {{=<% %>=}}{<%paramName%>}<%={{ }}=%>"{{#hasMore}},
|
||||
{{/hasMore}}{{/headerParams}}
|
||||
})
|
||||
@@ -75,8 +75,8 @@ public interface {{classname}} extends ApiClient.Api {
|
||||
*/
|
||||
@RequestLine("{{httpMethod}} {{{path}}}?{{#queryParams}}{{baseName}}={{=<% %>=}}{<%paramName%>}<%={{ }}=%>{{#hasMore}}&{{/hasMore}}{{/queryParams}}")
|
||||
@Headers({
|
||||
"Content-Type: {{vendorExtensions.x-contentType}}",
|
||||
"Accept: {{vendorExtensions.x-accepts}}",{{#headerParams}}
|
||||
{{#vendorExtensions.x-contentType}} "Content-Type: {{vendorExtensions.x-contentType}}",
|
||||
{{/vendorExtensions.x-contentType}} "Accept: {{vendorExtensions.x-accepts}}",{{#headerParams}}
|
||||
"{{baseName}}: {{=<% %>=}}{<%paramName%>}<%={{ }}=%>"{{#hasMore}},
|
||||
{{/hasMore}}{{/headerParams}}
|
||||
})
|
||||
|
||||
@@ -5,6 +5,8 @@ import org.testng.annotations.Test;
|
||||
|
||||
import io.swagger.codegen.CodegenType;
|
||||
import io.swagger.codegen.languages.AbstractJavaCodegen;
|
||||
import io.swagger.models.*;
|
||||
import io.swagger.models.parameters.*;
|
||||
|
||||
public class AbstractJavaCodegenTest {
|
||||
|
||||
@@ -49,4 +51,50 @@ public class AbstractJavaCodegenTest {
|
||||
public void toModelNameUsesPascalCase() throws Exception {
|
||||
Assert.assertEquals("JsonAnotherclass", fakeJavaCodegen.toModelName("json_anotherclass"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void preprocessSwaggerWithFormParamsSetsContentType() {
|
||||
Path dummyPath = new Path()
|
||||
.post(new Operation().parameter(new FormParameter()))
|
||||
.get(new Operation());
|
||||
|
||||
Swagger swagger = new Swagger()
|
||||
.path("dummy", dummyPath);
|
||||
|
||||
fakeJavaCodegen.preprocessSwagger(swagger);
|
||||
|
||||
Assert.assertNull(swagger.getPath("dummy").getGet().getVendorExtensions().get("x-contentType"));
|
||||
Assert.assertEquals(swagger.getPath("dummy").getPost().getVendorExtensions().get("x-contentType"), "application/x-www-form-urlencoded");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void preprocessSwaggerWithBodyParamsSetsContentType() {
|
||||
Path dummyPath = new Path()
|
||||
.post(new Operation().parameter(new BodyParameter()))
|
||||
.get(new Operation());
|
||||
|
||||
Swagger swagger = new Swagger()
|
||||
.path("dummy", dummyPath);
|
||||
|
||||
fakeJavaCodegen.preprocessSwagger(swagger);
|
||||
|
||||
Assert.assertNull(swagger.getPath("dummy").getGet().getVendorExtensions().get("x-contentType"));
|
||||
Assert.assertEquals(swagger.getPath("dummy").getPost().getVendorExtensions().get("x-contentType"), "application/json");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void preprocessSwaggerWithNoFormOrBodyParamsDoesNotSetContentType() {
|
||||
Path dummyPath = new Path()
|
||||
.post(new Operation())
|
||||
.get(new Operation());
|
||||
|
||||
Swagger swagger = new Swagger()
|
||||
.path("dummy", dummyPath);
|
||||
|
||||
fakeJavaCodegen.preprocessSwagger(swagger);
|
||||
|
||||
Assert.assertNull(swagger.getPath("dummy").getGet().getVendorExtensions().get("x-contentType"));
|
||||
Assert.assertNull(swagger.getPath("dummy").getPost().getVendorExtensions().get("x-contentType"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user