Added functionality to handle optional parameters for Scala (#3683)

* 1. Modified api.mushtache to handle optional paramters for scala (#3665)
2. Updated petstore sample for scala

* Generated scala-petstore.sh (#3665)

* 1. Updated api.mustache to handle optional thing with headers and file parameters
2. Generated petstore sample for the above changes
This commit is contained in:
Jyotsna Karan 2016-09-01 15:41:23 +05:30 committed by wing328
parent 8e7d3d1a72
commit 062e6fc3ac
4 changed files with 86 additions and 57 deletions

View File

@ -31,7 +31,7 @@ class {{classname}}(val defBasePath: String = "{{basePath}}",
{{#allParams}} * @param {{paramName}} {{description}} {{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}
{{/allParams}} * @return {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}}
*/
def {{operationId}} ({{#allParams}}{{paramName}}: {{dataType}}{{#defaultValue}} /* = {{{defaultValue}}} */{{/defaultValue}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) {{#returnType}}: Option[{{returnType}}]{{/returnType}} = {
def {{operationId}}({{#allParams}}{{paramName}}: {{#required}}{{dataType}}{{#defaultValue}} /* = {{{defaultValue}}}*/{{/defaultValue}}{{/required}}{{^required}}Option[{{dataType}}]{{#defaultValue}} /* = {{{defaultValue}}}*/{{/defaultValue}}{{^defaultValue}} = None{{/defaultValue}}{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}){{#returnType}}: Option[{{returnType}}]{{/returnType}} = {
// create path and map variables
val path = "{{path}}".replaceAll("\\{format\\}","json"){{#pathParams}}.replaceAll("\\{" + "{{baseName}}" + "\\}",apiInvoker.escape({{paramName}}))
@ -53,27 +53,57 @@ class {{classname}}(val defBasePath: String = "{{basePath}}",
{{/isPrimitiveType}}
{{/required}}
{{/allParams}}
{{#queryParams}}if(String.valueOf({{paramName}}) != "null") queryParams += "{{baseName}}" -> {{paramName}}.toString
{{#queryParams}}
{{#required}}
if(String.valueOf({{paramName}}) != "null") queryParams += "{{baseName}}" -> {{paramName}}.toString
{{/required}}
{{^required}}
{{paramName}}.map(paramVal => queryParams += "{{baseName}}" -> paramVal.toString)
{{/required}}
{{/queryParams}}
{{#headerParams}}headerParams += "{{baseName}}" -> {{paramName}}
{{#headerParams}}
{{#required}}
headerParams += "{{baseName}}" -> {{paramName}}
{{/required}}
{{^required}}
{{paramName}}.map(paramVal => headerParams += "{{baseName}}" -> paramVal)
{{/required}}
{{/headerParams}}
var postBody: AnyRef = {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}}
var postBody: AnyRef = {{#bodyParam}}{{#required}}{{paramName}}{{/required}}{{^required}}{{paramName}}.map(paramVal => paramVal){{/required}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}}
if(contentType.startsWith("multipart/form-data")) {
val mp = new FormDataMultiPart()
{{#formParams}}{{#notFile}}
{{#required}}
mp.field("{{baseName}}", {{paramName}}.toString(), MediaType.MULTIPART_FORM_DATA_TYPE)
{{/required}}
{{^required}}
{{paramName}}.map(paramVal => mp.field("{{baseName}}", paramVal.toString, MediaType.MULTIPART_FORM_DATA_TYPE))
{{/required}}
{{/notFile}}{{#isFile}}
{{#required}}
mp.field("{{baseName}}", file.getName)
mp.bodyPart(new FileDataBodyPart("{{baseName}}", {{paramName}}, MediaType.MULTIPART_FORM_DATA_TYPE))
{{/required}}
{{^required}}
file.map(fileVal => mp.field("{{baseName}}", fileVal.getName))
{{paramName}}.map(paramVal => mp.bodyPart(new FileDataBodyPart("{{baseName}}", paramVal, MediaType.MULTIPART_FORM_DATA_TYPE)))
{{/required}}
{{/isFile}}{{/formParams}}
postBody = mp
}
else {
{{#formParams}}
{{#notFile}}formParams += "{{baseName}}" -> {{paramName}}.toString(){{/notFile}}
{{#notFile}}
{{#required}}
formParams += "{{baseName}}" -> {{paramName}}.toString()
{{/required}}
{{^required}}
{{paramName}}.map(paramVal => formParams += "{{baseName}}" -> paramVal.toString)
{{/required}}
{{/notFile}}
{{/formParams}}
}

View File

@ -25,8 +25,8 @@
package io.swagger.client.api
import io.swagger.client.model.Pet
import io.swagger.client.model.ApiResponse
import java.io.File
import io.swagger.client.model.ApiResponse
import io.swagger.client.ApiInvoker
import io.swagger.client.ApiException
@ -96,7 +96,7 @@ class PetApi(val defBasePath: String = "http://petstore.swagger.io/v2",
* @param apiKey (optional)
* @return void
*/
def deletePet (petId: Long, apiKey: String) = {
def deletePet(petId: Long, apiKey: Option[String] = None) = {
// create path and map variables
val path = "/pet/{petId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "petId" + "\\}",apiInvoker.escape(petId))
@ -110,7 +110,7 @@ class PetApi(val defBasePath: String = "http://petstore.swagger.io/v2",
val formParams = new HashMap[String, String]
headerParams += "api_key" -> apiKey
apiKey.map(paramVal => headerParams += "api_key" -> paramVal)
var postBody: AnyRef = null
@ -314,7 +314,7 @@ class PetApi(val defBasePath: String = "http://petstore.swagger.io/v2",
* @param status Updated status of the pet (optional)
* @return void
*/
def updatePetWithForm (petId: Long, name: String, status: String) = {
def updatePetWithForm(petId: Long, name: Option[String] = None, status: Option[String] = None) = {
// create path and map variables
val path = "/pet/{petId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "petId" + "\\}",apiInvoker.escape(petId))
@ -334,15 +334,15 @@ class PetApi(val defBasePath: String = "http://petstore.swagger.io/v2",
if(contentType.startsWith("multipart/form-data")) {
val mp = new FormDataMultiPart()
mp.field("name", name.toString(), MediaType.MULTIPART_FORM_DATA_TYPE)
name.map(paramVal => mp.field("name", paramVal.toString, MediaType.MULTIPART_FORM_DATA_TYPE))
mp.field("status", status.toString(), MediaType.MULTIPART_FORM_DATA_TYPE)
status.map(paramVal => mp.field("status", paramVal.toString, MediaType.MULTIPART_FORM_DATA_TYPE))
postBody = mp
}
else {
formParams += "name" -> name.toString()
formParams += "status" -> status.toString()
name.map(paramVal => formParams += "name" -> paramVal.toString)
status.map(paramVal => formParams += "status" -> paramVal.toString)
}
try {
@ -364,7 +364,7 @@ class PetApi(val defBasePath: String = "http://petstore.swagger.io/v2",
* @param file file to upload (optional)
* @return ApiResponse
*/
def uploadFile (petId: Long, additionalMetadata: String, file: File) : Option[ApiResponse] = {
def uploadFile(petId: Long, additionalMetadata: Option[String] = None, file: Option[File] = None): Option[ApiResponse] = {
// create path and map variables
val path = "/pet/{petId}/uploadImage".replaceAll("\\{format\\}","json").replaceAll("\\{" + "petId" + "\\}",apiInvoker.escape(petId))
@ -384,16 +384,15 @@ class PetApi(val defBasePath: String = "http://petstore.swagger.io/v2",
if(contentType.startsWith("multipart/form-data")) {
val mp = new FormDataMultiPart()
mp.field("additionalMetadata", additionalMetadata.toString(), MediaType.MULTIPART_FORM_DATA_TYPE)
additionalMetadata.map(paramVal => mp.field("additionalMetadata", paramVal.toString, MediaType.MULTIPART_FORM_DATA_TYPE))
mp.field("file", file.getName)
mp.bodyPart(new FileDataBodyPart("file", file, MediaType.MULTIPART_FORM_DATA_TYPE))
file.map(fileVal => mp.field("file", fileVal.getName))
file.map(paramVal => mp.bodyPart(new FileDataBodyPart("file", paramVal, MediaType.MULTIPART_FORM_DATA_TYPE)))
postBody = mp
}
else {
formParams += "additionalMetadata" -> additionalMetadata.toString()
additionalMetadata.map(paramVal => formParams += "additionalMetadata" -> paramVal.toString)
}
try {