diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractJavaCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractJavaCodegen.java index 7c0dd01be58..4b51baeac63 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractJavaCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractJavaCodegen.java @@ -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); diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/feign/api.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/feign/api.mustache index 4ee1d743969..03eb7dd40cb 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/feign/api.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/feign/api.mustache @@ -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}} }) diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/AbstractJavaCodegenTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/AbstractJavaCodegenTest.java index f3f1703abef..8147923d87c 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/AbstractJavaCodegenTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/AbstractJavaCodegenTest.java @@ -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")); + } + } diff --git a/samples/client/petstore/java/feign/src/main/java/io/swagger/client/api/PetApi.java b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/api/PetApi.java index 5a6813c6198..70fbb3b6710 100644 --- a/samples/client/petstore/java/feign/src/main/java/io/swagger/client/api/PetApi.java +++ b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/api/PetApi.java @@ -37,7 +37,6 @@ public interface PetApi extends ApiClient.Api { */ @RequestLine("DELETE /pet/{petId}") @Headers({ - "Content-Type: application/json", "Accept: application/json", "api_key: {apiKey}" }) @@ -51,7 +50,6 @@ public interface PetApi extends ApiClient.Api { */ @RequestLine("GET /pet/findByStatus?status={status}") @Headers({ - "Content-Type: application/json", "Accept: application/json", }) List findPetsByStatus(@Param("status") List status); @@ -73,7 +71,6 @@ public interface PetApi extends ApiClient.Api { */ @RequestLine("GET /pet/findByStatus?status={status}") @Headers({ - "Content-Type: application/json", "Accept: application/json", }) List findPetsByStatus(@QueryMap(encoded=true) Map queryParams); @@ -97,7 +94,6 @@ public interface PetApi extends ApiClient.Api { */ @RequestLine("GET /pet/findByTags?tags={tags}") @Headers({ - "Content-Type: application/json", "Accept: application/json", }) List findPetsByTags(@Param("tags") List tags); @@ -119,7 +115,6 @@ public interface PetApi extends ApiClient.Api { */ @RequestLine("GET /pet/findByTags?tags={tags}") @Headers({ - "Content-Type: application/json", "Accept: application/json", }) List findPetsByTags(@QueryMap(encoded=true) Map queryParams); @@ -143,7 +138,6 @@ public interface PetApi extends ApiClient.Api { */ @RequestLine("GET /pet/{petId}") @Headers({ - "Content-Type: application/json", "Accept: application/json", }) Pet getPetById(@Param("petId") Long petId); diff --git a/samples/client/petstore/java/feign/src/main/java/io/swagger/client/api/StoreApi.java b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/api/StoreApi.java index 1ad8111d3d6..42aaf047b73 100644 --- a/samples/client/petstore/java/feign/src/main/java/io/swagger/client/api/StoreApi.java +++ b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/api/StoreApi.java @@ -22,7 +22,6 @@ public interface StoreApi extends ApiClient.Api { */ @RequestLine("DELETE /store/order/{orderId}") @Headers({ - "Content-Type: application/json", "Accept: application/json", }) void deleteOrder(@Param("orderId") String orderId); @@ -34,7 +33,6 @@ public interface StoreApi extends ApiClient.Api { */ @RequestLine("GET /store/inventory") @Headers({ - "Content-Type: application/json", "Accept: application/json", }) Map getInventory(); @@ -47,7 +45,6 @@ public interface StoreApi extends ApiClient.Api { */ @RequestLine("GET /store/order/{orderId}") @Headers({ - "Content-Type: application/json", "Accept: application/json", }) Order getOrderById(@Param("orderId") Long orderId); diff --git a/samples/client/petstore/java/feign/src/main/java/io/swagger/client/api/UserApi.java b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/api/UserApi.java index e85fca41f8b..3a6c3288195 100644 --- a/samples/client/petstore/java/feign/src/main/java/io/swagger/client/api/UserApi.java +++ b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/api/UserApi.java @@ -58,7 +58,6 @@ public interface UserApi extends ApiClient.Api { */ @RequestLine("DELETE /user/{username}") @Headers({ - "Content-Type: application/json", "Accept: application/json", }) void deleteUser(@Param("username") String username); @@ -71,7 +70,6 @@ public interface UserApi extends ApiClient.Api { */ @RequestLine("GET /user/{username}") @Headers({ - "Content-Type: application/json", "Accept: application/json", }) User getUserByName(@Param("username") String username); @@ -85,7 +83,6 @@ public interface UserApi extends ApiClient.Api { */ @RequestLine("GET /user/login?username={username}&password={password}") @Headers({ - "Content-Type: application/json", "Accept: application/json", }) String loginUser(@Param("username") String username, @Param("password") String password); @@ -108,7 +105,6 @@ public interface UserApi extends ApiClient.Api { */ @RequestLine("GET /user/login?username={username}&password={password}") @Headers({ - "Content-Type: application/json", "Accept: application/json", }) String loginUser(@QueryMap(encoded=true) Map queryParams); @@ -134,7 +130,6 @@ public interface UserApi extends ApiClient.Api { */ @RequestLine("GET /user/logout") @Headers({ - "Content-Type: application/json", "Accept: application/json", }) void logoutUser(); diff --git a/samples/client/petstore/java/retrofit2rx/pom.xml b/samples/client/petstore/java/retrofit2rx/pom.xml index 38cc4913cd2..8aa3f769c9f 100644 --- a/samples/client/petstore/java/retrofit2rx/pom.xml +++ b/samples/client/petstore/java/retrofit2rx/pom.xml @@ -235,7 +235,6 @@ - junit diff --git a/samples/client/petstore/java/retrofit2rx2/pom.xml b/samples/client/petstore/java/retrofit2rx2/pom.xml index 2c9352e5647..b2bc735d148 100644 --- a/samples/client/petstore/java/retrofit2rx2/pom.xml +++ b/samples/client/petstore/java/retrofit2rx2/pom.xml @@ -235,7 +235,6 @@ - junit