From f4773d3333c2631645a553d3e3e7136ebd70abb3 Mon Sep 17 00:00:00 2001 From: Justus Thorvaldsson Date: Fri, 20 Nov 2015 14:33:22 +0100 Subject: [PATCH 01/18] Added json enum to csharp with decoration using newtonsoft decoration --- .../languages/CSharpClientCodegen.java | 152 ++++++++++++++++-- .../main/resources/csharp/enumClass.mustache | 6 + .../src/main/resources/csharp/model.mustache | 16 ++ .../csharp/IO/Swagger/Client/ApiClient.cs | 8 +- .../main/csharp/IO/Swagger/Model/Category.cs | 20 +++ .../src/main/csharp/IO/Swagger/Model/Order.cs | 69 ++++++++ .../src/main/csharp/IO/Swagger/Model/Pet.cs | 69 ++++++++ .../src/main/csharp/IO/Swagger/Model/Tag.cs | 20 +++ .../src/main/csharp/IO/Swagger/Model/User.cs | 75 +++++++++ .../java/io/swagger/client/ApiClient.java | 2 +- .../java/io/swagger/client/ApiException.java | 2 +- .../java/io/swagger/client/Configuration.java | 2 +- .../src/main/java/io/swagger/client/JSON.java | 2 +- .../src/main/java/io/swagger/client/Pair.java | 2 +- .../java/io/swagger/client/StringUtil.java | 2 +- .../main/java/io/swagger/client/TypeRef.java | 2 +- .../java/io/swagger/client/api/PetApi.java | 2 +- .../java/io/swagger/client/api/StoreApi.java | 2 +- .../java/io/swagger/client/api/UserApi.java | 2 +- .../io/swagger/client/auth/ApiKeyAuth.java | 2 +- .../swagger/client/auth/Authentication.java | 2 +- .../io/swagger/client/auth/HttpBasicAuth.java | 2 +- .../java/io/swagger/client/auth/OAuth.java | 2 +- .../io/swagger/client/model/Category.java | 2 +- .../java/io/swagger/client/model/Order.java | 2 +- .../java/io/swagger/client/model/Pet.java | 4 +- .../java/io/swagger/client/model/Tag.java | 2 +- .../java/io/swagger/client/model/User.java | 2 +- 28 files changed, 440 insertions(+), 35 deletions(-) create mode 100644 modules/swagger-codegen/src/main/resources/csharp/enumClass.mustache diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java index 3ab152cf66d6..ad25eb62a739 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java @@ -3,6 +3,7 @@ package io.swagger.codegen.languages; import io.swagger.codegen.CodegenConfig; import io.swagger.codegen.CodegenConstants; import io.swagger.codegen.CodegenType; +import io.swagger.codegen.CodegenModel; import io.swagger.codegen.DefaultCodegen; import io.swagger.codegen.SupportingFile; import io.swagger.codegen.CodegenProperty; @@ -11,6 +12,7 @@ import io.swagger.models.properties.ArrayProperty; import io.swagger.models.properties.MapProperty; import io.swagger.models.properties.Property; import io.swagger.codegen.CliOption; +import io.swagger.models.Model; import java.io.File; import java.util.Arrays; @@ -18,8 +20,11 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.ArrayList; +import java.util.Iterator; import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.WordUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -29,6 +34,7 @@ public class CSharpClientCodegen extends DefaultCodegen implements CodegenConfig protected String packageVersion = "1.0.0"; protected String clientPackage = "IO.Swagger.Client"; protected String sourceFolder = "src" + File.separator + "main" + File.separator + "csharp"; + protected String localVariablePrefix = ""; public CSharpClientCodegen() { super(); @@ -261,12 +267,17 @@ public class CSharpClientCodegen extends DefaultCodegen implements CodegenConfig return camelize(sanitizeName(operationId)); } - public void setPackageName(String packageName) { - this.packageName = packageName; - } + @Override + public CodegenModel fromModel(String name, Model model, Map allDefinitions) { + CodegenModel codegenModel = super.fromModel(name, model, allDefinitions); - public void setPackageVersion(String packageVersion) { - this.packageVersion = packageVersion; + if (allDefinitions != null && codegenModel != null && codegenModel.parent != null && codegenModel.hasEnums) { + final Model parentModel = allDefinitions.get(toModelName(codegenModel.parent)); + final CodegenModel parentCodegenModel = super.fromModel(codegenModel.parent, parentModel); + codegenModel = this.reconcileInlineEnums(codegenModel, parentCodegenModel); + } + + return codegenModel; } @Override @@ -276,14 +287,133 @@ public class CSharpClientCodegen extends DefaultCodegen implements CodegenConfig Map mo = (Map) _mo; CodegenModel cm = (CodegenModel) mo.get("model"); for (CodegenProperty var : cm.vars) { - // check to see if model name is same as the property name - // which will result in compilation error - // if found, prepend with _ to workaround the limitation - if (var.name.equals(cm.name)) { - var.name = "_" + var.name; - } + Map allowableValues = var.allowableValues; + + // handle ArrayProperty + if (var.items != null) { + allowableValues = var.items.allowableValues; + } + + if (allowableValues == null) { + continue; + } + List values = (List) allowableValues.get("values"); + if (values == null) { + continue; + } + + // put "enumVars" map into `allowableValues", including `name` and `value` + List> enumVars = new ArrayList>(); + String commonPrefix = findCommonPrefixOfVars(values); + int truncateIdx = commonPrefix.length(); + for (String value : values) { + Map enumVar = new HashMap(); + String enumName; + if (truncateIdx == 0) { + enumName = value; + } else { + enumName = value.substring(truncateIdx); + if ("".equals(enumName)) { + enumName = value; + } + } + enumVar.put("name", toEnumVarName(enumName)); + enumVar.put("jsonname", value); + enumVar.put("value", value); + enumVars.add(enumVar); + } + allowableValues.put("enumVars", enumVars); + // handle default value for enum, e.g. available => StatusEnum.AVAILABLE + if (var.defaultValue != null) { + String enumName = null; + for (Map enumVar : enumVars) { + if (var.defaultValue.equals(enumVar.get("value"))) { + enumName = enumVar.get("name"); + break; + } + } + if (enumName != null) { + var.defaultValue = var.datatypeWithEnum + "." + enumName; + } + } } } return objs; } + + private CodegenModel reconcileInlineEnums(CodegenModel codegenModel, CodegenModel parentCodegenModel) { + // This generator uses inline classes to define enums, which breaks when + // dealing with models that have subTypes. To clean this up, we will analyze + // the parent and child models, look for enums that match, and remove + // them from the child models and leave them in the parent. + // Because the child models extend the parents, the enums will be available via the parent. + + // Only bother with reconciliation if the parent model has enums. + if (parentCodegenModel.hasEnums) { + + // Get the properties for the parent and child models + final List parentModelCodegenProperties = parentCodegenModel.vars; + List codegenProperties = codegenModel.vars; + + // Iterate over all of the parent model properties + boolean removedChildEnum = false; + for (CodegenProperty parentModelCodegenPropery : parentModelCodegenProperties) { + // Look for enums + if (parentModelCodegenPropery.isEnum) { + // Now that we have found an enum in the parent class, + // and search the child class for the same enum. + Iterator iterator = codegenProperties.iterator(); + while (iterator.hasNext()) { + CodegenProperty codegenProperty = iterator.next(); + if (codegenProperty.isEnum && codegenProperty.equals(parentModelCodegenPropery)) { + // We found an enum in the child class that is + // a duplicate of the one in the parent, so remove it. + iterator.remove(); + removedChildEnum = true; + } + } + } + } + + if(removedChildEnum) { + // If we removed an entry from this model's vars, we need to ensure hasMore is updated + int count = 0, numVars = codegenProperties.size(); + for(CodegenProperty codegenProperty : codegenProperties) { + count += 1; + codegenProperty.hasMore = (count < numVars) ? true : null; + } + codegenModel.vars = codegenProperties; + } + } + + return codegenModel; + } + + private String findCommonPrefixOfVars(List vars) { + String prefix = StringUtils.getCommonPrefix(vars.toArray(new String[vars.size()])); + // exclude trailing characters that should be part of a valid variable + // e.g. ["status-on", "status-off"] => "status-" (not "status-o") + return prefix.replaceAll("[a-zA-Z0-9]+\\z", ""); + } + + private String toEnumVarName(String value) { + String var = value.replaceAll("_", " "); + var = WordUtils.capitalizeFully(var); + var = var.replaceAll("\\W+", ""); + + if (var.matches("\\d.*")) { + return "_" + var; + } else { + return var; + } + } + + + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + public void setPackageVersion(String packageVersion) { + this.packageVersion = packageVersion; + } } diff --git a/modules/swagger-codegen/src/main/resources/csharp/enumClass.mustache b/modules/swagger-codegen/src/main/resources/csharp/enumClass.mustache new file mode 100644 index 000000000000..1a3291eeebdb --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/csharp/enumClass.mustache @@ -0,0 +1,6 @@ +public enum {{name}} { + {{#allowableValues}}{{#enumVars}} + [EnumMember("{{jsonname}}")] + {{name}}{{^-last}}, + {{/-last}}{{#-last}}{{/-last}}{{/enumVars}}{{/allowableValues}} + } \ No newline at end of file diff --git a/modules/swagger-codegen/src/main/resources/csharp/model.mustache b/modules/swagger-codegen/src/main/resources/csharp/model.mustache index d40ece4cc020..7a4eb550adbf 100644 --- a/modules/swagger-codegen/src/main/resources/csharp/model.mustache +++ b/modules/swagger-codegen/src/main/resources/csharp/model.mustache @@ -15,6 +15,22 @@ namespace {{packageName}}.Model { /// [DataContract] public class {{classname}}{{#parent}} : {{{parent}}}{{/parent}} { + {{#vars}}{{#isEnum}} + [JsonConverter(typeof(StringEnumConverter))] + {{>enumClass}}{{/isEnum}}{{#items.isEnum}}{{#items}} + + {{>enumClass}}{{/items}}{{/items.isEnum}} + + private {{{name}}} {{name}}; + + /// + /// {{^description}}Gets or Sets {{{name}}}{{/description}}{{#description}}{{{description}}}{{/description}} + /// {{#description}} + /// {{{description}}}{{/description}} + [DataMember(Name="{{baseName}}", EmitDefaultValue=false)] + public {{{name}}} {{name}} { get; set; } + {{/vars}} + {{#vars}} /// /// {{^description}}Gets or Sets {{{name}}}{{/description}}{{#description}}{{{description}}}{{/description}} diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/ApiClient.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/ApiClient.cs index 36217fde02da..67f66d3487ca 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/ApiClient.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/ApiClient.cs @@ -317,14 +317,14 @@ namespace IO.Swagger.Client switch(auth) { - case "api_key": - headerParams["api_key"] = GetApiKeyWithPrefix("api_key"); - break; - case "petstore_auth": headerParams["Authorization"] = "Bearer " + Configuration.AccessToken; break; + case "api_key": + headerParams["api_key"] = GetApiKeyWithPrefix("api_key"); + break; + default: //TODO show warning about security definition not found break; diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs index 56ebfdb3b7b6..0a952d64b20d 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs @@ -14,6 +14,26 @@ namespace IO.Swagger.Model { [DataContract] public class Category { + + private Id Id; + + /// + /// Gets or Sets Id + /// + [DataMember(Name="id", EmitDefaultValue=false)] + public Id Id { get; set; } + + + private Name Name; + + /// + /// Gets or Sets Name + /// + [DataMember(Name="name", EmitDefaultValue=false)] + public Name Name { get; set; } + + + /// /// Gets or Sets Id /// diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs index 1fa62c1605a3..bb81552664e1 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs @@ -14,6 +14,75 @@ namespace IO.Swagger.Model { [DataContract] public class Order { + + private Id Id; + + /// + /// Gets or Sets Id + /// + [DataMember(Name="id", EmitDefaultValue=false)] + public Id Id { get; set; } + + + private PetId PetId; + + /// + /// Gets or Sets PetId + /// + [DataMember(Name="petId", EmitDefaultValue=false)] + public PetId PetId { get; set; } + + + private Quantity Quantity; + + /// + /// Gets or Sets Quantity + /// + [DataMember(Name="quantity", EmitDefaultValue=false)] + public Quantity Quantity { get; set; } + + + private ShipDate ShipDate; + + /// + /// Gets or Sets ShipDate + /// + [DataMember(Name="shipDate", EmitDefaultValue=false)] + public ShipDate ShipDate { get; set; } + + [JsonConverter(typeof(StringEnumConverter))] + public enum Status { + + [EnumMember("placed")] + Placed, + + [EnumMember("approved")] + Approved, + + [EnumMember("delivered")] + Delivered + } + + private Status Status; + + /// + /// Order Status + /// + /// Order Status + [DataMember(Name="status", EmitDefaultValue=false)] + public Status Status { get; set; } + + + private Complete Complete; + + /// + /// Gets or Sets Complete + /// + [DataMember(Name="complete", EmitDefaultValue=false)] + public Complete Complete { get; set; } + + + /// /// Gets or Sets Id /// diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs index 37c80259944d..ca5ddc5bb51f 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs @@ -14,6 +14,75 @@ namespace IO.Swagger.Model { [DataContract] public class Pet { + + private Id Id; + + /// + /// Gets or Sets Id + /// + [DataMember(Name="id", EmitDefaultValue=false)] + public Id Id { get; set; } + + + private Category Category; + + /// + /// Gets or Sets Category + /// + [DataMember(Name="category", EmitDefaultValue=false)] + public Category Category { get; set; } + + + private Name Name; + + /// + /// Gets or Sets Name + /// + [DataMember(Name="name", EmitDefaultValue=false)] + public Name Name { get; set; } + + + private PhotoUrls PhotoUrls; + + /// + /// Gets or Sets PhotoUrls + /// + [DataMember(Name="photoUrls", EmitDefaultValue=false)] + public PhotoUrls PhotoUrls { get; set; } + + + private Tags Tags; + + /// + /// Gets or Sets Tags + /// + [DataMember(Name="tags", EmitDefaultValue=false)] + public Tags Tags { get; set; } + + [JsonConverter(typeof(StringEnumConverter))] + public enum Status { + + [EnumMember("available")] + Available, + + [EnumMember("pending")] + Pending, + + [EnumMember("sold")] + Sold + } + + private Status Status; + + /// + /// pet status in the store + /// + /// pet status in the store + [DataMember(Name="status", EmitDefaultValue=false)] + public Status Status { get; set; } + + + /// /// Gets or Sets Id /// diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs index 7d2ea38833b0..0bef44dfb895 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs @@ -14,6 +14,26 @@ namespace IO.Swagger.Model { [DataContract] public class Tag { + + private Id Id; + + /// + /// Gets or Sets Id + /// + [DataMember(Name="id", EmitDefaultValue=false)] + public Id Id { get; set; } + + + private Name Name; + + /// + /// Gets or Sets Name + /// + [DataMember(Name="name", EmitDefaultValue=false)] + public Name Name { get; set; } + + + /// /// Gets or Sets Id /// diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs index 5430d1182cbb..d2bbf071d9c2 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs @@ -14,6 +14,81 @@ namespace IO.Swagger.Model { [DataContract] public class User { + + private Id Id; + + /// + /// Gets or Sets Id + /// + [DataMember(Name="id", EmitDefaultValue=false)] + public Id Id { get; set; } + + + private Username Username; + + /// + /// Gets or Sets Username + /// + [DataMember(Name="username", EmitDefaultValue=false)] + public Username Username { get; set; } + + + private FirstName FirstName; + + /// + /// Gets or Sets FirstName + /// + [DataMember(Name="firstName", EmitDefaultValue=false)] + public FirstName FirstName { get; set; } + + + private LastName LastName; + + /// + /// Gets or Sets LastName + /// + [DataMember(Name="lastName", EmitDefaultValue=false)] + public LastName LastName { get; set; } + + + private Email Email; + + /// + /// Gets or Sets Email + /// + [DataMember(Name="email", EmitDefaultValue=false)] + public Email Email { get; set; } + + + private Password Password; + + /// + /// Gets or Sets Password + /// + [DataMember(Name="password", EmitDefaultValue=false)] + public Password Password { get; set; } + + + private Phone Phone; + + /// + /// Gets or Sets Phone + /// + [DataMember(Name="phone", EmitDefaultValue=false)] + public Phone Phone { get; set; } + + + private UserStatus UserStatus; + + /// + /// User Status + /// + /// User Status + [DataMember(Name="userStatus", EmitDefaultValue=false)] + public UserStatus UserStatus { get; set; } + + + /// /// Gets or Sets Id /// diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/ApiClient.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/ApiClient.java index bb8aaa7b990d..386f10bde247 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/ApiClient.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/ApiClient.java @@ -39,7 +39,7 @@ import io.swagger.client.auth.HttpBasicAuth; import io.swagger.client.auth.ApiKeyAuth; import io.swagger.client.auth.OAuth; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-07T15:05:10.376+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") public class ApiClient { private Map hostMap = new HashMap(); private Map defaultHeaderMap = new HashMap(); diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/ApiException.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/ApiException.java index 4ed22daabcdc..666dbc842b2d 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/ApiException.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/ApiException.java @@ -3,7 +3,7 @@ package io.swagger.client; import java.util.Map; import java.util.List; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-10-30T16:36:47.681+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") public class ApiException extends Exception { private int code = 0; private Map> responseHeaders = null; diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/Configuration.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/Configuration.java index 8d0b098e28da..88e67771edef 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/Configuration.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/Configuration.java @@ -1,6 +1,6 @@ package io.swagger.client; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-10-30T16:36:47.681+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") public class Configuration { private static ApiClient defaultApiClient = new ApiClient(); diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/JSON.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/JSON.java index 180f9b8cc19d..b7da2974d261 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/JSON.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/JSON.java @@ -8,7 +8,7 @@ import java.text.DateFormat; import java.io.IOException; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-07T15:05:10.376+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") public class JSON { private ObjectMapper mapper; diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/Pair.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/Pair.java index 58afaafb1587..8f77fa48cfef 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/Pair.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/Pair.java @@ -1,6 +1,6 @@ package io.swagger.client; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-10-30T16:36:47.681+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") public class Pair { private String name = ""; private String value = ""; diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/StringUtil.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/StringUtil.java index e1536c68473e..858bf7ace195 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/StringUtil.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/StringUtil.java @@ -1,6 +1,6 @@ package io.swagger.client; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-10-30T16:36:47.681+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") public class StringUtil { /** * Check if the given array contains the given value (with case-insensitive comparison). diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/TypeRef.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/TypeRef.java index b1ba48408db6..5a45bac9ad4e 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/TypeRef.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/TypeRef.java @@ -3,7 +3,7 @@ package io.swagger.client; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-10-30T16:36:47.681+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") public class TypeRef { private final Type type; diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/api/PetApi.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/api/PetApi.java index 17e9a0e299e0..8cf9c31f0e6f 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/api/PetApi.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/api/PetApi.java @@ -11,7 +11,7 @@ import java.io.File; import java.util.*; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-04T19:58:40.953+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") public class PetApi { private ApiClient apiClient; diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/api/StoreApi.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/api/StoreApi.java index a2f2900dd406..6fe8a357ca86 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/api/StoreApi.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/api/StoreApi.java @@ -11,7 +11,7 @@ import io.swagger.client.model.Order; import java.util.*; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-10-30T16:36:47.681+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") public class StoreApi { private ApiClient apiClient; diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/api/UserApi.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/api/UserApi.java index 9be6bbfa67fe..3309549f2182 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/api/UserApi.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/api/UserApi.java @@ -11,7 +11,7 @@ import java.util.*; import java.util.*; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-10-30T16:36:47.681+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") public class UserApi { private ApiClient apiClient; diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/ApiKeyAuth.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/ApiKeyAuth.java index 14891e3504ff..194935b09e70 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/ApiKeyAuth.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/ApiKeyAuth.java @@ -5,7 +5,7 @@ import io.swagger.client.Pair; import java.util.Map; import java.util.List; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-10-30T16:36:47.681+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") public class ApiKeyAuth implements Authentication { private final String location; private final String paramName; diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/Authentication.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/Authentication.java index d74fd356989a..b25870f479c9 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/Authentication.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/Authentication.java @@ -5,7 +5,7 @@ import io.swagger.client.Pair; import java.util.Map; import java.util.List; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-10-30T16:36:47.681+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") public interface Authentication { /** Apply authentication settings to header and query params. */ void applyToParams(List queryParams, Map headerParams); diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/HttpBasicAuth.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/HttpBasicAuth.java index 99ff90e4c6f5..f731e1ac79de 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/HttpBasicAuth.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/HttpBasicAuth.java @@ -8,7 +8,7 @@ import java.util.List; import java.io.UnsupportedEncodingException; import javax.xml.bind.DatatypeConverter; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-10-30T16:36:47.681+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") public class HttpBasicAuth implements Authentication { private String username; private String password; diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/OAuth.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/OAuth.java index 1ab313d67ca9..86ce7da14ee8 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/OAuth.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/OAuth.java @@ -5,7 +5,7 @@ import io.swagger.client.Pair; import java.util.Map; import java.util.List; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-02T21:16:46.418+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") public class OAuth implements Authentication { private String accessToken; diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Category.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Category.java index 1d1d9e1d1b51..0b52b76bfe29 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Category.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Category.java @@ -9,7 +9,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; @ApiModel(description = "") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-10-30T16:36:47.681+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") public class Category { private Long id = null; diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Order.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Order.java index 9c6094aefbfc..8643d22f36dc 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Order.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Order.java @@ -10,7 +10,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; @ApiModel(description = "") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-10-30T16:36:47.681+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") public class Order { private Long id = null; diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Pet.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Pet.java index b842a7800de6..d2647630d4db 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Pet.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Pet.java @@ -2,8 +2,8 @@ package io.swagger.client.model; import io.swagger.client.StringUtil; import io.swagger.client.model.Category; -import io.swagger.client.model.Tag; import java.util.*; +import io.swagger.client.model.Tag; @@ -12,7 +12,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; @ApiModel(description = "") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-10-30T16:36:47.681+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") public class Pet { private Long id = null; diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Tag.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Tag.java index d52ef12d01c5..3db8a70749ac 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Tag.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Tag.java @@ -9,7 +9,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; @ApiModel(description = "") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-10-30T16:36:47.681+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") public class Tag { private Long id = null; diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/User.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/User.java index 8aa9e34283f0..a8c9b8d4bcce 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/User.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/User.java @@ -9,7 +9,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; @ApiModel(description = "") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-10-30T16:36:47.681+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") public class User { private Long id = null; From 3aff6e83281b05492448fd32e4bc73a332561901 Mon Sep 17 00:00:00 2001 From: Justus Thorvaldsson Date: Mon, 23 Nov 2015 09:50:43 +0100 Subject: [PATCH 02/18] removed one extra string enummember --- .../swagger-codegen/src/main/resources/csharp/model.mustache | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/csharp/model.mustache b/modules/swagger-codegen/src/main/resources/csharp/model.mustache index 7a4eb550adbf..4c4c10be8a88 100644 --- a/modules/swagger-codegen/src/main/resources/csharp/model.mustache +++ b/modules/swagger-codegen/src/main/resources/csharp/model.mustache @@ -31,7 +31,7 @@ namespace {{packageName}}.Model { public {{{name}}} {{name}} { get; set; } {{/vars}} - {{#vars}} + {{#vars}}{{^isEnum}} /// /// {{^description}}Gets or Sets {{{name}}}{{/description}}{{#description}}{{{description}}}{{/description}} /// {{#description}} @@ -39,7 +39,7 @@ namespace {{packageName}}.Model { [DataMember(Name="{{baseName}}", EmitDefaultValue=false)] public {{{datatype}}} {{name}} { get; set; } - {{/vars}} + {{/isEnum}}{{/vars}} /// /// Get the string presentation of the object From b434fb517f129d471f5763f5d18c7fef27789038 Mon Sep 17 00:00:00 2001 From: Justus Thorvaldsson Date: Tue, 8 Dec 2015 09:43:28 +0100 Subject: [PATCH 03/18] Fixes enums c# --- README.md | 12 + .../java/io/swagger/codegen/cmd/Meta.java | 13 +- .../languages/ClojureClientCodegen.java | 40 +- .../resources/Java/auth/ApiKeyAuth.mustache | 3 + .../Java/auth/HttpBasicAuth.mustache | 8 +- .../Java/libraries/jersey2/pom.mustache | 7 + .../libraries/okhttp-gson/ApiClient.mustache | 87 ++++- .../okhttp-gson/auth/HttpBasicAuth.mustache | 12 +- .../Java/libraries/okhttp-gson/pom.mustache | 5 - .../src/main/resources/Java/pom.mustache | 7 + .../src/main/resources/clojure/api.mustache | 2 +- .../main/resources/clojure/project.mustache | 6 +- .../src/main/resources/codegen/pom.mustache | 4 +- .../main/resources/csharp/enumClass.mustache | 12 +- .../src/main/resources/csharp/model.mustache | 154 +++++--- .../main/resources/perl/ApiClient.mustache | 20 +- .../src/main/resources/php/api.mustache | 12 +- .../main/resources/python/api_client.mustache | 4 +- pom.xml | 13 + samples/client/petstore/clojure/.gitignore | 1 - samples/client/petstore/clojure/pom.xml | 32 ++ .../main/csharp/IO/Swagger/Model/Category.cs | 157 +++++--- .../src/main/csharp/IO/Swagger/Model/Order.cs | 316 +++++++++------- .../src/main/csharp/IO/Swagger/Model/Pet.cs | 314 ++++++++------- .../src/main/csharp/IO/Swagger/Model/Tag.cs | 157 +++++--- .../src/main/csharp/IO/Swagger/Model/User.cs | 358 +++++++++--------- .../SwaggerClientTest.userprefs | 19 +- .../csharp/SwaggerClientTest/TestPet.cs | 63 +++ .../bin/Debug/SwaggerClientTest.dll | Bin 62464 -> 67584 bytes .../bin/Debug/SwaggerClientTest.dll.mdb | Bin 19469 -> 21107 bytes ...ClientTest.csproj.FilesWrittenAbsolute.txt | 16 +- .../obj/Debug/SwaggerClientTest.dll | Bin 62464 -> 67584 bytes .../obj/Debug/SwaggerClientTest.dll.mdb | Bin 19469 -> 21107 bytes samples/client/petstore/java/default/pom.xml | 7 + .../io/swagger/client/auth/ApiKeyAuth.java | 5 +- .../io/swagger/client/auth/HttpBasicAuth.java | 10 +- samples/client/petstore/java/jersey2/pom.xml | 7 + .../io/swagger/client/auth/ApiKeyAuth.java | 5 +- .../io/swagger/client/auth/HttpBasicAuth.java | 10 +- .../client/petstore/java/okhttp-gson/pom.xml | 5 - .../java/io/swagger/client/ApiClient.java | 87 ++++- .../io/swagger/client/auth/ApiKeyAuth.java | 5 +- .../io/swagger/client/auth/HttpBasicAuth.java | 12 +- .../swagger/client/auth/ApiKeyAuthTest.java | 31 +- .../client/auth/HttpBasicAuthTest.java | 10 + .../perl/lib/WWW/SwaggerClient/ApiClient.pm | 12 +- .../perl/lib/WWW/SwaggerClient/Role.pm | 4 +- .../php/SwaggerClient-php/lib/Api/PetApi.php | 46 ++- .../SwaggerClient-php/lib/Api/StoreApi.php | 4 +- .../php/SwaggerClient-php/lib/ApiClient.php | 2 +- .../lib/ObjectSerializer.php | 2 +- samples/client/petstore/python/.coverage | 2 +- .../petstore/python/dev-requirements.txt.log | 14 + .../python/swagger_client/api_client.py | 4 +- .../python/swagger_client/apis/pet_api.py | 32 +- .../python/swagger_client/apis/store_api.py | 16 +- .../python/swagger_client/apis/user_api.py | 26 +- 57 files changed, 1423 insertions(+), 789 deletions(-) create mode 100644 samples/client/petstore/clojure/pom.xml diff --git a/README.md b/README.md index 0eeb2a3065e1..ef321e4bb595 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ Check out [Swagger-Spec](https://github.com/swagger-api/swagger-spec) for additi - [To build a server stub](#to-build-a-server-stub) - [Node.js](#nodejs) - [PHP Silex](#php-silex) + - [Python Flask (Connexion)](#python-flask-connexion) - [Ruby Sinatra](#ruby-sinatra) - [Scala Scalatra](#scala-scalatra) - [Java JAX-RS](#java-jax-rs) @@ -268,9 +269,11 @@ AkkaScalaClientCodegen.java AndroidClientCodegen.java AsyncScalaClientCodegen.java CSharpClientCodegen.java +ClojureClientCodegen.java CsharpDotNet2ClientCodegen.java DartClientCodegen.java FlashClientCodegen.java +FlaskConnexionCodegen.java JavaClientCodegen.java JavaInflectorServerCodegen.java JaxRSServerCodegen.java @@ -441,6 +444,15 @@ java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \ -o samples/server/petstore/silex ``` +### Python Flask (Connexion) + +``` +java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \ + -i http://petstore.swagger.io/v2/swagger.json \ + -l flaskConnexion \ + -o samples/server/petstore/flaskConnexion +``` + ### Ruby Sinatra ``` diff --git a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Meta.java b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Meta.java index c75181c51cd5..ca06652b942b 100644 --- a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Meta.java +++ b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Meta.java @@ -1,6 +1,7 @@ package io.swagger.codegen.cmd; import ch.lambdaj.function.convert.Converter; +import com.google.common.base.CaseFormat; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.samskivert.mustache.Mustache; @@ -9,7 +10,6 @@ import io.airlift.airline.Option; import io.swagger.codegen.DefaultGenerator; import io.swagger.codegen.SupportingFile; import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -55,7 +55,7 @@ public class Meta implements Runnable { final File targetDir = new File(outputFolder); LOG.info("writing to folder [{}]", targetDir.getAbsolutePath()); - String mainClass = StringUtils.capitalize(name) + "Generator"; + String mainClass = CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, name) + "Generator"; List supportingFiles = ImmutableList.of( new SupportingFile("pom.mustache", "", "pom.xml"), @@ -68,11 +68,18 @@ public class Meta implements Runnable { "src/main/resources/META-INF/services", "io.swagger.codegen.CodegenConfig") ); + String swaggerVersion = this.getClass().getPackage().getImplementationVersion(); + // if the code is running outside of the jar (i.e. from the IDE), it will not have the version available. + // let's default it with something. + if (swaggerVersion==null) { + swaggerVersion = "2.1.3"; + } Map data = new ImmutableMap.Builder() .put("generatorPackage", targetPackage) .put("generatorClass", mainClass) .put("name", name) - .put("fullyQualifiedGeneratorClass", targetPackage + "." + mainClass).build(); + .put("fullyQualifiedGeneratorClass", targetPackage + "." + mainClass) + .put("swaggerCodegenVersion", swaggerVersion).build(); with(supportingFiles).convert(processFiles(targetDir, data)); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ClojureClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ClojureClientCodegen.java index 0277c2d90773..a358cc05b515 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ClojureClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ClojureClientCodegen.java @@ -1,5 +1,6 @@ package io.swagger.codegen.languages; +import io.swagger.codegen.CliOption; import io.swagger.codegen.CodegenConfig; import io.swagger.codegen.CodegenConstants; import io.swagger.codegen.CodegenOperation; @@ -13,8 +14,6 @@ import io.swagger.models.Swagger; import org.apache.commons.lang.StringUtils; import java.io.File; -import java.util.Arrays; -import java.util.HashSet; import java.util.Map; import java.util.List; @@ -23,13 +22,15 @@ public class ClojureClientCodegen extends DefaultCodegen implements CodegenConfi private static final String PROJECT_DESCRIPTION = "projectDescription"; private static final String PROJECT_VERSION = "projectVersion"; private static final String PROJECT_URL = "projectUrl"; - private static final String LICENSE_NAME = "licenseName"; - private static final String LICENSE_URL = "licenseUrl"; + private static final String PROJECT_LICENSE_NAME = "projectLicenseName"; + private static final String PROJECT_LICENSE_URL = "projectLicenseUrl"; private static final String BASE_NAMESPACE = "baseNamespace"; protected String projectName = null; protected String projectDescription = null; protected String projectVersion = null; + protected String baseNamespace = null; + protected String sourceFolder = "src"; public ClojureClientCodegen() { @@ -37,6 +38,21 @@ public class ClojureClientCodegen extends DefaultCodegen implements CodegenConfi outputFolder = "generated-code" + File.separator + "clojure"; apiTemplateFiles.put("api.mustache", ".clj"); embeddedTemplateDir = templateDir = "clojure"; + + cliOptions.add(new CliOption(PROJECT_NAME, + "name of the project (Default: generated from info.title or \"swagger-clj-client\")")); + cliOptions.add(new CliOption(PROJECT_DESCRIPTION, + "description of the project (Default: using info.description or \"Client library of \")")); + cliOptions.add(new CliOption(PROJECT_VERSION, + "version of the project (Default: using info.version or \"1.0.0\")")); + cliOptions.add(new CliOption(PROJECT_URL, + "URL of the project (Default: using info.contact.url or not included in project.clj)")); + cliOptions.add(new CliOption(PROJECT_LICENSE_NAME, + "name of the license the project uses (Default: using info.license.name or not included in project.clj)")); + cliOptions.add(new CliOption(PROJECT_LICENSE_URL, + "URL of the license the project uses (Default: using info.license.url or not included in project.clj)")); + cliOptions.add(new CliOption(BASE_NAMESPACE, + "the base/top namespace (Default: generated from projectName)")); } @Override @@ -67,6 +83,9 @@ public class ClojureClientCodegen extends DefaultCodegen implements CodegenConfi if (additionalProperties.containsKey(PROJECT_VERSION)) { projectVersion = ((String) additionalProperties.get(PROJECT_VERSION)); } + if (additionalProperties.containsKey(BASE_NAMESPACE)) { + baseNamespace = ((String) additionalProperties.get(BASE_NAMESPACE)); + } if (swagger.getInfo() != null) { Info info = swagger.getInfo(); @@ -91,11 +110,11 @@ public class ClojureClientCodegen extends DefaultCodegen implements CodegenConfi } if (info.getLicense() != null) { License license = info.getLicense(); - if (additionalProperties.get(LICENSE_NAME) == null) { - additionalProperties.put(LICENSE_NAME, license.getName()); + if (additionalProperties.get(PROJECT_LICENSE_NAME) == null) { + additionalProperties.put(PROJECT_LICENSE_NAME, license.getName()); } - if (additionalProperties.get(LICENSE_URL) == null) { - additionalProperties.put(LICENSE_URL, license.getUrl()); + if (additionalProperties.get(PROJECT_LICENSE_URL) == null) { + additionalProperties.put(PROJECT_LICENSE_URL, license.getUrl()); } } } @@ -110,8 +129,9 @@ public class ClojureClientCodegen extends DefaultCodegen implements CodegenConfi if (projectDescription == null) { projectDescription = "Client library of " + projectName; } - - final String baseNamespace = dashize(projectName); + if (baseNamespace == null) { + baseNamespace = dashize(projectName); + } apiPackage = baseNamespace + ".api"; additionalProperties.put(PROJECT_NAME, projectName); diff --git a/modules/swagger-codegen/src/main/resources/Java/auth/ApiKeyAuth.mustache b/modules/swagger-codegen/src/main/resources/Java/auth/ApiKeyAuth.mustache index 04be4812292c..931d17b0d046 100644 --- a/modules/swagger-codegen/src/main/resources/Java/auth/ApiKeyAuth.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/auth/ApiKeyAuth.mustache @@ -44,6 +44,9 @@ public class ApiKeyAuth implements Authentication { @Override public void applyToParams(List queryParams, Map headerParams) { + if (apiKey == null) { + return; + } String value; if (apiKeyPrefix != null) { value = apiKeyPrefix + " " + apiKey; diff --git a/modules/swagger-codegen/src/main/resources/Java/auth/HttpBasicAuth.mustache b/modules/swagger-codegen/src/main/resources/Java/auth/HttpBasicAuth.mustache index 63813e2504e1..febabe33d647 100644 --- a/modules/swagger-codegen/src/main/resources/Java/auth/HttpBasicAuth.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/auth/HttpBasicAuth.mustache @@ -2,11 +2,12 @@ package {{invokerPackage}}.auth; import {{invokerPackage}}.Pair; +import com.migcomponents.migbase64.Base64; + import java.util.Map; import java.util.List; import java.io.UnsupportedEncodingException; -import javax.xml.bind.DatatypeConverter; {{>generatedAnnotation}} public class HttpBasicAuth implements Authentication { @@ -31,9 +32,12 @@ public class HttpBasicAuth implements Authentication { @Override public void applyToParams(List queryParams, Map headerParams) { + if (username == null && password == null) { + return; + } String str = (username == null ? "" : username) + ":" + (password == null ? "" : password); try { - headerParams.put("Authorization", "Basic " + DatatypeConverter.printBase64Binary(str.getBytes("UTF-8"))); + headerParams.put("Authorization", "Basic " + Base64.encodeToString(str.getBytes("UTF-8"), false)); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/pom.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/pom.mustache index c8d2145bc6e8..dbe0138aa54b 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/pom.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/pom.mustache @@ -152,6 +152,13 @@ ${jodatime-version} + + + com.brsanthu + migbase64 + 2.2 + + junit diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache index f238c37fb472..8ce2407cbe3b 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache @@ -64,6 +64,38 @@ import {{invokerPackage}}.auth.ApiKeyAuth; import {{invokerPackage}}.auth.OAuth; public class ApiClient { + public static final double JAVA_VERSION; + public static final boolean IS_ANDROID; + public static final int ANDROID_SDK_VERSION; + + static { + JAVA_VERSION = Double.parseDouble(System.getProperty("java.specification.version")); + boolean isAndroid; + try { + Class.forName("android.app.Activity"); + isAndroid = true; + } catch (ClassNotFoundException e) { + isAndroid = false; + } + IS_ANDROID = isAndroid; + int sdkVersion = 0; + if (IS_ANDROID) { + try { + sdkVersion = Class.forName("android.os.Build$VERSION").getField("SDK_INT").getInt(null); + } catch (Exception e) { + try { + sdkVersion = Integer.parseInt((String) Class.forName("android.os.Build$VERSION").getField("SDK").get(null)); + } catch (Exception e2) { } + } + } + ANDROID_SDK_VERSION = sdkVersion; + } + + /** + * The datetime format to be used when lenientDatetimeFormat is enabled. + */ + public static final String LENIENT_DATETIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; + private String basePath = "{{basePath}}"; private boolean lenientOnJson = false; private boolean debugging = false; @@ -100,8 +132,7 @@ public class ApiClient { this.dateFormat = new SimpleDateFormat("yyyy-MM-dd"); // Always use UTC as the default time zone when dealing with date (without time). this.dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); - // Use the system's default time zone when dealing with datetime (mainly formatting). - this.datetimeFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); + initDatetimeFormat(); // Be lenient on datetime formats when parsing datetime from string. // See parseDatetime. @@ -263,25 +294,30 @@ public class ApiClient { if (str == null) return null; + DateFormat format; if (lenientDatetimeFormat) { /* - * When lenientDatetimeFormat is enabled, process the given string - * to support various formats defined by ISO 8601. + * When lenientDatetimeFormat is enabled, normalize the date string + * into LENIENT_DATETIME_FORMAT to support various formats + * defined by ISO 8601. */ // normalize time zone - // trailing "Z": 2015-08-16T08:20:05Z => 2015-08-16T08:20:05+00:00 - str = str.replaceAll("[zZ]\\z", "+00:00"); - // add colon: 2015-08-16T08:20:05+0000 => 2015-08-16T08:20:05+00:00 - str = str.replaceAll("([+-]\\d{2})(\\d{2})\\z", "$1:$2"); - // expand time zone: 2015-08-16T08:20:05+00 => 2015-08-16T08:20:05+00:00 - str = str.replaceAll("([+-]\\d{2})\\z", "$1:00"); + // trailing "Z": 2015-08-16T08:20:05Z => 2015-08-16T08:20:05+0000 + str = str.replaceAll("[zZ]\\z", "+0000"); + // remove colon in time zone: 2015-08-16T08:20:05+00:00 => 2015-08-16T08:20:05+0000 + str = str.replaceAll("([+-]\\d{2}):(\\d{2})\\z", "$1$2"); + // expand time zone: 2015-08-16T08:20:05+00 => 2015-08-16T08:20:05+0000 + str = str.replaceAll("([+-]\\d{2})\\z", "$100"); // add milliseconds when missing - // 2015-08-16T08:20:05+00:00 => 2015-08-16T08:20:05.000+00:00 - str = str.replaceAll("(:\\d{1,2})([+-]\\d{2}:\\d{2})\\z", "$1.000$2"); + // 2015-08-16T08:20:05+0000 => 2015-08-16T08:20:05.000+0000 + str = str.replaceAll("(:\\d{1,2})([+-]\\d{4})\\z", "$1.000$2"); + format = new SimpleDateFormat(LENIENT_DATETIME_FORMAT); + } else { + format = this.datetimeFormat; } try { - return datetimeFormat.parse(str); + return format.parse(str); } catch (ParseException e) { throw new RuntimeException(e); } @@ -916,6 +952,31 @@ public class ApiClient { } } + /** + * Initialize datetime format according to the current environment, e.g. Java 1.7 and Android. + */ + private void initDatetimeFormat() { + String formatWithTimeZone = null; + if (IS_ANDROID) { + if (ANDROID_SDK_VERSION >= 18) { + // The time zone format "ZZZZZ" is available since Android 4.3 (SDK version 18) + formatWithTimeZone = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"; + } + } else if (JAVA_VERSION >= 1.7) { + // The time zone format "XXX" is available since Java 1.7 + formatWithTimeZone = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"; + } + if (formatWithTimeZone != null) { + this.datetimeFormat = new SimpleDateFormat(formatWithTimeZone); + // NOTE: Use the system's default time zone (mainly for datetime formatting). + } else { + // Use a common format that works across all systems. + this.datetimeFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); + // Always use the UTC time zone as we are using a constant trailing "Z" here. + this.datetimeFormat.setTimeZone(TimeZone.getTimeZone("UTC")); + } + } + /** * Apply SSL related settings to httpClient according to the current values of * verifyingSsl and sslCaCert. diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/auth/HttpBasicAuth.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/auth/HttpBasicAuth.mustache index 5b4070fcafb6..f3ed85d980bd 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/auth/HttpBasicAuth.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/auth/HttpBasicAuth.mustache @@ -2,7 +2,7 @@ package {{invokerPackage}}.auth; import {{invokerPackage}}.Pair; -import com.migcomponents.migbase64.Base64; +import com.squareup.okhttp.Credentials; import java.util.Map; import java.util.List; @@ -31,11 +31,11 @@ public class HttpBasicAuth implements Authentication { @Override public void applyToParams(List queryParams, Map headerParams) { - String str = (username == null ? "" : username) + ":" + (password == null ? "" : password); - try { - headerParams.put("Authorization", "Basic " + Base64.encodeToString(str.getBytes("UTF-8"), false)); - } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e); + if (username == null && password == null) { + return; } + headerParams.put("Authorization", Credentials.basic( + username == null ? "" : username, + password == null ? "" : password)); } } diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/pom.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/pom.mustache index 67fc10e8323d..0d7e90151015 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/pom.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/pom.mustache @@ -122,11 +122,6 @@ gson ${gson-version} - - com.brsanthu - migbase64 - 2.2 - diff --git a/modules/swagger-codegen/src/main/resources/Java/pom.mustache b/modules/swagger-codegen/src/main/resources/Java/pom.mustache index 3f4d9d9a55b9..c5bfbc65b746 100644 --- a/modules/swagger-codegen/src/main/resources/Java/pom.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/pom.mustache @@ -148,6 +148,13 @@ ${jodatime-version} + + + com.brsanthu + migbase64 + 2.2 + + junit diff --git a/modules/swagger-codegen/src/main/resources/clojure/api.mustache b/modules/swagger-codegen/src/main/resources/clojure/api.mustache index a4425280f1b9..1acdf94d764a 100644 --- a/modules/swagger-codegen/src/main/resources/clojure/api.mustache +++ b/modules/swagger-codegen/src/main/resources/clojure/api.mustache @@ -1,5 +1,5 @@ {{=< >=}}(ns . - (:require [.core :refer [call-api check-required-params]]) + (:require [.core :refer [call-api check-required-params]]) (:import (java.io File))) <#operations><#operation> (defn diff --git a/modules/swagger-codegen/src/main/resources/clojure/project.mustache b/modules/swagger-codegen/src/main/resources/clojure/project.mustache index c403c9c43c62..df83142e428d 100644 --- a/modules/swagger-codegen/src/main/resources/clojure/project.mustache +++ b/modules/swagger-codegen/src/main/resources/clojure/project.mustache @@ -1,8 +1,8 @@ {{=< >=}}(defproject <&projectName> "<&projectVersion>" :description "<&projectDescription>"<#projectUrl> - :url "<&projectUrl>"<#licenseName> - :license {:name "<&licenseName>"<#licenseUrl> - :url "<&licenseUrl>"} + :url "<&projectUrl>"<#projectLicenseName> + :license {:name "<&projectLicenseName>"<#projectLicenseUrl> + :url "<&projectLicenseUrl>"} :dependencies [[org.clojure/clojure "1.7.0"] [clj-http "2.0.0"] [cheshire "5.5.0"]]) diff --git a/modules/swagger-codegen/src/main/resources/codegen/pom.mustache b/modules/swagger-codegen/src/main/resources/codegen/pom.mustache index 29a980a50914..30f1b14872c3 100644 --- a/modules/swagger-codegen/src/main/resources/codegen/pom.mustache +++ b/modules/swagger-codegen/src/main/resources/codegen/pom.mustache @@ -95,8 +95,8 @@ - 2.1.3 + {{swaggerCodegenVersion}} 1.0.0 4.8.1 - \ No newline at end of file + diff --git a/modules/swagger-codegen/src/main/resources/csharp/enumClass.mustache b/modules/swagger-codegen/src/main/resources/csharp/enumClass.mustache index 1a3291eeebdb..38b67c3c40de 100644 --- a/modules/swagger-codegen/src/main/resources/csharp/enumClass.mustache +++ b/modules/swagger-codegen/src/main/resources/csharp/enumClass.mustache @@ -1,6 +1,6 @@ -public enum {{name}} { - {{#allowableValues}}{{#enumVars}} - [EnumMember("{{jsonname}}")] - {{name}}{{^-last}}, - {{/-last}}{{#-last}}{{/-last}}{{/enumVars}}{{/allowableValues}} - } \ No newline at end of file +public enum {{datatypeWithEnum}} { + {{#allowableValues}}{{#enumVars}} + [EnumMember(Value = "{{jsonname}}")] + {{name}}{{^-last}}, + {{/-last}}{{#-last}}{{/-last}}{{/enumVars}}{{/allowableValues}} + } \ No newline at end of file diff --git a/modules/swagger-codegen/src/main/resources/csharp/model.mustache b/modules/swagger-codegen/src/main/resources/csharp/model.mustache index 4c4c10be8a88..b4663b09452a 100644 --- a/modules/swagger-codegen/src/main/resources/csharp/model.mustache +++ b/modules/swagger-codegen/src/main/resources/csharp/model.mustache @@ -1,69 +1,119 @@ using System; +using System.Linq; using System.IO; using System.Text; using System.Collections; using System.Collections.Generic; using System.Runtime.Serialization; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; {{#models}} {{#model}} -namespace {{packageName}}.Model { - - /// - /// {{description}} - /// - [DataContract] - public class {{classname}}{{#parent}} : {{{parent}}}{{/parent}} { +namespace {{packageName}}.Model +{ + /// + /// {{description}} + /// + [DataContract] + public class {{classname}} : IEquatable<{{classname}}>{{#parent}}, {{{parent}}}{{/parent}} + { {{#vars}}{{#isEnum}} + [JsonConverter(typeof(StringEnumConverter))] + {{>enumClass}}{{/isEnum}}{{#items.isEnum}}{{#items}} + {{>enumClass}}{{/items}}{{/items.isEnum}}{{/vars}} {{#vars}}{{#isEnum}} - [JsonConverter(typeof(StringEnumConverter))] - {{>enumClass}}{{/isEnum}}{{#items.isEnum}}{{#items}} - - {{>enumClass}}{{/items}}{{/items.isEnum}} - - private {{{name}}} {{name}}; - - /// - /// {{^description}}Gets or Sets {{{name}}}{{/description}}{{#description}}{{{description}}}{{/description}} - /// {{#description}} - /// {{{description}}}{{/description}} - [DataMember(Name="{{baseName}}", EmitDefaultValue=false)] - public {{{name}}} {{name}} { get; set; } - {{/vars}} - - {{#vars}}{{^isEnum}} - /// - /// {{^description}}Gets or Sets {{{name}}}{{/description}}{{#description}}{{{description}}}{{/description}} - /// {{#description}} - /// {{{description}}}{{/description}} - [DataMember(Name="{{baseName}}", EmitDefaultValue=false)] - public {{{datatype}}} {{name}} { get; set; } - + /// + /// {{^description}}Gets or Sets {{{name}}}{{/description}}{{#description}}{{{description}}}{{/description}} + /// {{#description}} + /// {{{description}}}{{/description}} + [DataMember(Name="{{baseName}}", EmitDefaultValue=false)] + public {{{datatypeWithEnum}}} {{name}} { get; set; } + {{/isEnum}}{{/vars}}{{#vars}}{{^isEnum}} + /// + /// {{^description}}Gets or Sets {{{name}}}{{/description}}{{#description}}{{{description}}}{{/description}} + /// {{#description}} + /// {{{description}}}{{/description}} + [DataMember(Name="{{baseName}}", EmitDefaultValue=false)] + public {{{datatype}}} {{name}} { get; set; } {{/isEnum}}{{/vars}} + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class {{classname}} {\n"); + {{#vars}}sb.Append(" {{name}}: ").Append({{name}}).Append("\n"); + {{/vars}} + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public {{#parent}} new {{/parent}}string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object obj) + { + // credit: http://stackoverflow.com/a/10454552/677735 + return this.Equals(obj as {{classname}}); + } + + /// + /// Returns true if {{classname}} instances are equal + /// + /// Instance of {{classname}} to be compared + /// Boolean + public bool Equals({{classname}} other) + { + // credit: http://stackoverflow.com/a/10454552/677735 + if (other == null) + return false; + + return {{#vars}}{{#isNotContainer}} + ( + this.{{name}} == other.{{name}} || + this.{{name}} != null && + this.{{name}}.Equals(other.{{name}}) + ){{#hasMore}} && {{/hasMore}}{{/isNotContainer}}{{^isNotContainer}} + ( + this.{{name}} == other.{{name}} || + this.{{name}} != null && + this.{{name}}.SequenceEqual(other.{{name}}) + ){{#hasMore}} && {{/hasMore}}{{/isNotContainer}}{{/vars}}; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + // credit: http://stackoverflow.com/a/263416/677735 + unchecked // Overflow is fine, just wrap + { + int hash = 41; + // Suitable nullity checks etc, of course :) + {{#vars}} + if (this.{{name}} != null) + hash = hash * 57 + this.{{name}}.GetHashCode(); + {{/vars}} + return hash; + } + } - /// - /// Get the string presentation of the object - /// - /// String presentation of the object - public override string ToString() { - var sb = new StringBuilder(); - sb.Append("class {{classname}} {\n"); - {{#vars}} - sb.Append(" {{name}}: ").Append({{name}}).Append("\n"); - {{/vars}} - sb.Append("}\n"); - return sb.ToString(); } - - /// - /// Get the JSON string presentation of the object - /// - /// JSON string presentation of the object - public {{#parent}} new {{/parent}}string ToJson() { - return JsonConvert.SerializeObject(this, Formatting.Indented); - } - -} {{/model}} {{/models}} } diff --git a/modules/swagger-codegen/src/main/resources/perl/ApiClient.mustache b/modules/swagger-codegen/src/main/resources/perl/ApiClient.mustache index bf1220912d20..1623721cc70d 100644 --- a/modules/swagger-codegen/src/main/resources/perl/ApiClient.mustache +++ b/modules/swagger-codegen/src/main/resources/perl/ApiClient.mustache @@ -317,14 +317,28 @@ sub update_params_for_auth { foreach my $auth (@$auth_settings) { # determine which one to use if (!defined($auth)) { + # TODO show warning about auth setting not defined } {{#authMethods}}elsif ($auth eq '{{name}}') { - {{#isApiKey}}{{#isKeyInHeader}}$header_params->{'{{keyParamName}}'} = $self->get_api_key_with_prefix('{{keyParamName}}');{{/isKeyInHeader}}{{#isKeyInQuery}}$query_params->{'{{keyParamName}}'} = $self->get_api_key_with_prefix('{{keyParamName}}');{{/isKeyInQuery}}{{/isApiKey}}{{#isBasic}}$header_params->{'Authorization'} = 'Basic '.encode_base64($WWW::{{moduleName}}::Configuration::username.":".$WWW::{{moduleName}}::Configuration::password);{{/isBasic}} - {{#isOAuth}}$header_params->{'Authorization'} = 'Bearer ' . $WWW::{{moduleName}}::Configuration::access_token;{{/isOAuth}} + {{#isApiKey}}{{#isKeyInHeader}} + my $api_key = $self->get_api_key_with_prefix('{{keyParamName}}'); + if ($api_key) { + $header_params->{'{{keyParamName}}'} = $api_key; + }{{/isKeyInHeader}}{{#isKeyInQuery}} + my $api_key = $self->get_api_key_with_prefix('{{keyParamName}}'); + if ($api_key) { + $query_params->{'{{keyParamName}}'} = $api_key; + }{{/isKeyInQuery}}{{/isApiKey}}{{#isBasic}} + if ($WWW::{{moduleName}}::Configuration::username || $WWW::{{moduleName}}::Configuration::password) { + $header_params->{'Authorization'} = 'Basic ' . encode_base64($WWW::{{moduleName}}::Configuration::username . ":" . $WWW::{{moduleName}}::Configuration::password); + }{{/isBasic}}{{#isOAuth}} + if ($WWW::{{moduleName}}::Configuration::access_token) { + $header_params->{'Authorization'} = 'Bearer ' . $WWW::{{moduleName}}::Configuration::access_token; + }{{/isOAuth}} } {{/authMethods}} else { - # TODO show warning about security definition not found + # TODO show warning about security definition not found } } } diff --git a/modules/swagger-codegen/src/main/resources/php/api.mustache b/modules/swagger-codegen/src/main/resources/php/api.mustache index e3a9749c4235..53a810308132 100644 --- a/modules/swagger-codegen/src/main/resources/php/api.mustache +++ b/modules/swagger-codegen/src/main/resources/php/api.mustache @@ -166,12 +166,18 @@ use \{{invokerPackage}}\ObjectSerializer; $httpBody = $formParams; // for HTTP post (form) } {{#authMethods}}{{#isApiKey}} + // this endpoint requires API key authentication $apiKey = $this->apiClient->getApiKeyWithPrefix('{{keyParamName}}'); - if (isset($apiKey)) { + if ($apiKey !== null) { {{#isKeyInHeader}}$headerParams['{{keyParamName}}'] = $apiKey;{{/isKeyInHeader}}{{#isKeyInQuery}}$queryParams['{{keyParamName}}'] = $apiKey;{{/isKeyInQuery}} }{{/isApiKey}} - {{#isBasic}}$headerParams['Authorization'] = 'Basic ' . base64_encode($this->apiClient->getConfig()->getUsername() . ":" . $this->apiClient->getConfig()->getPassword());{{/isBasic}} - {{#isOAuth}}$headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken();{{/isOAuth}} + {{#isBasic}}// this endpoint requires HTTP basic authentication + if ($this->apiClient->getConfig()->getUsername() !== null or $this->apiClient->getConfig()->getPassword() !== null) { + $headerParams['Authorization'] = 'Basic ' . base64_encode($this->apiClient->getConfig()->getUsername() . ":" . $this->apiClient->getConfig()->getPassword()); + }{{/isBasic}}{{#isOAuth}}// this endpoint requires OAuth (access token) + if ($this->apiClient->getConfig()->getAccessToken() !== null) { + $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + }{{/isOAuth}} {{/authMethods}} // make the API Call try diff --git a/modules/swagger-codegen/src/main/resources/python/api_client.mustache b/modules/swagger-codegen/src/main/resources/python/api_client.mustache index 969eb4e7992b..d097ec4536d4 100644 --- a/modules/swagger-codegen/src/main/resources/python/api_client.mustache +++ b/modules/swagger-codegen/src/main/resources/python/api_client.mustache @@ -453,7 +453,9 @@ class ApiClient(object): for auth in auth_settings: auth_setting = config.auth_settings().get(auth) if auth_setting: - if auth_setting['in'] == 'header': + if not auth_setting['value']: + continue + elif auth_setting['in'] == 'header': headers[auth_setting['key']] = auth_setting['value'] elif auth_setting['in'] == 'query': querys[auth_setting['key']] = auth_setting['value'] diff --git a/pom.xml b/pom.xml index e6d319c42d71..ada3dc0dc4a6 100644 --- a/pom.xml +++ b/pom.xml @@ -305,6 +305,18 @@ samples/client/petstore/android-java + + clojure-client + + + env + clojure + + + + samples/client/petstore/clojure + + java-client @@ -435,6 +447,7 @@ samples/client/petstore/android-java + samples/client/petstore/clojure samples/client/petstore/java/default samples/client/petstore/java/jersey2 samples/client/petstore/java/okhttp-gson diff --git a/samples/client/petstore/clojure/.gitignore b/samples/client/petstore/clojure/.gitignore index c53038ec0e3d..055b6ac47724 100644 --- a/samples/client/petstore/clojure/.gitignore +++ b/samples/client/petstore/clojure/.gitignore @@ -1,7 +1,6 @@ /target /classes /checkouts -pom.xml pom.xml.asc *.jar *.class diff --git a/samples/client/petstore/clojure/pom.xml b/samples/client/petstore/clojure/pom.xml new file mode 100644 index 000000000000..a36506d1b90c --- /dev/null +++ b/samples/client/petstore/clojure/pom.xml @@ -0,0 +1,32 @@ + + 4.0.0 + io.swagger + swagger-petstore-clojure + pom + 1.0-SNAPSHOT + Swagger Petstore - Clojure Client + + + + org.codehaus.mojo + exec-maven-plugin + 1.2.1 + + + lein-test + integration-test + + exec + + + lein + + test + + + + + + + + diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs index 0a952d64b20d..3813bde45f08 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs @@ -1,77 +1,114 @@ using System; +using System.Linq; using System.IO; using System.Text; using System.Collections; using System.Collections.Generic; using System.Runtime.Serialization; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; -namespace IO.Swagger.Model { - - /// - /// - /// - [DataContract] - public class Category { +namespace IO.Swagger.Model +{ + /// + /// + /// + [DataContract] + public class Category : IEquatable + { + /// + /// Gets or Sets Id + /// + [DataMember(Name="id", EmitDefaultValue=false)] + public long? Id { get; set; } + + /// + /// Gets or Sets Name + /// + [DataMember(Name="name", EmitDefaultValue=false)] + public string Name { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Category {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + + sb.Append("}\n"); + return sb.ToString(); + } - private Id Id; + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } - /// - /// Gets or Sets Id - /// - [DataMember(Name="id", EmitDefaultValue=false)] - public Id Id { get; set; } - - - private Name Name; + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object obj) + { + // credit: http://stackoverflow.com/a/10454552/677735 + return this.Equals(obj as Category); + } - /// - /// Gets or Sets Name - /// - [DataMember(Name="name", EmitDefaultValue=false)] - public Name Name { get; set; } - + /// + /// Returns true if Category instances are equal + /// + /// Instance of Category to be compared + /// Boolean + public bool Equals(Category other) + { + // credit: http://stackoverflow.com/a/10454552/677735 + if (other == null) + return false; - - /// - /// Gets or Sets Id - /// - [DataMember(Name="id", EmitDefaultValue=false)] - public long? Id { get; set; } + return + ( + this.Id == other.Id || + this.Id != null && + this.Id.Equals(other.Id) + ) && + ( + this.Name == other.Name || + this.Name != null && + this.Name.Equals(other.Name) + ); + } - - /// - /// Gets or Sets Name - /// - [DataMember(Name="name", EmitDefaultValue=false)] - public string Name { get; set; } + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + // credit: http://stackoverflow.com/a/263416/677735 + unchecked // Overflow is fine, just wrap + { + int hash = 41; + // Suitable nullity checks etc, of course :) + + if (this.Id != null) + hash = hash * 57 + this.Id.GetHashCode(); + + if (this.Name != null) + hash = hash * 57 + this.Name.GetHashCode(); + + return hash; + } + } - - - /// - /// Get the string presentation of the object - /// - /// String presentation of the object - public override string ToString() { - var sb = new StringBuilder(); - sb.Append("class Category {\n"); - - sb.Append(" Id: ").Append(Id).Append("\n"); - - sb.Append(" Name: ").Append(Name).Append("\n"); - - sb.Append("}\n"); - return sb.ToString(); } - - /// - /// Get the JSON string presentation of the object - /// - /// JSON string presentation of the object - public string ToJson() { - return JsonConvert.SerializeObject(this, Formatting.Indented); - } - -} } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs index bb81552664e1..54ce43ab83fb 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs @@ -1,163 +1,187 @@ using System; +using System.Linq; using System.IO; using System.Text; using System.Collections; using System.Collections.Generic; using System.Runtime.Serialization; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; -namespace IO.Swagger.Model { - - /// - /// - /// - [DataContract] - public class Order { - - - private Id Id; - +namespace IO.Swagger.Model +{ /// - /// Gets or Sets Id + /// /// - [DataMember(Name="id", EmitDefaultValue=false)] - public Id Id { get; set; } + [DataContract] + public class Order : IEquatable + { + [JsonConverter(typeof(StringEnumConverter))] + public enum StatusEnum { + + [EnumMember(Value = "placed")] + Placed, + + [EnumMember(Value = "approved")] + Approved, + + [EnumMember(Value = "delivered")] + Delivered + } + /// + /// Order Status + /// + /// Order Status + [DataMember(Name="status", EmitDefaultValue=false)] + public StatusEnum Status { get; set; } + + /// + /// Gets or Sets Id + /// + [DataMember(Name="id", EmitDefaultValue=false)] + public long? Id { get; set; } + + /// + /// Gets or Sets PetId + /// + [DataMember(Name="petId", EmitDefaultValue=false)] + public long? PetId { get; set; } + + /// + /// Gets or Sets Quantity + /// + [DataMember(Name="quantity", EmitDefaultValue=false)] + public int? Quantity { get; set; } + + /// + /// Gets or Sets ShipDate + /// + [DataMember(Name="shipDate", EmitDefaultValue=false)] + public DateTime? ShipDate { get; set; } + + /// + /// Gets or Sets Complete + /// + [DataMember(Name="complete", EmitDefaultValue=false)] + public bool? Complete { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Order {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" PetId: ").Append(PetId).Append("\n"); + sb.Append(" Quantity: ").Append(Quantity).Append("\n"); + sb.Append(" ShipDate: ").Append(ShipDate).Append("\n"); + sb.Append(" Status: ").Append(Status).Append("\n"); + sb.Append(" Complete: ").Append(Complete).Append("\n"); + + sb.Append("}\n"); + return sb.ToString(); + } - private PetId PetId; + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } - /// - /// Gets or Sets PetId - /// - [DataMember(Name="petId", EmitDefaultValue=false)] - public PetId PetId { get; set; } - - - private Quantity Quantity; + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object obj) + { + // credit: http://stackoverflow.com/a/10454552/677735 + return this.Equals(obj as Order); + } - /// - /// Gets or Sets Quantity - /// - [DataMember(Name="quantity", EmitDefaultValue=false)] - public Quantity Quantity { get; set; } - - - private ShipDate ShipDate; + /// + /// Returns true if Order instances are equal + /// + /// Instance of Order to be compared + /// Boolean + public bool Equals(Order other) + { + // credit: http://stackoverflow.com/a/10454552/677735 + if (other == null) + return false; + + return + ( + this.Id == other.Id || + this.Id != null && + this.Id.Equals(other.Id) + ) && + ( + this.PetId == other.PetId || + this.PetId != null && + this.PetId.Equals(other.PetId) + ) && + ( + this.Quantity == other.Quantity || + this.Quantity != null && + this.Quantity.Equals(other.Quantity) + ) && + ( + this.ShipDate == other.ShipDate || + this.ShipDate != null && + this.ShipDate.Equals(other.ShipDate) + ) && + ( + this.Status == other.Status || + this.Status != null && + this.Status.Equals(other.Status) + ) && + ( + this.Complete == other.Complete || + this.Complete != null && + this.Complete.Equals(other.Complete) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + // credit: http://stackoverflow.com/a/263416/677735 + unchecked // Overflow is fine, just wrap + { + int hash = 41; + // Suitable nullity checks etc, of course :) + + if (this.Id != null) + hash = hash * 57 + this.Id.GetHashCode(); + + if (this.PetId != null) + hash = hash * 57 + this.PetId.GetHashCode(); + + if (this.Quantity != null) + hash = hash * 57 + this.Quantity.GetHashCode(); + + if (this.ShipDate != null) + hash = hash * 57 + this.ShipDate.GetHashCode(); + + if (this.Status != null) + hash = hash * 57 + this.Status.GetHashCode(); + + if (this.Complete != null) + hash = hash * 57 + this.Complete.GetHashCode(); + + return hash; + } + } - /// - /// Gets or Sets ShipDate - /// - [DataMember(Name="shipDate", EmitDefaultValue=false)] - public ShipDate ShipDate { get; set; } - - [JsonConverter(typeof(StringEnumConverter))] - public enum Status { - - [EnumMember("placed")] - Placed, - - [EnumMember("approved")] - Approved, - - [EnumMember("delivered")] - Delivered } - - private Status Status; - - /// - /// Order Status - /// - /// Order Status - [DataMember(Name="status", EmitDefaultValue=false)] - public Status Status { get; set; } - - - private Complete Complete; - - /// - /// Gets or Sets Complete - /// - [DataMember(Name="complete", EmitDefaultValue=false)] - public Complete Complete { get; set; } - - - - /// - /// Gets or Sets Id - /// - [DataMember(Name="id", EmitDefaultValue=false)] - public long? Id { get; set; } - - - /// - /// Gets or Sets PetId - /// - [DataMember(Name="petId", EmitDefaultValue=false)] - public long? PetId { get; set; } - - - /// - /// Gets or Sets Quantity - /// - [DataMember(Name="quantity", EmitDefaultValue=false)] - public int? Quantity { get; set; } - - - /// - /// Gets or Sets ShipDate - /// - [DataMember(Name="shipDate", EmitDefaultValue=false)] - public DateTime? ShipDate { get; set; } - - - /// - /// Order Status - /// - /// Order Status - [DataMember(Name="status", EmitDefaultValue=false)] - public string Status { get; set; } - - - /// - /// Gets or Sets Complete - /// - [DataMember(Name="complete", EmitDefaultValue=false)] - public bool? Complete { get; set; } - - - - /// - /// Get the string presentation of the object - /// - /// String presentation of the object - public override string ToString() { - var sb = new StringBuilder(); - sb.Append("class Order {\n"); - - sb.Append(" Id: ").Append(Id).Append("\n"); - - sb.Append(" PetId: ").Append(PetId).Append("\n"); - - sb.Append(" Quantity: ").Append(Quantity).Append("\n"); - - sb.Append(" ShipDate: ").Append(ShipDate).Append("\n"); - - sb.Append(" Status: ").Append(Status).Append("\n"); - - sb.Append(" Complete: ").Append(Complete).Append("\n"); - - sb.Append("}\n"); - return sb.ToString(); - } - - /// - /// Get the JSON string presentation of the object - /// - /// JSON string presentation of the object - public string ToJson() { - return JsonConvert.SerializeObject(this, Formatting.Indented); - } - -} } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs index ca5ddc5bb51f..f3987aa52868 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs @@ -1,163 +1,187 @@ using System; +using System.Linq; using System.IO; using System.Text; using System.Collections; using System.Collections.Generic; using System.Runtime.Serialization; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; -namespace IO.Swagger.Model { - - /// - /// - /// - [DataContract] - public class Pet { - - - private Id Id; - +namespace IO.Swagger.Model +{ /// - /// Gets or Sets Id + /// /// - [DataMember(Name="id", EmitDefaultValue=false)] - public Id Id { get; set; } + [DataContract] + public class Pet : IEquatable + { + [JsonConverter(typeof(StringEnumConverter))] + public enum StatusEnum { + + [EnumMember(Value = "available")] + Available, + + [EnumMember(Value = "pending")] + Pending, + + [EnumMember(Value = "sold")] + Sold + } + /// + /// pet status in the store + /// + /// pet status in the store + [DataMember(Name="status", EmitDefaultValue=false)] + public StatusEnum Status { get; set; } + + /// + /// Gets or Sets Id + /// + [DataMember(Name="id", EmitDefaultValue=false)] + public long? Id { get; set; } + + /// + /// Gets or Sets Category + /// + [DataMember(Name="category", EmitDefaultValue=false)] + public Category Category { get; set; } + + /// + /// Gets or Sets Name + /// + [DataMember(Name="name", EmitDefaultValue=false)] + public string Name { get; set; } + + /// + /// Gets or Sets PhotoUrls + /// + [DataMember(Name="photoUrls", EmitDefaultValue=false)] + public List PhotoUrls { get; set; } + + /// + /// Gets or Sets Tags + /// + [DataMember(Name="tags", EmitDefaultValue=false)] + public List Tags { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Pet {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Category: ").Append(Category).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" PhotoUrls: ").Append(PhotoUrls).Append("\n"); + sb.Append(" Tags: ").Append(Tags).Append("\n"); + sb.Append(" Status: ").Append(Status).Append("\n"); + + sb.Append("}\n"); + return sb.ToString(); + } - private Category Category; + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } - /// - /// Gets or Sets Category - /// - [DataMember(Name="category", EmitDefaultValue=false)] - public Category Category { get; set; } - - - private Name Name; + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object obj) + { + // credit: http://stackoverflow.com/a/10454552/677735 + return this.Equals(obj as Pet); + } - /// - /// Gets or Sets Name - /// - [DataMember(Name="name", EmitDefaultValue=false)] - public Name Name { get; set; } - - - private PhotoUrls PhotoUrls; + /// + /// Returns true if Pet instances are equal + /// + /// Instance of Pet to be compared + /// Boolean + public bool Equals(Pet other) + { + // credit: http://stackoverflow.com/a/10454552/677735 + if (other == null) + return false; - /// - /// Gets or Sets PhotoUrls - /// - [DataMember(Name="photoUrls", EmitDefaultValue=false)] - public PhotoUrls PhotoUrls { get; set; } - - - private Tags Tags; + return + ( + this.Id == other.Id || + this.Id != null && + this.Id.Equals(other.Id) + ) && + ( + this.Category == other.Category || + this.Category != null && + this.Category.Equals(other.Category) + ) && + ( + this.Name == other.Name || + this.Name != null && + this.Name.Equals(other.Name) + ) && + ( + this.PhotoUrls == other.PhotoUrls || + this.PhotoUrls != null && + this.PhotoUrls.SequenceEqual(other.PhotoUrls) + ) && + ( + this.Tags == other.Tags || + this.Tags != null && + this.Tags.SequenceEqual(other.Tags) + ) && + ( + this.Status == other.Status || + this.Status != null && + this.Status.Equals(other.Status) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + // credit: http://stackoverflow.com/a/263416/677735 + unchecked // Overflow is fine, just wrap + { + int hash = 41; + // Suitable nullity checks etc, of course :) + + if (this.Id != null) + hash = hash * 57 + this.Id.GetHashCode(); + + if (this.Category != null) + hash = hash * 57 + this.Category.GetHashCode(); + + if (this.Name != null) + hash = hash * 57 + this.Name.GetHashCode(); + + if (this.PhotoUrls != null) + hash = hash * 57 + this.PhotoUrls.GetHashCode(); + + if (this.Tags != null) + hash = hash * 57 + this.Tags.GetHashCode(); + + if (this.Status != null) + hash = hash * 57 + this.Status.GetHashCode(); + + return hash; + } + } - /// - /// Gets or Sets Tags - /// - [DataMember(Name="tags", EmitDefaultValue=false)] - public Tags Tags { get; set; } - - [JsonConverter(typeof(StringEnumConverter))] - public enum Status { - - [EnumMember("available")] - Available, - - [EnumMember("pending")] - Pending, - - [EnumMember("sold")] - Sold } - - private Status Status; - - /// - /// pet status in the store - /// - /// pet status in the store - [DataMember(Name="status", EmitDefaultValue=false)] - public Status Status { get; set; } - - - - /// - /// Gets or Sets Id - /// - [DataMember(Name="id", EmitDefaultValue=false)] - public long? Id { get; set; } - - - /// - /// Gets or Sets Category - /// - [DataMember(Name="category", EmitDefaultValue=false)] - public Category Category { get; set; } - - - /// - /// Gets or Sets Name - /// - [DataMember(Name="name", EmitDefaultValue=false)] - public string Name { get; set; } - - - /// - /// Gets or Sets PhotoUrls - /// - [DataMember(Name="photoUrls", EmitDefaultValue=false)] - public List PhotoUrls { get; set; } - - - /// - /// Gets or Sets Tags - /// - [DataMember(Name="tags", EmitDefaultValue=false)] - public List Tags { get; set; } - - - /// - /// pet status in the store - /// - /// pet status in the store - [DataMember(Name="status", EmitDefaultValue=false)] - public string Status { get; set; } - - - - /// - /// Get the string presentation of the object - /// - /// String presentation of the object - public override string ToString() { - var sb = new StringBuilder(); - sb.Append("class Pet {\n"); - - sb.Append(" Id: ").Append(Id).Append("\n"); - - sb.Append(" Category: ").Append(Category).Append("\n"); - - sb.Append(" Name: ").Append(Name).Append("\n"); - - sb.Append(" PhotoUrls: ").Append(PhotoUrls).Append("\n"); - - sb.Append(" Tags: ").Append(Tags).Append("\n"); - - sb.Append(" Status: ").Append(Status).Append("\n"); - - sb.Append("}\n"); - return sb.ToString(); - } - - /// - /// Get the JSON string presentation of the object - /// - /// JSON string presentation of the object - public string ToJson() { - return JsonConvert.SerializeObject(this, Formatting.Indented); - } - -} } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs index 0bef44dfb895..3553578a0831 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs @@ -1,77 +1,114 @@ using System; +using System.Linq; using System.IO; using System.Text; using System.Collections; using System.Collections.Generic; using System.Runtime.Serialization; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; -namespace IO.Swagger.Model { - - /// - /// - /// - [DataContract] - public class Tag { +namespace IO.Swagger.Model +{ + /// + /// + /// + [DataContract] + public class Tag : IEquatable + { + /// + /// Gets or Sets Id + /// + [DataMember(Name="id", EmitDefaultValue=false)] + public long? Id { get; set; } + + /// + /// Gets or Sets Name + /// + [DataMember(Name="name", EmitDefaultValue=false)] + public string Name { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Tag {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + + sb.Append("}\n"); + return sb.ToString(); + } - private Id Id; + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } - /// - /// Gets or Sets Id - /// - [DataMember(Name="id", EmitDefaultValue=false)] - public Id Id { get; set; } - - - private Name Name; + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object obj) + { + // credit: http://stackoverflow.com/a/10454552/677735 + return this.Equals(obj as Tag); + } - /// - /// Gets or Sets Name - /// - [DataMember(Name="name", EmitDefaultValue=false)] - public Name Name { get; set; } - + /// + /// Returns true if Tag instances are equal + /// + /// Instance of Tag to be compared + /// Boolean + public bool Equals(Tag other) + { + // credit: http://stackoverflow.com/a/10454552/677735 + if (other == null) + return false; - - /// - /// Gets or Sets Id - /// - [DataMember(Name="id", EmitDefaultValue=false)] - public long? Id { get; set; } + return + ( + this.Id == other.Id || + this.Id != null && + this.Id.Equals(other.Id) + ) && + ( + this.Name == other.Name || + this.Name != null && + this.Name.Equals(other.Name) + ); + } - - /// - /// Gets or Sets Name - /// - [DataMember(Name="name", EmitDefaultValue=false)] - public string Name { get; set; } + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + // credit: http://stackoverflow.com/a/263416/677735 + unchecked // Overflow is fine, just wrap + { + int hash = 41; + // Suitable nullity checks etc, of course :) + + if (this.Id != null) + hash = hash * 57 + this.Id.GetHashCode(); + + if (this.Name != null) + hash = hash * 57 + this.Name.GetHashCode(); + + return hash; + } + } - - - /// - /// Get the string presentation of the object - /// - /// String presentation of the object - public override string ToString() { - var sb = new StringBuilder(); - sb.Append("class Tag {\n"); - - sb.Append(" Id: ").Append(Id).Append("\n"); - - sb.Append(" Name: ").Append(Name).Append("\n"); - - sb.Append("}\n"); - return sb.ToString(); } - - /// - /// Get the JSON string presentation of the object - /// - /// JSON string presentation of the object - public string ToJson() { - return JsonConvert.SerializeObject(this, Formatting.Indented); - } - -} } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs index d2bbf071d9c2..bfd2ffc411e3 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs @@ -1,187 +1,205 @@ using System; +using System.Linq; using System.IO; using System.Text; using System.Collections; using System.Collections.Generic; using System.Runtime.Serialization; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; -namespace IO.Swagger.Model { - - /// - /// - /// - [DataContract] - public class User { +namespace IO.Swagger.Model +{ + /// + /// + /// + [DataContract] + public class User : IEquatable + { + /// + /// Gets or Sets Id + /// + [DataMember(Name="id", EmitDefaultValue=false)] + public long? Id { get; set; } + + /// + /// Gets or Sets Username + /// + [DataMember(Name="username", EmitDefaultValue=false)] + public string Username { get; set; } + + /// + /// Gets or Sets FirstName + /// + [DataMember(Name="firstName", EmitDefaultValue=false)] + public string FirstName { get; set; } + + /// + /// Gets or Sets LastName + /// + [DataMember(Name="lastName", EmitDefaultValue=false)] + public string LastName { get; set; } + + /// + /// Gets or Sets Email + /// + [DataMember(Name="email", EmitDefaultValue=false)] + public string Email { get; set; } + + /// + /// Gets or Sets Password + /// + [DataMember(Name="password", EmitDefaultValue=false)] + public string Password { get; set; } + + /// + /// Gets or Sets Phone + /// + [DataMember(Name="phone", EmitDefaultValue=false)] + public string Phone { get; set; } + + /// + /// User Status + /// + /// User Status + [DataMember(Name="userStatus", EmitDefaultValue=false)] + public int? UserStatus { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class User {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Username: ").Append(Username).Append("\n"); + sb.Append(" FirstName: ").Append(FirstName).Append("\n"); + sb.Append(" LastName: ").Append(LastName).Append("\n"); + sb.Append(" Email: ").Append(Email).Append("\n"); + sb.Append(" Password: ").Append(Password).Append("\n"); + sb.Append(" Phone: ").Append(Phone).Append("\n"); + sb.Append(" UserStatus: ").Append(UserStatus).Append("\n"); + + sb.Append("}\n"); + return sb.ToString(); + } - private Id Id; + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } - /// - /// Gets or Sets Id - /// - [DataMember(Name="id", EmitDefaultValue=false)] - public Id Id { get; set; } - - - private Username Username; + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object obj) + { + // credit: http://stackoverflow.com/a/10454552/677735 + return this.Equals(obj as User); + } - /// - /// Gets or Sets Username - /// - [DataMember(Name="username", EmitDefaultValue=false)] - public Username Username { get; set; } - - - private FirstName FirstName; + /// + /// Returns true if User instances are equal + /// + /// Instance of User to be compared + /// Boolean + public bool Equals(User other) + { + // credit: http://stackoverflow.com/a/10454552/677735 + if (other == null) + return false; - /// - /// Gets or Sets FirstName - /// - [DataMember(Name="firstName", EmitDefaultValue=false)] - public FirstName FirstName { get; set; } - - - private LastName LastName; + return + ( + this.Id == other.Id || + this.Id != null && + this.Id.Equals(other.Id) + ) && + ( + this.Username == other.Username || + this.Username != null && + this.Username.Equals(other.Username) + ) && + ( + this.FirstName == other.FirstName || + this.FirstName != null && + this.FirstName.Equals(other.FirstName) + ) && + ( + this.LastName == other.LastName || + this.LastName != null && + this.LastName.Equals(other.LastName) + ) && + ( + this.Email == other.Email || + this.Email != null && + this.Email.Equals(other.Email) + ) && + ( + this.Password == other.Password || + this.Password != null && + this.Password.Equals(other.Password) + ) && + ( + this.Phone == other.Phone || + this.Phone != null && + this.Phone.Equals(other.Phone) + ) && + ( + this.UserStatus == other.UserStatus || + this.UserStatus != null && + this.UserStatus.Equals(other.UserStatus) + ); + } - /// - /// Gets or Sets LastName - /// - [DataMember(Name="lastName", EmitDefaultValue=false)] - public LastName LastName { get; set; } - - - private Email Email; + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + // credit: http://stackoverflow.com/a/263416/677735 + unchecked // Overflow is fine, just wrap + { + int hash = 41; + // Suitable nullity checks etc, of course :) + + if (this.Id != null) + hash = hash * 57 + this.Id.GetHashCode(); + + if (this.Username != null) + hash = hash * 57 + this.Username.GetHashCode(); + + if (this.FirstName != null) + hash = hash * 57 + this.FirstName.GetHashCode(); + + if (this.LastName != null) + hash = hash * 57 + this.LastName.GetHashCode(); + + if (this.Email != null) + hash = hash * 57 + this.Email.GetHashCode(); + + if (this.Password != null) + hash = hash * 57 + this.Password.GetHashCode(); + + if (this.Phone != null) + hash = hash * 57 + this.Phone.GetHashCode(); + + if (this.UserStatus != null) + hash = hash * 57 + this.UserStatus.GetHashCode(); + + return hash; + } + } - /// - /// Gets or Sets Email - /// - [DataMember(Name="email", EmitDefaultValue=false)] - public Email Email { get; set; } - - - private Password Password; - - /// - /// Gets or Sets Password - /// - [DataMember(Name="password", EmitDefaultValue=false)] - public Password Password { get; set; } - - - private Phone Phone; - - /// - /// Gets or Sets Phone - /// - [DataMember(Name="phone", EmitDefaultValue=false)] - public Phone Phone { get; set; } - - - private UserStatus UserStatus; - - /// - /// User Status - /// - /// User Status - [DataMember(Name="userStatus", EmitDefaultValue=false)] - public UserStatus UserStatus { get; set; } - - - - /// - /// Gets or Sets Id - /// - [DataMember(Name="id", EmitDefaultValue=false)] - public long? Id { get; set; } - - - /// - /// Gets or Sets Username - /// - [DataMember(Name="username", EmitDefaultValue=false)] - public string Username { get; set; } - - - /// - /// Gets or Sets FirstName - /// - [DataMember(Name="firstName", EmitDefaultValue=false)] - public string FirstName { get; set; } - - - /// - /// Gets or Sets LastName - /// - [DataMember(Name="lastName", EmitDefaultValue=false)] - public string LastName { get; set; } - - - /// - /// Gets or Sets Email - /// - [DataMember(Name="email", EmitDefaultValue=false)] - public string Email { get; set; } - - - /// - /// Gets or Sets Password - /// - [DataMember(Name="password", EmitDefaultValue=false)] - public string Password { get; set; } - - - /// - /// Gets or Sets Phone - /// - [DataMember(Name="phone", EmitDefaultValue=false)] - public string Phone { get; set; } - - - /// - /// User Status - /// - /// User Status - [DataMember(Name="userStatus", EmitDefaultValue=false)] - public int? UserStatus { get; set; } - - - - /// - /// Get the string presentation of the object - /// - /// String presentation of the object - public override string ToString() { - var sb = new StringBuilder(); - sb.Append("class User {\n"); - - sb.Append(" Id: ").Append(Id).Append("\n"); - - sb.Append(" Username: ").Append(Username).Append("\n"); - - sb.Append(" FirstName: ").Append(FirstName).Append("\n"); - - sb.Append(" LastName: ").Append(LastName).Append("\n"); - - sb.Append(" Email: ").Append(Email).Append("\n"); - - sb.Append(" Password: ").Append(Password).Append("\n"); - - sb.Append(" Phone: ").Append(Phone).Append("\n"); - - sb.Append(" UserStatus: ").Append(UserStatus).Append("\n"); - - sb.Append("}\n"); - return sb.ToString(); } - - /// - /// Get the JSON string presentation of the object - /// - /// JSON string presentation of the object - public string ToJson() { - return JsonConvert.SerializeObject(this, Formatting.Indented); - } - -} } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.userprefs b/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.userprefs index 31e5cba141bd..05585bff932a 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.userprefs +++ b/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.userprefs @@ -2,8 +2,25 @@ - + + + + + + + + + + + + + + + + + + diff --git a/samples/client/petstore/csharp/SwaggerClientTest/TestPet.cs b/samples/client/petstore/csharp/SwaggerClientTest/TestPet.cs index 5a42b8703c21..0227a2d9113b 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/TestPet.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/TestPet.cs @@ -1,5 +1,6 @@ using NUnit.Framework; using System; +using System.Linq; using System.IO; using System.Collections.Generic; using IO.Swagger.Api; @@ -144,6 +145,68 @@ namespace SwaggerClient.TestPet } + [Test ()] + public void TestEqual() + { + // create pet + Pet p1 = new Pet(); + p1.Id = petId; + p1.Name = "Csharp test"; + p1.Status = "available"; + // create Category object + Category category1 = new Category(); + category1.Id = 56; + category1.Name = "sample category name2"; + List photoUrls1 = new List(new String[] {"sample photoUrls"}); + // create Tag object + Tag tag1 = new Tag(); + tag1.Id = petId; + tag1.Name = "sample tag name1"; + List tags1 = new List(new Tag[] {tag1}); + p1.Tags = tags1; + p1.Category = category1; + p1.PhotoUrls = photoUrls1; + + // create pet 2 + Pet p2 = new Pet(); + p2.Id = petId; + p2.Name = "Csharp test"; + p2.Status = "available"; + // create Category object + Category category2 = new Category(); + category2.Id = 56; + category2.Name = "sample category name2"; + List photoUrls2 = new List(new String[] {"sample photoUrls"}); + // create Tag object + Tag tag2 = new Tag(); + tag2.Id = petId; + tag2.Name = "sample tag name1"; + List tags2 = new List(new Tag[] {tag2}); + p2.Tags = tags2; + p2.Category = category2; + p2.PhotoUrls = photoUrls2; + + // p1 and p2 should be equal (both object and attribute level) + Assert.IsTrue (category1.Equals (category2)); + Assert.IsTrue (tags1.SequenceEqual (tags2)); + Assert.IsTrue (p1.PhotoUrls.SequenceEqual(p2.PhotoUrls)); + + Assert.IsTrue (p1.Equals (p2)); + + // update attribute to that p1 and p2 are not equal + category2.Name = "new category name"; + Assert.IsFalse(category1.Equals (category2)); + + tags2 = new List (); + Assert.IsFalse (tags1.SequenceEqual (tags2)); + + // photoUrls has not changed so it should be equal + Assert.IsTrue (p1.PhotoUrls.SequenceEqual(p2.PhotoUrls)); + + Assert.IsFalse (p1.Equals (p2)); + + } + } } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll b/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll index c975e54d4bed8fc21372acb08c3eaa6fab9aa969..924934c46233779ca4dd6c58049f0518ece993b2 100755 GIT binary patch delta 12160 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 delta 7459 zcmZ{p3wRS{*2n)dO`5c6(_|(|n}X0<3Kap%Wd#AT+(l5aAghSj3aAAk(1I<3q#*E> ziz_e)D&-DB1xg_Z0$nXogGfO@L=n-h3;jS`K*h^`3-X=!%xhC!o#&a8^E?0Z-p)Ij znWn`HEX5b17A%kd20%2Obo|Y+@XaC4EQf;r0#g*&qZX#>Mym3JWAP;sq4OIU^OTnA zWf;4Z=IVDazEo2ECMLVvCn5uuNm~ zDtWElo?oJ)L#sx$vKY0`_>4Qp^ib|HCXY!|IvdN!^i{eT=gGcqw0<^SDK#F?OE$(n z>rhr0ZJ$q$yCVVP152q-HDi^rk`mS!uIIhRXOytcsC)JSBV|GdrK|Dqgucq%#_|bi zN;hNQgfU8)(Kyx=u(Q6)E!^3he222tcqKo@$jMbmm3Kj@mhoyS4vb%8x79 zMbY?}hF$EYNKAegH?^ab=){+twDak{m^B5J)IzsJyDfq3Bt+W+o5hDcP+^>zmg>zC zQ}PtJDHfTN;SMGSyZ@0QW}8B}4qJd06dPyH-$FxX+yUIq^S1}KkeacNw0yA$dm!{H z+XLIk%|9;kGb!Jk{rsVHRhp77uwQilHf7DXB8Wz2H)2h{NuZLMBiI95MUPP$_1IR- zz|W~7=nEX6zPJN>KwMe*_lT@^l-0D;{Kt4qzTgbfXtZAk`xnnyD8axhWVwfyv~_xB z6n>%49)DJqrj+fl{jMCg-<87_DTnRP%fV8R*3hsXzs^vU!)z<{`f}L*s2panK{;%H zTn;lFh?FCp_fXVBN)5{)F6cv|8b-hA9fEuf|9<_yALsY$%@5LsG_21u=K9N}!R7Ir z<;u%LmP2f2I_>6vO<&C3+&7E(+M%bBI-@Dw6}r#x`NVuZwg9z@Ziz;;ltN1AWsIGX z+)I4D9P}M&L|Po|fofvi(uq=`Su)-uibqU?O%~U9Ok`6rhb5u2k4%nQ|#eEn4b%{D3;du;eNg7vy}LP$2c*o`G6e4 z7IeO*(BO1_MSc>UVoSxdCz)cs>C-`Hb2|IenL;OpVW-naCw-OZcq@5rui0wPz3yY~ zTT#pQ3R^`Jkz}&b=&0>gqtSGrVUKZu#0IEQ**q-6h;MQw!v|xuW^*<4xC1m;zGa*Oj7Q^8K(WTu1QK3&NAI# zdI(=Kb+ZZWN&F+oIGV8l|74oQG!y5UHZU#4|1#}kD#JylZ>ThrluBG;iir_agMTqK zV>*i~Ox>9-<6EWx(@lJjpqTeuMwjvfi#wQ7m7kc-GPP6w&GZvfFXcZ>8dY|ZGFZ96 zl*u$oxyjU@sZdcAF+!I(ky%3ii$tjjpsKy5*c2rcn!7wEI6!Oa6gw@Buyu%*?o>@6 z8bw-EJv~dBrJjnkR!*upA7Sept+P{HOX3JySCU4>;v;M=Crw;O;s{&!YXh9L52tTxgqE<LBJuUZCG@vb>xvq$|*R#MixIXi!=XKY^MD0Z+Y(4E+?fPrI zc+pdCd$gXedBO=p(PoGU@Yl(h@~S^5w&ZaXnNf%>8ID&?;w>4D?UKZn3`ZqXogymq z1isJ(9-9JG2w^j)Wj3gu!L4_&8-3O$KZNuod_P&3rbd@M-fNW{@YR5TP78if-2 z14odk(9<|3NmM8gS06VuQK39!3^z$sC=aDim?SDR8lOuN6&i!ATvHPT8jBK17d;8( zwg5hV(iEve#_HGnL5sH#`KT)t(b;ylx7?PGtCE^{d%6n{TV!gjz4sG&Bz5%;a!*92 zr0*<0+9%>Zrs?(vyv<`LVzAU6r_4zhC$$OQJfb3#Fe~USa6gBu&+`yi?7i#`qIil) zrQW7m38JQ&ROZdr7Q!QGkGIxtAXCyo?<3k`%#`$rca*jSgI_S)UGz@Ymf`}vkI(|~ z18J|J17E_kanl>DwZD!MiMp>$TZYVHGqr_pzqSI!OiR$&cf!6B8zuGi9o1H$)pU`$ z1cQ91wY4af^aN$DL)HwTEkvI02W>ruNh&0I10!Y%Oim(+>0?Wi>g{YeX9?rbsM!lXw# zCnoD5RGNsK#3n?wOuSs|zy*`+6BBRKcR>9g(QvkXO5$C{S7|Y`d zu@e<$4(25asxe6vkLaXqFM8XF%aW)!qMs!#B5fDwQsR+HN!x|SlHN${r@xImC53{C zj}m4{tV(=R-;JS?jwDVb8Y$^Bn#>+dlXRY@y$2&5}0g?_!*!c1gR4iX>$vRR#4bERxtS=>$=!B(dIo*eOY@cOR;l%r)&t^}NWM z_M_G$-lqMyU=lBBKh*h=CGAI?Br)ya0W_B==6wK}Oy&^Ps4z7yTQzD-;vuSWQnnLU zLNzW+5>>0l&ytS&3h^Gam(1b6@Ri%%Lt{zVNreapai_$bq;gvrS(3()co0J+O(E?d zMoKCn?R`v>w1~9#Q6lLQ4R{D^B>hYS9>QixrPS^NgeAQ}?LI*8n8b>te)?g2E$Q8) zM~SX6nYE}v*2|G{*I<}QT#Fivm)g;!Y}BCZ0yFa?re`FbVVb(o)UGg<1nJitahv>w zF~=~;;}_j*mXyYnML*cddl+f=nuLyKrhGeV=Me2&ZAE6Cvd`Wrss<^Ngmwfo`B`pi zN3gg(--zoJAs$7CJ0lH`qL(D0eTZ|NBHD+zCP`?=P{r?ZW~aw+Op?%!qqj_+f84GCK7 zs6%S1b~^r$+D1E1Id^N<;?J>dj4QD==XKnOZ5?$T?HuP6iz0gXmfF7JQKG~sPISPS zSPf%wKQ!DB)>u~FG`44SsizJ4N3Zu7)#W?Y16E_|)@E({J4UEFh9FN}Yn|YDk^MR3 zzwTJY{%W>s*_KiKfN^~5Ey~x%m91Tr=Em(6UHlKmg`d@kKZ@B_vBfPckTs6(7#Q5(tZ=^N ztaYAue(h|Okdly|ke%??gkcG}2~Q=AOPHEalc2bwUF}_+Tz9*AxCXn*T;;BiYq#sX z>yqnRR}*(LcT0Ds`!4sr?qTjx?&a=8ZGe`ejn<}X%eA%IUhRGDW35)Zq+Qq2^|pEs z{ULpfK3gxD%i`D@9lSclf+uP3XbjDECJ@FrOmo6wg0&16+< zp+80yl#^Al6@MYWf~<;d=t%zdAbqF^;Vyz5WL3P4F68eftJ3S^-Q@2jtI|JT?jgU5 ztV*w0-O1liR>cAIB)^)hN^dT`$q$oN>1CuZ`R|ie=>?-7`5%x~ahQGzRp_DHpZp`R z-cNAUc2lMV?AOs#@UWNB5VW^_-_63Ob!0I=yuI5M>H|>okXP`DU^@-tkJTvTm1CRlbjkq0+{Yw4lo_ceHXv IS(s`2e@@qhQvd(} diff --git a/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll.mdb b/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll.mdb index 5c1092d07fca586d960495ae792c0d8c2f9a8e0f..d0d7f1b3ccf019e9415c309a02e72acc995aa18f 100644 GIT binary patch literal 21107 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 w%KKi#}GmH+?% literal 19469 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 delta 7459 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 IS(s`2e@@qhQvd(} diff --git a/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.dll.mdb b/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.dll.mdb index 5c1092d07fca586d960495ae792c0d8c2f9a8e0f..d0d7f1b3ccf019e9415c309a02e72acc995aa18f 100644 GIT binary patch literal 21107 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 w%KKi#}GmH+?% literal 19469 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 + + + com.brsanthu + migbase64 + 2.2 + + junit diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/ApiKeyAuth.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/ApiKeyAuth.java index 194935b09e70..0011210c8ccc 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/ApiKeyAuth.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/ApiKeyAuth.java @@ -5,7 +5,7 @@ import io.swagger.client.Pair; import java.util.Map; import java.util.List; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-20T17:28:23.285+08:00") public class ApiKeyAuth implements Authentication { private final String location; private final String paramName; @@ -44,6 +44,9 @@ public class ApiKeyAuth implements Authentication { @Override public void applyToParams(List queryParams, Map headerParams) { + if (apiKey == null) { + return; + } String value; if (apiKeyPrefix != null) { value = apiKeyPrefix + " " + apiKey; diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/HttpBasicAuth.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/HttpBasicAuth.java index f731e1ac79de..8c2aa444678b 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/HttpBasicAuth.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/HttpBasicAuth.java @@ -2,13 +2,14 @@ package io.swagger.client.auth; import io.swagger.client.Pair; +import com.migcomponents.migbase64.Base64; + import java.util.Map; import java.util.List; import java.io.UnsupportedEncodingException; -import javax.xml.bind.DatatypeConverter; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-22T13:15:32.345+08:00") public class HttpBasicAuth implements Authentication { private String username; private String password; @@ -31,9 +32,12 @@ public class HttpBasicAuth implements Authentication { @Override public void applyToParams(List queryParams, Map headerParams) { + if (username == null && password == null) { + return; + } String str = (username == null ? "" : username) + ":" + (password == null ? "" : password); try { - headerParams.put("Authorization", "Basic " + DatatypeConverter.printBase64Binary(str.getBytes("UTF-8"))); + headerParams.put("Authorization", "Basic " + Base64.encodeToString(str.getBytes("UTF-8"), false)); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } diff --git a/samples/client/petstore/java/jersey2/pom.xml b/samples/client/petstore/java/jersey2/pom.xml index e5353a66ea54..0881cc293746 100644 --- a/samples/client/petstore/java/jersey2/pom.xml +++ b/samples/client/petstore/java/jersey2/pom.xml @@ -152,6 +152,13 @@ ${jodatime-version} + + + com.brsanthu + migbase64 + 2.2 + + junit diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/ApiKeyAuth.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/ApiKeyAuth.java index d7d3d3e63b09..bc3bdaefc449 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/ApiKeyAuth.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/ApiKeyAuth.java @@ -5,7 +5,7 @@ import io.swagger.client.Pair; import java.util.Map; import java.util.List; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-17T11:17:50.535-05:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-20T17:28:47.318+08:00") public class ApiKeyAuth implements Authentication { private final String location; private final String paramName; @@ -44,6 +44,9 @@ public class ApiKeyAuth implements Authentication { @Override public void applyToParams(List queryParams, Map headerParams) { + if (apiKey == null) { + return; + } String value; if (apiKeyPrefix != null) { value = apiKeyPrefix + " " + apiKey; diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/HttpBasicAuth.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/HttpBasicAuth.java index 390502ab9e53..071139d656a9 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/HttpBasicAuth.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/HttpBasicAuth.java @@ -2,13 +2,14 @@ package io.swagger.client.auth; import io.swagger.client.Pair; +import com.migcomponents.migbase64.Base64; + import java.util.Map; import java.util.List; import java.io.UnsupportedEncodingException; -import javax.xml.bind.DatatypeConverter; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-17T11:17:50.535-05:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-22T13:15:27.225+08:00") public class HttpBasicAuth implements Authentication { private String username; private String password; @@ -31,9 +32,12 @@ public class HttpBasicAuth implements Authentication { @Override public void applyToParams(List queryParams, Map headerParams) { + if (username == null && password == null) { + return; + } String str = (username == null ? "" : username) + ":" + (password == null ? "" : password); try { - headerParams.put("Authorization", "Basic " + DatatypeConverter.printBase64Binary(str.getBytes("UTF-8"))); + headerParams.put("Authorization", "Basic " + Base64.encodeToString(str.getBytes("UTF-8"), false)); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } diff --git a/samples/client/petstore/java/okhttp-gson/pom.xml b/samples/client/petstore/java/okhttp-gson/pom.xml index 2442e1c318e8..9fa057be9398 100644 --- a/samples/client/petstore/java/okhttp-gson/pom.xml +++ b/samples/client/petstore/java/okhttp-gson/pom.xml @@ -122,11 +122,6 @@ gson ${gson-version} - - com.brsanthu - migbase64 - 2.2 - diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/ApiClient.java index 51c3d5464f24..6e4e299ad3ae 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/ApiClient.java @@ -64,6 +64,38 @@ import io.swagger.client.auth.ApiKeyAuth; import io.swagger.client.auth.OAuth; public class ApiClient { + public static final double JAVA_VERSION; + public static final boolean IS_ANDROID; + public static final int ANDROID_SDK_VERSION; + + static { + JAVA_VERSION = Double.parseDouble(System.getProperty("java.specification.version")); + boolean isAndroid; + try { + Class.forName("android.app.Activity"); + isAndroid = true; + } catch (ClassNotFoundException e) { + isAndroid = false; + } + IS_ANDROID = isAndroid; + int sdkVersion = 0; + if (IS_ANDROID) { + try { + sdkVersion = Class.forName("android.os.Build$VERSION").getField("SDK_INT").getInt(null); + } catch (Exception e) { + try { + sdkVersion = Integer.parseInt((String) Class.forName("android.os.Build$VERSION").getField("SDK").get(null)); + } catch (Exception e2) { } + } + } + ANDROID_SDK_VERSION = sdkVersion; + } + + /** + * The datetime format to be used when lenientDatetimeFormat is enabled. + */ + public static final String LENIENT_DATETIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; + private String basePath = "http://petstore.swagger.io/v2"; private boolean lenientOnJson = false; private boolean debugging = false; @@ -100,8 +132,7 @@ public class ApiClient { this.dateFormat = new SimpleDateFormat("yyyy-MM-dd"); // Always use UTC as the default time zone when dealing with date (without time). this.dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); - // Use the system's default time zone when dealing with datetime (mainly formatting). - this.datetimeFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); + initDatetimeFormat(); // Be lenient on datetime formats when parsing datetime from string. // See parseDatetime. @@ -262,25 +293,30 @@ public class ApiClient { if (str == null) return null; + DateFormat format; if (lenientDatetimeFormat) { /* - * When lenientDatetimeFormat is enabled, process the given string - * to support various formats defined by ISO 8601. + * When lenientDatetimeFormat is enabled, normalize the date string + * into LENIENT_DATETIME_FORMAT to support various formats + * defined by ISO 8601. */ // normalize time zone - // trailing "Z": 2015-08-16T08:20:05Z => 2015-08-16T08:20:05+00:00 - str = str.replaceAll("[zZ]\\z", "+00:00"); - // add colon: 2015-08-16T08:20:05+0000 => 2015-08-16T08:20:05+00:00 - str = str.replaceAll("([+-]\\d{2})(\\d{2})\\z", "$1:$2"); - // expand time zone: 2015-08-16T08:20:05+00 => 2015-08-16T08:20:05+00:00 - str = str.replaceAll("([+-]\\d{2})\\z", "$1:00"); + // trailing "Z": 2015-08-16T08:20:05Z => 2015-08-16T08:20:05+0000 + str = str.replaceAll("[zZ]\\z", "+0000"); + // remove colon in time zone: 2015-08-16T08:20:05+00:00 => 2015-08-16T08:20:05+0000 + str = str.replaceAll("([+-]\\d{2}):(\\d{2})\\z", "$1$2"); + // expand time zone: 2015-08-16T08:20:05+00 => 2015-08-16T08:20:05+0000 + str = str.replaceAll("([+-]\\d{2})\\z", "$100"); // add milliseconds when missing - // 2015-08-16T08:20:05+00:00 => 2015-08-16T08:20:05.000+00:00 - str = str.replaceAll("(:\\d{1,2})([+-]\\d{2}:\\d{2})\\z", "$1.000$2"); + // 2015-08-16T08:20:05+0000 => 2015-08-16T08:20:05.000+0000 + str = str.replaceAll("(:\\d{1,2})([+-]\\d{4})\\z", "$1.000$2"); + format = new SimpleDateFormat(LENIENT_DATETIME_FORMAT); + } else { + format = this.datetimeFormat; } try { - return datetimeFormat.parse(str); + return format.parse(str); } catch (ParseException e) { throw new RuntimeException(e); } @@ -915,6 +951,31 @@ public class ApiClient { } } + /** + * Initialize datetime format according to the current environment, e.g. Java 1.7 and Android. + */ + private void initDatetimeFormat() { + String formatWithTimeZone = null; + if (IS_ANDROID) { + if (ANDROID_SDK_VERSION >= 18) { + // The time zone format "ZZZZZ" is available since Android 4.3 (SDK version 18) + formatWithTimeZone = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"; + } + } else if (JAVA_VERSION >= 1.7) { + // The time zone format "XXX" is available since Java 1.7 + formatWithTimeZone = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"; + } + if (formatWithTimeZone != null) { + this.datetimeFormat = new SimpleDateFormat(formatWithTimeZone); + // NOTE: Use the system's default time zone (mainly for datetime formatting). + } else { + // Use a common format that works across all systems. + this.datetimeFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); + // Always use the UTC time zone as we are using a constant trailing "Z" here. + this.datetimeFormat.setTimeZone(TimeZone.getTimeZone("UTC")); + } + } + /** * Apply SSL related settings to httpClient according to the current values of * verifyingSsl and sslCaCert. diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/auth/ApiKeyAuth.java b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/auth/ApiKeyAuth.java index c072321f457f..fbfda66f881b 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/auth/ApiKeyAuth.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/auth/ApiKeyAuth.java @@ -5,7 +5,7 @@ import io.swagger.client.Pair; import java.util.Map; import java.util.List; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-10-20T11:42:25.339-07:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-20T17:28:54.086+08:00") public class ApiKeyAuth implements Authentication { private final String location; private final String paramName; @@ -44,6 +44,9 @@ public class ApiKeyAuth implements Authentication { @Override public void applyToParams(List queryParams, Map headerParams) { + if (apiKey == null) { + return; + } String value; if (apiKeyPrefix != null) { value = apiKeyPrefix + " " + apiKey; diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/auth/HttpBasicAuth.java b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/auth/HttpBasicAuth.java index d2b564331694..6ed16d1db30a 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/auth/HttpBasicAuth.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/auth/HttpBasicAuth.java @@ -2,7 +2,7 @@ package io.swagger.client.auth; import io.swagger.client.Pair; -import com.migcomponents.migbase64.Base64; +import com.squareup.okhttp.Credentials; import java.util.Map; import java.util.List; @@ -31,11 +31,11 @@ public class HttpBasicAuth implements Authentication { @Override public void applyToParams(List queryParams, Map headerParams) { - String str = (username == null ? "" : username) + ":" + (password == null ? "" : password); - try { - headerParams.put("Authorization", "Basic " + Base64.encodeToString(str.getBytes("UTF-8"), false)); - } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e); + if (username == null && password == null) { + return; } + headerParams.put("Authorization", Credentials.basic( + username == null ? "" : username, + password == null ? "" : password)); } } diff --git a/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/auth/ApiKeyAuthTest.java b/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/auth/ApiKeyAuthTest.java index 5bdb4fb78fba..3715e9724e69 100644 --- a/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/auth/ApiKeyAuthTest.java +++ b/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/auth/ApiKeyAuthTest.java @@ -29,9 +29,23 @@ public class ApiKeyAuthTest { assertEquals(0, headerParams.size()); } + @Test + public void testApplyToParamsInQueryWithNullValue() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + ApiKeyAuth auth = new ApiKeyAuth("query", "api_key"); + auth.setApiKey(null); + auth.applyToParams(queryParams, headerParams); + + // no changes to parameters + assertEquals(0, queryParams.size()); + assertEquals(0, headerParams.size()); + } + @Test public void testApplyToParamsInHeaderWithPrefix() { - List queryParams = new ArrayList(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); ApiKeyAuth auth = new ApiKeyAuth("header", "X-API-TOKEN"); @@ -44,4 +58,19 @@ public class ApiKeyAuthTest { assertEquals(1, headerParams.size()); assertEquals("Token my-api-token", headerParams.get("X-API-TOKEN")); } + + @Test + public void testApplyToParamsInHeaderWithNullValue() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + ApiKeyAuth auth = new ApiKeyAuth("header", "X-API-TOKEN"); + auth.setApiKey(null); + auth.setApiKeyPrefix("Token"); + auth.applyToParams(queryParams, headerParams); + + // no changes to parameters + assertEquals(0, queryParams.size()); + assertEquals(0, headerParams.size()); + } } diff --git a/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/auth/HttpBasicAuthTest.java b/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/auth/HttpBasicAuthTest.java index 52c5497ba83e..ddee04f57fcb 100644 --- a/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/auth/HttpBasicAuthTest.java +++ b/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/auth/HttpBasicAuthTest.java @@ -48,5 +48,15 @@ public class HttpBasicAuthTest { // the string below is base64-encoded result of "my-username:" with the "Basic " prefix expected = "Basic bXktdXNlcm5hbWU6"; assertEquals(expected, headerParams.get("Authorization")); + + // null username and password should be ignored + queryParams = new ArrayList(); + headerParams = new HashMap(); + auth.setUsername(null); + auth.setPassword(null); + auth.applyToParams(queryParams, headerParams); + // no changes to parameters + assertEquals(0, queryParams.size()); + assertEquals(0, headerParams.size()); } } diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/ApiClient.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/ApiClient.pm index dbd822cc1d4a..11f2ab3f2366 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/ApiClient.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/ApiClient.pm @@ -317,18 +317,24 @@ sub update_params_for_auth { foreach my $auth (@$auth_settings) { # determine which one to use if (!defined($auth)) { + # TODO show warning about auth setting not defined } elsif ($auth eq 'api_key') { - $header_params->{'api_key'} = $self->get_api_key_with_prefix('api_key'); + my $api_key = $self->get_api_key_with_prefix('api_key'); + if ($api_key) { + $header_params->{'api_key'} = $api_key; + } } elsif ($auth eq 'petstore_auth') { - $header_params->{'Authorization'} = 'Bearer ' . $WWW::SwaggerClient::Configuration::access_token; + if ($WWW::SwaggerClient::Configuration::access_token) { + $header_params->{'Authorization'} = 'Bearer ' . $WWW::SwaggerClient::Configuration::access_token; + } } else { - # TODO show warning about security definition not found + # TODO show warning about security definition not found } } } diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm index feb5228cb615..941d9e0ce246 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 => '2015-11-13T20:46:43.271Z', + generated_date => '2015-11-20T17:35:18.902+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: 2015-11-13T20:46:43.271Z +=item Build date: 2015-11-20T17:35:18.902+08:00 =item Build package: class io.swagger.codegen.languages.PerlClientCodegen diff --git a/samples/client/petstore/php/SwaggerClient-php/lib/Api/PetApi.php b/samples/client/petstore/php/SwaggerClient-php/lib/Api/PetApi.php index a418ac90b436..bc03a7974d33 100644 --- a/samples/client/petstore/php/SwaggerClient-php/lib/Api/PetApi.php +++ b/samples/client/petstore/php/SwaggerClient-php/lib/Api/PetApi.php @@ -135,8 +135,10 @@ class PetApi $httpBody = $formParams; // for HTTP post (form) } - - $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + // this endpoint requires OAuth (access token) + if ($this->apiClient->getConfig()->getAccessToken() !== null) { + $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + } // make the API Call try @@ -200,8 +202,10 @@ class PetApi $httpBody = $formParams; // for HTTP post (form) } - - $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + // this endpoint requires OAuth (access token) + if ($this->apiClient->getConfig()->getAccessToken() !== null) { + $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + } // make the API Call try @@ -264,8 +268,10 @@ class PetApi $httpBody = $formParams; // for HTTP post (form) } - - $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + // this endpoint requires OAuth (access token) + if ($this->apiClient->getConfig()->getAccessToken() !== null) { + $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + } // make the API Call try @@ -340,8 +346,10 @@ class PetApi $httpBody = $formParams; // for HTTP post (form) } - - $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + // this endpoint requires OAuth (access token) + if ($this->apiClient->getConfig()->getAccessToken() !== null) { + $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + } // make the API Call try @@ -424,13 +432,13 @@ class PetApi $httpBody = $formParams; // for HTTP post (form) } + // this endpoint requires API key authentication $apiKey = $this->apiClient->getApiKeyWithPrefix('api_key'); - if (isset($apiKey)) { + if ($apiKey !== null) { $headerParams['api_key'] = $apiKey; } - // make the API Call try { @@ -526,8 +534,10 @@ class PetApi $httpBody = $formParams; // for HTTP post (form) } - - $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + // this endpoint requires OAuth (access token) + if ($this->apiClient->getConfig()->getAccessToken() !== null) { + $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + } // make the API Call try @@ -602,8 +612,10 @@ class PetApi $httpBody = $formParams; // for HTTP post (form) } - - $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + // this endpoint requires OAuth (access token) + if ($this->apiClient->getConfig()->getAccessToken() !== null) { + $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + } // make the API Call try @@ -694,8 +706,10 @@ class PetApi $httpBody = $formParams; // for HTTP post (form) } - - $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + // this endpoint requires OAuth (access token) + if ($this->apiClient->getConfig()->getAccessToken() !== null) { + $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + } // make the API Call try diff --git a/samples/client/petstore/php/SwaggerClient-php/lib/Api/StoreApi.php b/samples/client/petstore/php/SwaggerClient-php/lib/Api/StoreApi.php index b64b52d22252..d709330b056a 100644 --- a/samples/client/petstore/php/SwaggerClient-php/lib/Api/StoreApi.php +++ b/samples/client/petstore/php/SwaggerClient-php/lib/Api/StoreApi.php @@ -130,13 +130,13 @@ class StoreApi $httpBody = $formParams; // for HTTP post (form) } + // this endpoint requires API key authentication $apiKey = $this->apiClient->getApiKeyWithPrefix('api_key'); - if (isset($apiKey)) { + if ($apiKey !== null) { $headerParams['api_key'] = $apiKey; } - // make the API Call try { diff --git a/samples/client/petstore/php/SwaggerClient-php/lib/ApiClient.php b/samples/client/petstore/php/SwaggerClient-php/lib/ApiClient.php index 982b8955a15c..a0bb07273e49 100644 --- a/samples/client/petstore/php/SwaggerClient-php/lib/ApiClient.php +++ b/samples/client/petstore/php/SwaggerClient-php/lib/ApiClient.php @@ -69,7 +69,7 @@ class ApiClient * Constructor of the class * @param Configuration $config config for this ApiClient */ - function __construct(Configuration $config = null) + public function __construct(Configuration $config = null) { if ($config == null) { $config = Configuration::getDefaultConfiguration(); diff --git a/samples/client/petstore/php/SwaggerClient-php/lib/ObjectSerializer.php b/samples/client/petstore/php/SwaggerClient-php/lib/ObjectSerializer.php index efdc1c896ab4..0d281b9d1fa3 100644 --- a/samples/client/petstore/php/SwaggerClient-php/lib/ObjectSerializer.php +++ b/samples/client/petstore/php/SwaggerClient-php/lib/ObjectSerializer.php @@ -193,7 +193,7 @@ class ObjectSerializer $deserialized = $values; } elseif ($class === '\DateTime') { $deserialized = new \DateTime($data); - } elseif (in_array($class, array('void', 'bool', 'string', 'double', 'byte', 'mixed', 'integer', 'float', 'int', 'DateTime', 'number', 'boolean', 'object'))) { + } elseif (in_array($class, array('integer', 'int', 'void', 'number', 'object', 'double', 'float', 'byte', 'DateTime', 'string', 'mixed', 'boolean', 'bool'))) { settype($data, $class); $deserialized = $data; } elseif ($class === '\SplFileObject') { diff --git a/samples/client/petstore/python/.coverage b/samples/client/petstore/python/.coverage index 03f8b2a2d03d..ddd00f77a034 100644 --- a/samples/client/petstore/python/.coverage +++ b/samples/client/petstore/python/.coverage @@ -1 +1 @@ -!coverage.py: This is a private format, don't read it directly!{"runs": [{"brief_sys": "CPython 3.4.3 Darwin"}], "lines": {"/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/models/user.py": [70, 136, 202, 272, 81, 147, 213, 22, 25, 92, 29, 158, 224, 103, 169, 235, 114, 19, 180, 30, 246, 266, 191, 125, 21], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/rest.py": [20, 21, 23, 24, 25, 26, 27, 28, 31, 33, 35, 36, 40, 42, 48, 51, 53, 54, 55, 56, 57, 59, 63, 65, 72, 74, 82, 83, 88, 92, 95, 98, 101, 102, 103, 104, 105, 106, 109, 110, 121, 122, 124, 129, 130, 132, 135, 137, 138, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 155, 156, 159, 160, 161, 166, 170, 171, 174, 176, 177, 179, 181, 182, 183, 184, 186, 191, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 210, 211, 212, 213, 214, 215, 217, 225, 227, 228, 229, 230, 231, 232, 239, 243, 244, 245, 246, 248, 249, 251], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/models/__init__.py": [1, 4, 5, 6, 7, 8], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/apis/__init__.py": [1, 4, 5, 6], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/models/tag.py": [72, 74, 109, 19, 21, 22, 104, 25, 29, 30, 96, 100, 114, 102, 39, 40, 41, 103, 44, 45, 46, 112, 49, 50, 83, 116, 94, 52, 122, 61, 85, 63], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/models/pet.py": [128, 130, 150, 172, 139, 141, 19, 215, 21, 22, 152, 25, 29, 30, 161, 163, 39, 40, 41, 42, 43, 44, 45, 174, 48, 49, 50, 51, 52, 53, 54, 183, 57, 58, 59, 60, 61, 62, 64, 194, 195, 200, 73, 202, 75, 206, 208, 209, 210, 211, 84, 213, 86, 185, 216, 218, 220, 222, 95, 97, 226, 228, 106, 108, 117, 119, 212], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/apis/pet_api.py": [469, 18, 20, 22, 23, 536, 26, 539, 28, 29, 69, 32, 545, 546, 548, 37, 39, 40, 41, 42, 555, 44, 557, 558, 559, 48, 561, 562, 564, 567, 568, 569, 70, 573, 574, 577, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 591, 80, 82, 83, 85, 87, 89, 91, 92, 94, 95, 96, 99, 100, 101, 614, 617, 618, 620, 621, 622, 111, 157, 113, 114, 627, 628, 106, 630, 631, 120, 633, 634, 635, 637, 639, 641, 642, 643, 644, 645, 646, 449, 648, 651, 652, 653, 109, 144, 657, 658, 147, 148, 661, 73, 663, 664, 665, 666, 155, 668, 538, 670, 671, 160, 112, 162, 164, 166, 167, 169, 170, 171, 174, 175, 176, 115, 180, 181, 184, 116, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 118, 198, 535, 119, 121, 219, 220, 222, 549, 224, 123, 229, 230, 232, 233, 551, 237, 238, 239, 552, 243, 244, 246, 553, 249, 250, 383, 255, 256, 259, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 673, 273, 46, 294, 295, 297, 298, 299, 304, 305, 307, 308, 310, 312, 313, 314, 223, 316, 318, 319, 321, 324, 325, 326, 330, 331, 45, 334, 336, 337, 338, 339, 340, 667, 342, 343, 344, 345, 346, 348, 540, 145, 483, 369, 372, 373, 375, 376, 377, 382, 149, 385, 386, 235, 388, 389, 390, 392, 394, 396, 397, 399, 402, 403, 404, 408, 409, 412, 154, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 426, 669, 72, 105, 158, 241, 74, 117, 672, 452, 453, 455, 456, 457, 462, 463, 465, 466, 468, 532, 470, 472, 474, 79, 476, 477, 478, 479, 480, 481, 251, 486, 487, 488, 492, 493, 496, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 341], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/__init__.py": [1, 4, 5, 6, 7, 8, 11, 12, 13, 16, 18, 20], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/apis/store_api.py": [273, 18, 20, 22, 23, 26, 28, 29, 32, 37, 39, 40, 41, 44, 46, 48, 195, 68, 69, 71, 72, 79, 81, 82, 84, 86, 88, 90, 91, 93, 96, 97, 98, 102, 103, 106, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/models/category.py": [72, 74, 109, 19, 21, 22, 104, 25, 29, 30, 96, 100, 114, 102, 39, 40, 41, 103, 44, 45, 46, 112, 49, 50, 83, 116, 94, 52, 122, 61, 85, 63], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/models/order.py": [130, 44, 141, 45, 19, 21, 22, 152, 25, 29, 30, 52, 161, 163, 39, 40, 41, 42, 43, 172, 173, 174, 175, 48, 49, 50, 51, 180, 53, 54, 57, 58, 59, 60, 61, 62, 191, 64, 202, 75, 86, 176, 222, 97, 228, 178, 108, 119], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/api_client.py": [516, 523, 524, 525, 19, 21, 22, 535, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 40, 42, 44, 49, 52, 566, 567, 568, 569, 570, 571, 573, 68, 69, 70, 75, 76, 77, 79, 80, 82, 84, 91, 96, 98, 102, 103, 104, 107, 108, 109, 111, 112, 115, 116, 117, 118, 119, 120, 123, 124, 125, 126, 129, 130, 131, 134, 137, 138, 23, 141, 144, 145, 146, 147, 149, 152, 153, 155, 157, 158, 160, 162, 171, 172, 174, 176, 191, 192, 544, 194, 195, 196, 197, 198, 199, 200, 201, 202, 204, 205, 212, 213, 214, 216, 217, 219, 231, 235, 236, 240, 242, 251, 252, 254, 255, 256, 257, 258, 260, 261, 262, 263, 556, 267, 268, 269, 272, 274, 275, 276, 278, 279, 280, 281, 283, 286, 287, 288, 564, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 332, 333, 337, 338, 339, 340, 341, 345, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 369, 370, 371, 372, 379, 387, 389, 390, 392, 393, 394, 395, 397, 398, 399, 400, 401, 402, 404, 406, 413, 414, 416, 418, 419, 421, 423, 430, 431, 433, 435, 436, 438, 440, 501, 448, 450, 453, 454, 455, 456, 457, 465, 546, 491, 500, 545, 506, 508], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/configuration.py": [135, 136, 137, 138, 139, 142, 19, 149, 22, 23, 25, 26, 27, 29, 158, 31, 32, 34, 36, 37, 39, 40, 41, 170, 43, 172, 46, 47, 189, 179, 52, 54, 59, 61, 190, 63, 192, 224, 67, 69, 71, 200, 73, 204, 80, 81, 82, 84, 213, 86, 199, 88, 90, 219, 92, 221, 222, 223, 96, 225, 98, 100, 102, 230, 104, 167, 111, 76, 168, 157, 122, 123, 42, 21], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/apis/user_api.py": [32, 37, 198, 39, 423, 582, 48, 273, 18, 20, 501, 22, 23, 26, 123, 28, 29, 351]}} \ No newline at end of file +!coverage.py: This is a private format, don't read it directly!{"lines": {"/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/apis/pet_api.py": [512, 513, 514, 516, 86, 18, 20, 22, 23, 26, 539, 28, 29, 542, 543, 32, 548, 37, 39, 40, 41, 42, 555, 556, 45, 558, 559, 560, 562, 564, 565, 566, 568, 569, 571, 574, 575, 576, 580, 581, 70, 584, 73, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 598, 88, 90, 92, 93, 95, 96, 97, 100, 101, 102, 106, 107, 621, 622, 624, 625, 626, 79, 116, 117, 118, 631, 632, 121, 122, 635, 124, 638, 639, 641, 642, 643, 645, 647, 649, 650, 651, 652, 653, 654, 656, 145, 146, 659, 148, 661, 150, 665, 666, 155, 156, 538, 159, 160, 673, 162, 675, 164, 677, 166, 679, 168, 169, 171, 172, 173, 541, 176, 177, 178, 115, 182, 183, 186, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 552, 200, 119, 120, 377, 221, 222, 549, 224, 225, 226, 231, 232, 431, 235, 236, 110, 238, 240, 241, 242, 244, 246, 247, 249, 383, 252, 253, 254, 258, 259, 262, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 276, 46, 48, 297, 298, 300, 301, 302, 44, 307, 308, 311, 312, 314, 316, 317, 318, 320, 322, 323, 325, 113, 328, 329, 330, 334, 335, 338, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 485, 352, 84, 114, 373, 374, 376, 660, 378, 149, 384, 387, 390, 391, 393, 394, 395, 397, 399, 401, 402, 404, 407, 408, 409, 413, 414, 69, 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 669, 72, 671, 74, 672, 83, 454, 455, 457, 458, 459, 674, 112, 464, 465, 468, 471, 472, 676, 474, 475, 476, 478, 480, 80, 482, 483, 484, 678, 486, 487, 489, 492, 493, 494, 680, 498, 499, 502, 681, 504, 505, 506, 507, 508, 509, 510, 511], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/apis/user_api.py": [32, 355, 37, 39, 200, 124, 428, 589, 48, 18, 20, 22, 23, 276, 26, 507, 28, 29], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/api_client.py": [518, 525, 526, 527, 19, 21, 22, 23, 24, 537, 26, 27, 28, 29, 30, 31, 32, 33, 34, 547, 36, 37, 40, 42, 44, 558, 49, 52, 566, 568, 569, 570, 571, 572, 573, 575, 68, 69, 70, 75, 76, 77, 79, 80, 82, 84, 91, 96, 98, 102, 103, 104, 107, 108, 109, 111, 112, 115, 116, 117, 118, 119, 120, 123, 124, 125, 126, 129, 130, 131, 134, 137, 138, 141, 144, 145, 146, 147, 149, 152, 153, 155, 157, 158, 160, 162, 171, 172, 174, 176, 191, 192, 194, 195, 196, 197, 198, 199, 200, 201, 202, 204, 205, 212, 213, 214, 216, 217, 219, 231, 235, 236, 240, 242, 251, 252, 254, 255, 256, 257, 258, 260, 261, 262, 263, 267, 268, 269, 272, 274, 275, 276, 278, 279, 280, 281, 283, 286, 287, 288, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 332, 333, 337, 338, 339, 340, 341, 345, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 369, 370, 371, 372, 379, 387, 389, 390, 392, 393, 394, 395, 548, 397, 398, 399, 400, 401, 402, 404, 406, 413, 414, 416, 418, 419, 421, 423, 430, 431, 433, 435, 436, 438, 440, 448, 450, 453, 454, 455, 456, 458, 459, 467, 546, 493, 502, 503, 508, 510], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/models/category.py": [72, 74, 109, 19, 21, 22, 104, 25, 29, 30, 96, 100, 114, 102, 39, 40, 41, 103, 44, 45, 46, 112, 49, 50, 83, 116, 94, 52, 122, 61, 85, 63], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/rest.py": [20, 21, 23, 24, 25, 26, 27, 28, 31, 33, 35, 36, 40, 42, 48, 51, 53, 54, 55, 56, 57, 59, 63, 65, 72, 74, 82, 83, 88, 92, 95, 98, 101, 102, 103, 104, 105, 106, 109, 110, 121, 122, 124, 129, 130, 132, 135, 137, 138, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 155, 156, 159, 160, 161, 166, 170, 171, 174, 176, 177, 179, 181, 182, 183, 184, 186, 191, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 210, 211, 212, 213, 214, 215, 217, 225, 227, 228, 229, 230, 231, 232, 239, 243, 244, 245, 246, 248, 249, 251], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/models/__init__.py": [1, 4, 5, 6, 7, 8], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/apis/store_api.py": [18, 276, 22, 23, 26, 28, 29, 197, 32, 37, 39, 40, 41, 44, 46, 48, 20, 68, 69, 71, 72, 79, 82, 83, 85, 87, 89, 91, 92, 94, 97, 98, 99, 103, 104, 107, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/configuration.py": [135, 136, 137, 138, 139, 142, 19, 149, 22, 23, 25, 26, 27, 29, 158, 31, 32, 34, 36, 37, 39, 40, 41, 170, 43, 172, 46, 47, 189, 179, 52, 54, 59, 61, 190, 63, 192, 224, 67, 69, 71, 200, 73, 204, 80, 81, 82, 84, 213, 86, 199, 88, 90, 219, 92, 221, 222, 223, 96, 225, 98, 100, 102, 230, 104, 167, 111, 76, 168, 157, 122, 123, 42, 21], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/__init__.py": [1, 4, 5, 6, 7, 8, 11, 12, 13, 16, 18, 20], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/models/pet.py": [128, 130, 150, 172, 139, 141, 19, 215, 21, 22, 152, 25, 29, 30, 161, 163, 39, 40, 41, 42, 43, 44, 45, 174, 48, 49, 50, 51, 52, 53, 54, 183, 57, 58, 59, 60, 61, 62, 64, 194, 195, 200, 73, 202, 75, 206, 208, 209, 210, 211, 84, 213, 86, 185, 216, 218, 220, 222, 95, 97, 226, 228, 106, 108, 117, 119, 212], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/models/user.py": [70, 136, 202, 272, 81, 147, 213, 22, 25, 92, 29, 158, 224, 103, 169, 235, 114, 19, 180, 30, 246, 266, 191, 125, 21], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/apis/__init__.py": [1, 4, 5, 6], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/models/order.py": [130, 44, 141, 45, 19, 21, 22, 152, 25, 29, 30, 52, 161, 163, 39, 40, 41, 42, 43, 172, 173, 174, 175, 48, 49, 50, 51, 180, 53, 54, 57, 58, 59, 60, 61, 62, 191, 64, 202, 75, 86, 176, 222, 97, 228, 178, 108, 119], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/models/tag.py": [72, 74, 109, 19, 21, 22, 104, 25, 29, 30, 96, 100, 114, 102, 39, 40, 41, 103, 44, 45, 46, 112, 49, 50, 83, 116, 94, 52, 122, 61, 85, 63]}} \ No newline at end of file diff --git a/samples/client/petstore/python/dev-requirements.txt.log b/samples/client/petstore/python/dev-requirements.txt.log index 0d8dcbb58319..316a9394b500 100644 --- a/samples/client/petstore/python/dev-requirements.txt.log +++ b/samples/client/petstore/python/dev-requirements.txt.log @@ -20,3 +20,17 @@ Requirement already satisfied (use --upgrade to upgrade): randomize in ./.venv/l Requirement already satisfied (use --upgrade to upgrade): virtualenv>=1.11.2 in ./.venv/lib/python2.7/site-packages (from tox->-r dev-requirements.txt (line 2)) Requirement already satisfied (use --upgrade to upgrade): py>=1.4.17 in ./.venv/lib/python2.7/site-packages (from tox->-r dev-requirements.txt (line 2)) Requirement already satisfied (use --upgrade to upgrade): pluggy<0.4.0,>=0.3.0 in ./.venv/lib/python2.7/site-packages (from tox->-r dev-requirements.txt (line 2)) +Requirement already satisfied (use --upgrade to upgrade): nose in ./venv/lib/python2.7/site-packages (from -r dev-requirements.txt (line 1)) +Requirement already satisfied (use --upgrade to upgrade): tox in ./venv/lib/python2.7/site-packages (from -r dev-requirements.txt (line 2)) +Requirement already satisfied (use --upgrade to upgrade): coverage in ./venv/lib/python2.7/site-packages (from -r dev-requirements.txt (line 3)) +Requirement already satisfied (use --upgrade to upgrade): randomize in ./venv/lib/python2.7/site-packages (from -r dev-requirements.txt (line 4)) +Requirement already satisfied (use --upgrade to upgrade): virtualenv>=1.11.2 in ./venv/lib/python2.7/site-packages (from tox->-r dev-requirements.txt (line 2)) +Requirement already satisfied (use --upgrade to upgrade): py>=1.4.17 in ./venv/lib/python2.7/site-packages (from tox->-r dev-requirements.txt (line 2)) +Requirement already satisfied (use --upgrade to upgrade): pluggy<0.4.0,>=0.3.0 in ./venv/lib/python2.7/site-packages (from tox->-r dev-requirements.txt (line 2)) +Requirement already satisfied (use --upgrade to upgrade): nose in ./venv/lib/python2.7/site-packages (from -r dev-requirements.txt (line 1)) +Requirement already satisfied (use --upgrade to upgrade): tox in ./venv/lib/python2.7/site-packages (from -r dev-requirements.txt (line 2)) +Requirement already satisfied (use --upgrade to upgrade): coverage in ./venv/lib/python2.7/site-packages (from -r dev-requirements.txt (line 3)) +Requirement already satisfied (use --upgrade to upgrade): randomize in ./venv/lib/python2.7/site-packages (from -r dev-requirements.txt (line 4)) +Requirement already satisfied (use --upgrade to upgrade): virtualenv>=1.11.2 in ./venv/lib/python2.7/site-packages (from tox->-r dev-requirements.txt (line 2)) +Requirement already satisfied (use --upgrade to upgrade): py>=1.4.17 in ./venv/lib/python2.7/site-packages (from tox->-r dev-requirements.txt (line 2)) +Requirement already satisfied (use --upgrade to upgrade): pluggy<0.4.0,>=0.3.0 in ./venv/lib/python2.7/site-packages (from tox->-r dev-requirements.txt (line 2)) diff --git a/samples/client/petstore/python/swagger_client/api_client.py b/samples/client/petstore/python/swagger_client/api_client.py index fdc92cae77f6..f3c66bd3706d 100644 --- a/samples/client/petstore/python/swagger_client/api_client.py +++ b/samples/client/petstore/python/swagger_client/api_client.py @@ -453,7 +453,9 @@ class ApiClient(object): for auth in auth_settings: auth_setting = config.auth_settings().get(auth) if auth_setting: - if auth_setting['in'] == 'header': + if not auth_setting['value']: + continue + elif auth_setting['in'] == 'header': headers[auth_setting['key']] = auth_setting['value'] elif auth_setting['in'] == 'query': querys[auth_setting['key']] = auth_setting['value'] diff --git a/samples/client/petstore/python/swagger_client/apis/pet_api.py b/samples/client/petstore/python/swagger_client/apis/pet_api.py index d68d34e67744..d7bc11daaafe 100644 --- a/samples/client/petstore/python/swagger_client/apis/pet_api.py +++ b/samples/client/petstore/python/swagger_client/apis/pet_api.py @@ -79,6 +79,7 @@ class PetApi(object): params[key] = val del params['kwargs'] + resource_path = '/pet'.replace('{format}', 'json') method = 'PUT' @@ -154,6 +155,7 @@ class PetApi(object): params[key] = val del params['kwargs'] + resource_path = '/pet'.replace('{format}', 'json') method = 'POST' @@ -229,6 +231,7 @@ class PetApi(object): params[key] = val del params['kwargs'] + resource_path = '/pet/findByStatus'.replace('{format}', 'json') method = 'GET' @@ -304,6 +307,7 @@ class PetApi(object): params[key] = val del params['kwargs'] + resource_path = '/pet/findByTags'.replace('{format}', 'json') method = 'GET' @@ -365,9 +369,6 @@ class PetApi(object): If the method is called asynchronously, returns the request thread. """ - # verify the required parameter 'pet_id' is set - if pet_id is None: - raise ValueError("Missing the required parameter `pet_id` when calling `get_pet_by_id`") all_params = ['pet_id'] all_params.append('callback') @@ -382,6 +383,10 @@ class PetApi(object): params[key] = val del params['kwargs'] + # verify the required parameter 'pet_id' is set + if ('pet_id' not in params) or (params['pet_id'] is None): + raise ValueError("Missing the required parameter `pet_id` when calling `get_pet_by_id`") + resource_path = '/pet/{petId}'.replace('{format}', 'json') method = 'GET' @@ -445,9 +450,6 @@ class PetApi(object): If the method is called asynchronously, returns the request thread. """ - # verify the required parameter 'pet_id' is set - if pet_id is None: - raise ValueError("Missing the required parameter `pet_id` when calling `update_pet_with_form`") all_params = ['pet_id', 'name', 'status'] all_params.append('callback') @@ -462,6 +464,10 @@ class PetApi(object): params[key] = val del params['kwargs'] + # verify the required parameter 'pet_id' is set + if ('pet_id' not in params) or (params['pet_id'] is None): + raise ValueError("Missing the required parameter `pet_id` when calling `update_pet_with_form`") + resource_path = '/pet/{petId}'.replace('{format}', 'json') method = 'POST' @@ -528,9 +534,6 @@ class PetApi(object): If the method is called asynchronously, returns the request thread. """ - # verify the required parameter 'pet_id' is set - if pet_id is None: - raise ValueError("Missing the required parameter `pet_id` when calling `delete_pet`") all_params = ['pet_id', 'api_key'] all_params.append('callback') @@ -545,6 +548,10 @@ class PetApi(object): params[key] = val del params['kwargs'] + # verify the required parameter 'pet_id' is set + if ('pet_id' not in params) or (params['pet_id'] is None): + raise ValueError("Missing the required parameter `pet_id` when calling `delete_pet`") + resource_path = '/pet/{petId}'.replace('{format}', 'json') method = 'DELETE' @@ -610,9 +617,6 @@ class PetApi(object): If the method is called asynchronously, returns the request thread. """ - # verify the required parameter 'pet_id' is set - if pet_id is None: - raise ValueError("Missing the required parameter `pet_id` when calling `upload_file`") all_params = ['pet_id', 'additional_metadata', 'file'] all_params.append('callback') @@ -627,6 +631,10 @@ class PetApi(object): params[key] = val del params['kwargs'] + # verify the required parameter 'pet_id' is set + if ('pet_id' not in params) or (params['pet_id'] is None): + raise ValueError("Missing the required parameter `pet_id` when calling `upload_file`") + resource_path = '/pet/{petId}/uploadImage'.replace('{format}', 'json') method = 'POST' diff --git a/samples/client/petstore/python/swagger_client/apis/store_api.py b/samples/client/petstore/python/swagger_client/apis/store_api.py index 9e08a0b2f473..e3835990a306 100644 --- a/samples/client/petstore/python/swagger_client/apis/store_api.py +++ b/samples/client/petstore/python/swagger_client/apis/store_api.py @@ -78,6 +78,7 @@ class StoreApi(object): params[key] = val del params['kwargs'] + resource_path = '/store/inventory'.replace('{format}', 'json') method = 'GET' @@ -151,6 +152,7 @@ class StoreApi(object): params[key] = val del params['kwargs'] + resource_path = '/store/order'.replace('{format}', 'json') method = 'POST' @@ -212,9 +214,6 @@ class StoreApi(object): If the method is called asynchronously, returns the request thread. """ - # verify the required parameter 'order_id' is set - if order_id is None: - raise ValueError("Missing the required parameter `order_id` when calling `get_order_by_id`") all_params = ['order_id'] all_params.append('callback') @@ -229,6 +228,10 @@ class StoreApi(object): params[key] = val del params['kwargs'] + # verify the required parameter 'order_id' is set + if ('order_id' not in params) or (params['order_id'] is None): + raise ValueError("Missing the required parameter `order_id` when calling `get_order_by_id`") + resource_path = '/store/order/{orderId}'.replace('{format}', 'json') method = 'GET' @@ -290,9 +293,6 @@ class StoreApi(object): If the method is called asynchronously, returns the request thread. """ - # verify the required parameter 'order_id' is set - if order_id is None: - raise ValueError("Missing the required parameter `order_id` when calling `delete_order`") all_params = ['order_id'] all_params.append('callback') @@ -307,6 +307,10 @@ class StoreApi(object): params[key] = val del params['kwargs'] + # verify the required parameter 'order_id' is set + if ('order_id' not in params) or (params['order_id'] is None): + raise ValueError("Missing the required parameter `order_id` when calling `delete_order`") + resource_path = '/store/order/{orderId}'.replace('{format}', 'json') method = 'DELETE' diff --git a/samples/client/petstore/python/swagger_client/apis/user_api.py b/samples/client/petstore/python/swagger_client/apis/user_api.py index aa35e6db53aa..4394941b1d52 100644 --- a/samples/client/petstore/python/swagger_client/apis/user_api.py +++ b/samples/client/petstore/python/swagger_client/apis/user_api.py @@ -79,6 +79,7 @@ class UserApi(object): params[key] = val del params['kwargs'] + resource_path = '/user'.replace('{format}', 'json') method = 'POST' @@ -154,6 +155,7 @@ class UserApi(object): params[key] = val del params['kwargs'] + resource_path = '/user/createWithArray'.replace('{format}', 'json') method = 'POST' @@ -229,6 +231,7 @@ class UserApi(object): params[key] = val del params['kwargs'] + resource_path = '/user/createWithList'.replace('{format}', 'json') method = 'POST' @@ -305,6 +308,7 @@ class UserApi(object): params[key] = val del params['kwargs'] + resource_path = '/user/login'.replace('{format}', 'json') method = 'GET' @@ -381,6 +385,7 @@ class UserApi(object): params[key] = val del params['kwargs'] + resource_path = '/user/logout'.replace('{format}', 'json') method = 'GET' @@ -440,9 +445,6 @@ class UserApi(object): If the method is called asynchronously, returns the request thread. """ - # verify the required parameter 'username' is set - if username is None: - raise ValueError("Missing the required parameter `username` when calling `get_user_by_name`") all_params = ['username'] all_params.append('callback') @@ -457,6 +459,10 @@ class UserApi(object): params[key] = val del params['kwargs'] + # verify the required parameter 'username' is set + if ('username' not in params) or (params['username'] is None): + raise ValueError("Missing the required parameter `username` when calling `get_user_by_name`") + resource_path = '/user/{username}'.replace('{format}', 'json') method = 'GET' @@ -519,9 +525,6 @@ class UserApi(object): If the method is called asynchronously, returns the request thread. """ - # verify the required parameter 'username' is set - if username is None: - raise ValueError("Missing the required parameter `username` when calling `update_user`") all_params = ['username', 'body'] all_params.append('callback') @@ -536,6 +539,10 @@ class UserApi(object): params[key] = val del params['kwargs'] + # verify the required parameter 'username' is set + if ('username' not in params) or (params['username'] is None): + raise ValueError("Missing the required parameter `username` when calling `update_user`") + resource_path = '/user/{username}'.replace('{format}', 'json') method = 'PUT' @@ -599,9 +606,6 @@ class UserApi(object): If the method is called asynchronously, returns the request thread. """ - # verify the required parameter 'username' is set - if username is None: - raise ValueError("Missing the required parameter `username` when calling `delete_user`") all_params = ['username'] all_params.append('callback') @@ -616,6 +620,10 @@ class UserApi(object): params[key] = val del params['kwargs'] + # verify the required parameter 'username' is set + if ('username' not in params) or (params['username'] is None): + raise ValueError("Missing the required parameter `username` when calling `delete_user`") + resource_path = '/user/{username}'.replace('{format}', 'json') method = 'DELETE' From d59dde9fb315822ae41aa78c3853f85083a76599 Mon Sep 17 00:00:00 2001 From: Justus Thorvaldsson Date: Mon, 21 Dec 2015 10:38:33 +0100 Subject: [PATCH 04/18] send enum always, default is used --- .../swagger-codegen/src/main/resources/csharp/model.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/resources/csharp/model.mustache b/modules/swagger-codegen/src/main/resources/csharp/model.mustache index b4663b09452a..3bd912576cfd 100644 --- a/modules/swagger-codegen/src/main/resources/csharp/model.mustache +++ b/modules/swagger-codegen/src/main/resources/csharp/model.mustache @@ -26,7 +26,7 @@ namespace {{packageName}}.Model /// {{^description}}Gets or Sets {{{name}}}{{/description}}{{#description}}{{{description}}}{{/description}} ///

{{#description}} /// {{{description}}}{{/description}} - [DataMember(Name="{{baseName}}", EmitDefaultValue=false)] + [DataMember(Name="{{baseName}}", EmitDefaultValue=true)] public {{{datatypeWithEnum}}} {{name}} { get; set; } {{/isEnum}}{{/vars}}{{#vars}}{{^isEnum}} /// From dd568afc0a1f8600d80556bc5d6505509c93e254 Mon Sep 17 00:00:00 2001 From: Justus Thorvaldsson Date: Mon, 21 Dec 2015 10:41:58 +0100 Subject: [PATCH 05/18] add all default values --- .../swagger-codegen/src/main/resources/csharp/model.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/resources/csharp/model.mustache b/modules/swagger-codegen/src/main/resources/csharp/model.mustache index 3bd912576cfd..606745b47f65 100644 --- a/modules/swagger-codegen/src/main/resources/csharp/model.mustache +++ b/modules/swagger-codegen/src/main/resources/csharp/model.mustache @@ -33,7 +33,7 @@ namespace {{packageName}}.Model /// {{^description}}Gets or Sets {{{name}}}{{/description}}{{#description}}{{{description}}}{{/description}} /// {{#description}} /// {{{description}}}{{/description}} - [DataMember(Name="{{baseName}}", EmitDefaultValue=false)] + [DataMember(Name="{{baseName}}", EmitDefaultValue=true)] public {{{datatype}}} {{name}} { get; set; } {{/isEnum}}{{/vars}} /// From 7d9bddbe232bcba4beb7eb42165bfc169433fd09 Mon Sep 17 00:00:00 2001 From: Justus Thorvaldsson Date: Tue, 22 Dec 2015 08:19:44 +0100 Subject: [PATCH 06/18] Added sample files generated --- .../src/main/csharp/IO/Swagger/Model/Category.cs | 4 ++-- .../src/main/csharp/IO/Swagger/Model/Order.cs | 12 ++++++------ .../src/main/csharp/IO/Swagger/Model/Pet.cs | 12 ++++++------ .../src/main/csharp/IO/Swagger/Model/Tag.cs | 4 ++-- .../src/main/csharp/IO/Swagger/Model/User.cs | 16 ++++++++-------- 5 files changed, 24 insertions(+), 24 deletions(-) diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs index 3813bde45f08..29e4208fb755 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs @@ -20,13 +20,13 @@ namespace IO.Swagger.Model /// /// Gets or Sets Id /// - [DataMember(Name="id", EmitDefaultValue=false)] + [DataMember(Name="id", EmitDefaultValue=true)] public long? Id { get; set; } /// /// Gets or Sets Name /// - [DataMember(Name="name", EmitDefaultValue=false)] + [DataMember(Name="name", EmitDefaultValue=true)] public string Name { get; set; } /// diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs index 54ce43ab83fb..47494e8f029b 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs @@ -33,37 +33,37 @@ namespace IO.Swagger.Model /// Order Status /// /// Order Status - [DataMember(Name="status", EmitDefaultValue=false)] + [DataMember(Name="status", EmitDefaultValue=true)] public StatusEnum Status { get; set; } /// /// Gets or Sets Id /// - [DataMember(Name="id", EmitDefaultValue=false)] + [DataMember(Name="id", EmitDefaultValue=true)] public long? Id { get; set; } /// /// Gets or Sets PetId /// - [DataMember(Name="petId", EmitDefaultValue=false)] + [DataMember(Name="petId", EmitDefaultValue=true)] public long? PetId { get; set; } /// /// Gets or Sets Quantity /// - [DataMember(Name="quantity", EmitDefaultValue=false)] + [DataMember(Name="quantity", EmitDefaultValue=true)] public int? Quantity { get; set; } /// /// Gets or Sets ShipDate /// - [DataMember(Name="shipDate", EmitDefaultValue=false)] + [DataMember(Name="shipDate", EmitDefaultValue=true)] public DateTime? ShipDate { get; set; } /// /// Gets or Sets Complete /// - [DataMember(Name="complete", EmitDefaultValue=false)] + [DataMember(Name="complete", EmitDefaultValue=true)] public bool? Complete { get; set; } /// diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs index f3987aa52868..8daa06873866 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs @@ -33,37 +33,37 @@ namespace IO.Swagger.Model /// pet status in the store /// /// pet status in the store - [DataMember(Name="status", EmitDefaultValue=false)] + [DataMember(Name="status", EmitDefaultValue=true)] public StatusEnum Status { get; set; } /// /// Gets or Sets Id /// - [DataMember(Name="id", EmitDefaultValue=false)] + [DataMember(Name="id", EmitDefaultValue=true)] public long? Id { get; set; } /// /// Gets or Sets Category /// - [DataMember(Name="category", EmitDefaultValue=false)] + [DataMember(Name="category", EmitDefaultValue=true)] public Category Category { get; set; } /// /// Gets or Sets Name /// - [DataMember(Name="name", EmitDefaultValue=false)] + [DataMember(Name="name", EmitDefaultValue=true)] public string Name { get; set; } /// /// Gets or Sets PhotoUrls /// - [DataMember(Name="photoUrls", EmitDefaultValue=false)] + [DataMember(Name="photoUrls", EmitDefaultValue=true)] public List PhotoUrls { get; set; } /// /// Gets or Sets Tags /// - [DataMember(Name="tags", EmitDefaultValue=false)] + [DataMember(Name="tags", EmitDefaultValue=true)] public List Tags { get; set; } /// diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs index 3553578a0831..566b9230334b 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs @@ -20,13 +20,13 @@ namespace IO.Swagger.Model /// /// Gets or Sets Id /// - [DataMember(Name="id", EmitDefaultValue=false)] + [DataMember(Name="id", EmitDefaultValue=true)] public long? Id { get; set; } /// /// Gets or Sets Name /// - [DataMember(Name="name", EmitDefaultValue=false)] + [DataMember(Name="name", EmitDefaultValue=true)] public string Name { get; set; } /// diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs index bfd2ffc411e3..cc4d969d78ce 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs @@ -20,50 +20,50 @@ namespace IO.Swagger.Model /// /// Gets or Sets Id /// - [DataMember(Name="id", EmitDefaultValue=false)] + [DataMember(Name="id", EmitDefaultValue=true)] public long? Id { get; set; } /// /// Gets or Sets Username /// - [DataMember(Name="username", EmitDefaultValue=false)] + [DataMember(Name="username", EmitDefaultValue=true)] public string Username { get; set; } /// /// Gets or Sets FirstName /// - [DataMember(Name="firstName", EmitDefaultValue=false)] + [DataMember(Name="firstName", EmitDefaultValue=true)] public string FirstName { get; set; } /// /// Gets or Sets LastName /// - [DataMember(Name="lastName", EmitDefaultValue=false)] + [DataMember(Name="lastName", EmitDefaultValue=true)] public string LastName { get; set; } /// /// Gets or Sets Email /// - [DataMember(Name="email", EmitDefaultValue=false)] + [DataMember(Name="email", EmitDefaultValue=true)] public string Email { get; set; } /// /// Gets or Sets Password /// - [DataMember(Name="password", EmitDefaultValue=false)] + [DataMember(Name="password", EmitDefaultValue=true)] public string Password { get; set; } /// /// Gets or Sets Phone /// - [DataMember(Name="phone", EmitDefaultValue=false)] + [DataMember(Name="phone", EmitDefaultValue=true)] public string Phone { get; set; } /// /// User Status /// /// User Status - [DataMember(Name="userStatus", EmitDefaultValue=false)] + [DataMember(Name="userStatus", EmitDefaultValue=true)] public int? UserStatus { get; set; } /// From ea55c9c9016138e68378c6d3d565b5fe47a83a5b Mon Sep 17 00:00:00 2001 From: Justus Thorvaldsson Date: Tue, 22 Dec 2015 11:00:20 +0100 Subject: [PATCH 07/18] Some generated dates was merged incorrectly --- .../src/main/java/io/swagger/client/auth/ApiKeyAuth.java | 2 +- .../src/main/java/io/swagger/client/auth/HttpBasicAuth.java | 2 +- .../src/main/java/io/swagger/client/auth/ApiKeyAuth.java | 2 +- .../client/petstore/php/SwaggerClient-php/lib/Api/PetApi.php | 1 - .../client/petstore/php/SwaggerClient-php/lib/Api/StoreApi.php | 1 - 5 files changed, 3 insertions(+), 5 deletions(-) diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/ApiKeyAuth.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/ApiKeyAuth.java index bc3bdaefc449..098f4d0963a7 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/ApiKeyAuth.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/ApiKeyAuth.java @@ -5,7 +5,7 @@ import io.swagger.client.Pair; import java.util.Map; import java.util.List; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-20T17:28:47.318+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-29T00:18:01.946+08:00") public class ApiKeyAuth implements Authentication { private final String location; private final String paramName; diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/HttpBasicAuth.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/HttpBasicAuth.java index 071139d656a9..5dff96d1f37a 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/HttpBasicAuth.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/HttpBasicAuth.java @@ -9,7 +9,7 @@ import java.util.List; import java.io.UnsupportedEncodingException; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-22T13:15:27.225+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-29T00:18:01.946+08:00") public class HttpBasicAuth implements Authentication { private String username; private String password; diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/auth/ApiKeyAuth.java b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/auth/ApiKeyAuth.java index fbfda66f881b..8439d297d450 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/auth/ApiKeyAuth.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/auth/ApiKeyAuth.java @@ -5,7 +5,7 @@ import io.swagger.client.Pair; import java.util.Map; import java.util.List; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-20T17:28:54.086+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-07T12:21:33.403+08:00") public class ApiKeyAuth implements Authentication { private final String location; private final String paramName; diff --git a/samples/client/petstore/php/SwaggerClient-php/lib/Api/PetApi.php b/samples/client/petstore/php/SwaggerClient-php/lib/Api/PetApi.php index 9c918b020c4a..bd82444f4fe0 100644 --- a/samples/client/petstore/php/SwaggerClient-php/lib/Api/PetApi.php +++ b/samples/client/petstore/php/SwaggerClient-php/lib/Api/PetApi.php @@ -152,7 +152,6 @@ class PetApi } // this endpoint requires OAuth (access token) - if (strlen($this->apiClient->getConfig()->getAccessToken()) !== 0) { $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); } diff --git a/samples/client/petstore/php/SwaggerClient-php/lib/Api/StoreApi.php b/samples/client/petstore/php/SwaggerClient-php/lib/Api/StoreApi.php index 07f09d448002..4faed9a36baa 100644 --- a/samples/client/petstore/php/SwaggerClient-php/lib/Api/StoreApi.php +++ b/samples/client/petstore/php/SwaggerClient-php/lib/Api/StoreApi.php @@ -147,7 +147,6 @@ class StoreApi // this endpoint requires API key authentication $apiKey = $this->apiClient->getApiKeyWithPrefix('api_key'); - if (strlen($apiKey) !== 0) { $headerParams['api_key'] = $apiKey; } From 3b95df3ca7be13333f8ae2b903f8bd24368757e0 Mon Sep 17 00:00:00 2001 From: Justus Thorvaldsson Date: Tue, 22 Dec 2015 12:24:08 +0100 Subject: [PATCH 08/18] Added construct that was removed when merge wrongly --- .../src/main/resources/csharp/model.mustache | 12 +++++++++++- .../src/main/csharp/IO/Swagger/Model/Category.cs | 9 +++++++++ .../src/main/csharp/IO/Swagger/Model/Order.cs | 9 +++++++++ .../src/main/csharp/IO/Swagger/Model/Pet.cs | 9 +++++++++ .../src/main/csharp/IO/Swagger/Model/Tag.cs | 9 +++++++++ .../src/main/csharp/IO/Swagger/Model/User.cs | 9 +++++++++ 6 files changed, 56 insertions(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/resources/csharp/model.mustache b/modules/swagger-codegen/src/main/resources/csharp/model.mustache index 2504646b8efd..849bdd05e120 100644 --- a/modules/swagger-codegen/src/main/resources/csharp/model.mustache +++ b/modules/swagger-codegen/src/main/resources/csharp/model.mustache @@ -28,7 +28,17 @@ namespace {{packageName}}.Model /// {{{description}}}{{/description}} [DataMember(Name="{{baseName}}", EmitDefaultValue=true)] public {{{datatypeWithEnum}}} {{name}} { get; set; } - {{/isEnum}}{{/vars}}{{#vars}}{{^isEnum}} + {{/isEnum}}{{/vars}} + /// + /// Initializes a new instance of the class. + /// + public {{classname}}() + { + {{#vars}}{{#defaultValue}}this.{{name}} = {{{defaultValue}}}; + {{/defaultValue}}{{/vars}} + } + + {{#vars}}{{^isEnum}} /// /// {{^description}}Gets or Sets {{{name}}}{{/description}}{{#description}}{{{description}}}{{/description}} /// {{#description}} diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs index 472c30a92268..eec521ae642a 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs @@ -17,6 +17,15 @@ namespace IO.Swagger.Model public class Category : IEquatable { + /// + /// Initializes a new instance of the class. + /// + public Category() + { + + } + + /// /// Gets or Sets Id /// diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs index bd4dd0988c18..437deb59e71d 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs @@ -36,6 +36,15 @@ namespace IO.Swagger.Model [DataMember(Name="status", EmitDefaultValue=true)] public StatusEnum Status { get; set; } + /// + /// Initializes a new instance of the class. + /// + public Order() + { + + } + + /// /// Gets or Sets Id /// diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs index 3913d011167b..a0bebfabc02d 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs @@ -36,6 +36,15 @@ namespace IO.Swagger.Model [DataMember(Name="status", EmitDefaultValue=true)] public StatusEnum Status { get; set; } + /// + /// Initializes a new instance of the class. + /// + public Pet() + { + + } + + /// /// Gets or Sets Id /// diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs index 5a33cb8348b0..65842b65fbea 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs @@ -17,6 +17,15 @@ namespace IO.Swagger.Model public class Tag : IEquatable { + /// + /// Initializes a new instance of the class. + /// + public Tag() + { + + } + + /// /// Gets or Sets Id /// diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs index 63f6911a7782..63d480e3435c 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs @@ -17,6 +17,15 @@ namespace IO.Swagger.Model public class User : IEquatable { + /// + /// Initializes a new instance of the class. + /// + public User() + { + + } + + /// /// Gets or Sets Id /// From 2c1b71429a52ce1a6c222bcb43f319570aa73cbe Mon Sep 17 00:00:00 2001 From: Justus Thorvaldsson Date: Tue, 22 Dec 2015 13:49:04 +0100 Subject: [PATCH 09/18] Fixed space between inline enumclasses and removed extra tostring --- .../src/main/resources/csharp/model.mustache | 15 +------------ .../main/csharp/IO/Swagger/Model/Category.cs | 15 ------------- .../src/main/csharp/IO/Swagger/Model/Order.cs | 20 +----------------- .../src/main/csharp/IO/Swagger/Model/Pet.cs | 20 +----------------- .../src/main/csharp/IO/Swagger/Model/Tag.cs | 15 ------------- .../src/main/csharp/IO/Swagger/Model/User.cs | 21 ------------------- 6 files changed, 3 insertions(+), 103 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/csharp/model.mustache b/modules/swagger-codegen/src/main/resources/csharp/model.mustache index 849bdd05e120..704b3218ee54 100644 --- a/modules/swagger-codegen/src/main/resources/csharp/model.mustache +++ b/modules/swagger-codegen/src/main/resources/csharp/model.mustache @@ -18,6 +18,7 @@ namespace {{packageName}}.Model [DataContract] public class {{classname}} : IEquatable<{{classname}}>{{#parent}}, {{{parent}}}{{/parent}} { {{#vars}}{{#isEnum}} + [JsonConverter(typeof(StringEnumConverter))] {{>enumClass}}{{/isEnum}}{{#items.isEnum}}{{#items}} {{>enumClass}}{{/items}}{{/items.isEnum}}{{/vars}} @@ -60,20 +61,6 @@ namespace {{packageName}}.Model return sb.ToString(); } - /// - /// Returns the string presentation of the object - /// - /// String presentation of the object - public override string ToString() - { - var sb = new StringBuilder(); - sb.Append("class {{classname}} {\n"); - {{#vars}}sb.Append(" {{name}}: ").Append({{name}}).Append("\n"); - {{/vars}} - sb.Append("}\n"); - return sb.ToString(); - } - /// /// Returns the JSON string presentation of the object /// diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs index eec521ae642a..50972ea42dbe 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs @@ -53,21 +53,6 @@ namespace IO.Swagger.Model return sb.ToString(); } - /// - /// Returns the string presentation of the object - /// - /// String presentation of the object - public override string ToString() - { - var sb = new StringBuilder(); - sb.Append("class Category {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); - - sb.Append("}\n"); - return sb.ToString(); - } - /// /// Returns the JSON string presentation of the object /// diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs index 437deb59e71d..e4dd83098d62 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs @@ -16,6 +16,7 @@ namespace IO.Swagger.Model [DataContract] public class Order : IEquatable { + [JsonConverter(typeof(StringEnumConverter))] public enum StatusEnum { @@ -94,25 +95,6 @@ namespace IO.Swagger.Model return sb.ToString(); } - /// - /// Returns the string presentation of the object - /// - /// String presentation of the object - public override string ToString() - { - var sb = new StringBuilder(); - sb.Append("class Order {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" PetId: ").Append(PetId).Append("\n"); - sb.Append(" Quantity: ").Append(Quantity).Append("\n"); - sb.Append(" ShipDate: ").Append(ShipDate).Append("\n"); - sb.Append(" Status: ").Append(Status).Append("\n"); - sb.Append(" Complete: ").Append(Complete).Append("\n"); - - sb.Append("}\n"); - return sb.ToString(); - } - /// /// Returns the JSON string presentation of the object /// diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs index a0bebfabc02d..447c02891f93 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs @@ -16,6 +16,7 @@ namespace IO.Swagger.Model [DataContract] public class Pet : IEquatable { + [JsonConverter(typeof(StringEnumConverter))] public enum StatusEnum { @@ -94,25 +95,6 @@ namespace IO.Swagger.Model return sb.ToString(); } - /// - /// Returns the string presentation of the object - /// - /// String presentation of the object - public override string ToString() - { - var sb = new StringBuilder(); - sb.Append("class Pet {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" Category: ").Append(Category).Append("\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); - sb.Append(" PhotoUrls: ").Append(PhotoUrls).Append("\n"); - sb.Append(" Tags: ").Append(Tags).Append("\n"); - sb.Append(" Status: ").Append(Status).Append("\n"); - - sb.Append("}\n"); - return sb.ToString(); - } - /// /// Returns the JSON string presentation of the object /// diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs index 65842b65fbea..fc48daadf1bb 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs @@ -53,21 +53,6 @@ namespace IO.Swagger.Model return sb.ToString(); } - /// - /// Returns the string presentation of the object - /// - /// String presentation of the object - public override string ToString() - { - var sb = new StringBuilder(); - sb.Append("class Tag {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); - - sb.Append("}\n"); - return sb.ToString(); - } - /// /// Returns the JSON string presentation of the object /// diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs index 63d480e3435c..9c5a211dc494 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs @@ -96,27 +96,6 @@ namespace IO.Swagger.Model return sb.ToString(); } - /// - /// Returns the string presentation of the object - /// - /// String presentation of the object - public override string ToString() - { - var sb = new StringBuilder(); - sb.Append("class User {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" Username: ").Append(Username).Append("\n"); - sb.Append(" FirstName: ").Append(FirstName).Append("\n"); - sb.Append(" LastName: ").Append(LastName).Append("\n"); - sb.Append(" Email: ").Append(Email).Append("\n"); - sb.Append(" Password: ").Append(Password).Append("\n"); - sb.Append(" Phone: ").Append(Phone).Append("\n"); - sb.Append(" UserStatus: ").Append(UserStatus).Append("\n"); - - sb.Append("}\n"); - return sb.ToString(); - } - /// /// Returns the JSON string presentation of the object /// From 84fb351c7cde1c3af3d4c3ecb86b80b4e9fe3cdb Mon Sep 17 00:00:00 2001 From: Tommy Alander Date: Mon, 29 Feb 2016 08:46:07 +0100 Subject: [PATCH 10/18] fixes after merge --- .../languages/CSharpClientCodegen.java | 49 +++---------------- 1 file changed, 6 insertions(+), 43 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java index 8d1f92060388..7ec4d6531028 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java @@ -335,6 +335,11 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { } } } + } + + return objs; + } + public void setTargetFramework(String dotnetFramework) { if(!frameworks.containsKey(dotnetFramework)){ LOGGER.warn("Invalid .NET framework version, defaulting to " + this.targetFramework); @@ -419,49 +424,7 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { public void setPackageVersion(String packageVersion) { this.packageVersion = packageVersion; } - /** - * Return the default value of the property - * - * @param p Swagger property object - * @return string presentation of the default value of the property - */ - @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(); - } - } + public void setTargetFrameworkNuget(String targetFrameworkNuget) { this.targetFrameworkNuget = targetFrameworkNuget; } From 61c1f72b0e8744d7bb3908a027b6cd3ac75880e3 Mon Sep 17 00:00:00 2001 From: Tommy Alander Date: Mon, 29 Feb 2016 12:37:26 +0100 Subject: [PATCH 11/18] use correct datatype with enums --- .../swagger-codegen/src/main/resources/csharp/model.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/resources/csharp/model.mustache b/modules/swagger-codegen/src/main/resources/csharp/model.mustache index d042435f5b9c..7dc1bd83563b 100644 --- a/modules/swagger-codegen/src/main/resources/csharp/model.mustache +++ b/modules/swagger-codegen/src/main/resources/csharp/model.mustache @@ -37,7 +37,7 @@ namespace {{packageName}}.Model /// {{#vars}}{{^isReadOnly}} /// {{#description}}{{description}}{{/description}}{{^description}}{{name}}{{/description}}{{#required}} (required){{/required}}{{#defaultValue}} (default to {{defaultValue}}){{/defaultValue}}. {{/isReadOnly}}{{/vars}} - public {{classname}}({{#vars}}{{^isReadOnly}}{{{datatype}}} {{name}} = null{{#hasMore}}, {{/hasMore}}{{/isReadOnly}}{{/vars}}) + public {{classname}}({{#vars}}{{^isReadOnly}}{{{datatypeWithEnum}}} {{name}} = null{{#hasMore}}, {{/hasMore}}{{/isReadOnly}}{{/vars}}) { {{#vars}}{{^isReadOnly}}{{#required}}// to ensure "{{name}}" is required (not null) if ({{name}} == null) From 8492802328efc2c0bfcd19c94460b16406f5fba7 Mon Sep 17 00:00:00 2001 From: Tommy Alander Date: Mon, 29 Feb 2016 15:28:09 +0100 Subject: [PATCH 12/18] use nullable types for enums --- .../io/swagger/codegen/languages/AbstractCSharpCodegen.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractCSharpCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractCSharpCodegen.java index 4e6d91e22540..982847647939 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractCSharpCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractCSharpCodegen.java @@ -193,6 +193,11 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co } } + @Override + public String toEnumName(CodegenProperty property) { + return StringUtils.capitalize(property.name) + "Enum?"; + } + @Override public Map postProcessModels(Map objs) { List models = (List) objs.get("models"); From e5f55da74ec890adb1eb0a0783cc4a01bfd85f04 Mon Sep 17 00:00:00 2001 From: Tommy Alander Date: Mon, 29 Feb 2016 18:42:35 +0100 Subject: [PATCH 13/18] add hack to make enums nullable --- .../io/swagger/codegen/languages/CSharpClientCodegen.java | 5 +++++ .../src/main/resources/csharp/enumClass.mustache | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java index 7ec4d6531028..4cc027bb63fb 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java @@ -334,6 +334,11 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { var.defaultValue = var.datatypeWithEnum + "." + enumName; } } + + // HACK: strip ? from enum + if (var.datatypeWithEnum != null) { + var.vendorExtensions.put("plainDatatypeWithEnum", var.datatypeWithEnum.substring(0, var.datatypeWithEnum.length() - 1)); + } } } diff --git a/modules/swagger-codegen/src/main/resources/csharp/enumClass.mustache b/modules/swagger-codegen/src/main/resources/csharp/enumClass.mustache index 38b67c3c40de..3a2a93cd1099 100644 --- a/modules/swagger-codegen/src/main/resources/csharp/enumClass.mustache +++ b/modules/swagger-codegen/src/main/resources/csharp/enumClass.mustache @@ -1,4 +1,4 @@ -public enum {{datatypeWithEnum}} { +public enum {{vendorExtensions.plainDatatypeWithEnum}} { {{#allowableValues}}{{#enumVars}} [EnumMember(Value = "{{jsonname}}")] {{name}}{{^-last}}, From 23a7af4716057ee501a18419b5815dc3ed5093e8 Mon Sep 17 00:00:00 2001 From: Tommy Alander Date: Wed, 2 Mar 2016 19:47:45 +0100 Subject: [PATCH 14/18] regen test code for petstore csharp and fix test errors --- .../Lib/SwaggerClient.Test/CategoryTests.cs | 4 ++ .../Lib/SwaggerClient.Test/OrderTests.cs | 4 ++ .../Lib/SwaggerClient.Test/PetApiTests.cs | 1 + .../Lib/SwaggerClient.Test/PetTests.cs | 4 ++ .../Lib/SwaggerClient.Test/StoreApiTests.cs | 1 + .../Lib/SwaggerClient.Test/TagTests.cs | 4 ++ .../Lib/SwaggerClient.Test/UserApiTests.cs | 1 + .../Lib/SwaggerClient.Test/UserTests.cs | 4 ++ .../src/main/csharp/IO/Swagger/Api/PetApi.cs | 53 ++++++++++--------- .../main/csharp/IO/Swagger/Api/StoreApi.cs | 27 +++++----- .../src/main/csharp/IO/Swagger/Api/UserApi.cs | 1 + .../main/csharp/IO/Swagger/Model/Category.cs | 5 ++ .../src/main/csharp/IO/Swagger/Model/Order.cs | 9 +++- .../src/main/csharp/IO/Swagger/Model/Pet.cs | 9 +++- .../src/main/csharp/IO/Swagger/Model/Tag.cs | 5 ++ .../src/main/csharp/IO/Swagger/Model/User.cs | 5 ++ .../csharp/SwaggerClientTest/TestOrder.cs | 2 +- .../csharp/SwaggerClientTest/TestPet.cs | 14 ++--- 18 files changed, 102 insertions(+), 51 deletions(-) diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/CategoryTests.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/CategoryTests.cs index 6384ee4179ba..41efd2c08dfc 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/CategoryTests.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/CategoryTests.cs @@ -9,6 +9,8 @@ using IO.Swagger.Model; using IO.Swagger.Client; using System.Reflection; + + namespace IO.Swagger.Test { [TestFixture] @@ -66,3 +68,5 @@ namespace IO.Swagger.Test } } + + diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/OrderTests.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/OrderTests.cs index 7d0bc854cef8..be753c8dabce 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/OrderTests.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/OrderTests.cs @@ -9,6 +9,8 @@ using IO.Swagger.Model; using IO.Swagger.Client; using System.Reflection; + + namespace IO.Swagger.Test { [TestFixture] @@ -102,3 +104,5 @@ namespace IO.Swagger.Test } } + + diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/PetApiTests.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/PetApiTests.cs index 7e3566eb04b4..b5ce94521ac5 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/PetApiTests.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/PetApiTests.cs @@ -11,6 +11,7 @@ using IO.Swagger.Client; using IO.Swagger.Api; using IO.Swagger.Model; + namespace IO.Swagger.Test { [TestFixture] diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/PetTests.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/PetTests.cs index 6b203dbd1252..ea618777058b 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/PetTests.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/PetTests.cs @@ -9,6 +9,8 @@ using IO.Swagger.Model; using IO.Swagger.Client; using System.Reflection; + + namespace IO.Swagger.Test { [TestFixture] @@ -102,3 +104,5 @@ namespace IO.Swagger.Test } } + + diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/StoreApiTests.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/StoreApiTests.cs index b0eb62933808..6b35eb1a6b36 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/StoreApiTests.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/StoreApiTests.cs @@ -11,6 +11,7 @@ using IO.Swagger.Client; using IO.Swagger.Api; using IO.Swagger.Model; + namespace IO.Swagger.Test { [TestFixture] diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/TagTests.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/TagTests.cs index ad772584cc5d..2348c02e7892 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/TagTests.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/TagTests.cs @@ -9,6 +9,8 @@ using IO.Swagger.Model; using IO.Swagger.Client; using System.Reflection; + + namespace IO.Swagger.Test { [TestFixture] @@ -66,3 +68,5 @@ namespace IO.Swagger.Test } } + + diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/UserApiTests.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/UserApiTests.cs index 0d543c384aa7..e1467147e71e 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/UserApiTests.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/UserApiTests.cs @@ -11,6 +11,7 @@ using IO.Swagger.Client; using IO.Swagger.Api; using IO.Swagger.Model; + namespace IO.Swagger.Test { [TestFixture] diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/UserTests.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/UserTests.cs index 4610313b7347..473f74cb0956 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/UserTests.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/UserTests.cs @@ -9,6 +9,8 @@ using IO.Swagger.Model; using IO.Swagger.Client; using System.Reflection; + + namespace IO.Swagger.Test { [TestFixture] @@ -120,3 +122,5 @@ namespace IO.Swagger.Test } } + + diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/PetApi.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/PetApi.cs index a141c57f79fd..4d56e4c1948e 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/PetApi.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/PetApi.cs @@ -7,6 +7,7 @@ using RestSharp; using IO.Swagger.Client; using IO.Swagger.Model; + namespace IO.Swagger.Api { @@ -1308,12 +1309,6 @@ namespace IO.Swagger.Api - // authentication (api_key) required - - if (!String.IsNullOrEmpty(Configuration.GetApiKeyWithPrefix("api_key"))) - { - localVarHeaderParams["api_key"] = Configuration.GetApiKeyWithPrefix("api_key"); - } // authentication (petstore_auth) required // oauth required @@ -1321,6 +1316,12 @@ namespace IO.Swagger.Api { localVarHeaderParams["Authorization"] = "Bearer " + Configuration.AccessToken; } + // authentication (api_key) required + + if (!String.IsNullOrEmpty(Configuration.GetApiKeyWithPrefix("api_key"))) + { + localVarHeaderParams["api_key"] = Configuration.GetApiKeyWithPrefix("api_key"); + } // make the HTTP request @@ -1401,13 +1402,6 @@ namespace IO.Swagger.Api - // authentication (api_key) required - - if (!String.IsNullOrEmpty(Configuration.GetApiKeyWithPrefix("api_key"))) - { - localVarHeaderParams["api_key"] = Configuration.GetApiKeyWithPrefix("api_key"); - } - // authentication (petstore_auth) required // oauth required @@ -1416,6 +1410,13 @@ namespace IO.Swagger.Api localVarHeaderParams["Authorization"] = "Bearer " + Configuration.AccessToken; } + // authentication (api_key) required + + if (!String.IsNullOrEmpty(Configuration.GetApiKeyWithPrefix("api_key"))) + { + localVarHeaderParams["api_key"] = Configuration.GetApiKeyWithPrefix("api_key"); + } + // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await Configuration.ApiClient.CallApiAsync(localVarPath, @@ -2037,12 +2038,6 @@ namespace IO.Swagger.Api - // authentication (api_key) required - - if (!String.IsNullOrEmpty(Configuration.GetApiKeyWithPrefix("api_key"))) - { - localVarHeaderParams["api_key"] = Configuration.GetApiKeyWithPrefix("api_key"); - } // authentication (petstore_auth) required // oauth required @@ -2050,6 +2045,12 @@ namespace IO.Swagger.Api { localVarHeaderParams["Authorization"] = "Bearer " + Configuration.AccessToken; } + // authentication (api_key) required + + if (!String.IsNullOrEmpty(Configuration.GetApiKeyWithPrefix("api_key"))) + { + localVarHeaderParams["api_key"] = Configuration.GetApiKeyWithPrefix("api_key"); + } // make the HTTP request @@ -2130,13 +2131,6 @@ namespace IO.Swagger.Api - // authentication (api_key) required - - if (!String.IsNullOrEmpty(Configuration.GetApiKeyWithPrefix("api_key"))) - { - localVarHeaderParams["api_key"] = Configuration.GetApiKeyWithPrefix("api_key"); - } - // authentication (petstore_auth) required // oauth required @@ -2145,6 +2139,13 @@ namespace IO.Swagger.Api localVarHeaderParams["Authorization"] = "Bearer " + Configuration.AccessToken; } + // authentication (api_key) required + + if (!String.IsNullOrEmpty(Configuration.GetApiKeyWithPrefix("api_key"))) + { + localVarHeaderParams["api_key"] = Configuration.GetApiKeyWithPrefix("api_key"); + } + // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await Configuration.ApiClient.CallApiAsync(localVarPath, diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/StoreApi.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/StoreApi.cs index e7da79946142..6c0134af16c8 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/StoreApi.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/StoreApi.cs @@ -7,6 +7,7 @@ using RestSharp; using IO.Swagger.Client; using IO.Swagger.Model; + namespace IO.Swagger.Api { @@ -903,18 +904,18 @@ namespace IO.Swagger.Api - // authentication (test_api_key_header) required - - if (!String.IsNullOrEmpty(Configuration.GetApiKeyWithPrefix("test_api_key_header"))) - { - localVarHeaderParams["test_api_key_header"] = Configuration.GetApiKeyWithPrefix("test_api_key_header"); - } // authentication (test_api_key_query) required if (!String.IsNullOrEmpty(Configuration.GetApiKeyWithPrefix("test_api_key_query"))) { localVarQueryParams["test_api_key_query"] = Configuration.GetApiKeyWithPrefix("test_api_key_query"); } + // authentication (test_api_key_header) required + + if (!String.IsNullOrEmpty(Configuration.GetApiKeyWithPrefix("test_api_key_header"))) + { + localVarHeaderParams["test_api_key_header"] = Configuration.GetApiKeyWithPrefix("test_api_key_header"); + } // make the HTTP request @@ -995,13 +996,6 @@ namespace IO.Swagger.Api - // authentication (test_api_key_header) required - - if (!String.IsNullOrEmpty(Configuration.GetApiKeyWithPrefix("test_api_key_header"))) - { - localVarHeaderParams["test_api_key_header"] = Configuration.GetApiKeyWithPrefix("test_api_key_header"); - } - // authentication (test_api_key_query) required if (!String.IsNullOrEmpty(Configuration.GetApiKeyWithPrefix("test_api_key_query"))) @@ -1009,6 +1003,13 @@ namespace IO.Swagger.Api localVarQueryParams["test_api_key_query"] = Configuration.GetApiKeyWithPrefix("test_api_key_query"); } + // authentication (test_api_key_header) required + + if (!String.IsNullOrEmpty(Configuration.GetApiKeyWithPrefix("test_api_key_header"))) + { + localVarHeaderParams["test_api_key_header"] = Configuration.GetApiKeyWithPrefix("test_api_key_header"); + } + // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await Configuration.ApiClient.CallApiAsync(localVarPath, diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/UserApi.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/UserApi.cs index 193cc501a859..ee8c375dc1f4 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/UserApi.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/UserApi.cs @@ -7,6 +7,7 @@ using RestSharp; using IO.Swagger.Client; using IO.Swagger.Model; + namespace IO.Swagger.Api { diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs index c0016a95bdd9..5af4256119e8 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs @@ -9,6 +9,8 @@ using System.Runtime.Serialization; using Newtonsoft.Json; using Newtonsoft.Json.Converters; + + namespace IO.Swagger.Model { /// @@ -19,6 +21,7 @@ namespace IO.Swagger.Model { /// + /// Initializes a new instance of the class. /// Initializes a new instance of the class. /// /// Id. @@ -126,4 +129,6 @@ namespace IO.Swagger.Model } } + + } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs index 7a063c25865e..a22e5e51dcdb 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs @@ -9,6 +9,8 @@ using System.Runtime.Serialization; using Newtonsoft.Json; using Newtonsoft.Json.Converters; + + namespace IO.Swagger.Model { /// @@ -36,10 +38,11 @@ namespace IO.Swagger.Model /// /// Order Status [DataMember(Name="status", EmitDefaultValue=true)] - public StatusEnum Status { get; set; } + public StatusEnum? Status { get; set; } /// /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// PetId. /// Quantity. @@ -47,7 +50,7 @@ namespace IO.Swagger.Model /// Order Status. /// Complete. - public Order(long? PetId = null, int? Quantity = null, DateTime? ShipDate = null, string Status = null, bool? Complete = null) + public Order(long? PetId = null, int? Quantity = null, DateTime? ShipDate = null, StatusEnum? Status = null, bool? Complete = null) { this.PetId = PetId; this.Quantity = Quantity; @@ -206,4 +209,6 @@ namespace IO.Swagger.Model } } + + } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs index c9561daabeb7..bf38e422f4e9 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs @@ -9,6 +9,8 @@ using System.Runtime.Serialization; using Newtonsoft.Json; using Newtonsoft.Json.Converters; + + namespace IO.Swagger.Model { /// @@ -36,10 +38,11 @@ namespace IO.Swagger.Model /// /// pet status in the store [DataMember(Name="status", EmitDefaultValue=true)] - public StatusEnum Status { get; set; } + public StatusEnum? Status { get; set; } /// /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// Id. /// Category. @@ -48,7 +51,7 @@ namespace IO.Swagger.Model /// Tags. /// pet status in the store. - public Pet(long? Id = null, Category Category = null, string Name = null, List PhotoUrls = null, List Tags = null, string Status = null) + public Pet(long? Id = null, Category Category = null, string Name = null, List PhotoUrls = null, List Tags = null, StatusEnum? Status = null) { // to ensure "Name" is required (not null) if (Name == null) @@ -224,4 +227,6 @@ namespace IO.Swagger.Model } } + + } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs index e2a748438c8d..d756b9c3f13c 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs @@ -9,6 +9,8 @@ using System.Runtime.Serialization; using Newtonsoft.Json; using Newtonsoft.Json.Converters; + + namespace IO.Swagger.Model { /// @@ -19,6 +21,7 @@ namespace IO.Swagger.Model { /// + /// Initializes a new instance of the class. /// Initializes a new instance of the class. /// /// Id. @@ -126,4 +129,6 @@ namespace IO.Swagger.Model } } + + } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs index 1da35d8a188c..6fdccef9a3ee 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs @@ -9,6 +9,8 @@ using System.Runtime.Serialization; using Newtonsoft.Json; using Newtonsoft.Json.Converters; + + namespace IO.Swagger.Model { /// @@ -19,6 +21,7 @@ namespace IO.Swagger.Model { /// + /// Initializes a new instance of the class. /// Initializes a new instance of the class. /// /// Id. @@ -229,4 +232,6 @@ namespace IO.Swagger.Model } } + + } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/TestOrder.cs b/samples/client/petstore/csharp/SwaggerClientTest/TestOrder.cs index 278cc964b18f..3fde9520e077 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/TestOrder.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/TestOrder.cs @@ -49,7 +49,7 @@ namespace SwaggerClientTest.TestORder Assert.AreEqual (1982, o.Id); Assert.AreEqual (1020, o.PetId); Assert.AreEqual (1, o.Quantity); - Assert.AreEqual ("placed", o.Status); + Assert.AreEqual (Order.StatusEnum.Placed, o.Status); Assert.AreEqual (true, o.Complete); } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/TestPet.cs b/samples/client/petstore/csharp/SwaggerClientTest/TestPet.cs index 56b0910140e9..1a8f953755d1 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/TestPet.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/TestPet.cs @@ -24,7 +24,7 @@ namespace SwaggerClientTest.TestPet Pet p = new Pet(Name: "Csharp test", PhotoUrls: new List { "http://petstore.com/csharp_test" }); p.Id = petId; //p.Name = "Csharp test"; - p.Status = "available"; + p.Status = Pet.StatusEnum.Available; // create Category object Category category = new Category(); category.Id = 56; @@ -82,7 +82,7 @@ namespace SwaggerClientTest.TestPet Assert.IsInstanceOf (response, "Response is a Pet"); Assert.AreEqual ("Csharp test", response.Name); - Assert.AreEqual ("available", response.Status); + Assert.AreEqual (Pet.StatusEnum.Available, response.Status); Assert.IsInstanceOf> (response.Tags, "Response.Tags is a Array"); Assert.AreEqual (petId, response.Tags [0].Id); @@ -114,7 +114,7 @@ namespace SwaggerClientTest.TestPet Assert.IsInstanceOf (response, "Response is a Pet"); Assert.AreEqual ("Csharp test", response.Name); - Assert.AreEqual ("available", response.Status); + Assert.AreEqual (Pet.StatusEnum.Available, response.Status); Assert.IsInstanceOf> (response.Tags, "Response.Tags is a Array"); Assert.AreEqual (petId, response.Tags [0].Id); @@ -143,7 +143,7 @@ namespace SwaggerClientTest.TestPet Assert.IsInstanceOf (response, "Response is a Pet"); Assert.AreEqual ("Csharp test", response.Name); - Assert.AreEqual ("available", response.Status); + Assert.AreEqual (Pet.StatusEnum.Available, response.Status); Assert.IsInstanceOf> (response.Tags, "Response.Tags is a Array"); Assert.AreEqual (petId, response.Tags [0].Id); @@ -202,7 +202,7 @@ namespace SwaggerClientTest.TestPet Assert.IsInstanceOf> (response.Tags, "Response.Tags is a Array"); Assert.AreEqual ("new form name", response.Name); - Assert.AreEqual ("pending", response.Status); + Assert.AreEqual (Pet.StatusEnum.Pending, response.Status); Assert.AreEqual (petId, response.Tags [0].Id); Assert.AreEqual (56, response.Category.Id); @@ -259,7 +259,7 @@ namespace SwaggerClientTest.TestPet Pet p1 = new Pet(Name: "Csharp test", PhotoUrls: new List { "http://petstore.com/csharp_test"} ); p1.Id = petId; //p1.Name = "Csharp test"; - p1.Status = "available"; + p1.Status = Pet.StatusEnum.Available; // create Category object Category category1 = new Category(); category1.Id = 56; @@ -278,7 +278,7 @@ namespace SwaggerClientTest.TestPet Pet p2 = new Pet(Name: "Csharp test", PhotoUrls: new List { "http://petstore.com/csharp_test"} ); p2.Id = petId; p2.Name = "Csharp test"; - p2.Status = "available"; + p2.Status = Pet.StatusEnum.Available; // create Category object Category category2 = new Category(); category2.Id = 56; From 2d6dac16b7768a82c28452f37e8657c345e09a50 Mon Sep 17 00:00:00 2001 From: Tommy Alander Date: Thu, 3 Mar 2016 08:32:23 +0100 Subject: [PATCH 15/18] add cli option to specify if to emit default values in datamember --- .../io/swagger/codegen/CodegenConstants.java | 4 ++++ .../languages/AbstractCSharpCodegen.java | 1 + .../languages/CSharpClientCodegen.java | 5 +++++ .../src/main/resources/csharp/model.mustache | 4 ++-- .../options/CSharpClientOptionsProvider.java | 1 + .../Lib/SwaggerClient.Test/CategoryTests.cs | 4 ---- .../Lib/SwaggerClient.Test/OrderTests.cs | 4 ---- .../Lib/SwaggerClient.Test/PetApiTests.cs | 1 - .../Lib/SwaggerClient.Test/PetTests.cs | 4 ---- .../Lib/SwaggerClient.Test/StoreApiTests.cs | 1 - .../Lib/SwaggerClient.Test/TagTests.cs | 4 ---- .../Lib/SwaggerClient.Test/UserApiTests.cs | 1 - .../Lib/SwaggerClient.Test/UserTests.cs | 4 ---- .../src/main/csharp/IO/Swagger/Api/PetApi.cs | 1 - .../main/csharp/IO/Swagger/Api/StoreApi.cs | 1 - .../src/main/csharp/IO/Swagger/Api/UserApi.cs | 1 - .../main/csharp/IO/Swagger/Model/Category.cs | 8 ++------ .../src/main/csharp/IO/Swagger/Model/Order.cs | 16 ++++++--------- .../src/main/csharp/IO/Swagger/Model/Pet.cs | 16 ++++++--------- .../src/main/csharp/IO/Swagger/Model/Tag.cs | 8 ++------ .../src/main/csharp/IO/Swagger/Model/User.cs | 20 ++++++++----------- 21 files changed, 37 insertions(+), 72 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java index 0893c5102dd5..d02bc60539ac 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java @@ -87,4 +87,8 @@ public class CodegenConstants { public static final String MODEL_NAME_SUFFIX = "modelNameSuffix"; public static final String MODEL_NAME_SUFFIX_DESC = "Suffix that will be appended to all model names. Default is the empty string."; + + public static final String OPTIONAL_EMIT_DEFAULT_VALUES = "optionalEmitDefaultValues"; + public static final String OPTIONAL_EMIT_DEFAULT_VALUES_DESC = "Set DataMember's EmitDefaultValue, default false."; + } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractCSharpCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractCSharpCodegen.java index 982847647939..dc65edeb8743 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractCSharpCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractCSharpCodegen.java @@ -13,6 +13,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co protected boolean optionalAssemblyInfoFlag = true; protected boolean optionalProjectFileFlag = false; + protected boolean optionalEmitDefaultValue = false; protected boolean optionalMethodArgumentFlag = true; protected boolean useDateTimeOffsetFlag = false; protected boolean useCollection = false; diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java index 4cc027bb63fb..cf07c68f8263 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java @@ -121,6 +121,10 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { addSwitch(CodegenConstants.OPTIONAL_PROJECT_FILE, CodegenConstants.OPTIONAL_PROJECT_FILE_DESC, this.optionalProjectFileFlag); + + addSwitch(CodegenConstants.OPTIONAL_EMIT_DEFAULT_VALUES, + CodegenConstants.OPTIONAL_EMIT_DEFAULT_VALUES_DESC, + this.optionalEmitDefaultValue); } @Override @@ -139,6 +143,7 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { additionalProperties.put("packageDescription", packageDescription); additionalProperties.put("packageCompany", packageCompany); additionalProperties.put("packageCopyright", packageCopyright); + additionalProperties.put("emitDefaultValue", optionalEmitDefaultValue); if (additionalProperties.containsKey(CodegenConstants.DOTNET_FRAMEWORK)) { setTargetFramework((String) additionalProperties.get(CodegenConstants.DOTNET_FRAMEWORK)); diff --git a/modules/swagger-codegen/src/main/resources/csharp/model.mustache b/modules/swagger-codegen/src/main/resources/csharp/model.mustache index 7dc1bd83563b..86589816d120 100644 --- a/modules/swagger-codegen/src/main/resources/csharp/model.mustache +++ b/modules/swagger-codegen/src/main/resources/csharp/model.mustache @@ -28,7 +28,7 @@ namespace {{packageName}}.Model /// {{^description}}Gets or Sets {{{name}}}{{/description}}{{#description}}{{{description}}}{{/description}} /// {{#description}} /// {{{description}}}{{/description}} - [DataMember(Name="{{baseName}}", EmitDefaultValue=true)] + [DataMember(Name="{{baseName}}", EmitDefaultValue={{emitDefaultValue}})] public {{{datatypeWithEnum}}} {{name}} { get; set; } {{/isEnum}}{{/vars}} /// @@ -66,7 +66,7 @@ namespace {{packageName}}.Model /// {{^description}}Gets or Sets {{{name}}}{{/description}}{{#description}}{{{description}}}{{/description}} /// {{#description}} /// {{{description}}}{{/description}} - [DataMember(Name="{{baseName}}", EmitDefaultValue=true)] + [DataMember(Name="{{baseName}}", EmitDefaultValue={{emitDefaultValue}})] public {{{datatype}}} {{name}} { get; {{#isReadOnly}}private {{/isReadOnly}}set; } {{/isEnum}}{{/vars}} /// diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/CSharpClientOptionsProvider.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/CSharpClientOptionsProvider.java index ce810faea8b2..e8366aca0087 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/CSharpClientOptionsProvider.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/CSharpClientOptionsProvider.java @@ -32,6 +32,7 @@ public class CSharpClientOptionsProvider implements OptionsProvider { .put(CodegenConstants.OPTIONAL_PROJECT_FILE, "true") .put(CodegenConstants.OPTIONAL_PROJECT_GUID, PACKAGE_GUID_VALUE) .put(CodegenConstants.DOTNET_FRAMEWORK, "4.x") + .put(CodegenConstants.OPTIONAL_EMIT_DEFAULT_VALUES, "false") .build(); } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/CategoryTests.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/CategoryTests.cs index 41efd2c08dfc..6384ee4179ba 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/CategoryTests.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/CategoryTests.cs @@ -9,8 +9,6 @@ using IO.Swagger.Model; using IO.Swagger.Client; using System.Reflection; - - namespace IO.Swagger.Test { [TestFixture] @@ -68,5 +66,3 @@ namespace IO.Swagger.Test } } - - diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/OrderTests.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/OrderTests.cs index be753c8dabce..7d0bc854cef8 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/OrderTests.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/OrderTests.cs @@ -9,8 +9,6 @@ using IO.Swagger.Model; using IO.Swagger.Client; using System.Reflection; - - namespace IO.Swagger.Test { [TestFixture] @@ -104,5 +102,3 @@ namespace IO.Swagger.Test } } - - diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/PetApiTests.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/PetApiTests.cs index b5ce94521ac5..7e3566eb04b4 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/PetApiTests.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/PetApiTests.cs @@ -11,7 +11,6 @@ using IO.Swagger.Client; using IO.Swagger.Api; using IO.Swagger.Model; - namespace IO.Swagger.Test { [TestFixture] diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/PetTests.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/PetTests.cs index ea618777058b..6b203dbd1252 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/PetTests.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/PetTests.cs @@ -9,8 +9,6 @@ using IO.Swagger.Model; using IO.Swagger.Client; using System.Reflection; - - namespace IO.Swagger.Test { [TestFixture] @@ -104,5 +102,3 @@ namespace IO.Swagger.Test } } - - diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/StoreApiTests.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/StoreApiTests.cs index 6b35eb1a6b36..b0eb62933808 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/StoreApiTests.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/StoreApiTests.cs @@ -11,7 +11,6 @@ using IO.Swagger.Client; using IO.Swagger.Api; using IO.Swagger.Model; - namespace IO.Swagger.Test { [TestFixture] diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/TagTests.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/TagTests.cs index 2348c02e7892..ad772584cc5d 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/TagTests.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/TagTests.cs @@ -9,8 +9,6 @@ using IO.Swagger.Model; using IO.Swagger.Client; using System.Reflection; - - namespace IO.Swagger.Test { [TestFixture] @@ -68,5 +66,3 @@ namespace IO.Swagger.Test } } - - diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/UserApiTests.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/UserApiTests.cs index e1467147e71e..0d543c384aa7 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/UserApiTests.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/UserApiTests.cs @@ -11,7 +11,6 @@ using IO.Swagger.Client; using IO.Swagger.Api; using IO.Swagger.Model; - namespace IO.Swagger.Test { [TestFixture] diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/UserTests.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/UserTests.cs index 473f74cb0956..4610313b7347 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/UserTests.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/UserTests.cs @@ -9,8 +9,6 @@ using IO.Swagger.Model; using IO.Swagger.Client; using System.Reflection; - - namespace IO.Swagger.Test { [TestFixture] @@ -122,5 +120,3 @@ namespace IO.Swagger.Test } } - - diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/PetApi.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/PetApi.cs index 4d56e4c1948e..9ce0941740ec 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/PetApi.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/PetApi.cs @@ -7,7 +7,6 @@ using RestSharp; using IO.Swagger.Client; using IO.Swagger.Model; - namespace IO.Swagger.Api { diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/StoreApi.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/StoreApi.cs index 6c0134af16c8..ca6fa9529d1d 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/StoreApi.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/StoreApi.cs @@ -7,7 +7,6 @@ using RestSharp; using IO.Swagger.Client; using IO.Swagger.Model; - namespace IO.Swagger.Api { diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/UserApi.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/UserApi.cs index ee8c375dc1f4..193cc501a859 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/UserApi.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/UserApi.cs @@ -7,7 +7,6 @@ using RestSharp; using IO.Swagger.Client; using IO.Swagger.Model; - namespace IO.Swagger.Api { diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs index 5af4256119e8..80683074e9fb 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs @@ -9,8 +9,6 @@ using System.Runtime.Serialization; using Newtonsoft.Json; using Newtonsoft.Json.Converters; - - namespace IO.Swagger.Model { /// @@ -38,13 +36,13 @@ namespace IO.Swagger.Model /// /// Gets or Sets Id /// - [DataMember(Name="id", EmitDefaultValue=true)] + [DataMember(Name="id", EmitDefaultValue=false)] public long? Id { get; set; } /// /// Gets or Sets Name /// - [DataMember(Name="name", EmitDefaultValue=true)] + [DataMember(Name="name", EmitDefaultValue=false)] public string Name { get; set; } /// @@ -129,6 +127,4 @@ namespace IO.Swagger.Model } } - - } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs index a22e5e51dcdb..4fc561c6786c 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs @@ -9,8 +9,6 @@ using System.Runtime.Serialization; using Newtonsoft.Json; using Newtonsoft.Json.Converters; - - namespace IO.Swagger.Model { /// @@ -37,7 +35,7 @@ namespace IO.Swagger.Model /// Order Status /// /// Order Status - [DataMember(Name="status", EmitDefaultValue=true)] + [DataMember(Name="status", EmitDefaultValue=false)] public StatusEnum? Status { get; set; } /// @@ -64,31 +62,31 @@ namespace IO.Swagger.Model /// /// Gets or Sets Id /// - [DataMember(Name="id", EmitDefaultValue=true)] + [DataMember(Name="id", EmitDefaultValue=false)] public long? Id { get; private set; } /// /// Gets or Sets PetId /// - [DataMember(Name="petId", EmitDefaultValue=true)] + [DataMember(Name="petId", EmitDefaultValue=false)] public long? PetId { get; set; } /// /// Gets or Sets Quantity /// - [DataMember(Name="quantity", EmitDefaultValue=true)] + [DataMember(Name="quantity", EmitDefaultValue=false)] public int? Quantity { get; set; } /// /// Gets or Sets ShipDate /// - [DataMember(Name="shipDate", EmitDefaultValue=true)] + [DataMember(Name="shipDate", EmitDefaultValue=false)] public DateTime? ShipDate { get; set; } /// /// Gets or Sets Complete /// - [DataMember(Name="complete", EmitDefaultValue=true)] + [DataMember(Name="complete", EmitDefaultValue=false)] public bool? Complete { get; set; } /// @@ -209,6 +207,4 @@ namespace IO.Swagger.Model } } - - } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs index bf38e422f4e9..b206c3fa5501 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs @@ -9,8 +9,6 @@ using System.Runtime.Serialization; using Newtonsoft.Json; using Newtonsoft.Json.Converters; - - namespace IO.Swagger.Model { /// @@ -37,7 +35,7 @@ namespace IO.Swagger.Model /// pet status in the store /// /// pet status in the store - [DataMember(Name="status", EmitDefaultValue=true)] + [DataMember(Name="status", EmitDefaultValue=false)] public StatusEnum? Status { get; set; } /// @@ -82,31 +80,31 @@ namespace IO.Swagger.Model /// /// Gets or Sets Id /// - [DataMember(Name="id", EmitDefaultValue=true)] + [DataMember(Name="id", EmitDefaultValue=false)] public long? Id { get; set; } /// /// Gets or Sets Category /// - [DataMember(Name="category", EmitDefaultValue=true)] + [DataMember(Name="category", EmitDefaultValue=false)] public Category Category { get; set; } /// /// Gets or Sets Name /// - [DataMember(Name="name", EmitDefaultValue=true)] + [DataMember(Name="name", EmitDefaultValue=false)] public string Name { get; set; } /// /// Gets or Sets PhotoUrls /// - [DataMember(Name="photoUrls", EmitDefaultValue=true)] + [DataMember(Name="photoUrls", EmitDefaultValue=false)] public List PhotoUrls { get; set; } /// /// Gets or Sets Tags /// - [DataMember(Name="tags", EmitDefaultValue=true)] + [DataMember(Name="tags", EmitDefaultValue=false)] public List Tags { get; set; } /// @@ -227,6 +225,4 @@ namespace IO.Swagger.Model } } - - } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs index d756b9c3f13c..8b511075d567 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs @@ -9,8 +9,6 @@ using System.Runtime.Serialization; using Newtonsoft.Json; using Newtonsoft.Json.Converters; - - namespace IO.Swagger.Model { /// @@ -38,13 +36,13 @@ namespace IO.Swagger.Model /// /// Gets or Sets Id /// - [DataMember(Name="id", EmitDefaultValue=true)] + [DataMember(Name="id", EmitDefaultValue=false)] public long? Id { get; set; } /// /// Gets or Sets Name /// - [DataMember(Name="name", EmitDefaultValue=true)] + [DataMember(Name="name", EmitDefaultValue=false)] public string Name { get; set; } /// @@ -129,6 +127,4 @@ namespace IO.Swagger.Model } } - - } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs index 6fdccef9a3ee..2216619c0bfc 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs @@ -9,8 +9,6 @@ using System.Runtime.Serialization; using Newtonsoft.Json; using Newtonsoft.Json.Converters; - - namespace IO.Swagger.Model { /// @@ -50,50 +48,50 @@ namespace IO.Swagger.Model /// /// Gets or Sets Id /// - [DataMember(Name="id", EmitDefaultValue=true)] + [DataMember(Name="id", EmitDefaultValue=false)] public long? Id { get; set; } /// /// Gets or Sets Username /// - [DataMember(Name="username", EmitDefaultValue=true)] + [DataMember(Name="username", EmitDefaultValue=false)] public string Username { get; set; } /// /// Gets or Sets FirstName /// - [DataMember(Name="firstName", EmitDefaultValue=true)] + [DataMember(Name="firstName", EmitDefaultValue=false)] public string FirstName { get; set; } /// /// Gets or Sets LastName /// - [DataMember(Name="lastName", EmitDefaultValue=true)] + [DataMember(Name="lastName", EmitDefaultValue=false)] public string LastName { get; set; } /// /// Gets or Sets Email /// - [DataMember(Name="email", EmitDefaultValue=true)] + [DataMember(Name="email", EmitDefaultValue=false)] public string Email { get; set; } /// /// Gets or Sets Password /// - [DataMember(Name="password", EmitDefaultValue=true)] + [DataMember(Name="password", EmitDefaultValue=false)] public string Password { get; set; } /// /// Gets or Sets Phone /// - [DataMember(Name="phone", EmitDefaultValue=true)] + [DataMember(Name="phone", EmitDefaultValue=false)] public string Phone { get; set; } /// /// User Status /// /// User Status - [DataMember(Name="userStatus", EmitDefaultValue=true)] + [DataMember(Name="userStatus", EmitDefaultValue=false)] public int? UserStatus { get; set; } /// @@ -232,6 +230,4 @@ namespace IO.Swagger.Model } } - - } From 033b9871b3eda94128ee4fe6f0685f61a410225a Mon Sep 17 00:00:00 2001 From: Tommy Alander Date: Thu, 3 Mar 2016 10:27:42 +0100 Subject: [PATCH 16/18] fix the useage of the cli option for emitdefaultvalues and verify that it works --- .../swagger/codegen/languages/AbstractCSharpCodegen.java | 8 ++++++++ .../swagger/codegen/csharp/CSharpClientOptionsTest.java | 2 ++ .../codegen/options/CSharpClientOptionsProvider.java | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractCSharpCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractCSharpCodegen.java index dc65edeb8743..24bee9216b26 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractCSharpCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractCSharpCodegen.java @@ -121,6 +121,10 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co this.returnICollection = returnICollection; } + public void setOptionalEmitDefaultValue(boolean optionalEmitDefaultValue) { + this.optionalEmitDefaultValue = optionalEmitDefaultValue; + } + public void setUseCollection(boolean useCollection) { this.useCollection = useCollection; if (useCollection) { @@ -192,6 +196,10 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co if (additionalProperties.containsKey(CodegenConstants.RETURN_ICOLLECTION)) { setReturnICollection(Boolean.valueOf(additionalProperties.get(CodegenConstants.RETURN_ICOLLECTION).toString())); } + + if (additionalProperties.containsKey(CodegenConstants.OPTIONAL_EMIT_DEFAULT_VALUES)) { + setOptionalEmitDefaultValue(Boolean.valueOf(additionalProperties.get(CodegenConstants.OPTIONAL_EMIT_DEFAULT_VALUES).toString())); + } } @Override diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/csharp/CSharpClientOptionsTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/csharp/CSharpClientOptionsTest.java index da1b7ef7ea24..71975fcee66f 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/csharp/CSharpClientOptionsTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/csharp/CSharpClientOptionsTest.java @@ -46,6 +46,8 @@ public class CSharpClientOptionsTest extends AbstractOptionsTest { times = 1; clientCodegen.setReturnICollection(false); times = 1; + clientCodegen.setOptionalEmitDefaultValue(true); + times = 1; }}; } } diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/CSharpClientOptionsProvider.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/CSharpClientOptionsProvider.java index e8366aca0087..5f43f5cf1554 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/CSharpClientOptionsProvider.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/CSharpClientOptionsProvider.java @@ -32,7 +32,7 @@ public class CSharpClientOptionsProvider implements OptionsProvider { .put(CodegenConstants.OPTIONAL_PROJECT_FILE, "true") .put(CodegenConstants.OPTIONAL_PROJECT_GUID, PACKAGE_GUID_VALUE) .put(CodegenConstants.DOTNET_FRAMEWORK, "4.x") - .put(CodegenConstants.OPTIONAL_EMIT_DEFAULT_VALUES, "false") + .put(CodegenConstants.OPTIONAL_EMIT_DEFAULT_VALUES, "true") .build(); } From e649ab1101ccea90d91c2b9b853d689a349d6f30 Mon Sep 17 00:00:00 2001 From: Tommy Alander Date: Thu, 3 Mar 2016 10:33:16 +0100 Subject: [PATCH 17/18] indent code --- .../java/io/swagger/codegen/languages/CSharpClientCodegen.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java index cf07c68f8263..89f5806236d0 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java @@ -267,7 +267,7 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { @Override public CodegenModel fromModel(String name, Model model, Map allDefinitions) { CodegenModel codegenModel = super.fromModel(name, model, allDefinitions); - if (allDefinitions != null && codegenModel != null && codegenModel.parent != null && codegenModel.hasEnums) { + if (allDefinitions != null && codegenModel != null && codegenModel.parent != null && codegenModel.hasEnums) { final Model parentModel = allDefinitions.get(toModelName(codegenModel.parent)); final CodegenModel parentCodegenModel = super.fromModel(codegenModel.parent, parentModel); codegenModel = this.reconcileInlineEnums(codegenModel, parentCodegenModel); @@ -275,6 +275,7 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { return codegenModel; } + public void setOptionalProjectFileFlag(boolean flag) { this.optionalProjectFileFlag = flag; } From 27fc4ba4e8bcef9fcc44de89e620fae7e27be752 Mon Sep 17 00:00:00 2001 From: Tommy Alander Date: Thu, 3 Mar 2016 10:33:51 +0100 Subject: [PATCH 18/18] remove unused line --- .../java/default/src/main/java/io/swagger/client/model/Pet.java | 1 - 1 file changed, 1 deletion(-) diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Pet.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Pet.java index 7ab51aa9adb4..9d183a547a53 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Pet.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Pet.java @@ -6,7 +6,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import io.swagger.client.model.Category; -import java.util.*; import io.swagger.client.model.Tag; import java.util.ArrayList; import java.util.List;