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 4a8c34e374..a1b299f818 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 @@ -10,6 +10,7 @@ public class CodegenParameter { isCookieParam, isBodyParam, hasMore, isContainer, secondaryParam, isCollectionFormatMulti; public String baseName, paramName, dataType, datatypeWithEnum, collectionFormat, description, baseType, defaultValue; + public String example; // example value (x-example) public String jsonSchema; public Boolean isString, isInteger, isLong, isFloat, isDouble, isByteArray, isBinary, isBoolean, isDate, isDateTime; public Boolean isListContainer, isMapContainer; @@ -107,6 +108,7 @@ public class CodegenParameter { output.multipleOf = this.multipleOf; output.jsonSchema = this.jsonSchema; output.defaultValue = this.defaultValue; + output.example = this.example; output.isEnum = this.isEnum; if (this._enum != null) { output._enum = new ArrayList(this._enum); 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 9238a77058..47d475eba8 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 @@ -652,13 +652,22 @@ public class DefaultCodegen { } } + /** + * Return the example value of the parameter. + * + * @param p Swagger property object + * @return string presentation of the example value of the property + */ + public void setParameterExampleValue(CodegenParameter p) { + + } + /** * Return the example value of the property * * @param p Swagger property object * @return string presentation of the example value of the property */ - @SuppressWarnings("static-method") public String toExampleValue(Property p) { if(p.getExample() != null) { return p.getExample().toString(); @@ -1806,6 +1815,36 @@ public class DefaultCodegen { p.paramName = toParamName(bp.getName()); } + // set the example value + // if not specified in x-example, generate a default value + if (p.vendorExtensions.containsKey("x-example")) { + p.example = (String) p.vendorExtensions.get("x-example"); + } else if (Boolean.TRUE.equals(p.isString)) { + p.example = p.paramName + "_example"; + } else if (Boolean.TRUE.equals(p.isBoolean)) { + p.example = new String("true"); + } else if (Boolean.TRUE.equals(p.isLong)) { + p.example = new String("789"); + } else if (Boolean.TRUE.equals(p.isInteger)) { + p.example = new String("56"); + } else if (Boolean.TRUE.equals(p.isFloat)) { + p.example = new String("3.4"); + } else if (Boolean.TRUE.equals(p.isDouble)) { + p.example = new String("1.2"); + } else if (Boolean.TRUE.equals(p.isBinary)) { + p.example = new String("BINARY_DATA_HERE"); + } else if (Boolean.TRUE.equals(p.isByteArray)) { + p.example = new String("B"); + } else if (Boolean.TRUE.equals(p.isDate)) { + p.example = new String("2013-10-20"); + } else if (Boolean.TRUE.equals(p.isDateTime)) { + p.example = new String("2013-10-20T19:20:30+01:00"); + } + + // set the parameter excample value + // should be overridden by exmaple value + setParameterExampleValue(p); + postProcessParameter(p); return p; } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PerlClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PerlClientCodegen.java index 5ba366c39c..b770f84bac 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PerlClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PerlClientCodegen.java @@ -1,6 +1,7 @@ package io.swagger.codegen.languages; import io.swagger.codegen.CodegenConfig; +import io.swagger.codegen.CodegenParameter; import io.swagger.codegen.CodegenType; import io.swagger.codegen.DefaultCodegen; import io.swagger.codegen.SupportingFile; @@ -9,6 +10,17 @@ import io.swagger.codegen.CliOption; import io.swagger.models.properties.ArrayProperty; import io.swagger.models.properties.MapProperty; import io.swagger.models.properties.Property; +import io.swagger.models.properties.StringProperty; +import io.swagger.models.properties.LongProperty; +import io.swagger.models.properties.IntegerProperty; +import io.swagger.models.properties.FloatProperty; +import io.swagger.models.properties.DoubleProperty; +import io.swagger.models.properties.BooleanProperty; +import io.swagger.models.properties.BinaryProperty; +import io.swagger.models.properties.ByteArrayProperty; +import io.swagger.models.properties.DateTimeProperty; +import io.swagger.models.properties.DateProperty; + import java.io.File; import java.util.Arrays; @@ -203,6 +215,42 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig { @Override public String toDefaultValue(Property p) { + if (p instanceof StringProperty) { + StringProperty dp = (StringProperty) p; + if (dp.getDefault() != null) { + return "'" + dp.getDefault().toString() + "'"; + } + } else if (p instanceof BooleanProperty) { + BooleanProperty dp = (BooleanProperty) p; + if (dp.getDefault() != null) { + return dp.getDefault().toString(); + } + } else if (p instanceof DateProperty) { + // TODO + } else if (p instanceof DateTimeProperty) { + // TODO + } else if (p instanceof DoubleProperty) { + DoubleProperty dp = (DoubleProperty) p; + if (dp.getDefault() != null) { + return dp.getDefault().toString(); + } + } else if (p instanceof FloatProperty) { + FloatProperty dp = (FloatProperty) p; + if (dp.getDefault() != null) { + return dp.getDefault().toString(); + } + } else if (p instanceof IntegerProperty) { + IntegerProperty dp = (IntegerProperty) p; + if (dp.getDefault() != null) { + return dp.getDefault().toString(); + } + } else if (p instanceof LongProperty) { + LongProperty dp = (LongProperty) p; + if (dp.getDefault() != null) { + return dp.getDefault().toString(); + } + } + return "null"; } @@ -324,4 +372,19 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig { public void setModuleVersion(String moduleVersion) { this.moduleVersion = moduleVersion; } + + @Override + public void setParameterExampleValue(CodegenParameter p) { + if (Boolean.TRUE.equals(p.isString) || Boolean.TRUE.equals(p.isBinary) || Boolean.TRUE.equals(p.isByteArray)) { + p.example = "'" + p.example + "'"; + } else if (Boolean.TRUE.equals(p.isBoolean)) { + if (Boolean.parseBoolean(p.example)) + p.example = new String("1"); + else + p.example = new String("0"); + } else if (Boolean.TRUE.equals(p.isDateTime) || Boolean.TRUE.equals(p.isDate)) { + p.example = "DateTime->from_epoch(epoch => str2time('" + p.example + "'))"; + } + + } } diff --git a/samples/client/petstore/perl/README.md b/samples/client/petstore/perl/README.md index 70fdd1b6c7..1fa95a7c7f 100644 --- a/samples/client/petstore/perl/README.md +++ b/samples/client/petstore/perl/README.md @@ -8,7 +8,7 @@ WWW::SwaggerClient::Role - a Moose role for the Swagger Petstore Automatically generated by the Perl Swagger Codegen project: -- Build date: 2016-02-11T18:16:24.249+08:00 +- Build date: 2016-03-05T22:31:46.328+08:00 - Build package: class io.swagger.codegen.languages.PerlClientCodegen - Codegen version: diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/InlineResponse200.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/InlineResponse200.pm index 61ce10e3a2..90f7bad236 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/InlineResponse200.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/InlineResponse200.pm @@ -103,6 +103,13 @@ __PACKAGE__->class_documentation({description => '', } ); __PACKAGE__->method_documentation({ + 'tags' => { + datatype => 'ARRAY[Tag]', + base_name => 'tags', + description => '', + format => '', + read_only => '', + }, 'id' => { datatype => 'int', base_name => 'id', @@ -117,6 +124,13 @@ __PACKAGE__->method_documentation({ format => '', read_only => '', }, + 'status' => { + datatype => 'string', + base_name => 'status', + description => 'pet status in the store', + format => '', + read_only => '', + }, 'name' => { datatype => 'string', base_name => 'name', @@ -124,19 +138,32 @@ __PACKAGE__->method_documentation({ format => '', read_only => '', }, + 'photo_urls' => { + datatype => 'ARRAY[string]', + base_name => 'photoUrls', + description => '', + format => '', + read_only => '', + }, }); __PACKAGE__->swagger_types( { + 'tags' => 'ARRAY[Tag]', 'id' => 'int', 'category' => 'object', - 'name' => 'string' + 'status' => 'string', + 'name' => 'string', + 'photo_urls' => 'ARRAY[string]' } ); __PACKAGE__->attribute_map( { + 'tags' => 'tags', 'id' => 'id', 'category' => 'category', - 'name' => 'name' + 'status' => 'status', + 'name' => 'name', + 'photo_urls' => 'photoUrls' } ); __PACKAGE__->mk_accessors(keys %{__PACKAGE__->attribute_map}); diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm index 05ff51b7c2..98f45f53af 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm @@ -37,7 +37,7 @@ has version_info => ( is => 'ro', default => sub { { app_name => 'Swagger Petstore', app_version => '1.0.0', - generated_date => '2016-02-11T18:16:24.249+08:00', + generated_date => '2016-03-05T22:31:46.328+08:00', generator_class => 'class io.swagger.codegen.languages.PerlClientCodegen', } }, documentation => 'Information about the application version and the codegen codebase version' @@ -103,7 +103,7 @@ Automatically generated by the Perl Swagger Codegen project: =over 4 -=item Build date: 2016-02-11T18:16:24.249+08:00 +=item Build date: 2016-03-05T22:31:46.328+08:00 =item Build package: class io.swagger.codegen.languages.PerlClientCodegen