diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/FinchServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/FinchServerCodegen.java index f807325c144..612c0b7a68d 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/FinchServerCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/FinchServerCodegen.java @@ -248,17 +248,30 @@ public Map postProcessOperations(Map objs) { for (CodegenParameter p : op.allParams) { // TODO: This hacky, should be converted to mappings if possible to keep it clean. // This could also be done using template imports - if(Boolean.TRUE.equals(p.isPrimitiveType)) { + if(p.isPathParam && p.isPrimitiveType) { p.vendorExtensions.put("x-codegen-normalized-path-type", p.dataType.toLowerCase()); p.vendorExtensions.put("x-codegen-normalized-input-type", p.dataType); - } else if(Boolean.TRUE.equals(p.isBodyParam)) { + } else if(p.isHeaderParam) { + if(p.required) { + p.vendorExtensions.put("x-codegen-normalized-path-type", "header(\"" + p.baseName + "\")"); + p.vendorExtensions.put("x-codegen-normalized-input-type", p.dataType); + } else { + p.vendorExtensions.put("x-codegen-normalized-path-type", "headerOption(\"" + p.baseName + "\")"); + p.vendorExtensions.put("x-codegen-normalized-input-type", "Option["+ p.dataType + "]"); + } + } else if(p.isQueryParam) { + if(p.isContainer || p.isListContainer) { + p.vendorExtensions.put("x-codegen-normalized-path-type", "params(\"" + p.baseName + "\")"); + p.vendorExtensions.put("x-codegen-normalized-input-type", p.dataType.replaceAll("^[^\\[]+", "Seq")); + } else { + p.vendorExtensions.put("x-codegen-normalized-path-type", "param(\"" + p.baseName + "\")"); + p.vendorExtensions.put("x-codegen-normalized-input-type", p.dataType); + } + } else if(p.isBodyParam) { p.vendorExtensions.put("x-codegen-normalized-path-type", "jsonBody["+ p.dataType + "]"); p.vendorExtensions.put("x-codegen-normalized-input-type", p.dataType); - } else if(Boolean.TRUE.equals(p.isContainer) || Boolean.TRUE.equals(p.isListContainer)) { - p.vendorExtensions.put("x-codegen-normalized-path-type", "params(\""+ p.paramName + "\")"); - p.vendorExtensions.put("x-codegen-normalized-input-type", p.dataType.replaceAll("^[^\\[]+", "Seq")); - } else if(Boolean.TRUE.equals(p.isFile)) { - p.vendorExtensions.put("x-codegen-normalized-path-type", "fileUpload(\""+ p.paramName + "\")"); + } else if(p.isFile) { + p.vendorExtensions.put("x-codegen-normalized-path-type", "fileUpload(\""+ p.baseName + "\")"); p.vendorExtensions.put("x-codegen-normalized-input-type", "FileUpload"); } else { p.vendorExtensions.put("x-codegen-normalized-path-type", p.dataType); diff --git a/samples/server/petstore/finch/.swagger-codegen/VERSION b/samples/server/petstore/finch/.swagger-codegen/VERSION index 7fea99011a6..f9f7450d135 100644 --- a/samples/server/petstore/finch/.swagger-codegen/VERSION +++ b/samples/server/petstore/finch/.swagger-codegen/VERSION @@ -1 +1 @@ -2.2.3-SNAPSHOT \ No newline at end of file +2.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/finch/src/main/scala/io/swagger/apis/PetApi.scala b/samples/server/petstore/finch/src/main/scala/io/swagger/apis/PetApi.scala index 74a01c56f51..be9bc36a557 100644 --- a/samples/server/petstore/finch/src/main/scala/io/swagger/apis/PetApi.scala +++ b/samples/server/petstore/finch/src/main/scala/io/swagger/apis/PetApi.scala @@ -51,7 +51,7 @@ object PetApi { * @return And endpoint representing a Unit */ private def deletePet(da: DataAccessor): Endpoint[Unit] = - delete("pet" :: long :: string) { (petId: Long, apiKey: String) => + delete("pet" :: long :: headerOption("api_key")) { (petId: Long, apiKey: Option[String]) => da.Pet_deletePet(petId, apiKey) NoContent[Unit] } handle { @@ -108,7 +108,7 @@ object PetApi { * @return And endpoint representing a Unit */ private def updatePetWithForm(da: DataAccessor): Endpoint[Unit] = - post("pet" :: long :: string :: string) { (petId: Long, name: String, status: String) => + post("pet" :: long :: String :: String) { (petId: Long, name: String, status: String) => da.Pet_updatePetWithForm(petId, name, status) NoContent[Unit] } handle { @@ -120,7 +120,7 @@ object PetApi { * @return And endpoint representing a ApiResponse */ private def uploadFile(da: DataAccessor): Endpoint[ApiResponse] = - post("pet" :: long :: "uploadImage" :: string :: fileUpload("file")) { (petId: Long, additionalMetadata: String, file: FileUpload) => + post("pet" :: long :: "uploadImage" :: String :: fileUpload("file")) { (petId: Long, additionalMetadata: String, file: FileUpload) => Ok(da.Pet_uploadFile(petId, additionalMetadata, file)) } handle { case e: Exception => BadRequest(e) diff --git a/samples/server/petstore/finch/src/main/scala/io/swagger/apis/UserApi.scala b/samples/server/petstore/finch/src/main/scala/io/swagger/apis/UserApi.scala index dfb49b4291a..bf1579835aa 100644 --- a/samples/server/petstore/finch/src/main/scala/io/swagger/apis/UserApi.scala +++ b/samples/server/petstore/finch/src/main/scala/io/swagger/apis/UserApi.scala @@ -97,7 +97,7 @@ object UserApi { * @return And endpoint representing a String */ private def loginUser(da: DataAccessor): Endpoint[String] = - get("user" :: "login" :: string :: string) { (username: String, password: String) => + get("user" :: "login" :: param("username") :: param("password")) { (username: String, password: String) => Ok(da.User_loginUser(username, password)) } handle { case e: Exception => BadRequest(e)