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 6777d1028da..c5aeaab124c 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 @@ -1,10 +1,18 @@ package io.swagger.codegen; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import java.util.List; + public class CodegenParameter { public Boolean isFormParam, isQueryParam, isPathParam, isHeaderParam, isCookieParam, isBodyParam, isFile, notFile, hasMore, isContainer, secondaryParam; public String baseName, paramName, dataType, collectionFormat, description, baseType, defaultValue; public String jsonSchema; + public boolean isEnum; + public List _enum; + public Map allowableValues; /** * Determines whether this parameter is mandatory. If the parameter is in "path", @@ -35,6 +43,13 @@ public class CodegenParameter { output.required = this.required; output.jsonSchema = this.jsonSchema; output.defaultValue = this.defaultValue; + output.isEnum = this.isEnum; + if (this._enum != null) { + output._enum = new ArrayList(this._enum); + } + if (this.allowableValues != null) { + output.allowableValues = new HashMap(this.allowableValues); + } return output; } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java index 71b6295c9be..fd4b780f8ff 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java @@ -36,6 +36,7 @@ import io.swagger.models.properties.LongProperty; import io.swagger.models.properties.MapProperty; import io.swagger.models.properties.Property; import io.swagger.models.properties.PropertyBuilder; +import io.swagger.models.properties.PropertyBuilder.PropertyId; import io.swagger.models.properties.RefProperty; import io.swagger.models.properties.StringProperty; import io.swagger.util.Json; @@ -964,7 +965,9 @@ public class DefaultCodegen { p.baseType = pr.datatype; imports.add(pr.baseType); } else { - property = PropertyBuilder.build(qp.getType(), qp.getFormat(), null); + Map args = new HashMap(); + args.put(PropertyId.ENUM, qp.getEnum()); + property = PropertyBuilder.build(qp.getType(), qp.getFormat(), args); } if (property == null) { LOGGER.warn("warning! Property type \"" + qp.getType() + "\" not found for parameter \"" + param.getName() + "\", using String"); @@ -972,8 +975,11 @@ public class DefaultCodegen { } property.setRequired(param.getRequired()); CodegenProperty model = fromProperty(qp.getName(), property); - p.collectionFormat = collectionFormat; p.dataType = model.datatype; + p.isEnum = model.isEnum; + p._enum = model._enum; + p.allowableValues = model.allowableValues; + p.collectionFormat = collectionFormat; p.paramName = toParamName(qp.getName()); if (model.complexType != null) { diff --git a/modules/swagger-codegen/src/main/resources/ruby/api.mustache b/modules/swagger-codegen/src/main/resources/ruby/api.mustache index 76a44659f81..612292b78ff 100644 --- a/modules/swagger-codegen/src/main/resources/ruby/api.mustache +++ b/modules/swagger-codegen/src/main/resources/ruby/api.mustache @@ -17,9 +17,15 @@ module {{moduleName}} end {{#allParams}}{{#required}} # verify the required parameter '{{paramName}}' is set - raise "Missing the required parameter '{{paramName}}' when calling {{nickname}}" if {{{paramName}}}.nil? - {{/required}}{{/allParams}} - + fail "Missing the required parameter '{{paramName}}' when calling {{nickname}}" if {{{paramName}}}.nil?{{#isEnum}} + unless [{{#allowableValues}}{{#values}}'{{{this}}}'{{^-last}}, {{/-last}}{{/values}}{{/allowableValues}}].include?({{{paramName}}}) + fail "invalid value for '{{{paramName}}}', must be one of {{#allowableValues}}{{#values}}{{{this}}}{{^-last}}, {{/-last}}{{/values}}{{/allowableValues}}" + end{{/isEnum}} + {{/required}}{{^required}}{{#isEnum}} + if opts[:'{{{paramName}}}'] && ![{{#allowableValues}}{{#values}}'{{{this}}}'{{^-last}}, {{/-last}}{{/values}}{{/allowableValues}}].include?(opts[:'{{{paramName}}}']) + fail 'invalid value for "{{{paramName}}}", must be one of {{#allowableValues}}{{#values}}{{{this}}}{{^-last}}, {{/-last}}{{/values}}{{/allowableValues}}' + end + {{/isEnum}}{{/required}}{{/allParams}} # resource path path = "{{path}}".sub('{format}','json'){{#pathParams}}.sub('{' + '{{baseName}}' + '}', {{paramName}}.to_s){{/pathParams}} diff --git a/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb b/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb index 096d964752d..0c6521289e9 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb @@ -13,7 +13,6 @@ module Petstore Swagger.logger.debug "Calling API: PetApi#update_pet ..." end - # resource path path = "/pet".sub('{format}','json') @@ -56,7 +55,6 @@ module Petstore Swagger.logger.debug "Calling API: PetApi#add_pet ..." end - # resource path path = "/pet".sub('{format}','json') @@ -99,7 +97,6 @@ module Petstore Swagger.logger.debug "Calling API: PetApi#find_pets_by_status ..." end - # resource path path = "/pet/findByStatus".sub('{format}','json') @@ -144,7 +141,6 @@ module Petstore Swagger.logger.debug "Calling API: PetApi#find_pets_by_tags ..." end - # resource path path = "/pet/findByTags".sub('{format}','json') @@ -190,9 +186,8 @@ module Petstore end # verify the required parameter 'pet_id' is set - raise "Missing the required parameter 'pet_id' when calling get_pet_by_id" if pet_id.nil? + fail "Missing the required parameter 'pet_id' when calling get_pet_by_id" if pet_id.nil? - # resource path path = "/pet/{petId}".sub('{format}','json').sub('{' + 'petId' + '}', pet_id.to_s) @@ -239,9 +234,8 @@ module Petstore end # verify the required parameter 'pet_id' is set - raise "Missing the required parameter 'pet_id' when calling update_pet_with_form" if pet_id.nil? + fail "Missing the required parameter 'pet_id' when calling update_pet_with_form" if pet_id.nil? - # resource path path = "/pet/{petId}".sub('{format}','json').sub('{' + 'petId' + '}', pet_id.to_s) @@ -288,9 +282,8 @@ module Petstore end # verify the required parameter 'pet_id' is set - raise "Missing the required parameter 'pet_id' when calling delete_pet" if pet_id.nil? + fail "Missing the required parameter 'pet_id' when calling delete_pet" if pet_id.nil? - # resource path path = "/pet/{petId}".sub('{format}','json').sub('{' + 'petId' + '}', pet_id.to_s) @@ -337,9 +330,8 @@ module Petstore end # verify the required parameter 'pet_id' is set - raise "Missing the required parameter 'pet_id' when calling upload_file" if pet_id.nil? + fail "Missing the required parameter 'pet_id' when calling upload_file" if pet_id.nil? - # resource path path = "/pet/{petId}/uploadImage".sub('{format}','json').sub('{' + 'petId' + '}', pet_id.to_s) diff --git a/samples/client/petstore/ruby/lib/petstore/api/store_api.rb b/samples/client/petstore/ruby/lib/petstore/api/store_api.rb index 456b8a2eebb..78328f4b832 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/store_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/store_api.rb @@ -12,7 +12,6 @@ module Petstore Swagger.logger.debug "Calling API: StoreApi#get_inventory ..." end - # resource path path = "/store/inventory".sub('{format}','json') @@ -56,7 +55,6 @@ module Petstore Swagger.logger.debug "Calling API: StoreApi#place_order ..." end - # resource path path = "/store/order".sub('{format}','json') @@ -101,9 +99,8 @@ module Petstore end # verify the required parameter 'order_id' is set - raise "Missing the required parameter 'order_id' when calling get_order_by_id" if order_id.nil? + fail "Missing the required parameter 'order_id' when calling get_order_by_id" if order_id.nil? - # resource path path = "/store/order/{orderId}".sub('{format}','json').sub('{' + 'orderId' + '}', order_id.to_s) @@ -148,9 +145,8 @@ module Petstore end # verify the required parameter 'order_id' is set - raise "Missing the required parameter 'order_id' when calling delete_order" if order_id.nil? + fail "Missing the required parameter 'order_id' when calling delete_order" if order_id.nil? - # resource path path = "/store/order/{orderId}".sub('{format}','json').sub('{' + 'orderId' + '}', order_id.to_s) diff --git a/samples/client/petstore/ruby/lib/petstore/api/user_api.rb b/samples/client/petstore/ruby/lib/petstore/api/user_api.rb index d5aeae31513..532a9ffa5bf 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/user_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/user_api.rb @@ -13,7 +13,6 @@ module Petstore Swagger.logger.debug "Calling API: UserApi#create_user ..." end - # resource path path = "/user".sub('{format}','json') @@ -56,7 +55,6 @@ module Petstore Swagger.logger.debug "Calling API: UserApi#create_users_with_array_input ..." end - # resource path path = "/user/createWithArray".sub('{format}','json') @@ -99,7 +97,6 @@ module Petstore Swagger.logger.debug "Calling API: UserApi#create_users_with_list_input ..." end - # resource path path = "/user/createWithList".sub('{format}','json') @@ -143,7 +140,6 @@ module Petstore Swagger.logger.debug "Calling API: UserApi#login_user ..." end - # resource path path = "/user/login".sub('{format}','json') @@ -188,7 +184,6 @@ module Petstore Swagger.logger.debug "Calling API: UserApi#logout_user ..." end - # resource path path = "/user/logout".sub('{format}','json') @@ -232,9 +227,8 @@ module Petstore end # verify the required parameter 'username' is set - raise "Missing the required parameter 'username' when calling get_user_by_name" if username.nil? + fail "Missing the required parameter 'username' when calling get_user_by_name" if username.nil? - # resource path path = "/user/{username}".sub('{format}','json').sub('{' + 'username' + '}', username.to_s) @@ -280,9 +274,8 @@ module Petstore end # verify the required parameter 'username' is set - raise "Missing the required parameter 'username' when calling update_user" if username.nil? + fail "Missing the required parameter 'username' when calling update_user" if username.nil? - # resource path path = "/user/{username}".sub('{format}','json').sub('{' + 'username' + '}', username.to_s) @@ -326,9 +319,8 @@ module Petstore end # verify the required parameter 'username' is set - raise "Missing the required parameter 'username' when calling delete_user" if username.nil? + fail "Missing the required parameter 'username' when calling delete_user" if username.nil? - # resource path path = "/user/{username}".sub('{format}','json').sub('{' + 'username' + '}', username.to_s)