diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenParameter.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenParameter.java index 43a3abce0a1..e65c6ffe841 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenParameter.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenParameter.java @@ -12,9 +12,6 @@ public class CodegenParameter { public String baseName, paramName, dataType, datatypeWithEnum, dataFormat, collectionFormat, description, unescapedDescription, baseType, defaultValue, enumName; - //This was added for javaPlayFramework specifically to get around a bug in swagger-play. See generator for more info on the bug. - public String dataTypeForImplicitParam; - public String example; // example value (x-example) public String jsonSchema; public boolean isString, isInteger, isLong, isFloat, isDouble, isByteArray, isBinary, isBoolean, isDate, isDateTime; diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaPlayFrameworkCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaPlayFrameworkCodegen.java index 67ed428add3..3577bd43fd1 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaPlayFrameworkCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaPlayFrameworkCodegen.java @@ -188,6 +188,9 @@ public class JavaPlayFrameworkCodegen extends AbstractJavaCodegen implements Bea typeMapping.put("DateTime", "OffsetDateTime"); importMapping.put("LocalDate", "java.time.LocalDate"); importMapping.put("OffsetDateTime", "java.time.OffsetDateTime"); + + importMapping.put("InputStream", "java.io.InputStream"); + typeMapping.put("file", "InputStream"); } @Override @@ -249,17 +252,15 @@ public class JavaPlayFrameworkCodegen extends AbstractJavaCodegen implements Bea List ops = (List) operations.get("operation"); for (CodegenOperation operation : ops) { - //This is to fix this bug in the swagger-play project: https://github.com/swagger-api/swagger-play/issues/131 - //We need to explicitly add the model package name in front of the dataType because if we don't, the - //implicitParam is not valid and show error when loading the documentation - //This can be removed safely after the bug has been fixed for (CodegenParameter param : operation.allParams) { - if (!param.isPathParam ) { - if (!param.isPrimitiveType && !param.isListContainer && !param.isMapContainer) { - param.dataTypeForImplicitParam = String.format("%s.%s", modelPackage, param.dataType); - } else { - param.dataTypeForImplicitParam = param.dataType; - } + if (param.isFormParam && param.isFile) { + param.dataType = "Http.MultipartFormData.FilePart"; + } + } + + for (CodegenParameter param : operation.formParams) { + if (param.isFile) { + param.dataType = "Http.MultipartFormData.FilePart"; } } diff --git a/modules/swagger-codegen/src/main/resources/JavaPlayFramework/conversionBegin.mustache b/modules/swagger-codegen/src/main/resources/JavaPlayFramework/conversionBegin.mustache index 21631412a2b..a931bc896f8 100644 --- a/modules/swagger-codegen/src/main/resources/JavaPlayFramework/conversionBegin.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaPlayFramework/conversionBegin.mustache @@ -1 +1 @@ -{{#isInteger}}Integer.parseInt({{/isInteger}}{{#isDouble}}Double.parseDouble({{/isDouble}}{{#isLong}}Long.parseLong({{/isLong}}{{#isFloat}}Float.parseFloat({{/isFloat}}{{#isString}}(String){{/isString}} \ No newline at end of file +{{#isBoolean}}Boolean.getBoolean({{/isBoolean}}{{#isInteger}}Integer.parseInt({{/isInteger}}{{#isDouble}}Double.parseDouble({{/isDouble}}{{#isLong}}Long.parseLong({{/isLong}}{{#isFloat}}Float.parseFloat({{/isFloat}}{{#isString}}(String){{/isString}} \ No newline at end of file diff --git a/modules/swagger-codegen/src/main/resources/JavaPlayFramework/conversionEnd.mustache b/modules/swagger-codegen/src/main/resources/JavaPlayFramework/conversionEnd.mustache index 2a36cdff8ab..3686f93ac6a 100644 --- a/modules/swagger-codegen/src/main/resources/JavaPlayFramework/conversionEnd.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaPlayFramework/conversionEnd.mustache @@ -1 +1 @@ -{{#isInteger}}){{/isInteger}}{{#isDouble}}){{/isDouble}}{{#isLong}}){{/isLong}}{{#isFloat}}){{/isFloat}}{{#isString}}{{/isString}} \ No newline at end of file +{{#isBoolean}}){{/isBoolean}}{{#isInteger}}){{/isInteger}}{{#isDouble}}){{/isDouble}}{{#isLong}}){{/isLong}}{{#isFloat}}){{/isFloat}}{{#isString}}{{/isString}} \ No newline at end of file diff --git a/modules/swagger-codegen/src/main/resources/JavaPlayFramework/formParams.mustache b/modules/swagger-codegen/src/main/resources/JavaPlayFramework/formParams.mustache index 866a5e96df5..cf484cd9c00 100644 --- a/modules/swagger-codegen/src/main/resources/JavaPlayFramework/formParams.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaPlayFramework/formParams.mustache @@ -1 +1 @@ -{{#isFormParam}}{{#notFile}}{{{dataType}}} {{paramName}}{{/notFile}}{{#isFile}}Http.MultipartFormData.FilePart {{paramName}}{{/isFile}}{{/isFormParam}} \ No newline at end of file +{{#isFormParam}}{{{dataType}}} {{paramName}}{{/isFormParam}} \ No newline at end of file diff --git a/modules/swagger-codegen/src/main/resources/JavaPlayFramework/newApi.mustache b/modules/swagger-codegen/src/main/resources/JavaPlayFramework/newApi.mustache index 79696c93f56..1c23543a7e7 100644 --- a/modules/swagger-codegen/src/main/resources/JavaPlayFramework/newApi.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaPlayFramework/newApi.mustache @@ -7,6 +7,7 @@ import play.mvc.Http; import java.util.List; import java.util.ArrayList; import java.util.HashMap; +import java.io.FileInputStream; {{#useBeanValidation}} import javax.validation.constraints.*; {{/useBeanValidation}} @@ -14,9 +15,10 @@ import javax.validation.constraints.*; {{#operations}} public class {{classname}}ControllerImp {{#useInterfaces}}implements {{classname}}ControllerImpInterface{{/useInterfaces}} { {{#operation}} + {{#useInterfaces}}@Override{{/useInterfaces}} public {{>returnTypes}} {{operationId}}({{#allParams}}{{>pathParams}}{{>queryParams}}{{>bodyParams}}{{>formParams}}{{>headerParams}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) {{#handleExceptions}}throws Exception{{/handleExceptions}} { //Do your magic!!! - {{#returnType}}return new {{>returnTypesNoVoidNoAbstract}}();{{/returnType}} + {{#returnType}}{{#isResponseFile}}return new FileInputStream("replace this");{{/isResponseFile}}{{^isResponseFile}}return new {{>returnTypesNoVoidNoAbstract}}();{{/isResponseFile}}{{/returnType}} } {{/operation}} diff --git a/modules/swagger-codegen/src/main/resources/JavaPlayFramework/newApiController.mustache b/modules/swagger-codegen/src/main/resources/JavaPlayFramework/newApiController.mustache index b209947327a..34e39b01982 100644 --- a/modules/swagger-codegen/src/main/resources/JavaPlayFramework/newApiController.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaPlayFramework/newApiController.mustache @@ -84,7 +84,7 @@ public class {{classname}}Controller extends Controller { {{/queryParams}} {{#formParams}} {{^notFile}} - Http.MultipartFormData.FilePart {{paramName}} = request().body().asMultipartFormData().getFile("{{baseName}}"); + {{{dataType}}} {{paramName}} = request().body().asMultipartFormData().getFile("{{baseName}}"); {{#required}}if (({{paramName}} == null || ((File) {{paramName}}.getFile()).length() == 0)) { throw new RuntimeException("File cannot be empty"); } @@ -140,8 +140,8 @@ public class {{classname}}Controller extends Controller { {{/collectionFormat}} {{/headerParams}} {{#returnType}}{{>returnTypesNoVoid}} obj = {{/returnType}}imp.{{operationId}}({{#allParams}}{{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}); - {{#returnType}}JsonNode result = mapper.valueToTree(obj); - return ok(result);{{/returnType}} + {{#returnType}}{{^isResponseFile}}JsonNode result = mapper.valueToTree(obj); + return ok(result);{{/isResponseFile}}{{#isResponseFile}}return ok(obj);{{/isResponseFile}}{{/returnType}} {{^returnType}}return ok();{{/returnType}} } {{/operation}} diff --git a/samples/server/petstore/java-play-framework/app/controllers/PetApiController.java b/samples/server/petstore/java-play-framework/app/controllers/PetApiController.java index 4676ab98cae..2d40ebc807f 100644 --- a/samples/server/petstore/java-play-framework/app/controllers/PetApiController.java +++ b/samples/server/petstore/java-play-framework/app/controllers/PetApiController.java @@ -1,6 +1,6 @@ package controllers; -import java.io.File; +import java.io.InputStream; import apimodels.Pet; import play.mvc.Controller; diff --git a/samples/server/petstore/java-play-framework/app/controllers/PetApiControllerImp.java b/samples/server/petstore/java-play-framework/app/controllers/PetApiControllerImp.java index 9433941bc3f..d01b6dab626 100644 --- a/samples/server/petstore/java-play-framework/app/controllers/PetApiControllerImp.java +++ b/samples/server/petstore/java-play-framework/app/controllers/PetApiControllerImp.java @@ -1,50 +1,59 @@ package controllers; -import java.io.File; +import java.io.InputStream; import apimodels.Pet; import play.mvc.Http; import java.util.List; import java.util.ArrayList; import java.util.HashMap; +import java.io.FileInputStream; import javax.validation.constraints.*; public class PetApiControllerImp implements PetApiControllerImpInterface { + @Override public void addPet(Pet body) throws Exception { //Do your magic!!! } + @Override public void deletePet(Long petId, String apiKey) throws Exception { //Do your magic!!! } + @Override public List findPetsByStatus( List status) throws Exception { //Do your magic!!! return new ArrayList(); } + @Override public List findPetsByTags( List tags) throws Exception { //Do your magic!!! return new ArrayList(); } + @Override public Pet getPetById(Long petId) throws Exception { //Do your magic!!! return new Pet(); } + @Override public void updatePet(Pet body) throws Exception { //Do your magic!!! } + @Override public void updatePetWithForm(String petId, String name, String status) throws Exception { //Do your magic!!! } + @Override public void uploadFile(Long petId, String additionalMetadata, Http.MultipartFormData.FilePart file) throws Exception { //Do your magic!!! diff --git a/samples/server/petstore/java-play-framework/app/controllers/PetApiControllerImpInterface.java b/samples/server/petstore/java-play-framework/app/controllers/PetApiControllerImpInterface.java index c7c65c48ecd..ae52ce3cc3d 100644 --- a/samples/server/petstore/java-play-framework/app/controllers/PetApiControllerImpInterface.java +++ b/samples/server/petstore/java-play-framework/app/controllers/PetApiControllerImpInterface.java @@ -1,6 +1,6 @@ package controllers; -import java.io.File; +import java.io.InputStream; import apimodels.Pet; import play.mvc.Http; diff --git a/samples/server/petstore/java-play-framework/app/controllers/StoreApiControllerImp.java b/samples/server/petstore/java-play-framework/app/controllers/StoreApiControllerImp.java index e276e9c592c..bf151107bcf 100644 --- a/samples/server/petstore/java-play-framework/app/controllers/StoreApiControllerImp.java +++ b/samples/server/petstore/java-play-framework/app/controllers/StoreApiControllerImp.java @@ -7,24 +7,29 @@ import play.mvc.Http; import java.util.List; import java.util.ArrayList; import java.util.HashMap; +import java.io.FileInputStream; import javax.validation.constraints.*; public class StoreApiControllerImp implements StoreApiControllerImpInterface { + @Override public void deleteOrder(String orderId) throws Exception { //Do your magic!!! } + @Override public Map getInventory() throws Exception { //Do your magic!!! return new HashMap(); } + @Override public Order getOrderById(String orderId) throws Exception { //Do your magic!!! return new Order(); } + @Override public Order placeOrder(Order body) throws Exception { //Do your magic!!! return new Order(); diff --git a/samples/server/petstore/java-play-framework/app/controllers/UserApiControllerImp.java b/samples/server/petstore/java-play-framework/app/controllers/UserApiControllerImp.java index d4cdd55295c..14ec57ee007 100644 --- a/samples/server/petstore/java-play-framework/app/controllers/UserApiControllerImp.java +++ b/samples/server/petstore/java-play-framework/app/controllers/UserApiControllerImp.java @@ -7,44 +7,53 @@ import play.mvc.Http; import java.util.List; import java.util.ArrayList; import java.util.HashMap; +import java.io.FileInputStream; import javax.validation.constraints.*; public class UserApiControllerImp implements UserApiControllerImpInterface { + @Override public void createUser(User body) throws Exception { //Do your magic!!! } + @Override public void createUsersWithArrayInput(List body) throws Exception { //Do your magic!!! } + @Override public void createUsersWithListInput(List body) throws Exception { //Do your magic!!! } + @Override public void deleteUser(String username) throws Exception { //Do your magic!!! } + @Override public User getUserByName(String username) throws Exception { //Do your magic!!! return new User(); } + @Override public String loginUser( String username, String password) throws Exception { //Do your magic!!! return new String(); } + @Override public void logoutUser() throws Exception { //Do your magic!!! } + @Override public void updateUser(String username, User body) throws Exception { //Do your magic!!!