From 7b578a4c4e0d37c866baf42dedfbc796a5804ac6 Mon Sep 17 00:00:00 2001 From: Jim Schubert Date: Tue, 26 Apr 2016 22:37:40 -0400 Subject: [PATCH 01/19] Update C# client structure using common standards MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Aligns C# project outputs more with community accepted standards and leverges Nuget for package management. This also moves the generated C# sample code out of the test project's Lib folder. The output structure here was causing some issues with maintainability (e.g. had to update test project with generated code). (see: https://gist.github.com/davidfowl/ed7564297c61fe9ab814) Output for a project, IO.Swagger will now look like: . ├── IO.Swagger.sln ├── README.md ├── bin ├── build.bat ├── build.sh ├── docs ├── packages └── src ├── IO.Swagger │   └── packages.config └── IO.Swagger.Test └── packages.config This is a change from the Java-like src/main/csharp/IO/Swagger/etc structure and will be a breaking change for some. --- .gitignore | 10 +- bin/csharp-petstore.sh | 2 +- bin/windows/csharp-petstore.bat | 2 +- .../languages/AbstractCSharpCodegen.java | 16 +- .../languages/CSharpClientCodegen.java | 51 ++- .../main/resources/csharp/Project.mustache | 21 +- .../src/main/resources/csharp/README.mustache | 4 +- .../main/resources/csharp/Solution.mustache | 27 ++ .../resources/csharp/TestProject.mustache | 81 ++++ .../resources/csharp/compile-mono.sh.mustache | 8 +- .../main/resources/csharp/compile.mustache | 8 +- .../csharp/packages_test.config.mustache | 6 + .../Lib => }/SwaggerClient/.gitignore | 0 .../csharp/SwaggerClient/IO.Swagger.sln | 27 ++ .../Lib => }/SwaggerClient/README.md | 75 ++-- .../petstore/csharp/SwaggerClient/build.bat | 14 + .../build.sh} | 8 +- .../Lib => }/SwaggerClient/docs/Animal.md | 0 .../SwaggerClient/docs/ApiResponse.md | 0 .../Lib => }/SwaggerClient/docs/Cat.md | 0 .../Lib => }/SwaggerClient/docs/Category.md | 0 .../Lib => }/SwaggerClient/docs/Dog.md | 0 .../csharp/SwaggerClient/docs/FakeApi.md | 91 ++++ .../Lib => }/SwaggerClient/docs/FormatTest.md | 6 +- .../SwaggerClient/docs/Model200Response.md | 0 .../SwaggerClient/docs/ModelReturn.md | 0 .../Lib => }/SwaggerClient/docs/Name.md | 0 .../Lib => }/SwaggerClient/docs/Order.md | 0 .../Lib => }/SwaggerClient/docs/Pet.md | 0 .../Lib => }/SwaggerClient/docs/PetApi.md | 0 .../SwaggerClient/docs/SpecialModelName.md | 0 .../Lib => }/SwaggerClient/docs/StoreApi.md | 0 .../Lib => }/SwaggerClient/docs/Tag.md | 0 .../Lib => }/SwaggerClient/docs/User.md | 0 .../Lib => }/SwaggerClient/docs/UserApi.md | 0 .../Lib => }/SwaggerClient/git_push.sh | 0 .../src/IO.Swagger.Test/Api/FakeApiTests.cs | 80 ++++ .../src/IO.Swagger.Test/Api}/PetApiTests.cs | 0 .../src/IO.Swagger.Test/Api}/StoreApiTests.cs | 0 .../src/IO.Swagger.Test/Api}/UserApiTests.cs | 0 .../IO.Swagger.Test/IO.Swagger.Test.csproj | 73 +++ .../src/IO.Swagger.Test/Model}/AnimalTests.cs | 0 .../Model}/ApiResponseTests.cs | 0 .../src/IO.Swagger.Test/Model}/CatTests.cs | 0 .../IO.Swagger.Test/Model}/CategoryTests.cs | 0 .../src/IO.Swagger.Test/Model}/DogTests.cs | 0 .../IO.Swagger.Test/Model}/FormatTestTests.cs | 0 .../Model}/Model200ResponseTests.cs | 0 .../Model}/ModelReturnTests.cs | 0 .../src/IO.Swagger.Test/Model}/NameTests.cs | 0 .../src/IO.Swagger.Test/Model}/OrderTests.cs | 0 .../src/IO.Swagger.Test/Model}/PetTests.cs | 0 .../Model}/SpecialModelNameTests.cs | 0 .../src/IO.Swagger.Test/Model}/TagTests.cs | 0 .../src/IO.Swagger.Test/Model}/UserTests.cs | 0 .../src/IO.Swagger.Test/packages.config | 6 + .../src/IO.Swagger/Api/FakeApi.cs | 418 ++++++++++++++++++ .../src/IO.Swagger}/Api/PetApi.cs | 0 .../src/IO.Swagger}/Api/StoreApi.cs | 0 .../src/IO.Swagger}/Api/UserApi.cs | 0 .../src/IO.Swagger}/Client/ApiClient.cs | 0 .../src/IO.Swagger}/Client/ApiException.cs | 0 .../src/IO.Swagger}/Client/ApiResponse.cs | 0 .../src/IO.Swagger}/Client/Configuration.cs | 0 .../src/IO.Swagger/IO.Swagger.csproj | 61 +++ .../src/IO.Swagger}/Model/Animal.cs | 0 .../src/IO.Swagger}/Model/ApiResponse.cs | 0 .../src/IO.Swagger}/Model/Cat.cs | 0 .../src/IO.Swagger}/Model/Category.cs | 0 .../src/IO.Swagger}/Model/Dog.cs | 0 .../src/IO.Swagger}/Model/FormatTest.cs | 36 +- .../src/IO.Swagger}/Model/Model200Response.cs | 0 .../src/IO.Swagger}/Model/ModelReturn.cs | 0 .../src/IO.Swagger}/Model/Name.cs | 0 .../src/IO.Swagger}/Model/Order.cs | 0 .../src/IO.Swagger}/Model/Pet.cs | 0 .../src/IO.Swagger}/Model/SpecialModelName.cs | 0 .../src/IO.Swagger}/Model/Tag.cs | 0 .../src/IO.Swagger}/Model/User.cs | 0 .../IO.Swagger}/Properties/AssemblyInfo.cs | 0 .../src/IO.Swagger}/packages.config | 0 .../InlineResponse200Tests.cs | 104 ----- .../Lib/SwaggerClient/README.mustache | 184 -------- .../Lib/SwaggerClient/bin/Newtonsoft.Json.dll | Bin 521216 -> 0 bytes .../Lib/SwaggerClient/bin/RestSharp.dll | Bin 167936 -> 0 bytes .../Lib/SwaggerClient/compile.bat | 14 - .../SwaggerClient/docs/InlineResponse200.md | 14 - .../Lib/SwaggerClient/petstore | 0 .../IO/Swagger/Model/InlineResponse200.cs | 217 --------- .../csharp/IO/Swagger/Model/ObjectReturn.cs | 113 ----- .../src/main/csharp/IO/Swagger/Model/Task.cs | 113 ----- .../SwaggerClientTest.csproj | 46 +- .../SwaggerClientTest/SwaggerClientTest.sln | 6 + .../SwaggerClientTest.userprefs | 20 +- ...ClientTest.csproj.FilesWrittenAbsolute.txt | 20 +- .../csharp/SwaggerClientTest/packages.config | 2 + .../packages/repositories.config | 7 +- 97 files changed, 1086 insertions(+), 905 deletions(-) create mode 100644 modules/swagger-codegen/src/main/resources/csharp/Solution.mustache create mode 100644 modules/swagger-codegen/src/main/resources/csharp/TestProject.mustache create mode 100644 modules/swagger-codegen/src/main/resources/csharp/packages_test.config.mustache rename samples/client/petstore/csharp/{SwaggerClientTest/Lib => }/SwaggerClient/.gitignore (100%) create mode 100644 samples/client/petstore/csharp/SwaggerClient/IO.Swagger.sln rename samples/client/petstore/csharp/{SwaggerClientTest/Lib => }/SwaggerClient/README.md (70%) create mode 100644 samples/client/petstore/csharp/SwaggerClient/build.bat rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/compile-mono.sh => SwaggerClient/build.sh} (56%) mode change 100755 => 100644 rename samples/client/petstore/csharp/{SwaggerClientTest/Lib => }/SwaggerClient/docs/Animal.md (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib => }/SwaggerClient/docs/ApiResponse.md (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib => }/SwaggerClient/docs/Cat.md (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib => }/SwaggerClient/docs/Category.md (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib => }/SwaggerClient/docs/Dog.md (100%) create mode 100644 samples/client/petstore/csharp/SwaggerClient/docs/FakeApi.md rename samples/client/petstore/csharp/{SwaggerClientTest/Lib => }/SwaggerClient/docs/FormatTest.md (84%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib => }/SwaggerClient/docs/Model200Response.md (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib => }/SwaggerClient/docs/ModelReturn.md (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib => }/SwaggerClient/docs/Name.md (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib => }/SwaggerClient/docs/Order.md (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib => }/SwaggerClient/docs/Pet.md (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib => }/SwaggerClient/docs/PetApi.md (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib => }/SwaggerClient/docs/SpecialModelName.md (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib => }/SwaggerClient/docs/StoreApi.md (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib => }/SwaggerClient/docs/Tag.md (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib => }/SwaggerClient/docs/User.md (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib => }/SwaggerClient/docs/UserApi.md (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib => }/SwaggerClient/git_push.sh (100%) create mode 100644 samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Api/FakeApiTests.cs rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient.Test => SwaggerClient/src/IO.Swagger.Test/Api}/PetApiTests.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient.Test => SwaggerClient/src/IO.Swagger.Test/Api}/StoreApiTests.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient.Test => SwaggerClient/src/IO.Swagger.Test/Api}/UserApiTests.cs (100%) create mode 100644 samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/IO.Swagger.Test.csproj rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient.Test => SwaggerClient/src/IO.Swagger.Test/Model}/AnimalTests.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient.Test => SwaggerClient/src/IO.Swagger.Test/Model}/ApiResponseTests.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient.Test => SwaggerClient/src/IO.Swagger.Test/Model}/CatTests.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient.Test => SwaggerClient/src/IO.Swagger.Test/Model}/CategoryTests.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient.Test => SwaggerClient/src/IO.Swagger.Test/Model}/DogTests.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient.Test => SwaggerClient/src/IO.Swagger.Test/Model}/FormatTestTests.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient.Test => SwaggerClient/src/IO.Swagger.Test/Model}/Model200ResponseTests.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient.Test => SwaggerClient/src/IO.Swagger.Test/Model}/ModelReturnTests.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient.Test => SwaggerClient/src/IO.Swagger.Test/Model}/NameTests.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient.Test => SwaggerClient/src/IO.Swagger.Test/Model}/OrderTests.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient.Test => SwaggerClient/src/IO.Swagger.Test/Model}/PetTests.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient.Test => SwaggerClient/src/IO.Swagger.Test/Model}/SpecialModelNameTests.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient.Test => SwaggerClient/src/IO.Swagger.Test/Model}/TagTests.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient.Test => SwaggerClient/src/IO.Swagger.Test/Model}/UserTests.cs (100%) create mode 100644 samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/packages.config create mode 100644 samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Api/FakeApi.cs rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger => SwaggerClient/src/IO.Swagger}/Api/PetApi.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger => SwaggerClient/src/IO.Swagger}/Api/StoreApi.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger => SwaggerClient/src/IO.Swagger}/Api/UserApi.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger => SwaggerClient/src/IO.Swagger}/Client/ApiClient.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger => SwaggerClient/src/IO.Swagger}/Client/ApiException.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger => SwaggerClient/src/IO.Swagger}/Client/ApiResponse.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger => SwaggerClient/src/IO.Swagger}/Client/Configuration.cs (100%) create mode 100644 samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/IO.Swagger.csproj rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger => SwaggerClient/src/IO.Swagger}/Model/Animal.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger => SwaggerClient/src/IO.Swagger}/Model/ApiResponse.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger => SwaggerClient/src/IO.Swagger}/Model/Cat.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger => SwaggerClient/src/IO.Swagger}/Model/Category.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger => SwaggerClient/src/IO.Swagger}/Model/Dog.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger => SwaggerClient/src/IO.Swagger}/Model/FormatTest.cs (90%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger => SwaggerClient/src/IO.Swagger}/Model/Model200Response.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger => SwaggerClient/src/IO.Swagger}/Model/ModelReturn.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger => SwaggerClient/src/IO.Swagger}/Model/Name.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger => SwaggerClient/src/IO.Swagger}/Model/Order.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger => SwaggerClient/src/IO.Swagger}/Model/Pet.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger => SwaggerClient/src/IO.Swagger}/Model/SpecialModelName.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger => SwaggerClient/src/IO.Swagger}/Model/Tag.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger => SwaggerClient/src/IO.Swagger}/Model/User.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger => SwaggerClient/src/IO.Swagger}/Properties/AssemblyInfo.cs (100%) rename samples/client/petstore/csharp/{SwaggerClientTest/Lib/SwaggerClient/vendor => SwaggerClient/src/IO.Swagger}/packages.config (100%) delete mode 100644 samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/InlineResponse200Tests.cs delete mode 100644 samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/README.mustache delete mode 100644 samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/bin/Newtonsoft.Json.dll delete mode 100644 samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/bin/RestSharp.dll delete mode 100644 samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/compile.bat delete mode 100644 samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/InlineResponse200.md delete mode 100644 samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/petstore delete mode 100644 samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/InlineResponse200.cs delete mode 100644 samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/ObjectReturn.cs delete mode 100644 samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Task.cs diff --git a/.gitignore b/.gitignore index 0dc52799236..c098adc308f 100644 --- a/.gitignore +++ b/.gitignore @@ -91,13 +91,19 @@ samples/client/petstore/swift/SwaggerClientTests/Pods/Pods.xcodeproj/xcshareddat samples/client/petstore/csharp/SwaggerClientTest/.vs samples/client/petstore/csharp/SwaggerClientTest/obj samples/client/petstore/csharp/SwaggerClientTest/bin -samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/vendor/ +samples/client/petstore/csharp/SwaggerClientTest/packages samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/ samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/ -samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/nuget.exe samples/client/petstore/csharp/SwaggerClientTest/TestResult.xml samples/client/petstore/csharp/SwaggerClientTest/nuget.exe samples/client/petstore/csharp/SwaggerClientTest/testrunner/ +samples/client/petstore/csharp/SwaggerClient/.vs +samples/client/petstore/csharp/SwaggerClient/nuget.exe +samples/client/petstore/csharp/SwaggerClient/obj +samples/client/petstore/csharp/SwaggerClient/bin +samples/client/petstore/csharp/SwaggerClient/obj/Debug/ +samples/client/petstore/csharp/SwaggerClient/bin/Debug/ +samples/client/petstore/csharp/SwaggerClient/packages # Python *.pyc diff --git a/bin/csharp-petstore.sh b/bin/csharp-petstore.sh index c042dd9c0cd..15b80bc71f7 100755 --- a/bin/csharp-petstore.sh +++ b/bin/csharp-petstore.sh @@ -26,6 +26,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="$@ generate -i modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -l csharp -o samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient" +ags="$@ generate -i modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -l csharp -o samples/client/petstore/csharp/SwaggerClient -DoptionalProjectFile=true" java $JAVA_OPTS -jar $executable $ags diff --git a/bin/windows/csharp-petstore.bat b/bin/windows/csharp-petstore.bat index 227ed319441..29338524c02 100755 --- a/bin/windows/csharp-petstore.bat +++ b/bin/windows/csharp-petstore.bat @@ -5,6 +5,6 @@ If Not Exist %executable% ( ) set JAVA_OPTS=%JAVA_OPTS% -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties -set ags=generate -t modules\swagger-codegen\src\main\resources\csharp -i modules\swagger-codegen\src\test\resources\2_0\petstore.json -l csharp -o samples\client\petstore\csharp\SwaggerClientTest\Lib\SwaggerClient +set ags=generate -t modules\swagger-codegen\src\main\resources\csharp -i modules\swagger-codegen\src\test\resources\2_0\petstore.json -l csharp -o samples\client\petstore\csharp\SwaggerClient -DoptionalProjectFile=true java %JAVA_OPTS% -jar %executable% %ags% 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 df23c1f2275..cd9bbc728fc 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 @@ -21,7 +21,12 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co protected String packageVersion = "1.0.0"; protected String packageName = "IO.Swagger"; - protected String sourceFolder = "src" + File.separator + packageName; + + protected String sourceFolder = "src"; + + // TODO: Add option for test folder output location. Nice to allow e.g. ./test instead of ./src. + // This would require updating relative paths (e.g. path to main project file in test project file) + protected String testFolder = sourceFolder; protected Set collectionTypes; protected Set mapTypes; @@ -277,12 +282,12 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co @Override public String apiFileFolder() { - return outputFolder + File.separator + sourceFolder + File.separator + apiPackage().replace('.', File.separatorChar); + return outputFolder + File.separator + sourceFolder + File.separator + packageName + File.separator + apiPackage(); } @Override public String modelFileFolder() { - return outputFolder + File.separator + sourceFolder + File.separator + modelPackage().replace('.', File.separatorChar); + return outputFolder + File.separator + sourceFolder + File.separator + packageName + File.separator + modelPackage(); } @Override @@ -532,7 +537,6 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co return toModelName(name) + "Tests"; } - public void setPackageName(String packageName) { this.packageName = packageName; } @@ -544,4 +548,8 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co public void setSourceFolder(String sourceFolder) { this.sourceFolder = sourceFolder; } + + public String testPackageName() { + return this.packageName + ".Test"; + } } 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 b8f2b187a6a..a71905b3eb6 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 @@ -68,9 +68,6 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { modelDocTemplateFiles.put("model_doc.mustache", ".md"); apiDocTemplateFiles.put("api_doc.mustache", ".md"); - // C# client default - setSourceFolder("src" + File.separator + "main" + File.separator + "csharp"); - cliOptions.clear(); // CLI options @@ -141,9 +138,9 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { public void processOpts() { super.processOpts(); - apiPackage = packageName + ".Api"; - modelPackage = packageName + ".Model"; - clientPackage = packageName + ".Client"; + apiPackage = "Api"; + modelPackage = "Model"; + clientPackage = "Client"; additionalProperties.put("clientPackage", clientPackage); @@ -157,6 +154,10 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { if (additionalProperties.containsKey(CodegenConstants.DOTNET_FRAMEWORK)) { setTargetFramework((String) additionalProperties.get(CodegenConstants.DOTNET_FRAMEWORK)); + } else { + // Ensure default is set. + setTargetFramework(NET45); + additionalProperties.put("targetFramework", this.targetFramework); } if (NET35.equals(this.targetFramework)) { @@ -201,8 +202,12 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { .get(CodegenConstants.OPTIONAL_ASSEMBLY_INFO).toString())); } - String packageFolder = sourceFolder + File.separator + packageName.replace(".", java.io.File.separator); - String clientPackageDir = sourceFolder + File.separator + clientPackage.replace(".", java.io.File.separator); + final String testPackageName = testPackageName(); + String packageFolder = sourceFolder + File.separator + packageName; + String clientPackageDir = packageFolder + File.separator + clientPackage; + String testPackageFolder = testFolder + File.separator + testPackageName; + + additionalProperties.put("testPackageName", testPackageName); //Compute the relative path to the bin directory where the external assemblies live //This is necessary to properly generate the project file @@ -210,7 +215,7 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { String binRelativePath = "..\\"; for (int i = 0; i < packageDepth; i = i + 1) binRelativePath += "..\\"; - binRelativePath += "vendor\\"; + binRelativePath += "vendor"; additionalProperties.put("binRelativePath", binRelativePath); supportingFiles.add(new SupportingFile("Configuration.mustache", @@ -222,9 +227,13 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { supportingFiles.add(new SupportingFile("ApiResponse.mustache", clientPackageDir, "ApiResponse.cs")); - supportingFiles.add(new SupportingFile("compile.mustache", "", "compile.bat")); - supportingFiles.add(new SupportingFile("compile-mono.sh.mustache", "", "compile-mono.sh")); - supportingFiles.add(new SupportingFile("packages.config.mustache", "vendor" + java.io.File.separator, "packages.config")); + supportingFiles.add(new SupportingFile("compile.mustache", "", "build.bat")); + supportingFiles.add(new SupportingFile("compile-mono.sh.mustache", "", "build.sh")); + + // copy package.config to nuget's standard location for project-level installs + supportingFiles.add(new SupportingFile("packages.config.mustache", packageFolder + File.separator, "packages.config")); + supportingFiles.add(new SupportingFile("packages_test.config.mustache", testPackageFolder + File.separator, "packages.config")); + supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); supportingFiles.add(new SupportingFile("git_push.sh.mustache", "", "git_push.sh")); supportingFiles.add(new SupportingFile("gitignore.mustache", "", ".gitignore")); @@ -233,7 +242,14 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { supportingFiles.add(new SupportingFile("AssemblyInfo.mustache", packageFolder + File.separator + "Properties", "AssemblyInfo.cs")); } if (optionalProjectFileFlag) { - supportingFiles.add(new SupportingFile("Project.mustache", packageFolder, clientPackage + ".csproj")); + supportingFiles.add(new SupportingFile("Solution.mustache", "", packageName + ".sln")); + supportingFiles.add(new SupportingFile("Project.mustache", packageFolder, packageName + ".csproj")); + + // TODO: Check if test project output is enabled, partially related to #2506. Should have options for: + // 1) No test project + // 2) No model tests + // 3) No api tests + supportingFiles.add(new SupportingFile("TestProject.mustache", testPackageFolder, testPackageName + ".csproj")); } additionalProperties.put("apiDocPath", apiDocPath); @@ -491,4 +507,13 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { return (outputFolder + "/" + modelDocPath).replace('/', File.separatorChar); } + @Override + public String apiTestFileFolder() { + return outputFolder + File.separator + testFolder + File.separator + testPackageName() + File.separator + apiPackage(); + } + + @Override + public String modelTestFileFolder() { + return outputFolder + File.separator + testFolder + File.separator + testPackageName() + File.separator + modelPackage(); + } } diff --git a/modules/swagger-codegen/src/main/resources/csharp/Project.mustache b/modules/swagger-codegen/src/main/resources/csharp/Project.mustache index d38e5d92d1e..141d541a5b5 100644 --- a/modules/swagger-codegen/src/main/resources/csharp/Project.mustache +++ b/modules/swagger-codegen/src/main/resources/csharp/Project.mustache @@ -39,8 +39,6 @@ - - @@ -48,18 +46,23 @@ - False - {{binRelativePath}}/Newtonsoft.Json.8.0.2/lib/{{targetFrameworkNuget}}/Newtonsoft.Json.dll + $(SolutionDir)\packages\Newtonsoft.Json.8.0.2\lib\{{targetFrameworkNuget}}\Newtonsoft.Json.dll + ..\packages\Newtonsoft.Json.8.0.2\lib\{{targetFrameworkNuget}}\Newtonsoft.Json.dll + ..\..\packages\Newtonsoft.Json.8.0.2\lib\{{targetFrameworkNuget}}\Newtonsoft.Json.dll + {{binRelativePath}}\Newtonsoft.Json.8.0.2\lib\{{targetFrameworkNuget}}\Newtonsoft.Json.dll - {{binRelativePath}}/RestSharp.105.2.3/lib/{{targetFrameworkNuget}}/RestSharp.dll + $(SolutionDir)\packages\RestSharp.105.1.0\lib\{{targetFrameworkNuget}}\RestSharp.dll + ..\packages\RestSharp.105.1.0\lib\{{targetFrameworkNuget}}\RestSharp.dll + ..\..\packages\RestSharp.105.1.0\lib\{{targetFrameworkNuget}}\RestSharp.dll + {{binRelativePath}}\RestSharp.105.1.0\lib\{{targetFrameworkNuget}}\RestSharp.dll - - - - + + + + diff --git a/modules/swagger-codegen/src/main/resources/csharp/README.mustache b/modules/swagger-codegen/src/main/resources/csharp/README.mustache index 06660a3c615..56b36dcc6a7 100644 --- a/modules/swagger-codegen/src/main/resources/csharp/README.mustache +++ b/modules/swagger-codegen/src/main/resources/csharp/README.mustache @@ -37,8 +37,8 @@ NOTE: RestSharp versions greater than 105.1.0 have a bug which causes file uploa ## Installation Run the following command to generate the DLL -- [Mac/Linux] `/bin/sh compile-mono.sh` -- [Windows] `compile.bat` +- [Mac/Linux] `/bin/sh build.sh` +- [Windows] `build.bat` Then include the DLL (under the `bin` folder) in the C# project, and use the namespaces: ```csharp diff --git a/modules/swagger-codegen/src/main/resources/csharp/Solution.mustache b/modules/swagger-codegen/src/main/resources/csharp/Solution.mustache new file mode 100644 index 00000000000..57f6201600f --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/csharp/Solution.mustache @@ -0,0 +1,27 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +VisualStudioVersion = 12.0.0.0 +MinimumVisualStudioVersion = 10.0.0.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "{{packageName}}", "src\{{packageName}}\{{packageName}}.csproj", "{{packageGuid}}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "{{testPackageName}}", "src\{{testPackageName}}\{{testPackageName}}.csproj", "{19F1DEBC-DE5E-4517-8062-F000CD499087}" +EndProject +Global +GlobalSection(SolutionConfigurationPlatforms) = preSolution +Debug|Any CPU = Debug|Any CPU +Release|Any CPU = Release|Any CPU +EndGlobalSection +GlobalSection(ProjectConfigurationPlatforms) = postSolution +{{packageGuid}}.Debug|Any CPU.ActiveCfg = Debug|Any CPU +{{packageGuid}}.Debug|Any CPU.Build.0 = Debug|Any CPU +{{packageGuid}}.Release|Any CPU.ActiveCfg = Release|Any CPU +{{packageGuid}}.Release|Any CPU.Build.0 = Release|Any CPU +{19F1DEBC-DE5E-4517-8062-F000CD499087}.Debug|Any CPU.ActiveCfg = Debug|Any CPU +{19F1DEBC-DE5E-4517-8062-F000CD499087}.Debug|Any CPU.Build.0 = Debug|Any CPU +{19F1DEBC-DE5E-4517-8062-F000CD499087}.Release|Any CPU.ActiveCfg = Release|Any CPU +{19F1DEBC-DE5E-4517-8062-F000CD499087}.Release|Any CPU.Build.0 = Release|Any CPU +EndGlobalSection +GlobalSection(SolutionProperties) = preSolution +HideSolutionNode = FALSE +EndGlobalSection +EndGlobal \ No newline at end of file diff --git a/modules/swagger-codegen/src/main/resources/csharp/TestProject.mustache b/modules/swagger-codegen/src/main/resources/csharp/TestProject.mustache new file mode 100644 index 00000000000..0e0bd6c1671 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/csharp/TestProject.mustache @@ -0,0 +1,81 @@ + + + + Debug + AnyCPU + {19F1DEBC-DE5E-4517-8062-F000CD499087} + Library + Properties + {{testPackageName}} + {{testPackageName}} + {{^supportsUWP}} + {{targetFramework}} + {{/supportsUWP}} + {{#supportsUWP}} + UAP + 10.0.10240.0 + 10.0.10240.0 + 14 + {{/supportsUWP}} + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + $(SolutionDir)\packages\Newtonsoft.Json.8.0.2\lib\{{targetFrameworkNuget}}\Newtonsoft.Json.dll + ..\packages\Newtonsoft.Json.8.0.2\lib\{{targetFrameworkNuget}}\Newtonsoft.Json.dll + ..\..\packages\Newtonsoft.Json.8.0.2\lib\{{targetFrameworkNuget}}\Newtonsoft.Json.dll + {{binRelativePath}}\Newtonsoft.Json.8.0.2\lib\{{targetFrameworkNuget}}\Newtonsoft.Json.dll + + + $(SolutionDir)\packages\RestSharp.105.1.0\lib\{{targetFrameworkNuget}}\RestSharp.dll + ..\packages\RestSharp.105.1.0\lib\{{targetFrameworkNuget}}\RestSharp.dll + ..\..\packages\RestSharp.105.1.0\lib\{{targetFrameworkNuget}}\RestSharp.dll + {{binRelativePath}}\RestSharp.105.1.0\lib\{{targetFrameworkNuget}}\RestSharp.dll + + + $(SolutionDir)\packages\NUnit.2.6.3\lib\nunit.framework.dll + ..\packages\NUnit.2.6.3\lib\nunit.framework.dll + ..\..\packages\NUnit.2.6.3\lib\nunit.framework.dll + {{binRelativePath}}\NUnit.2.6.3\lib\nunit.framework.dll + + + + + + + + + + + + {{packageGuid}} + {{packageName}} + + + + diff --git a/modules/swagger-codegen/src/main/resources/csharp/compile-mono.sh.mustache b/modules/swagger-codegen/src/main/resources/csharp/compile-mono.sh.mustache index b1b0c4f0c73..f93437eb0c8 100644 --- a/modules/swagger-codegen/src/main/resources/csharp/compile-mono.sh.mustache +++ b/modules/swagger-codegen/src/main/resources/csharp/compile-mono.sh.mustache @@ -4,17 +4,17 @@ netfx=${frameworkVersion#net} wget -nc https://nuget.org/nuget.exe; mozroots --import --sync -mono nuget.exe install vendor/packages.config -o vendor; +mono nuget.exe install src/{{packageName}}/packages.config -o packages; mkdir -p bin; -cp vendor/Newtonsoft.Json.8.0.2/lib/{{targetFrameworkNuget}}/Newtonsoft.Json.dll bin/Newtonsoft.Json.dll; -cp vendor/RestSharp.105.1.0/lib/{{targetFrameworkNuget}}/RestSharp.dll bin/RestSharp.dll; +cp packages/Newtonsoft.Json.8.0.2/lib/{{targetFrameworkNuget}}/Newtonsoft.Json.dll bin/Newtonsoft.Json.dll; +cp packages/RestSharp.105.1.0/lib/{{targetFrameworkNuget}}/RestSharp.dll bin/RestSharp.dll; mcs -sdk:${netfx} -r:bin/Newtonsoft.Json.dll,\ bin/RestSharp.dll,\ System.Runtime.Serialization.dll \ -target:library \ -out:bin/{{packageName}}.dll \ --recurse:'src/*.cs' \ +-recurse:'src/{{packageName}}/*.cs' \ -doc:bin/{{packageName}}.xml \ -platform:anycpu diff --git a/modules/swagger-codegen/src/main/resources/csharp/compile.mustache b/modules/swagger-codegen/src/main/resources/csharp/compile.mustache index 76b94cad5a1..7f6dcfe0713 100644 --- a/modules/swagger-codegen/src/main/resources/csharp/compile.mustache +++ b/modules/swagger-codegen/src/main/resources/csharp/compile.mustache @@ -4,11 +4,11 @@ {{^supportsAsync}}SET CSCPATH=%SYSTEMROOT%\Microsoft.NET\Framework\v3.5{{/supportsAsync}} if not exist ".\nuget.exe" powershell -Command "(new-object System.Net.WebClient).DownloadFile('https://nuget.org/nuget.exe', '.\nuget.exe')" -.\nuget.exe install vendor/packages.config -o vendor +.\nuget.exe install src\{{packageName}}\packages.config -o packages if not exist ".\bin" mkdir bin -copy vendor\Newtonsoft.Json.8.0.2\lib\{{targetFrameworkNuget}}\Newtonsoft.Json.dll bin\Newtonsoft.Json.dll -copy vendor\RestSharp.105.1.0\lib\{{targetFrameworkNuget}}\RestSharp.dll bin\RestSharp.dll +copy packages\Newtonsoft.Json.8.0.2\lib\{{targetFrameworkNuget}}\Newtonsoft.Json.dll bin\Newtonsoft.Json.dll +copy packages\RestSharp.105.1.0\lib\{{targetFrameworkNuget}}\RestSharp.dll bin\RestSharp.dll -%CSCPATH%\csc /reference:bin\Newtonsoft.Json.dll;bin\RestSharp.dll /target:library /out:bin\{{packageName}}.dll /recurse:src\*.cs /doc:bin\{{packageName}}.xml +%CSCPATH%\csc /reference:bin\Newtonsoft.Json.dll;bin\RestSharp.dll /target:library /out:bin\{{packageName}}.dll /recurse:src\{{packageName}}\*.cs /doc:bin\{{packageName}}.xml diff --git a/modules/swagger-codegen/src/main/resources/csharp/packages_test.config.mustache b/modules/swagger-codegen/src/main/resources/csharp/packages_test.config.mustache new file mode 100644 index 00000000000..5464714bcef --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/csharp/packages_test.config.mustache @@ -0,0 +1,6 @@ + + + + + + diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/.gitignore b/samples/client/petstore/csharp/SwaggerClient/.gitignore similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/.gitignore rename to samples/client/petstore/csharp/SwaggerClient/.gitignore diff --git a/samples/client/petstore/csharp/SwaggerClient/IO.Swagger.sln b/samples/client/petstore/csharp/SwaggerClient/IO.Swagger.sln new file mode 100644 index 00000000000..d0a367de899 --- /dev/null +++ b/samples/client/petstore/csharp/SwaggerClient/IO.Swagger.sln @@ -0,0 +1,27 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +VisualStudioVersion = 12.0.0.0 +MinimumVisualStudioVersion = 10.0.0.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IO.Swagger", "src\IO.Swagger\IO.Swagger.csproj", "{C22D7F6C-D698-469A-A3C9-5A499DE213B8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IO.Swagger.Test", "src\IO.Swagger.Test\IO.Swagger.Test.csproj", "{19F1DEBC-DE5E-4517-8062-F000CD499087}" +EndProject +Global +GlobalSection(SolutionConfigurationPlatforms) = preSolution +Debug|Any CPU = Debug|Any CPU +Release|Any CPU = Release|Any CPU +EndGlobalSection +GlobalSection(ProjectConfigurationPlatforms) = postSolution +{C22D7F6C-D698-469A-A3C9-5A499DE213B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU +{C22D7F6C-D698-469A-A3C9-5A499DE213B8}.Debug|Any CPU.Build.0 = Debug|Any CPU +{C22D7F6C-D698-469A-A3C9-5A499DE213B8}.Release|Any CPU.ActiveCfg = Release|Any CPU +{C22D7F6C-D698-469A-A3C9-5A499DE213B8}.Release|Any CPU.Build.0 = Release|Any CPU +{19F1DEBC-DE5E-4517-8062-F000CD499087}.Debug|Any CPU.ActiveCfg = Debug|Any CPU +{19F1DEBC-DE5E-4517-8062-F000CD499087}.Debug|Any CPU.Build.0 = Debug|Any CPU +{19F1DEBC-DE5E-4517-8062-F000CD499087}.Release|Any CPU.ActiveCfg = Release|Any CPU +{19F1DEBC-DE5E-4517-8062-F000CD499087}.Release|Any CPU.Build.0 = Release|Any CPU +EndGlobalSection +GlobalSection(SolutionProperties) = preSolution +HideSolutionNode = FALSE +EndGlobalSection +EndGlobal \ No newline at end of file diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/README.md b/samples/client/petstore/csharp/SwaggerClient/README.md similarity index 70% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/README.md rename to samples/client/petstore/csharp/SwaggerClient/README.md index a5c2cd33359..c1c35320e65 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/README.md +++ b/samples/client/petstore/csharp/SwaggerClient/README.md @@ -6,7 +6,7 @@ This C# SDK is automatically generated by the [Swagger Codegen](https://github.c - API version: 1.0.0 - SDK version: 1.0.0 -- Build date: 2016-04-21T17:22:44.115+08:00 +- Build date: 2016-05-01T19:55:27.477-04:00 - Build package: class io.swagger.codegen.languages.CSharpClientCodegen ## Frameworks supported @@ -27,14 +27,14 @@ NOTE: RestSharp versions greater than 105.1.0 have a bug which causes file uploa ## Installation Run the following command to generate the DLL -- [Mac/Linux] `/bin/sh compile-mono.sh` -- [Windows] `compile.bat` +- [Mac/Linux] `/bin/sh build.sh` +- [Windows] `build.bat` Then include the DLL (under the `bin` folder) in the C# project, and use the namespaces: ```csharp using IO.Swagger.Api; using IO.Swagger.Client; -using IO.Swagger.Model; +using Model; ``` ## Getting Started @@ -44,7 +44,7 @@ using System; using System.Diagnostics; using IO.Swagger.Api; using IO.Swagger.Client; -using IO.Swagger.Model; +using Model; namespace Example { @@ -53,20 +53,28 @@ namespace Example public void main() { - // Configure OAuth2 access token for authorization: petstore_auth - Configuration.Default.AccessToken = 'YOUR_ACCESS_TOKEN'; - - var apiInstance = new PetApi(); - var body = new Pet(); // Pet | Pet object that needs to be added to the store + var apiInstance = new FakeApi(); + var number = number_example; // string | None + var _double = 1.2; // double? | None + var _string = _string_example; // string | None + var _byte = B; // byte[] | None + var integer = 56; // int? | None (optional) + var int32 = 56; // int? | None (optional) + var int64 = 789; // long? | None (optional) + var _float = 3.4; // float? | None (optional) + var binary = B; // byte[] | None (optional) + var date = 2013-10-20; // DateTime? | None (optional) + var dateTime = 2013-10-20T19:20:30+01:00; // DateTime? | None (optional) + var password = password_example; // string | None (optional) try { - // Add a new pet to the store - apiInstance.AddPet(body); + // Fake endpoint for testing various parameters + apiInstance.TestEndpointParameters(number, _double, _string, _byte, integer, int32, int64, _float, binary, date, dateTime, password); } catch (Exception e) { - Debug.Print("Exception when calling PetApi.AddPet: " + e.Message ); + Debug.Print("Exception when calling FakeApi.TestEndpointParameters: " + e.Message ); } } } @@ -79,6 +87,7 @@ All URIs are relative to *http://petstore.swagger.io/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- +*FakeApi* | [**TestEndpointParameters**](docs/FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters *PetApi* | [**AddPet**](docs/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store *PetApi* | [**DeletePet**](docs/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet *PetApi* | [**FindPetsByStatus**](docs/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status @@ -103,31 +112,25 @@ Class | Method | HTTP request | Description ## Documentation for Models - - [IO.Swagger.Model.Animal](docs/Animal.md) - - [IO.Swagger.Model.ApiResponse](docs/ApiResponse.md) - - [IO.Swagger.Model.Cat](docs/Cat.md) - - [IO.Swagger.Model.Category](docs/Category.md) - - [IO.Swagger.Model.Dog](docs/Dog.md) - - [IO.Swagger.Model.FormatTest](docs/FormatTest.md) - - [IO.Swagger.Model.Model200Response](docs/Model200Response.md) - - [IO.Swagger.Model.ModelReturn](docs/ModelReturn.md) - - [IO.Swagger.Model.Name](docs/Name.md) - - [IO.Swagger.Model.Order](docs/Order.md) - - [IO.Swagger.Model.Pet](docs/Pet.md) - - [IO.Swagger.Model.SpecialModelName](docs/SpecialModelName.md) - - [IO.Swagger.Model.Tag](docs/Tag.md) - - [IO.Swagger.Model.User](docs/User.md) + - [Model.Animal](docs/Animal.md) + - [Model.ApiResponse](docs/ApiResponse.md) + - [Model.Cat](docs/Cat.md) + - [Model.Category](docs/Category.md) + - [Model.Dog](docs/Dog.md) + - [Model.FormatTest](docs/FormatTest.md) + - [Model.Model200Response](docs/Model200Response.md) + - [Model.ModelReturn](docs/ModelReturn.md) + - [Model.Name](docs/Name.md) + - [Model.Order](docs/Order.md) + - [Model.Pet](docs/Pet.md) + - [Model.SpecialModelName](docs/SpecialModelName.md) + - [Model.Tag](docs/Tag.md) + - [Model.User](docs/User.md) ## Documentation for Authorization -### api_key - -- **Type**: API key -- **API key parameter name**: api_key -- **Location**: HTTP header - ### petstore_auth - **Type**: OAuth @@ -137,3 +140,9 @@ Class | Method | HTTP request | Description - write:pets: modify pets in your account - read:pets: read your pets +### api_key + +- **Type**: API key +- **API key parameter name**: api_key +- **Location**: HTTP header + diff --git a/samples/client/petstore/csharp/SwaggerClient/build.bat b/samples/client/petstore/csharp/SwaggerClient/build.bat new file mode 100644 index 00000000000..80a13e48231 --- /dev/null +++ b/samples/client/petstore/csharp/SwaggerClient/build.bat @@ -0,0 +1,14 @@ +@echo off + +SET CSCPATH=%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319 + + +if not exist ".\nuget.exe" powershell -Command "(new-object System.Net.WebClient).DownloadFile('https://nuget.org/nuget.exe', '.\nuget.exe')" +.\nuget.exe install src\IO.Swagger\packages.config -o packages + +if not exist ".\bin" mkdir bin + +copy packages\Newtonsoft.Json.8.0.2\lib\net45\Newtonsoft.Json.dll bin\Newtonsoft.Json.dll +copy packages\RestSharp.105.1.0\lib\net45\RestSharp.dll bin\RestSharp.dll + +%CSCPATH%\csc /reference:bin\Newtonsoft.Json.dll;bin\RestSharp.dll /target:library /out:bin\IO.Swagger.dll /recurse:src\IO.Swagger\*.cs /doc:bin\IO.Swagger.xml diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/compile-mono.sh b/samples/client/petstore/csharp/SwaggerClient/build.sh old mode 100755 new mode 100644 similarity index 56% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/compile-mono.sh rename to samples/client/petstore/csharp/SwaggerClient/build.sh index d768c892f31..159673fd60c --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/compile-mono.sh +++ b/samples/client/petstore/csharp/SwaggerClient/build.sh @@ -4,17 +4,17 @@ netfx=${frameworkVersion#net} wget -nc https://nuget.org/nuget.exe; mozroots --import --sync -mono nuget.exe install vendor/packages.config -o vendor; +mono nuget.exe install src/IO.Swagger/packages.config -o packages; mkdir -p bin; -cp vendor/Newtonsoft.Json.8.0.2/lib/net45/Newtonsoft.Json.dll bin/Newtonsoft.Json.dll; -cp vendor/RestSharp.105.1.0/lib/net45/RestSharp.dll bin/RestSharp.dll; +cp packages/Newtonsoft.Json.8.0.2/lib/net45/Newtonsoft.Json.dll bin/Newtonsoft.Json.dll; +cp packages/RestSharp.105.1.0/lib/net45/RestSharp.dll bin/RestSharp.dll; mcs -sdk:${netfx} -r:bin/Newtonsoft.Json.dll,\ bin/RestSharp.dll,\ System.Runtime.Serialization.dll \ -target:library \ -out:bin/IO.Swagger.dll \ --recurse:'src/*.cs' \ +-recurse:'src/IO.Swagger/*.cs' \ -doc:bin/IO.Swagger.xml \ -platform:anycpu diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/Animal.md b/samples/client/petstore/csharp/SwaggerClient/docs/Animal.md similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/Animal.md rename to samples/client/petstore/csharp/SwaggerClient/docs/Animal.md diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/ApiResponse.md b/samples/client/petstore/csharp/SwaggerClient/docs/ApiResponse.md similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/ApiResponse.md rename to samples/client/petstore/csharp/SwaggerClient/docs/ApiResponse.md diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/Cat.md b/samples/client/petstore/csharp/SwaggerClient/docs/Cat.md similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/Cat.md rename to samples/client/petstore/csharp/SwaggerClient/docs/Cat.md diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/Category.md b/samples/client/petstore/csharp/SwaggerClient/docs/Category.md similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/Category.md rename to samples/client/petstore/csharp/SwaggerClient/docs/Category.md diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/Dog.md b/samples/client/petstore/csharp/SwaggerClient/docs/Dog.md similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/Dog.md rename to samples/client/petstore/csharp/SwaggerClient/docs/Dog.md diff --git a/samples/client/petstore/csharp/SwaggerClient/docs/FakeApi.md b/samples/client/petstore/csharp/SwaggerClient/docs/FakeApi.md new file mode 100644 index 00000000000..f688b755c22 --- /dev/null +++ b/samples/client/petstore/csharp/SwaggerClient/docs/FakeApi.md @@ -0,0 +1,91 @@ +# IO.Swagger.Api.FakeApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**TestEndpointParameters**](FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters + + +# **TestEndpointParameters** +> void TestEndpointParameters (string number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null) + +Fake endpoint for testing various parameters + +Fake endpoint for testing various parameters + +### Example +```csharp +using System; +using System.Diagnostics; +using IO.Swagger.Api; +using IO.Swagger.Client; +using IO.Swagger.Model; + +namespace Example +{ + public class TestEndpointParametersExample + { + public void main() + { + + var apiInstance = new FakeApi(); + var number = number_example; // string | None + var _double = 1.2; // double? | None + var _string = _string_example; // string | None + var _byte = B; // byte[] | None + var integer = 56; // int? | None (optional) + var int32 = 56; // int? | None (optional) + var int64 = 789; // long? | None (optional) + var _float = 3.4; // float? | None (optional) + var binary = B; // byte[] | None (optional) + var date = 2013-10-20; // DateTime? | None (optional) + var dateTime = 2013-10-20T19:20:30+01:00; // DateTime? | None (optional) + var password = password_example; // string | None (optional) + + try + { + // Fake endpoint for testing various parameters + apiInstance.TestEndpointParameters(number, _double, _string, _byte, integer, int32, int64, _float, binary, date, dateTime, password); + } + catch (Exception e) + { + Debug.Print("Exception when calling FakeApi.TestEndpointParameters: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **number** | **string**| None | + **_double** | **double?**| None | + **_string** | **string**| None | + **_byte** | **byte[]**| None | + **integer** | **int?**| None | [optional] + **int32** | **int?**| None | [optional] + **int64** | **long?**| None | [optional] + **_float** | **float?**| None | [optional] + **binary** | **byte[]**| None | [optional] + **date** | **DateTime?**| None | [optional] + **dateTime** | **DateTime?**| None | [optional] + **password** | **string**| None | [optional] + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/FormatTest.md b/samples/client/petstore/csharp/SwaggerClient/docs/FormatTest.md similarity index 84% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/FormatTest.md rename to samples/client/petstore/csharp/SwaggerClient/docs/FormatTest.md index d29dc6b5d79..c5dc3cf53f3 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/FormatTest.md +++ b/samples/client/petstore/csharp/SwaggerClient/docs/FormatTest.md @@ -10,11 +10,11 @@ Name | Type | Description | Notes **_Float** | **float?** | | [optional] **_Double** | **double?** | | [optional] **_String** | **string** | | [optional] -**_Byte** | **byte[]** | | [optional] +**_Byte** | **byte[]** | | **Binary** | **byte[]** | | [optional] -**Date** | **DateTime?** | | [optional] +**Date** | **DateTime?** | | **DateTime** | **DateTime?** | | [optional] -**Password** | **string** | | [optional] +**Password** | **string** | | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/Model200Response.md b/samples/client/petstore/csharp/SwaggerClient/docs/Model200Response.md similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/Model200Response.md rename to samples/client/petstore/csharp/SwaggerClient/docs/Model200Response.md diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/ModelReturn.md b/samples/client/petstore/csharp/SwaggerClient/docs/ModelReturn.md similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/ModelReturn.md rename to samples/client/petstore/csharp/SwaggerClient/docs/ModelReturn.md diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/Name.md b/samples/client/petstore/csharp/SwaggerClient/docs/Name.md similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/Name.md rename to samples/client/petstore/csharp/SwaggerClient/docs/Name.md diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/Order.md b/samples/client/petstore/csharp/SwaggerClient/docs/Order.md similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/Order.md rename to samples/client/petstore/csharp/SwaggerClient/docs/Order.md diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/Pet.md b/samples/client/petstore/csharp/SwaggerClient/docs/Pet.md similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/Pet.md rename to samples/client/petstore/csharp/SwaggerClient/docs/Pet.md diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/PetApi.md b/samples/client/petstore/csharp/SwaggerClient/docs/PetApi.md similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/PetApi.md rename to samples/client/petstore/csharp/SwaggerClient/docs/PetApi.md diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/SpecialModelName.md b/samples/client/petstore/csharp/SwaggerClient/docs/SpecialModelName.md similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/SpecialModelName.md rename to samples/client/petstore/csharp/SwaggerClient/docs/SpecialModelName.md diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/StoreApi.md b/samples/client/petstore/csharp/SwaggerClient/docs/StoreApi.md similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/StoreApi.md rename to samples/client/petstore/csharp/SwaggerClient/docs/StoreApi.md diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/Tag.md b/samples/client/petstore/csharp/SwaggerClient/docs/Tag.md similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/Tag.md rename to samples/client/petstore/csharp/SwaggerClient/docs/Tag.md diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/User.md b/samples/client/petstore/csharp/SwaggerClient/docs/User.md similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/User.md rename to samples/client/petstore/csharp/SwaggerClient/docs/User.md diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/UserApi.md b/samples/client/petstore/csharp/SwaggerClient/docs/UserApi.md similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/UserApi.md rename to samples/client/petstore/csharp/SwaggerClient/docs/UserApi.md diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/git_push.sh b/samples/client/petstore/csharp/SwaggerClient/git_push.sh similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/git_push.sh rename to samples/client/petstore/csharp/SwaggerClient/git_push.sh diff --git a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Api/FakeApiTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Api/FakeApiTests.cs new file mode 100644 index 00000000000..8da6571f24a --- /dev/null +++ b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Api/FakeApiTests.cs @@ -0,0 +1,80 @@ +using System; +using System.IO; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Reflection; +using RestSharp; +using NUnit.Framework; + +using IO.Swagger.Client; +using IO.Swagger.Api; + +namespace IO.Swagger.Test +{ + /// + /// Class for testing FakeApi + /// + /// + /// This file is automatically generated by Swagger Codegen. + /// Please update the test case below to test the API endpoint. + /// + [TestFixture] + public class FakeApiTests + { + private FakeApi instance; + + /// + /// Setup before each unit test + /// + [SetUp] + public void Init() + { + instance = new FakeApi(); + } + + /// + /// Clean up after each unit test + /// + [TearDown] + public void Cleanup() + { + + } + + /// + /// Test an instance of FakeApi + /// + [Test] + public void InstanceTest() + { + Assert.IsInstanceOf (instance, "instance is a FakeApi"); + } + + + /// + /// Test TestEndpointParameters + /// + [Test] + public void TestEndpointParametersTest() + { + // TODO: add unit test for the method 'TestEndpointParameters' + string number = null; // TODO: replace null with proper value + double? _double = null; // TODO: replace null with proper value + string _string = null; // TODO: replace null with proper value + byte[] _byte = null; // TODO: replace null with proper value + int? integer = null; // TODO: replace null with proper value + int? int32 = null; // TODO: replace null with proper value + long? int64 = null; // TODO: replace null with proper value + float? _float = null; // TODO: replace null with proper value + byte[] binary = null; // TODO: replace null with proper value + DateTime? date = null; // TODO: replace null with proper value + DateTime? dateTime = null; // TODO: replace null with proper value + string password = null; // TODO: replace null with proper value + instance.TestEndpointParameters(number, _double, _string, _byte, integer, int32, int64, _float, binary, date, dateTime, password); + + } + + } + +} diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/PetApiTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Api/PetApiTests.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/PetApiTests.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Api/PetApiTests.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/StoreApiTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Api/StoreApiTests.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/StoreApiTests.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Api/StoreApiTests.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/UserApiTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Api/UserApiTests.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/UserApiTests.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Api/UserApiTests.cs diff --git a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/IO.Swagger.Test.csproj b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/IO.Swagger.Test.csproj new file mode 100644 index 00000000000..0c34dbda2f9 --- /dev/null +++ b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/IO.Swagger.Test.csproj @@ -0,0 +1,73 @@ + + + + Debug + AnyCPU + {19F1DEBC-DE5E-4517-8062-F000CD499087} + Library + Properties + IO.Swagger.Test + IO.Swagger.Test + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + $(SolutionDir)\packages\Newtonsoft.Json.8.0.2\lib\net45\Newtonsoft.Json.dll + ..\packages\Newtonsoft.Json.8.0.2\lib\net45\Newtonsoft.Json.dll + ..\..\packages\Newtonsoft.Json.8.0.2\lib\net45\Newtonsoft.Json.dll + ..\..\vendor\Newtonsoft.Json.8.0.2\lib\net45\Newtonsoft.Json.dll + + + $(SolutionDir)\packages\RestSharp.105.1.0\lib\net45\RestSharp.dll + ..\packages\RestSharp.105.1.0\lib\net45\RestSharp.dll + ..\..\packages\RestSharp.105.1.0\lib\net45\RestSharp.dll + ..\..\vendor\RestSharp.105.1.0\lib\net45\RestSharp.dll + + + $(SolutionDir)\packages\NUnit.2.6.3\lib\nunit.framework.dll + ..\packages\NUnit.2.6.3\lib\nunit.framework.dll + ..\..\packages\NUnit.2.6.3\lib\nunit.framework.dll + ..\..\vendor\NUnit.2.6.3\lib\nunit.framework.dll + + + + + + + + + + + + {C22D7F6C-D698-469A-A3C9-5A499DE213B8} + IO.Swagger + + + + diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/AnimalTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/AnimalTests.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/AnimalTests.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/AnimalTests.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/ApiResponseTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/ApiResponseTests.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/ApiResponseTests.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/ApiResponseTests.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/CatTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/CatTests.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/CatTests.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/CatTests.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/CategoryTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/CategoryTests.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/CategoryTests.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/CategoryTests.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/DogTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/DogTests.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/DogTests.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/DogTests.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/FormatTestTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/FormatTestTests.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/FormatTestTests.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/FormatTestTests.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/Model200ResponseTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/Model200ResponseTests.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/Model200ResponseTests.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/Model200ResponseTests.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/ModelReturnTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/ModelReturnTests.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/ModelReturnTests.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/ModelReturnTests.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/NameTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/NameTests.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/NameTests.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/NameTests.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/OrderTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/OrderTests.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/OrderTests.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/OrderTests.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/PetTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/PetTests.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/PetTests.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/PetTests.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/SpecialModelNameTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/SpecialModelNameTests.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/SpecialModelNameTests.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/SpecialModelNameTests.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/TagTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/TagTests.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/TagTests.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/TagTests.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/UserTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/UserTests.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/UserTests.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/UserTests.cs diff --git a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/packages.config b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/packages.config new file mode 100644 index 00000000000..a8a3491f63d --- /dev/null +++ b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/packages.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Api/FakeApi.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Api/FakeApi.cs new file mode 100644 index 00000000000..18b61d64e45 --- /dev/null +++ b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Api/FakeApi.cs @@ -0,0 +1,418 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using RestSharp; +using IO.Swagger.Client; + +namespace IO.Swagger.Api +{ + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IFakeApi + { + #region Synchronous Operations + /// + /// Fake endpoint for testing various parameters + /// + /// + /// Fake endpoint for testing various parameters + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// + void TestEndpointParameters (string number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null); + + /// + /// Fake endpoint for testing various parameters + /// + /// + /// Fake endpoint for testing various parameters + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// ApiResponse of Object(void) + ApiResponse TestEndpointParametersWithHttpInfo (string number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null); + #endregion Synchronous Operations + #region Asynchronous Operations + /// + /// Fake endpoint for testing various parameters + /// + /// + /// Fake endpoint for testing various parameters + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// Task of void + System.Threading.Tasks.Task TestEndpointParametersAsync (string number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null); + + /// + /// Fake endpoint for testing various parameters + /// + /// + /// Fake endpoint for testing various parameters + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// Task of ApiResponse + System.Threading.Tasks.Task> TestEndpointParametersAsyncWithHttpInfo (string number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null); + #endregion Asynchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public class FakeApi : IFakeApi + { + /// + /// Initializes a new instance of the class. + /// + /// + public FakeApi(String basePath) + { + this.Configuration = new Configuration(new ApiClient(basePath)); + + // ensure API client has configuration ready + if (Configuration.ApiClient.Configuration == null) + { + this.Configuration.ApiClient.Configuration = this.Configuration; + } + } + + /// + /// Initializes a new instance of the class + /// using Configuration object + /// + /// An instance of Configuration + /// + public FakeApi(Configuration configuration = null) + { + if (configuration == null) // use the default one in Configuration + this.Configuration = Configuration.Default; + else + this.Configuration = configuration; + + // ensure API client has configuration ready + if (Configuration.ApiClient.Configuration == null) + { + this.Configuration.ApiClient.Configuration = this.Configuration; + } + } + + /// + /// Gets the base path of the API client. + /// + /// The base path + public String GetBasePath() + { + return this.Configuration.ApiClient.RestClient.BaseUrl.ToString(); + } + + /// + /// Sets the base path of the API client. + /// + /// The base path + [Obsolete("SetBasePath is deprecated, please do 'Configuraiton.ApiClient = new ApiClient(\"http://new-path\")' instead.")] + public void SetBasePath(String basePath) + { + // do nothing + } + + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + public Configuration Configuration {get; set;} + + /// + /// Gets the default header. + /// + /// Dictionary of HTTP header + [Obsolete("DefaultHeader is deprecated, please use Configuration.DefaultHeader instead.")] + public Dictionary DefaultHeader() + { + return this.Configuration.DefaultHeader; + } + + /// + /// Add default header. + /// + /// Header field name. + /// Header field value. + /// + [Obsolete("AddDefaultHeader is deprecated, please use Configuration.AddDefaultHeader instead.")] + public void AddDefaultHeader(string key, string value) + { + this.Configuration.AddDefaultHeader(key, value); + } + + /// + /// Fake endpoint for testing various parameters Fake endpoint for testing various parameters + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// + public void TestEndpointParameters (string number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null) + { + TestEndpointParametersWithHttpInfo(number, _double, _string, _byte, integer, int32, int64, _float, binary, date, dateTime, password); + } + + /// + /// Fake endpoint for testing various parameters Fake endpoint for testing various parameters + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// ApiResponse of Object(void) + public ApiResponse TestEndpointParametersWithHttpInfo (string number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null) + { + // verify the required parameter 'number' is set + if (number == null) + throw new ApiException(400, "Missing required parameter 'number' when calling FakeApi->TestEndpointParameters"); + // verify the required parameter '_double' is set + if (_double == null) + throw new ApiException(400, "Missing required parameter '_double' when calling FakeApi->TestEndpointParameters"); + // verify the required parameter '_string' is set + if (_string == null) + throw new ApiException(400, "Missing required parameter '_string' when calling FakeApi->TestEndpointParameters"); + // verify the required parameter '_byte' is set + if (_byte == null) + throw new ApiException(400, "Missing required parameter '_byte' when calling FakeApi->TestEndpointParameters"); + + var localVarPath = "/fake"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new Dictionary(); + var localVarHeaderParams = new Dictionary(Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + }; + String localVarHttpContentType = Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/xml", + "application/json" + }; + String localVarHttpHeaderAccept = Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + // set "format" to json by default + // e.g. /pet/{petId}.{format} becomes /pet/{petId}.json + localVarPathParams.Add("format", "json"); + if (integer != null) localVarFormParams.Add("integer", Configuration.ApiClient.ParameterToString(integer)); // form parameter + if (int32 != null) localVarFormParams.Add("int32", Configuration.ApiClient.ParameterToString(int32)); // form parameter + if (int64 != null) localVarFormParams.Add("int64", Configuration.ApiClient.ParameterToString(int64)); // form parameter + if (number != null) localVarFormParams.Add("number", Configuration.ApiClient.ParameterToString(number)); // form parameter + if (_float != null) localVarFormParams.Add("float", Configuration.ApiClient.ParameterToString(_float)); // form parameter + if (_double != null) localVarFormParams.Add("double", Configuration.ApiClient.ParameterToString(_double)); // form parameter + if (_string != null) localVarFormParams.Add("string", Configuration.ApiClient.ParameterToString(_string)); // form parameter + if (_byte != null) localVarFormParams.Add("byte", Configuration.ApiClient.ParameterToString(_byte)); // form parameter + if (binary != null) localVarFormParams.Add("binary", Configuration.ApiClient.ParameterToString(binary)); // form parameter + if (date != null) localVarFormParams.Add("date", Configuration.ApiClient.ParameterToString(date)); // form parameter + if (dateTime != null) localVarFormParams.Add("dateTime", Configuration.ApiClient.ParameterToString(dateTime)); // form parameter + if (password != null) localVarFormParams.Add("password", Configuration.ApiClient.ParameterToString(password)); // form parameter + + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) Configuration.ApiClient.CallApi(localVarPath, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (localVarStatusCode >= 400) + throw new ApiException (localVarStatusCode, "Error calling TestEndpointParameters: " + localVarResponse.Content, localVarResponse.Content); + else if (localVarStatusCode == 0) + throw new ApiException (localVarStatusCode, "Error calling TestEndpointParameters: " + localVarResponse.ErrorMessage, localVarResponse.ErrorMessage); + + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Name, x => x.Value.ToString()), + null); + } + + /// + /// Fake endpoint for testing various parameters Fake endpoint for testing various parameters + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// Task of void + public async System.Threading.Tasks.Task TestEndpointParametersAsync (string number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null) + { + await TestEndpointParametersAsyncWithHttpInfo(number, _double, _string, _byte, integer, int32, int64, _float, binary, date, dateTime, password); + + } + + /// + /// Fake endpoint for testing various parameters Fake endpoint for testing various parameters + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// Task of ApiResponse + public async System.Threading.Tasks.Task> TestEndpointParametersAsyncWithHttpInfo (string number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null) + { + // verify the required parameter 'number' is set + if (number == null) + throw new ApiException(400, "Missing required parameter 'number' when calling FakeApi->TestEndpointParameters"); + // verify the required parameter '_double' is set + if (_double == null) + throw new ApiException(400, "Missing required parameter '_double' when calling FakeApi->TestEndpointParameters"); + // verify the required parameter '_string' is set + if (_string == null) + throw new ApiException(400, "Missing required parameter '_string' when calling FakeApi->TestEndpointParameters"); + // verify the required parameter '_byte' is set + if (_byte == null) + throw new ApiException(400, "Missing required parameter '_byte' when calling FakeApi->TestEndpointParameters"); + + var localVarPath = "/fake"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new Dictionary(); + var localVarHeaderParams = new Dictionary(Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + }; + String localVarHttpContentType = Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/xml", + "application/json" + }; + String localVarHttpHeaderAccept = Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + // set "format" to json by default + // e.g. /pet/{petId}.{format} becomes /pet/{petId}.json + localVarPathParams.Add("format", "json"); + if (integer != null) localVarFormParams.Add("integer", Configuration.ApiClient.ParameterToString(integer)); // form parameter + if (int32 != null) localVarFormParams.Add("int32", Configuration.ApiClient.ParameterToString(int32)); // form parameter + if (int64 != null) localVarFormParams.Add("int64", Configuration.ApiClient.ParameterToString(int64)); // form parameter + if (number != null) localVarFormParams.Add("number", Configuration.ApiClient.ParameterToString(number)); // form parameter + if (_float != null) localVarFormParams.Add("float", Configuration.ApiClient.ParameterToString(_float)); // form parameter + if (_double != null) localVarFormParams.Add("double", Configuration.ApiClient.ParameterToString(_double)); // form parameter + if (_string != null) localVarFormParams.Add("string", Configuration.ApiClient.ParameterToString(_string)); // form parameter + if (_byte != null) localVarFormParams.Add("byte", Configuration.ApiClient.ParameterToString(_byte)); // form parameter + if (binary != null) localVarFormParams.Add("binary", Configuration.ApiClient.ParameterToString(binary)); // form parameter + if (date != null) localVarFormParams.Add("date", Configuration.ApiClient.ParameterToString(date)); // form parameter + if (dateTime != null) localVarFormParams.Add("dateTime", Configuration.ApiClient.ParameterToString(dateTime)); // form parameter + if (password != null) localVarFormParams.Add("password", Configuration.ApiClient.ParameterToString(password)); // form parameter + + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await Configuration.ApiClient.CallApiAsync(localVarPath, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (localVarStatusCode >= 400) + throw new ApiException (localVarStatusCode, "Error calling TestEndpointParameters: " + localVarResponse.Content, localVarResponse.Content); + else if (localVarStatusCode == 0) + throw new ApiException (localVarStatusCode, "Error calling TestEndpointParameters: " + localVarResponse.ErrorMessage, localVarResponse.ErrorMessage); + + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Name, x => x.Value.ToString()), + null); + } + + } +} diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/PetApi.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Api/PetApi.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/PetApi.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Api/PetApi.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/StoreApi.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Api/StoreApi.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/StoreApi.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Api/StoreApi.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/UserApi.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Api/UserApi.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Api/UserApi.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Api/UserApi.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/ApiClient.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Client/ApiClient.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/ApiClient.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Client/ApiClient.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/ApiException.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Client/ApiException.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/ApiException.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Client/ApiException.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/ApiResponse.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Client/ApiResponse.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/ApiResponse.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Client/ApiResponse.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/Configuration.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Client/Configuration.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/Configuration.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Client/Configuration.cs diff --git a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/IO.Swagger.csproj b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/IO.Swagger.csproj new file mode 100644 index 00000000000..b94d66454c4 --- /dev/null +++ b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/IO.Swagger.csproj @@ -0,0 +1,61 @@ + + + + Debug + AnyCPU + {C22D7F6C-D698-469A-A3C9-5A499DE213B8} + Library + Properties + Swagger Library + Swagger Library + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + $(SolutionDir)\packages\Newtonsoft.Json.8.0.2\lib\net45\Newtonsoft.Json.dll + ..\packages\Newtonsoft.Json.8.0.2\lib\net45\Newtonsoft.Json.dll + ..\..\packages\Newtonsoft.Json.8.0.2\lib\net45\Newtonsoft.Json.dll + ..\..\vendor\Newtonsoft.Json.8.0.2\lib\net45\Newtonsoft.Json.dll + + + $(SolutionDir)\packages\RestSharp.105.1.0\lib\net45\RestSharp.dll + ..\packages\RestSharp.105.1.0\lib\net45\RestSharp.dll + ..\..\packages\RestSharp.105.1.0\lib\net45\RestSharp.dll + ..\..\vendor\RestSharp.105.1.0\lib\net45\RestSharp.dll + + + + + + + + + + + diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Animal.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/Animal.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Animal.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/Animal.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/ApiResponse.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/ApiResponse.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/ApiResponse.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/ApiResponse.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Cat.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/Cat.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Cat.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/Cat.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/Category.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/Category.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Dog.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/Dog.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Dog.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/Dog.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/FormatTest.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/FormatTest.cs similarity index 90% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/FormatTest.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/FormatTest.cs index 6d50426bad0..c1291a2e4f6 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/FormatTest.cs +++ b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/FormatTest.cs @@ -29,11 +29,11 @@ namespace IO.Swagger.Model /// _Float. /// _Double. /// _String. - /// _Byte. + /// _Byte (required). /// Binary. - /// Date. + /// Date (required). /// DateTime. - /// Password. + /// Password (required). public FormatTest(int? Integer = null, int? Int32 = null, long? Int64 = null, double? Number = null, float? _Float = null, double? _Double = null, string _String = null, byte[] _Byte = null, byte[] Binary = null, DateTime? Date = null, DateTime? DateTime = null, string Password = null) { @@ -46,17 +46,41 @@ namespace IO.Swagger.Model { this.Number = Number; } + // to ensure "_Byte" is required (not null) + if (_Byte == null) + { + throw new InvalidDataException("_Byte is a required property for FormatTest and cannot be null"); + } + else + { + this._Byte = _Byte; + } + // to ensure "Date" is required (not null) + if (Date == null) + { + throw new InvalidDataException("Date is a required property for FormatTest and cannot be null"); + } + else + { + this.Date = Date; + } + // to ensure "Password" is required (not null) + if (Password == null) + { + throw new InvalidDataException("Password is a required property for FormatTest and cannot be null"); + } + else + { + this.Password = Password; + } this.Integer = Integer; this.Int32 = Int32; this.Int64 = Int64; this._Float = _Float; this._Double = _Double; this._String = _String; - this._Byte = _Byte; this.Binary = Binary; - this.Date = Date; this.DateTime = DateTime; - this.Password = Password; } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Model200Response.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/Model200Response.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Model200Response.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/Model200Response.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/ModelReturn.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/ModelReturn.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/ModelReturn.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/ModelReturn.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Name.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/Name.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Name.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/Name.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/Order.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/Order.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/Pet.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/Pet.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/SpecialModelName.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/SpecialModelName.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/SpecialModelName.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/SpecialModelName.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/Tag.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/Tag.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/User.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/User.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Properties/AssemblyInfo.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Properties/AssemblyInfo.cs similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Properties/AssemblyInfo.cs rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Properties/AssemblyInfo.cs diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/vendor/packages.config b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/packages.config similarity index 100% rename from samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/vendor/packages.config rename to samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/packages.config diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/InlineResponse200Tests.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/InlineResponse200Tests.cs deleted file mode 100644 index a4930b02df3..00000000000 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient.Test/InlineResponse200Tests.cs +++ /dev/null @@ -1,104 +0,0 @@ -using NUnit.Framework; - -using System; -using System.Linq; -using System.IO; -using System.Collections.Generic; -using IO.Swagger.Api; -using IO.Swagger.Model; -using IO.Swagger.Client; -using System.Reflection; - -namespace IO.Swagger.Test -{ - /// - /// Class for testing InlineResponse200 - /// - /// - /// This file is automatically generated by Swagger Codegen. - /// Please update the test case below to test the model. - /// - [TestFixture] - public class InlineResponse200Tests - { - private InlineResponse200 instance; - - /// - /// Setup before each test - /// - [SetUp] - public void Init() - { - instance = new InlineResponse200(); - } - - /// - /// Clean up after each test - /// - [TearDown] - public void Cleanup() - { - - } - - /// - /// Test an instance of InlineResponse200 - /// - [Test] - public void InlineResponse200InstanceTest() - { - Assert.IsInstanceOf (instance, "instance is a InlineResponse200"); - } - - /// - /// Test the property 'PhotoUrls' - /// - [Test] - public void PhotoUrlsTest() - { - // TODO: unit test for the property 'PhotoUrls' - } - /// - /// Test the property 'Name' - /// - [Test] - public void NameTest() - { - // TODO: unit test for the property 'Name' - } - /// - /// Test the property 'Id' - /// - [Test] - public void IdTest() - { - // TODO: unit test for the property 'Id' - } - /// - /// Test the property 'Category' - /// - [Test] - public void CategoryTest() - { - // TODO: unit test for the property 'Category' - } - /// - /// Test the property 'Tags' - /// - [Test] - public void TagsTest() - { - // TODO: unit test for the property 'Tags' - } - /// - /// Test the property 'Status' - /// - [Test] - public void StatusTest() - { - // TODO: unit test for the property 'Status' - } - - } - -} diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/README.mustache b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/README.mustache deleted file mode 100644 index d5f5ce413b3..00000000000 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/README.mustache +++ /dev/null @@ -1,184 +0,0 @@ - - the C# library for the Swagger Petstore - - This is a sample server Petstore server. You can find out more about Swagger at http://swagger.io or on irc.freenode.net, #swagger. For this sample, you can use the api key \"special-key\" to test the authorization filters - -This SDK is automatically generated by the [Swagger Codegen](https://github.com/swagger-api/swagger-codegen) project: - -- API version: 1.0.0 -- Package version: -- Build date: 2016-04-14T06:55:47.468-04:00 -- Build package: class io.swagger.codegen.languages.CSharpClientCodegen - -## Frameworks supported -- .NET 4.0 or later -- Windows Phone 7.1 (Mango) - -## Dependencies -- [RestSharp] (https://www.nuget.org/packages/RestSharp) - 105.1.0 or later -- [Json.NET] (https://www.nuget.org/packages/Newtonsoft.Json/) - 7.0.0 or later - -The DLLs included in the package may not be the latest version. We recommned using [NuGet] (https://docs.nuget.org/consume/installing-nuget) to obtain the latest version of the packages: -``` -Install-Package RestSharp -Install-Package Newtonsoft.Json -``` - -NOTE: RestSharp versions greater than 105.1.0 have a bug which causes file uploads to fail. See [RestSharp#742](https://github.com/restsharp/RestSharp/issues/742) - -## Installation -Run the following command to generate the DLL -- [Mac/Linux] compile-mono.sh -- [Windows] compile.bat - -Then include the DLL (under the `bin` folder) in the C# project - - -```csharp -using System; -using System.Diagnostics; -using IO.Swagger.Api; -using IO.Swagger.Client; -using IO.Swagger.Module; - -namespace Example -{ -public class Example -{ -public void main(){ - - // Configure OAuth2 access token for authorization: petstore_auth - Configuration.Default.AccessToken = 'YOUR_ACCESS_TOKEN'; - // Configure API key authorization: test_api_client_id - Configuration.Default.ApiKey.Add('x-test_api_client_id', 'YOUR_API_KEY'); - // Uncomment below to setup prefix (e.g. BEARER) for API key, if needed - // Configuration.Default.ApiKeyPrefix.Add('x-test_api_client_id', 'BEARER'); - // Configure API key authorization: test_api_client_secret - Configuration.Default.ApiKey.Add('x-test_api_client_secret', 'YOUR_API_KEY'); - // Uncomment below to setup prefix (e.g. BEARER) for API key, if needed - // Configuration.Default.ApiKeyPrefix.Add('x-test_api_client_secret', 'BEARER'); - // Configure API key authorization: api_key - Configuration.Default.ApiKey.Add('api_key', 'YOUR_API_KEY'); - // Uncomment below to setup prefix (e.g. BEARER) for API key, if needed - // Configuration.Default.ApiKeyPrefix.Add('api_key', 'BEARER'); - // Configure HTTP basic authorization: test_http_basic - Configuration.Default.Username = 'YOUR_USERNAME'; - Configuration.Default.Password = 'YOUR_PASSWORD'; - // Configure API key authorization: test_api_key_query - Configuration.Default.ApiKey.Add('test_api_key_query', 'YOUR_API_KEY'); - // Uncomment below to setup prefix (e.g. BEARER) for API key, if needed - // Configuration.Default.ApiKeyPrefix.Add('test_api_key_query', 'BEARER'); - // Configure API key authorization: test_api_key_header - Configuration.Default.ApiKey.Add('test_api_key_header', 'YOUR_API_KEY'); - // Uncomment below to setup prefix (e.g. BEARER) for API key, if needed - // Configuration.Default.ApiKeyPrefix.Add('test_api_key_header', 'BEARER'); - -var apiInstance = new (); - -try { -apiInstance.(); -} catch (Exception e) { -Debug.Print("Exception when calling .: " + e.Message ); -} -} -} -} -``` - -## Documentation for API Endpoints - -All URIs are relative to *http://petstore.swagger.io/v2* - -Class | Method | HTTP request | Description ------------- | ------------- | ------------- | ------------- -*::PetApi* | [**AddPet**](docs/PetApi.md#AddPet) | **POST** /pet | Add a new pet to the store -*::PetApi* | [**AddPetUsingByteArray**](docs/PetApi.md#AddPetUsingByteArray) | **POST** /pet?testing_byte_array=true | Fake endpoint to test byte array in body parameter for adding a new pet to the store -*::PetApi* | [**DeletePet**](docs/PetApi.md#DeletePet) | **DELETE** /pet/{petId} | Deletes a pet -*::PetApi* | [**FindPetsByStatus**](docs/PetApi.md#FindPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status -*::PetApi* | [**FindPetsByTags**](docs/PetApi.md#FindPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags -*::PetApi* | [**GetPetById**](docs/PetApi.md#GetPetById) | **GET** /pet/{petId} | Find pet by ID -*::PetApi* | [**GetPetByIdInObject**](docs/PetApi.md#GetPetByIdInObject) | **GET** /pet/{petId}?response=inline_arbitrary_object | Fake endpoint to test inline arbitrary object return by 'Find pet by ID' -*::PetApi* | [**PetPetIdtestingByteArraytrueGet**](docs/PetApi.md#PetPetIdtestingByteArraytrueGet) | **GET** /pet/{petId}?testing_byte_array=true | Fake endpoint to test byte array return by 'Find pet by ID' -*::PetApi* | [**UpdatePet**](docs/PetApi.md#UpdatePet) | **PUT** /pet | Update an existing pet -*::PetApi* | [**UpdatePetWithForm**](docs/PetApi.md#UpdatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data -*::PetApi* | [**UploadFile**](docs/PetApi.md#UploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image -*::StoreApi* | [**DeleteOrder**](docs/StoreApi.md#DeleteOrder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID -*::StoreApi* | [**FindOrdersByStatus**](docs/StoreApi.md#FindOrdersByStatus) | **GET** /store/findByStatus | Finds orders by status -*::StoreApi* | [**GetInventory**](docs/StoreApi.md#GetInventory) | **GET** /store/inventory | Returns pet inventories by status -*::StoreApi* | [**GetInventoryInObject**](docs/StoreApi.md#GetInventoryInObject) | **GET** /store/inventory?response=arbitrary_object | Fake endpoint to test arbitrary object return by 'Get inventory' -*::StoreApi* | [**GetOrderById**](docs/StoreApi.md#GetOrderById) | **GET** /store/order/{orderId} | Find purchase order by ID -*::StoreApi* | [**PlaceOrder**](docs/StoreApi.md#PlaceOrder) | **POST** /store/order | Place an order for a pet -*::UserApi* | [**CreateUser**](docs/UserApi.md#CreateUser) | **POST** /user | Create user -*::UserApi* | [**CreateUsersWithArrayInput**](docs/UserApi.md#CreateUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array -*::UserApi* | [**CreateUsersWithListInput**](docs/UserApi.md#CreateUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array -*::UserApi* | [**DeleteUser**](docs/UserApi.md#DeleteUser) | **DELETE** /user/{username} | Delete user -*::UserApi* | [**GetUserByName**](docs/UserApi.md#GetUserByName) | **GET** /user/{username} | Get user by user name -*::UserApi* | [**LoginUser**](docs/UserApi.md#LoginUser) | **GET** /user/login | Logs user into the system -*::UserApi* | [**LogoutUser**](docs/UserApi.md#LogoutUser) | **GET** /user/logout | Logs out current logged in user session -*::UserApi* | [**UpdateUser**](docs/UserApi.md#UpdateUser) | **PUT** /user/{username} | Updated user - - -## Documentation for Models - - - [::Animal](docs/Animal.md) - - [::Cat](docs/Cat.md) - - [::Category](docs/Category.md) - - [::Dog](docs/Dog.md) - - [::FormatTest](docs/FormatTest.md) - - [::InlineResponse200](docs/InlineResponse200.md) - - [::Model200Response](docs/Model200Response.md) - - [::ModelReturn](docs/ModelReturn.md) - - [::Name](docs/Name.md) - - [::Order](docs/Order.md) - - [::Pet](docs/Pet.md) - - [::SpecialModelName](docs/SpecialModelName.md) - - [::Tag](docs/Tag.md) - - [::User](docs/User.md) - - -## Documentation for Authorization - - -### petstore_auth - -- **Type**: OAuth -- **Flow**: implicit -- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog -- **Scopes**: - - write:pets: modify pets in your account - - read:pets: read your pets - -### test_api_client_id - -- **Type**: API key -- **API key parameter name**: x-test_api_client_id -- **Location**: HTTP header - -### test_api_client_secret - -- **Type**: API key -- **API key parameter name**: x-test_api_client_secret -- **Location**: HTTP header - -### api_key - -- **Type**: API key -- **API key parameter name**: api_key -- **Location**: HTTP header - -### test_http_basic - -- **Type**: HTTP basic authentication - -### test_api_key_query - -- **Type**: API key -- **API key parameter name**: test_api_key_query -- **Location**: URL query string - -### test_api_key_header - -- **Type**: API key -- **API key parameter name**: test_api_key_header -- **Location**: HTTP header - - diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/bin/Newtonsoft.Json.dll b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/bin/Newtonsoft.Json.dll deleted file mode 100644 index 4d42dd9c5fe55c70c56fa235e6a509595cf7b52d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 521216 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 z nlIEOrEAwACCR1aq-ltt2+#ko#eAmFKGy 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%0DgXX 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 b>Dl=1`nE}6knqXc!rwN!zoYk?kih=}tYMS- diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/bin/RestSharp.dll b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/bin/RestSharp.dll deleted file mode 100644 index 59d82f94198e053a62d648c27671eaf45fff0dad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167936 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%0ADZW1&C}=6{`-CM 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 UfQN`Z?|xnr{r`Xd-=o0)0_Pd&8~^|S diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/compile.bat b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/compile.bat deleted file mode 100644 index 8d07d021131..00000000000 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/compile.bat +++ /dev/null @@ -1,14 +0,0 @@ -@echo off - -SET CSCPATH=%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319 - - -if not exist ".\nuget.exe" powershell -Command "(new-object System.Net.WebClient).DownloadFile('https://nuget.org/nuget.exe', '.\nuget.exe')" -.\nuget.exe install vendor/packages.config -o vendor - -if not exist ".\bin" mkdir bin - -copy vendor\Newtonsoft.Json.8.0.2\lib\net45\Newtonsoft.Json.dll bin\Newtonsoft.Json.dll -copy vendor\RestSharp.105.1.0\lib\net45\RestSharp.dll bin\RestSharp.dll - -%CSCPATH%\csc /reference:bin\Newtonsoft.Json.dll;bin\RestSharp.dll /target:library /out:bin\IO.Swagger.dll /recurse:src\*.cs /doc:bin\IO.Swagger.xml diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/InlineResponse200.md b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/InlineResponse200.md deleted file mode 100644 index 6380096b06b..00000000000 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/docs/InlineResponse200.md +++ /dev/null @@ -1,14 +0,0 @@ -# InlineResponse200 - -## Properties - -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**PhotoUrls** | **List<string>** | | [optional] -**Name** | **string** | | [optional] -**Id** | **long?** | | -**Category** | **Object** | | [optional] -**Tags** | [**List<Tag>**](Tag.md) | | [optional] -**Status** | **string** | pet status in the store | [optional] - - diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/petstore b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/petstore deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/InlineResponse200.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/InlineResponse200.cs deleted file mode 100644 index e98ca7342cc..00000000000 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/InlineResponse200.cs +++ /dev/null @@ -1,217 +0,0 @@ -using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Runtime.Serialization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace IO.Swagger.Model -{ - /// - /// - /// - [DataContract] - public partial class InlineResponse200 : IEquatable - { - - /// - /// pet status in the store - /// - /// pet status in the store - [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; } - - /// - /// Initializes a new instance of the class. - /// Initializes a new instance of the class. - /// - /// PhotoUrls. - /// Name. - /// Id (required). - /// Category. - /// Tags. - /// pet status in the store. - - public InlineResponse200(List PhotoUrls = null, string Name = null, long? Id = null, Object Category = null, List Tags = null, StatusEnum? Status = null) - { - // to ensure "Id" is required (not null) - if (Id == null) - { - throw new InvalidDataException("Id is a required property for InlineResponse200 and cannot be null"); - } - else - { - this.Id = Id; - } - this.PhotoUrls = PhotoUrls; - this.Name = Name; - this.Category = Category; - this.Tags = Tags; - this.Status = Status; - - } - - - /// - /// Gets or Sets PhotoUrls - /// - [DataMember(Name="photoUrls", EmitDefaultValue=false)] - public List PhotoUrls { get; set; } - - /// - /// Gets or Sets Name - /// - [DataMember(Name="name", EmitDefaultValue=false)] - public string Name { 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 Object Category { 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 InlineResponse200 {\n"); - sb.Append(" PhotoUrls: ").Append(PhotoUrls).Append("\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" Category: ").Append(Category).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 - /// - /// JSON string presentation of the object - public 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 InlineResponse200); - } - - /// - /// Returns true if InlineResponse200 instances are equal - /// - /// Instance of InlineResponse200 to be compared - /// Boolean - public bool Equals(InlineResponse200 other) - { - // credit: http://stackoverflow.com/a/10454552/677735 - if (other == null) - return false; - - return - ( - this.PhotoUrls == other.PhotoUrls || - this.PhotoUrls != null && - this.PhotoUrls.SequenceEqual(other.PhotoUrls) - ) && - ( - this.Name == other.Name || - this.Name != null && - this.Name.Equals(other.Name) - ) && - ( - 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.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.PhotoUrls != null) - hash = hash * 59 + this.PhotoUrls.GetHashCode(); - if (this.Name != null) - hash = hash * 59 + this.Name.GetHashCode(); - if (this.Id != null) - hash = hash * 59 + this.Id.GetHashCode(); - if (this.Category != null) - hash = hash * 59 + this.Category.GetHashCode(); - if (this.Tags != null) - hash = hash * 59 + this.Tags.GetHashCode(); - if (this.Status != null) - hash = hash * 59 + this.Status.GetHashCode(); - return hash; - } - } - - } -} diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/ObjectReturn.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/ObjectReturn.cs deleted file mode 100644 index 1ea3dea45c5..00000000000 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/ObjectReturn.cs +++ /dev/null @@ -1,113 +0,0 @@ -using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Runtime.Serialization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace IO.Swagger.Model -{ - /// - /// - /// - [DataContract] - public partial class ObjectReturn : IEquatable - { - - /// - /// Initializes a new instance of the class. - /// Initializes a new instance of the class. - /// - /// _Return. - - public ObjectReturn(int? _Return = null) - { - this._Return = _Return; - - } - - - /// - /// Gets or Sets _Return - /// - [DataMember(Name="return", EmitDefaultValue=false)] - public int? _Return { 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 ObjectReturn {\n"); - sb.Append(" _Return: ").Append(_Return).Append("\n"); - - sb.Append("}\n"); - return sb.ToString(); - } - - /// - /// Returns the JSON string presentation of the object - /// - /// JSON string presentation of the object - public 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 ObjectReturn); - } - - /// - /// Returns true if ObjectReturn instances are equal - /// - /// Instance of ObjectReturn to be compared - /// Boolean - public bool Equals(ObjectReturn other) - { - // credit: http://stackoverflow.com/a/10454552/677735 - if (other == null) - return false; - - return - ( - this._Return == other._Return || - this._Return != null && - this._Return.Equals(other._Return) - ); - } - - /// - /// 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._Return != null) - hash = hash * 59 + this._Return.GetHashCode(); - - return hash; - } - } - - } -} diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Task.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Task.cs deleted file mode 100644 index b2182f2f712..00000000000 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Task.cs +++ /dev/null @@ -1,113 +0,0 @@ -using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Runtime.Serialization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace IO.Swagger.Model -{ - /// - /// - /// - [DataContract] - public partial class Task : IEquatable - { - - /// - /// Initializes a new instance of the class. - /// Initializes a new instance of the class. - /// - /// _Return. - - public Task(int? _Return = null) - { - this._Return = _Return; - - } - - - /// - /// Gets or Sets _Return - /// - [DataMember(Name="return", EmitDefaultValue=false)] - public int? _Return { 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 Task {\n"); - sb.Append(" _Return: ").Append(_Return).Append("\n"); - - sb.Append("}\n"); - return sb.ToString(); - } - - /// - /// Returns the JSON string presentation of the object - /// - /// JSON string presentation of the object - public 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 Task); - } - - /// - /// Returns true if Task instances are equal - /// - /// Instance of Task to be compared - /// Boolean - public bool Equals(Task other) - { - // credit: http://stackoverflow.com/a/10454552/677735 - if (other == null) - return false; - - return - ( - this._Return == other._Return || - this._Return != null && - this._Return.Equals(other._Return) - ); - } - - /// - /// 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._Return != null) - hash = hash * 59 + this._Return.GetHashCode(); - - return hash; - } - } - - } -} diff --git a/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.csproj b/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.csproj index 7b777ba6a27..ba55b6b16d6 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.csproj +++ b/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.csproj @@ -30,7 +30,10 @@ - Lib\SwaggerClient\bin\Newtonsoft.Json.dll + packages\Newtonsoft.Json.8.0.2\lib\net45\Newtonsoft.Json.dll + + + packages\RestSharp.105.1.0\lib\net45\RestSharp.dll @@ -38,53 +41,30 @@ packages\NUnit.2.6.4\lib\nunit.framework.dll - - Lib\SwaggerClient\bin\RestSharp.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + + + {0862164F-97E9-4226-B458-E09905B21F2F} + IO.Swagger + + \ No newline at end of file diff --git a/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.sln b/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.sln index dfb6e762ce2..5274859c30a 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.sln +++ b/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.sln @@ -3,12 +3,18 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2012 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SwaggerClientTest", "SwaggerClientTest.csproj", "{1011E844-3414-4D65-BF1F-7C8CE0167174}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IO.Swagger", "..\SwaggerClient\src\IO.Swagger\IO.Swagger.csproj", "{0862164F-97E9-4226-B458-E09905B21F2F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0862164F-97E9-4226-B458-E09905B21F2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0862164F-97E9-4226-B458-E09905B21F2F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0862164F-97E9-4226-B458-E09905B21F2F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0862164F-97E9-4226-B458-E09905B21F2F}.Release|Any CPU.Build.0 = Release|Any CPU {1011E844-3414-4D65-BF1F-7C8CE0167174}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1011E844-3414-4D65-BF1F-7C8CE0167174}.Debug|Any CPU.Build.0 = Debug|Any CPU {1011E844-3414-4D65-BF1F-7C8CE0167174}.Release|Any CPU.ActiveCfg = Release|Any CPU diff --git a/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.userprefs b/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.userprefs index 0b91bb4ae32..65a0da9f040 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.userprefs +++ b/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.userprefs @@ -1,25 +1,15 @@  - + - - - + + + - - - - - - - - - - - + diff --git a/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.csproj.FilesWrittenAbsolute.txt b/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.csproj.FilesWrittenAbsolute.txt index 323cad108c6..8e1a7e18f36 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.csproj.FilesWrittenAbsolute.txt +++ b/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.csproj.FilesWrittenAbsolute.txt @@ -1,9 +1,11 @@ -/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/.NETFramework,Version=v4.5.AssemblyAttribute.cs -/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.swagger-logo.png -/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll.mdb -/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll -/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.dll -/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.dll.mdb -/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/Newtonsoft.Json.dll -/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/nunit.framework.dll -/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/RestSharp.dll +/Volumes/Extra/projects/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/.NETFramework,Version=v4.5.AssemblyAttribute.cs +/Volumes/Extra/projects/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.swagger-logo.png +/Volumes/Extra/projects/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll.mdb +/Volumes/Extra/projects/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll +/Volumes/Extra/projects/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.dll +/Volumes/Extra/projects/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.dll.mdb +/Volumes/Extra/projects/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/Newtonsoft.Json.dll +/Volumes/Extra/projects/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/RestSharp.dll +/Volumes/Extra/projects/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/nunit.framework.dll +/Volumes/Extra/projects/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/Swagger Library.dll +/Volumes/Extra/projects/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/Swagger Library.dll.mdb diff --git a/samples/client/petstore/csharp/SwaggerClientTest/packages.config b/samples/client/petstore/csharp/SwaggerClientTest/packages.config index 09300da2fcd..0a536655794 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/packages.config +++ b/samples/client/petstore/csharp/SwaggerClientTest/packages.config @@ -1,4 +1,6 @@  + + \ No newline at end of file diff --git a/samples/client/petstore/csharp/SwaggerClientTest/packages/repositories.config b/samples/client/petstore/csharp/SwaggerClientTest/packages/repositories.config index ba8d0d576a8..c109c8ad2e5 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/packages/repositories.config +++ b/samples/client/petstore/csharp/SwaggerClientTest/packages/repositories.config @@ -1,4 +1,5 @@ - - - + + + + \ No newline at end of file From aa778edbd816df9fa26e9acf8dcb899f67f4e178 Mon Sep 17 00:00:00 2001 From: Jim Schubert Date: Sun, 1 May 2016 20:28:50 -0400 Subject: [PATCH 02/19] [csharp] Regenerate sample client In this commit, FormatTest.cs was modified manually. Unrelated to this commit, a Guid with default parameter of null was not marked nullable. --- .../csharp/SwaggerClient/IO.Swagger.sln | 10 +++++----- .../petstore/csharp/SwaggerClient/README.md | 4 ++-- .../csharp/SwaggerClient/docs/FakeApi.md | 6 +++--- .../csharp/SwaggerClient/docs/FormatTest.md | 1 + .../petstore/csharp/SwaggerClient/git_push.sh | 4 ++-- .../src/IO.Swagger.Test/Api/FakeApiTests.cs | 2 +- .../src/IO.Swagger.Test/IO.Swagger.Test.csproj | 2 +- .../IO.Swagger.Test/Model/FormatTestTests.cs | 8 ++++++++ .../src/IO.Swagger/Api/FakeApi.cs | 16 ++++++++-------- .../src/IO.Swagger/IO.Swagger.csproj | 2 +- .../src/IO.Swagger/Model/FormatTest.cs | 18 +++++++++++++++++- 11 files changed, 49 insertions(+), 24 deletions(-) diff --git a/samples/client/petstore/csharp/SwaggerClient/IO.Swagger.sln b/samples/client/petstore/csharp/SwaggerClient/IO.Swagger.sln index d0a367de899..08cd5875c2e 100644 --- a/samples/client/petstore/csharp/SwaggerClient/IO.Swagger.sln +++ b/samples/client/petstore/csharp/SwaggerClient/IO.Swagger.sln @@ -2,7 +2,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2012 VisualStudioVersion = 12.0.0.0 MinimumVisualStudioVersion = 10.0.0.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IO.Swagger", "src\IO.Swagger\IO.Swagger.csproj", "{C22D7F6C-D698-469A-A3C9-5A499DE213B8}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IO.Swagger", "src\IO.Swagger\IO.Swagger.csproj", "{27FD0ED8-0F4A-458A-B564-6BFC0A02B9C9}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IO.Swagger.Test", "src\IO.Swagger.Test\IO.Swagger.Test.csproj", "{19F1DEBC-DE5E-4517-8062-F000CD499087}" EndProject @@ -12,10 +12,10 @@ Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution -{C22D7F6C-D698-469A-A3C9-5A499DE213B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU -{C22D7F6C-D698-469A-A3C9-5A499DE213B8}.Debug|Any CPU.Build.0 = Debug|Any CPU -{C22D7F6C-D698-469A-A3C9-5A499DE213B8}.Release|Any CPU.ActiveCfg = Release|Any CPU -{C22D7F6C-D698-469A-A3C9-5A499DE213B8}.Release|Any CPU.Build.0 = Release|Any CPU +{27FD0ED8-0F4A-458A-B564-6BFC0A02B9C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU +{27FD0ED8-0F4A-458A-B564-6BFC0A02B9C9}.Debug|Any CPU.Build.0 = Debug|Any CPU +{27FD0ED8-0F4A-458A-B564-6BFC0A02B9C9}.Release|Any CPU.ActiveCfg = Release|Any CPU +{27FD0ED8-0F4A-458A-B564-6BFC0A02B9C9}.Release|Any CPU.Build.0 = Release|Any CPU {19F1DEBC-DE5E-4517-8062-F000CD499087}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {19F1DEBC-DE5E-4517-8062-F000CD499087}.Debug|Any CPU.Build.0 = Debug|Any CPU {19F1DEBC-DE5E-4517-8062-F000CD499087}.Release|Any CPU.ActiveCfg = Release|Any CPU diff --git a/samples/client/petstore/csharp/SwaggerClient/README.md b/samples/client/petstore/csharp/SwaggerClient/README.md index c1c35320e65..174b3292633 100644 --- a/samples/client/petstore/csharp/SwaggerClient/README.md +++ b/samples/client/petstore/csharp/SwaggerClient/README.md @@ -6,7 +6,7 @@ This C# SDK is automatically generated by the [Swagger Codegen](https://github.c - API version: 1.0.0 - SDK version: 1.0.0 -- Build date: 2016-05-01T19:55:27.477-04:00 +- Build date: 2016-05-01T20:17:48.968-04:00 - Build package: class io.swagger.codegen.languages.CSharpClientCodegen ## Frameworks supported @@ -54,7 +54,7 @@ namespace Example { var apiInstance = new FakeApi(); - var number = number_example; // string | None + var number = 3.4; // double? | None var _double = 1.2; // double? | None var _string = _string_example; // string | None var _byte = B; // byte[] | None diff --git a/samples/client/petstore/csharp/SwaggerClient/docs/FakeApi.md b/samples/client/petstore/csharp/SwaggerClient/docs/FakeApi.md index f688b755c22..ae9fd8c3d36 100644 --- a/samples/client/petstore/csharp/SwaggerClient/docs/FakeApi.md +++ b/samples/client/petstore/csharp/SwaggerClient/docs/FakeApi.md @@ -8,7 +8,7 @@ Method | HTTP request | Description # **TestEndpointParameters** -> void TestEndpointParameters (string number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null) +> void TestEndpointParameters (double? number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null) Fake endpoint for testing various parameters @@ -30,7 +30,7 @@ namespace Example { var apiInstance = new FakeApi(); - var number = number_example; // string | None + var number = 3.4; // double? | None var _double = 1.2; // double? | None var _string = _string_example; // string | None var _byte = B; // byte[] | None @@ -61,7 +61,7 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **number** | **string**| None | + **number** | **double?**| None | **_double** | **double?**| None | **_string** | **string**| None | **_byte** | **byte[]**| None | diff --git a/samples/client/petstore/csharp/SwaggerClient/docs/FormatTest.md b/samples/client/petstore/csharp/SwaggerClient/docs/FormatTest.md index c5dc3cf53f3..2672fee238c 100644 --- a/samples/client/petstore/csharp/SwaggerClient/docs/FormatTest.md +++ b/samples/client/petstore/csharp/SwaggerClient/docs/FormatTest.md @@ -14,6 +14,7 @@ Name | Type | Description | Notes **Binary** | **byte[]** | | [optional] **Date** | **DateTime?** | | **DateTime** | **DateTime?** | | [optional] +**Uuid** | **Guid** | | [optional] **Password** | **string** | | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/samples/client/petstore/csharp/SwaggerClient/git_push.sh b/samples/client/petstore/csharp/SwaggerClient/git_push.sh index 13d463698c5..792320114fb 100644 --- a/samples/client/petstore/csharp/SwaggerClient/git_push.sh +++ b/samples/client/petstore/csharp/SwaggerClient/git_push.sh @@ -8,12 +8,12 @@ git_repo_id=$2 release_note=$3 if [ "$git_user_id" = "" ]; then - git_user_id="YOUR_GIT_USR_ID" + git_user_id="GIT_USER_ID" echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" fi if [ "$git_repo_id" = "" ]; then - git_repo_id="YOUR_GIT_REPO_ID" + git_repo_id="GIT_REPO_ID" echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" fi diff --git a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Api/FakeApiTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Api/FakeApiTests.cs index 8da6571f24a..478311b649e 100644 --- a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Api/FakeApiTests.cs +++ b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Api/FakeApiTests.cs @@ -59,7 +59,7 @@ namespace IO.Swagger.Test public void TestEndpointParametersTest() { // TODO: add unit test for the method 'TestEndpointParameters' - string number = null; // TODO: replace null with proper value + double? number = null; // TODO: replace null with proper value double? _double = null; // TODO: replace null with proper value string _string = null; // TODO: replace null with proper value byte[] _byte = null; // TODO: replace null with proper value diff --git a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/IO.Swagger.Test.csproj b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/IO.Swagger.Test.csproj index 0c34dbda2f9..618cc188575 100644 --- a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/IO.Swagger.Test.csproj +++ b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/IO.Swagger.Test.csproj @@ -65,7 +65,7 @@ - {C22D7F6C-D698-469A-A3C9-5A499DE213B8} + {27FD0ED8-0F4A-458A-B564-6BFC0A02B9C9} IO.Swagger diff --git a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/FormatTestTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/FormatTestTests.cs index a6eec919779..7676fcae9b9 100644 --- a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/FormatTestTests.cs +++ b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/FormatTestTests.cs @@ -139,6 +139,14 @@ namespace IO.Swagger.Test // TODO: unit test for the property 'DateTime' } /// + /// Test the property 'Uuid' + /// + [Test] + public void UuidTest() + { + // TODO: unit test for the property 'Uuid' + } + /// /// Test the property 'Password' /// [Test] diff --git a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Api/FakeApi.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Api/FakeApi.cs index 18b61d64e45..1c92dc3bbda 100644 --- a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Api/FakeApi.cs +++ b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Api/FakeApi.cs @@ -33,7 +33,7 @@ namespace IO.Swagger.Api /// None (optional) /// None (optional) /// - void TestEndpointParameters (string number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null); + void TestEndpointParameters (double? number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null); /// /// Fake endpoint for testing various parameters @@ -55,7 +55,7 @@ namespace IO.Swagger.Api /// None (optional) /// None (optional) /// ApiResponse of Object(void) - ApiResponse TestEndpointParametersWithHttpInfo (string number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null); + ApiResponse TestEndpointParametersWithHttpInfo (double? number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null); #endregion Synchronous Operations #region Asynchronous Operations /// @@ -78,7 +78,7 @@ namespace IO.Swagger.Api /// None (optional) /// None (optional) /// Task of void - System.Threading.Tasks.Task TestEndpointParametersAsync (string number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null); + System.Threading.Tasks.Task TestEndpointParametersAsync (double? number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null); /// /// Fake endpoint for testing various parameters @@ -100,7 +100,7 @@ namespace IO.Swagger.Api /// None (optional) /// None (optional) /// Task of ApiResponse - System.Threading.Tasks.Task> TestEndpointParametersAsyncWithHttpInfo (string number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null); + System.Threading.Tasks.Task> TestEndpointParametersAsyncWithHttpInfo (double? number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null); #endregion Asynchronous Operations } @@ -208,7 +208,7 @@ namespace IO.Swagger.Api /// None (optional) /// None (optional) /// - public void TestEndpointParameters (string number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null) + public void TestEndpointParameters (double? number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null) { TestEndpointParametersWithHttpInfo(number, _double, _string, _byte, integer, int32, int64, _float, binary, date, dateTime, password); } @@ -230,7 +230,7 @@ namespace IO.Swagger.Api /// None (optional) /// None (optional) /// ApiResponse of Object(void) - public ApiResponse TestEndpointParametersWithHttpInfo (string number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null) + public ApiResponse TestEndpointParametersWithHttpInfo (double? number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null) { // verify the required parameter 'number' is set if (number == null) @@ -319,7 +319,7 @@ namespace IO.Swagger.Api /// None (optional) /// None (optional) /// Task of void - public async System.Threading.Tasks.Task TestEndpointParametersAsync (string number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null) + public async System.Threading.Tasks.Task TestEndpointParametersAsync (double? number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null) { await TestEndpointParametersAsyncWithHttpInfo(number, _double, _string, _byte, integer, int32, int64, _float, binary, date, dateTime, password); @@ -342,7 +342,7 @@ namespace IO.Swagger.Api /// None (optional) /// None (optional) /// Task of ApiResponse - public async System.Threading.Tasks.Task> TestEndpointParametersAsyncWithHttpInfo (string number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null) + public async System.Threading.Tasks.Task> TestEndpointParametersAsyncWithHttpInfo (double? number, double? _double, string _string, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, byte[] binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null) { // verify the required parameter 'number' is set if (number == null) diff --git a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/IO.Swagger.csproj b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/IO.Swagger.csproj index b94d66454c4..36e6f0008e9 100644 --- a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/IO.Swagger.csproj +++ b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/IO.Swagger.csproj @@ -3,7 +3,7 @@ Debug AnyCPU - {C22D7F6C-D698-469A-A3C9-5A499DE213B8} + {27FD0ED8-0F4A-458A-B564-6BFC0A02B9C9} Library Properties Swagger Library diff --git a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/FormatTest.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/FormatTest.cs index c1291a2e4f6..49e7d1041aa 100644 --- a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/FormatTest.cs +++ b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/FormatTest.cs @@ -33,9 +33,10 @@ namespace IO.Swagger.Model /// Binary. /// Date (required). /// DateTime. + /// Uuid. /// Password (required). - public FormatTest(int? Integer = null, int? Int32 = null, long? Int64 = null, double? Number = null, float? _Float = null, double? _Double = null, string _String = null, byte[] _Byte = null, byte[] Binary = null, DateTime? Date = null, DateTime? DateTime = null, string Password = null) + public FormatTest(int? Integer = null, int? Int32 = null, long? Int64 = null, double? Number = null, float? _Float = null, double? _Double = null, string _String = null, byte[] _Byte = null, byte[] Binary = null, DateTime? Date = null, DateTime? DateTime = null, Guid? Uuid = null, string Password = null) { // to ensure "Number" is required (not null) if (Number == null) @@ -81,6 +82,7 @@ namespace IO.Swagger.Model this._String = _String; this.Binary = Binary; this.DateTime = DateTime; + this.Uuid = Uuid; } @@ -151,6 +153,12 @@ namespace IO.Swagger.Model [DataMember(Name="dateTime", EmitDefaultValue=false)] public DateTime? DateTime { get; set; } + /// + /// Gets or Sets Uuid + /// + [DataMember(Name="uuid", EmitDefaultValue=false)] + public Guid? Uuid { get; set; } + /// /// Gets or Sets Password /// @@ -176,6 +184,7 @@ namespace IO.Swagger.Model sb.Append(" Binary: ").Append(Binary).Append("\n"); sb.Append(" Date: ").Append(Date).Append("\n"); sb.Append(" DateTime: ").Append(DateTime).Append("\n"); + sb.Append(" Uuid: ").Append(Uuid).Append("\n"); sb.Append(" Password: ").Append(Password).Append("\n"); sb.Append("}\n"); return sb.ToString(); @@ -268,6 +277,11 @@ namespace IO.Swagger.Model this.DateTime != null && this.DateTime.Equals(other.DateTime) ) && + ( + this.Uuid == other.Uuid || + this.Uuid != null && + this.Uuid.Equals(other.Uuid) + ) && ( this.Password == other.Password || this.Password != null && @@ -308,6 +322,8 @@ namespace IO.Swagger.Model hash = hash * 59 + this.Date.GetHashCode(); if (this.DateTime != null) hash = hash * 59 + this.DateTime.GetHashCode(); + if (this.Uuid != null) + hash = hash * 59 + this.Uuid.GetHashCode(); if (this.Password != null) hash = hash * 59 + this.Password.GetHashCode(); return hash; From 3ed715b26eacba7223b63e7073f23561586fc165 Mon Sep 17 00:00:00 2001 From: Jim Schubert Date: Sun, 1 May 2016 20:42:10 -0400 Subject: [PATCH 03/19] [csharp] Fix ASP.NET Core 1.0 src location --- .../java/io/swagger/codegen/languages/AspNet5ServerCodegen.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AspNet5ServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AspNet5ServerCodegen.java index cf8915974e6..790891d38bb 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AspNet5ServerCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AspNet5ServerCodegen.java @@ -11,6 +11,8 @@ import java.util.*; public class AspNet5ServerCodegen extends AbstractCSharpCodegen { + protected String sourceFolder = "src" + File.separator + packageName; + @SuppressWarnings("hiding") protected Logger LOGGER = LoggerFactory.getLogger(AspNet5ServerCodegen.class); From 0ce6fd7b3626f7359aed33b4f735c9e34304a05c Mon Sep 17 00:00:00 2001 From: kolyjjj Date: Tue, 3 May 2016 22:18:43 +0800 Subject: [PATCH 04/19] [koly] update swagger tools to 0.10.1 --- .../swagger-codegen/src/main/resources/nodejs/package.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/resources/nodejs/package.mustache b/modules/swagger-codegen/src/main/resources/nodejs/package.mustache index 86aa21af635..2d2b917c4b2 100644 --- a/modules/swagger-codegen/src/main/resources/nodejs/package.mustache +++ b/modules/swagger-codegen/src/main/resources/nodejs/package.mustache @@ -11,6 +11,6 @@ "dependencies": { "connect": "^3.2.0", "js-yaml": "^3.3.0", - "swagger-tools": "0.9.*" + "swagger-tools": "0.10.1" } } From 98a2a22abf6d3a460087099b87a2bcffe700d445 Mon Sep 17 00:00:00 2001 From: kolyjjj Date: Wed, 4 May 2016 17:56:02 +0800 Subject: [PATCH 05/19] [koly] generate nodejs codes --- .../server/petstore/nodejs/api/swagger.yaml | 8 +-- .../petstore/nodejs/controllers/PetService.js | 60 +++++++++---------- .../nodejs/controllers/StoreService.js | 16 ++--- .../nodejs/controllers/UserService.js | 14 ++--- samples/server/petstore/nodejs/package.json | 2 +- 5 files changed, 50 insertions(+), 50 deletions(-) diff --git a/samples/server/petstore/nodejs/api/swagger.yaml b/samples/server/petstore/nodejs/api/swagger.yaml index 1aad0a1d4f4..f6987daa915 100644 --- a/samples/server/petstore/nodejs/api/swagger.yaml +++ b/samples/server/petstore/nodejs/api/swagger.yaml @@ -587,10 +587,6 @@ paths: description: "User not found" x-swagger-router-controller: "User" securityDefinitions: - api_key: - type: "apiKey" - name: "api_key" - in: "header" petstore_auth: type: "oauth2" authorizationUrl: "http://petstore.swagger.io/api/oauth/dialog" @@ -598,6 +594,10 @@ securityDefinitions: scopes: write:pets: "modify pets in your account" read:pets: "read your pets" + api_key: + type: "apiKey" + name: "api_key" + in: "header" definitions: Order: type: "object" diff --git a/samples/server/petstore/nodejs/controllers/PetService.js b/samples/server/petstore/nodejs/controllers/PetService.js index 95f42f6a038..2c464714aa7 100644 --- a/samples/server/petstore/nodejs/controllers/PetService.js +++ b/samples/server/petstore/nodejs/controllers/PetService.js @@ -13,7 +13,7 @@ exports.deletePet = function(args, res, next) { /** * parameters expected in the args: * petId (Long) - * apiKey (String) + * api_key (String) **/ // no response value expected for this operation res.end(); @@ -26,18 +26,18 @@ exports.findPetsByStatus = function(args, res, next) { **/ var examples = {}; examples['application/json'] = [ { - "tags" : [ { - "id" : 123456789, - "name" : "aeiou" - } ], + "photoUrls" : [ "aeiou" ], + "name" : "doggie", "id" : 123456789, "category" : { - "id" : 123456789, - "name" : "aeiou" + "name" : "aeiou", + "id" : 123456789 }, - "status" : "aeiou", - "name" : "doggie", - "photoUrls" : [ "aeiou" ] + "tags" : [ { + "name" : "aeiou", + "id" : 123456789 + } ], + "status" : "aeiou" } ]; if(Object.keys(examples).length > 0) { res.setHeader('Content-Type', 'application/json'); @@ -56,18 +56,18 @@ exports.findPetsByTags = function(args, res, next) { **/ var examples = {}; examples['application/json'] = [ { - "tags" : [ { - "id" : 123456789, - "name" : "aeiou" - } ], + "photoUrls" : [ "aeiou" ], + "name" : "doggie", "id" : 123456789, "category" : { - "id" : 123456789, - "name" : "aeiou" + "name" : "aeiou", + "id" : 123456789 }, - "status" : "aeiou", - "name" : "doggie", - "photoUrls" : [ "aeiou" ] + "tags" : [ { + "name" : "aeiou", + "id" : 123456789 + } ], + "status" : "aeiou" } ]; if(Object.keys(examples).length > 0) { res.setHeader('Content-Type', 'application/json'); @@ -86,18 +86,18 @@ exports.getPetById = function(args, res, next) { **/ var examples = {}; examples['application/json'] = { - "tags" : [ { - "id" : 123456789, - "name" : "aeiou" - } ], + "photoUrls" : [ "aeiou" ], + "name" : "doggie", "id" : 123456789, "category" : { - "id" : 123456789, - "name" : "aeiou" + "name" : "aeiou", + "id" : 123456789 }, - "status" : "aeiou", - "name" : "doggie", - "photoUrls" : [ "aeiou" ] + "tags" : [ { + "name" : "aeiou", + "id" : 123456789 + } ], + "status" : "aeiou" }; if(Object.keys(examples).length > 0) { res.setHeader('Content-Type', 'application/json'); @@ -138,9 +138,9 @@ exports.uploadFile = function(args, res, next) { **/ var examples = {}; examples['application/json'] = { - "message" : "aeiou", "code" : 123, - "type" : "aeiou" + "type" : "aeiou", + "message" : "aeiou" }; if(Object.keys(examples).length > 0) { res.setHeader('Content-Type', 'application/json'); diff --git a/samples/server/petstore/nodejs/controllers/StoreService.js b/samples/server/petstore/nodejs/controllers/StoreService.js index 01759173bd4..d20619ceb9b 100644 --- a/samples/server/petstore/nodejs/controllers/StoreService.js +++ b/samples/server/petstore/nodejs/controllers/StoreService.js @@ -34,12 +34,12 @@ exports.getOrderById = function(args, res, next) { **/ var examples = {}; examples['application/json'] = { - "id" : 123456789, "petId" : 123456789, - "complete" : true, - "status" : "aeiou", "quantity" : 123, - "shipDate" : "2000-01-23T04:56:07.000+0000" + "id" : 123456789, + "shipDate" : "2000-01-23T04:56:07.000+0000", + "complete" : true, + "status" : "aeiou" }; if(Object.keys(examples).length > 0) { res.setHeader('Content-Type', 'application/json'); @@ -58,12 +58,12 @@ exports.placeOrder = function(args, res, next) { **/ var examples = {}; examples['application/json'] = { - "id" : 123456789, "petId" : 123456789, - "complete" : true, - "status" : "aeiou", "quantity" : 123, - "shipDate" : "2000-01-23T04:56:07.000+0000" + "id" : 123456789, + "shipDate" : "2000-01-23T04:56:07.000+0000", + "complete" : true, + "status" : "aeiou" }; if(Object.keys(examples).length > 0) { res.setHeader('Content-Type', 'application/json'); diff --git a/samples/server/petstore/nodejs/controllers/UserService.js b/samples/server/petstore/nodejs/controllers/UserService.js index 69fc1a81391..3a62feeaf3f 100644 --- a/samples/server/petstore/nodejs/controllers/UserService.js +++ b/samples/server/petstore/nodejs/controllers/UserService.js @@ -43,14 +43,14 @@ exports.getUserByName = function(args, res, next) { **/ var examples = {}; examples['application/json'] = { - "id" : 123456789, - "lastName" : "aeiou", - "phone" : "aeiou", - "username" : "aeiou", - "email" : "aeiou", - "userStatus" : 123, "firstName" : "aeiou", - "password" : "aeiou" + "lastName" : "aeiou", + "password" : "aeiou", + "userStatus" : 123, + "phone" : "aeiou", + "id" : 123456789, + "email" : "aeiou", + "username" : "aeiou" }; if(Object.keys(examples).length > 0) { res.setHeader('Content-Type', 'application/json'); diff --git a/samples/server/petstore/nodejs/package.json b/samples/server/petstore/nodejs/package.json index 293316dac0e..c5884b196b9 100644 --- a/samples/server/petstore/nodejs/package.json +++ b/samples/server/petstore/nodejs/package.json @@ -11,6 +11,6 @@ "dependencies": { "connect": "^3.2.0", "js-yaml": "^3.3.0", - "swagger-tools": "0.9.*" + "swagger-tools": "0.10.1" } } From 41b7649e620ead6dd0312db9ce38335f07371edb Mon Sep 17 00:00:00 2001 From: Guo Huang Date: Wed, 4 May 2016 10:39:30 -0700 Subject: [PATCH 06/19] fixed array return type return as pointer issue --- .../codegen/languages/GoClientCodegen.java | 8 ++++- .../src/main/resources/go/api.mustache | 8 ++--- .../petstore/go/go-petstore/docs/PetApi.md | 8 ++--- .../petstore/go/go-petstore/docs/StoreApi.md | 12 +++---- .../petstore/go/go-petstore/docs/UserApi.md | 8 ++--- .../client/petstore/go/go-petstore/pet_api.go | 36 +++++++++---------- .../petstore/go/go-petstore/store_api.go | 28 +++++++-------- .../petstore/go/go-petstore/user_api.go | 22 ++++++------ samples/client/petstore/go/pet_api_test.go | 35 +++++++++--------- 9 files changed, 85 insertions(+), 80 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/GoClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/GoClientCodegen.java index fe25436c901..e9162205e7b 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/GoClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/GoClientCodegen.java @@ -401,7 +401,13 @@ public class GoClientCodegen extends DefaultCodegen implements CodegenConfig { listIterator.add(newImportMap); } } - + // add pointer to return type string if it is not array + for (CodegenOperation operation : operations) { + if((operation.returnContainer == null || operation.returnContainer != "array") + && operation.returnType != null) { + operation.returnType = "*" + operation.returnType; + } + } return objs; } diff --git a/modules/swagger-codegen/src/main/resources/go/api.mustache b/modules/swagger-codegen/src/main/resources/go/api.mustache index cd32f831d71..fbc0ac0b0d4 100644 --- a/modules/swagger-codegen/src/main/resources/go/api.mustache +++ b/modules/swagger-codegen/src/main/resources/go/api.mustache @@ -37,7 +37,7 @@ func New{{classname}}WithBasePath(basePath string) *{{classname}} { {{#allParams}} * @param {{paramName}} {{description}} {{/allParams}} * @return {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}} */ -func (a {{classname}}) {{nickname}}({{#allParams}}{{paramName}} {{{dataType}}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) ({{#returnType}}*{{{returnType}}}, {{/returnType}}*APIResponse, error) { +func (a {{classname}}) {{nickname}}({{#allParams}}{{paramName}} {{{dataType}}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) ({{#returnType}}{{{returnType}}}, {{/returnType}}*APIResponse, error) { var httpMethod = "{{httpMethod}}" // create path and map variables @@ -46,7 +46,7 @@ func (a {{classname}}) {{nickname}}({{#allParams}}{{paramName}} {{{dataType}}}{{ {{#allParams}}{{#required}} // verify the required parameter '{{paramName}}' is set if &{{paramName}} == nil { - return {{#returnType}}new({{{returnType}}}), {{/returnType}}nil, errors.New("Missing required parameter '{{paramName}}' when calling {{classname}}->{{operationId}}") + return {{#returnType}}*new({{{returnType}}}), {{/returnType}}nil, errors.New("Missing required parameter '{{paramName}}' when calling {{classname}}->{{operationId}}") }{{/required}}{{/allParams}} headerParams := make(map[string]string) @@ -113,10 +113,10 @@ func (a {{classname}}) {{nickname}}({{#allParams}}{{paramName}} {{{dataType}}}{{ {{#returnType}} var successPayload = new({{returnType}}){{/returnType}} httpResponse, err := a.Configuration.APIClient.CallAPI(path, httpMethod, postBody, headerParams, queryParams, formParams, fileName, fileBytes) if err != nil { - return {{#returnType}}successPayload, {{/returnType}}NewAPIResponse(httpResponse.RawResponse), err + return {{#returnType}}*successPayload, {{/returnType}}NewAPIResponse(httpResponse.RawResponse), err } {{#returnType}} err = json.Unmarshal(httpResponse.Body(), &successPayload){{/returnType}} - return {{#returnType}}successPayload, {{/returnType}}NewAPIResponse(httpResponse.RawResponse), err + return {{#returnType}}*successPayload, {{/returnType}}NewAPIResponse(httpResponse.RawResponse), err } {{/operation}}{{/operations}} diff --git a/samples/client/petstore/go/go-petstore/docs/PetApi.md b/samples/client/petstore/go/go-petstore/docs/PetApi.md index e96bdc1a15e..b0788fb1932 100644 --- a/samples/client/petstore/go/go-petstore/docs/PetApi.md +++ b/samples/client/petstore/go/go-petstore/docs/PetApi.md @@ -132,7 +132,7 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) # **GetPetById** -> Pet GetPetById($petId) +> *Pet GetPetById($petId) Find pet by ID @@ -147,7 +147,7 @@ Name | Type | Description | Notes ### Return type -[**Pet**](Pet.md) +[***Pet**](Pet.md) ### Authorization @@ -221,7 +221,7 @@ void (empty response body) [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) # **UploadFile** -> ModelApiResponse UploadFile($petId, $additionalMetadata, $file) +> *ModelApiResponse UploadFile($petId, $additionalMetadata, $file) uploads an image @@ -238,7 +238,7 @@ Name | Type | Description | Notes ### Return type -[**ModelApiResponse**](ApiResponse.md) +[***ModelApiResponse**](ApiResponse.md) ### Authorization diff --git a/samples/client/petstore/go/go-petstore/docs/StoreApi.md b/samples/client/petstore/go/go-petstore/docs/StoreApi.md index 1ee858d2e30..15a05e6158f 100644 --- a/samples/client/petstore/go/go-petstore/docs/StoreApi.md +++ b/samples/client/petstore/go/go-petstore/docs/StoreApi.md @@ -40,7 +40,7 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) # **GetInventory** -> map[string]int32 GetInventory() +> *map[string]int32 GetInventory() Returns pet inventories by status @@ -52,7 +52,7 @@ This endpoint does not need any parameter. ### Return type -[**map[string]int32**](map.md) +[***map[string]int32**](map.md) ### Authorization @@ -66,7 +66,7 @@ This endpoint does not need any parameter. [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) # **GetOrderById** -> Order GetOrderById($orderId) +> *Order GetOrderById($orderId) Find purchase order by ID @@ -81,7 +81,7 @@ Name | Type | Description | Notes ### Return type -[**Order**](Order.md) +[***Order**](Order.md) ### Authorization @@ -95,7 +95,7 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) # **PlaceOrder** -> Order PlaceOrder($body) +> *Order PlaceOrder($body) Place an order for a pet @@ -110,7 +110,7 @@ Name | Type | Description | Notes ### Return type -[**Order**](Order.md) +[***Order**](Order.md) ### Authorization diff --git a/samples/client/petstore/go/go-petstore/docs/UserApi.md b/samples/client/petstore/go/go-petstore/docs/UserApi.md index 4950105ca86..9063e052229 100644 --- a/samples/client/petstore/go/go-petstore/docs/UserApi.md +++ b/samples/client/petstore/go/go-petstore/docs/UserApi.md @@ -131,7 +131,7 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) # **GetUserByName** -> User GetUserByName($username) +> *User GetUserByName($username) Get user by user name @@ -146,7 +146,7 @@ Name | Type | Description | Notes ### Return type -[**User**](User.md) +[***User**](User.md) ### Authorization @@ -160,7 +160,7 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) # **LoginUser** -> string LoginUser($username, $password) +> *string LoginUser($username, $password) Logs user into the system @@ -176,7 +176,7 @@ Name | Type | Description | Notes ### Return type -**string** +***string** ### Authorization diff --git a/samples/client/petstore/go/go-petstore/pet_api.go b/samples/client/petstore/go/go-petstore/pet_api.go index c5eb1f7ef3e..5d2a447dfe3 100644 --- a/samples/client/petstore/go/go-petstore/pet_api.go +++ b/samples/client/petstore/go/go-petstore/pet_api.go @@ -171,7 +171,7 @@ func (a PetApi) DeletePet(petId int64, apiKey string) (*APIResponse, error) { * @param status Status values that need to be considered for filter * @return []Pet */ -func (a PetApi) FindPetsByStatus(status []string) (*[]Pet, *APIResponse, error) { +func (a PetApi) FindPetsByStatus(status []string) ([]Pet, *APIResponse, error) { var httpMethod = "Get" // create path and map variables @@ -179,7 +179,7 @@ func (a PetApi) FindPetsByStatus(status []string) (*[]Pet, *APIResponse, error) // verify the required parameter 'status' is set if &status == nil { - return new([]Pet), nil, errors.New("Missing required parameter 'status' when calling PetApi->FindPetsByStatus") + return *new([]Pet), nil, errors.New("Missing required parameter 'status' when calling PetApi->FindPetsByStatus") } headerParams := make(map[string]string) @@ -224,10 +224,10 @@ func (a PetApi) FindPetsByStatus(status []string) (*[]Pet, *APIResponse, error) var successPayload = new([]Pet) httpResponse, err := a.Configuration.APIClient.CallAPI(path, httpMethod, postBody, headerParams, queryParams, formParams, fileName, fileBytes) if err != nil { - return successPayload, NewAPIResponse(httpResponse.RawResponse), err + return *successPayload, NewAPIResponse(httpResponse.RawResponse), err } err = json.Unmarshal(httpResponse.Body(), &successPayload) - return successPayload, NewAPIResponse(httpResponse.RawResponse), err + return *successPayload, NewAPIResponse(httpResponse.RawResponse), err } /** @@ -237,7 +237,7 @@ func (a PetApi) FindPetsByStatus(status []string) (*[]Pet, *APIResponse, error) * @param tags Tags to filter by * @return []Pet */ -func (a PetApi) FindPetsByTags(tags []string) (*[]Pet, *APIResponse, error) { +func (a PetApi) FindPetsByTags(tags []string) ([]Pet, *APIResponse, error) { var httpMethod = "Get" // create path and map variables @@ -245,7 +245,7 @@ func (a PetApi) FindPetsByTags(tags []string) (*[]Pet, *APIResponse, error) { // verify the required parameter 'tags' is set if &tags == nil { - return new([]Pet), nil, errors.New("Missing required parameter 'tags' when calling PetApi->FindPetsByTags") + return *new([]Pet), nil, errors.New("Missing required parameter 'tags' when calling PetApi->FindPetsByTags") } headerParams := make(map[string]string) @@ -290,10 +290,10 @@ func (a PetApi) FindPetsByTags(tags []string) (*[]Pet, *APIResponse, error) { var successPayload = new([]Pet) httpResponse, err := a.Configuration.APIClient.CallAPI(path, httpMethod, postBody, headerParams, queryParams, formParams, fileName, fileBytes) if err != nil { - return successPayload, NewAPIResponse(httpResponse.RawResponse), err + return *successPayload, NewAPIResponse(httpResponse.RawResponse), err } err = json.Unmarshal(httpResponse.Body(), &successPayload) - return successPayload, NewAPIResponse(httpResponse.RawResponse), err + return *successPayload, NewAPIResponse(httpResponse.RawResponse), err } /** @@ -301,7 +301,7 @@ func (a PetApi) FindPetsByTags(tags []string) (*[]Pet, *APIResponse, error) { * Returns a single pet * * @param petId ID of pet to return - * @return Pet + * @return *Pet */ func (a PetApi) GetPetById(petId int64) (*Pet, *APIResponse, error) { @@ -312,7 +312,7 @@ func (a PetApi) GetPetById(petId int64) (*Pet, *APIResponse, error) { // verify the required parameter 'petId' is set if &petId == nil { - return new(Pet), nil, errors.New("Missing required parameter 'petId' when calling PetApi->GetPetById") + return *new(*Pet), nil, errors.New("Missing required parameter 'petId' when calling PetApi->GetPetById") } headerParams := make(map[string]string) @@ -350,13 +350,13 @@ func (a PetApi) GetPetById(petId int64) (*Pet, *APIResponse, error) { if localVarHttpHeaderAccept != "" { headerParams["Accept"] = localVarHttpHeaderAccept } - var successPayload = new(Pet) + var successPayload = new(*Pet) httpResponse, err := a.Configuration.APIClient.CallAPI(path, httpMethod, postBody, headerParams, queryParams, formParams, fileName, fileBytes) if err != nil { - return successPayload, NewAPIResponse(httpResponse.RawResponse), err + return *successPayload, NewAPIResponse(httpResponse.RawResponse), err } err = json.Unmarshal(httpResponse.Body(), &successPayload) - return successPayload, NewAPIResponse(httpResponse.RawResponse), err + return *successPayload, NewAPIResponse(httpResponse.RawResponse), err } /** @@ -501,7 +501,7 @@ func (a PetApi) UpdatePetWithForm(petId int64, name string, status string) (*API * @param petId ID of pet to update * @param additionalMetadata Additional data to pass to server * @param file file to upload - * @return ModelApiResponse + * @return *ModelApiResponse */ func (a PetApi) UploadFile(petId int64, additionalMetadata string, file *os.File) (*ModelApiResponse, *APIResponse, error) { @@ -512,7 +512,7 @@ func (a PetApi) UploadFile(petId int64, additionalMetadata string, file *os.File // verify the required parameter 'petId' is set if &petId == nil { - return new(ModelApiResponse), nil, errors.New("Missing required parameter 'petId' when calling PetApi->UploadFile") + return *new(*ModelApiResponse), nil, errors.New("Missing required parameter 'petId' when calling PetApi->UploadFile") } headerParams := make(map[string]string) @@ -556,12 +556,12 @@ func (a PetApi) UploadFile(petId int64, additionalMetadata string, file *os.File fileBytes = fbs fileName = file.Name() - var successPayload = new(ModelApiResponse) + var successPayload = new(*ModelApiResponse) httpResponse, err := a.Configuration.APIClient.CallAPI(path, httpMethod, postBody, headerParams, queryParams, formParams, fileName, fileBytes) if err != nil { - return successPayload, NewAPIResponse(httpResponse.RawResponse), err + return *successPayload, NewAPIResponse(httpResponse.RawResponse), err } err = json.Unmarshal(httpResponse.Body(), &successPayload) - return successPayload, NewAPIResponse(httpResponse.RawResponse), err + return *successPayload, NewAPIResponse(httpResponse.RawResponse), err } diff --git a/samples/client/petstore/go/go-petstore/store_api.go b/samples/client/petstore/go/go-petstore/store_api.go index 53aafd569aa..7e71e2e7220 100644 --- a/samples/client/petstore/go/go-petstore/store_api.go +++ b/samples/client/petstore/go/go-petstore/store_api.go @@ -90,7 +90,7 @@ func (a StoreApi) DeleteOrder(orderId string) (*APIResponse, error) { * Returns pet inventories by status * Returns a map of status codes to quantities * - * @return map[string]int32 + * @return *map[string]int32 */ func (a StoreApi) GetInventory() (*map[string]int32, *APIResponse, error) { @@ -133,13 +133,13 @@ func (a StoreApi) GetInventory() (*map[string]int32, *APIResponse, error) { if localVarHttpHeaderAccept != "" { headerParams["Accept"] = localVarHttpHeaderAccept } - var successPayload = new(map[string]int32) + var successPayload = new(*map[string]int32) httpResponse, err := a.Configuration.APIClient.CallAPI(path, httpMethod, postBody, headerParams, queryParams, formParams, fileName, fileBytes) if err != nil { - return successPayload, NewAPIResponse(httpResponse.RawResponse), err + return *successPayload, NewAPIResponse(httpResponse.RawResponse), err } err = json.Unmarshal(httpResponse.Body(), &successPayload) - return successPayload, NewAPIResponse(httpResponse.RawResponse), err + return *successPayload, NewAPIResponse(httpResponse.RawResponse), err } /** @@ -147,7 +147,7 @@ func (a StoreApi) GetInventory() (*map[string]int32, *APIResponse, error) { * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions * * @param orderId ID of pet that needs to be fetched - * @return Order + * @return *Order */ func (a StoreApi) GetOrderById(orderId int64) (*Order, *APIResponse, error) { @@ -158,7 +158,7 @@ func (a StoreApi) GetOrderById(orderId int64) (*Order, *APIResponse, error) { // verify the required parameter 'orderId' is set if &orderId == nil { - return new(Order), nil, errors.New("Missing required parameter 'orderId' when calling StoreApi->GetOrderById") + return *new(*Order), nil, errors.New("Missing required parameter 'orderId' when calling StoreApi->GetOrderById") } headerParams := make(map[string]string) @@ -192,13 +192,13 @@ func (a StoreApi) GetOrderById(orderId int64) (*Order, *APIResponse, error) { if localVarHttpHeaderAccept != "" { headerParams["Accept"] = localVarHttpHeaderAccept } - var successPayload = new(Order) + var successPayload = new(*Order) httpResponse, err := a.Configuration.APIClient.CallAPI(path, httpMethod, postBody, headerParams, queryParams, formParams, fileName, fileBytes) if err != nil { - return successPayload, NewAPIResponse(httpResponse.RawResponse), err + return *successPayload, NewAPIResponse(httpResponse.RawResponse), err } err = json.Unmarshal(httpResponse.Body(), &successPayload) - return successPayload, NewAPIResponse(httpResponse.RawResponse), err + return *successPayload, NewAPIResponse(httpResponse.RawResponse), err } /** @@ -206,7 +206,7 @@ func (a StoreApi) GetOrderById(orderId int64) (*Order, *APIResponse, error) { * * * @param body order placed for purchasing the pet - * @return Order + * @return *Order */ func (a StoreApi) PlaceOrder(body Order) (*Order, *APIResponse, error) { @@ -216,7 +216,7 @@ func (a StoreApi) PlaceOrder(body Order) (*Order, *APIResponse, error) { // verify the required parameter 'body' is set if &body == nil { - return new(Order), nil, errors.New("Missing required parameter 'body' when calling StoreApi->PlaceOrder") + return *new(*Order), nil, errors.New("Missing required parameter 'body' when calling StoreApi->PlaceOrder") } headerParams := make(map[string]string) @@ -253,12 +253,12 @@ func (a StoreApi) PlaceOrder(body Order) (*Order, *APIResponse, error) { // body params postBody = &body - var successPayload = new(Order) + var successPayload = new(*Order) httpResponse, err := a.Configuration.APIClient.CallAPI(path, httpMethod, postBody, headerParams, queryParams, formParams, fileName, fileBytes) if err != nil { - return successPayload, NewAPIResponse(httpResponse.RawResponse), err + return *successPayload, NewAPIResponse(httpResponse.RawResponse), err } err = json.Unmarshal(httpResponse.Body(), &successPayload) - return successPayload, NewAPIResponse(httpResponse.RawResponse), err + return *successPayload, NewAPIResponse(httpResponse.RawResponse), err } diff --git a/samples/client/petstore/go/go-petstore/user_api.go b/samples/client/petstore/go/go-petstore/user_api.go index e096fd506ec..410c6e73ad0 100644 --- a/samples/client/petstore/go/go-petstore/user_api.go +++ b/samples/client/petstore/go/go-petstore/user_api.go @@ -274,7 +274,7 @@ func (a UserApi) DeleteUser(username string) (*APIResponse, error) { * * * @param username The name that needs to be fetched. Use user1 for testing. - * @return User + * @return *User */ func (a UserApi) GetUserByName(username string) (*User, *APIResponse, error) { @@ -285,7 +285,7 @@ func (a UserApi) GetUserByName(username string) (*User, *APIResponse, error) { // verify the required parameter 'username' is set if &username == nil { - return new(User), nil, errors.New("Missing required parameter 'username' when calling UserApi->GetUserByName") + return *new(*User), nil, errors.New("Missing required parameter 'username' when calling UserApi->GetUserByName") } headerParams := make(map[string]string) @@ -319,13 +319,13 @@ func (a UserApi) GetUserByName(username string) (*User, *APIResponse, error) { if localVarHttpHeaderAccept != "" { headerParams["Accept"] = localVarHttpHeaderAccept } - var successPayload = new(User) + var successPayload = new(*User) httpResponse, err := a.Configuration.APIClient.CallAPI(path, httpMethod, postBody, headerParams, queryParams, formParams, fileName, fileBytes) if err != nil { - return successPayload, NewAPIResponse(httpResponse.RawResponse), err + return *successPayload, NewAPIResponse(httpResponse.RawResponse), err } err = json.Unmarshal(httpResponse.Body(), &successPayload) - return successPayload, NewAPIResponse(httpResponse.RawResponse), err + return *successPayload, NewAPIResponse(httpResponse.RawResponse), err } /** @@ -334,7 +334,7 @@ func (a UserApi) GetUserByName(username string) (*User, *APIResponse, error) { * * @param username The user name for login * @param password The password for login in clear text - * @return string + * @return *string */ func (a UserApi) LoginUser(username string, password string) (*string, *APIResponse, error) { @@ -344,11 +344,11 @@ func (a UserApi) LoginUser(username string, password string) (*string, *APIRespo // verify the required parameter 'username' is set if &username == nil { - return new(string), nil, errors.New("Missing required parameter 'username' when calling UserApi->LoginUser") + return *new(*string), nil, errors.New("Missing required parameter 'username' when calling UserApi->LoginUser") } // verify the required parameter 'password' is set if &password == nil { - return new(string), nil, errors.New("Missing required parameter 'password' when calling UserApi->LoginUser") + return *new(*string), nil, errors.New("Missing required parameter 'password' when calling UserApi->LoginUser") } headerParams := make(map[string]string) @@ -388,13 +388,13 @@ func (a UserApi) LoginUser(username string, password string) (*string, *APIRespo if localVarHttpHeaderAccept != "" { headerParams["Accept"] = localVarHttpHeaderAccept } - var successPayload = new(string) + var successPayload = new(*string) httpResponse, err := a.Configuration.APIClient.CallAPI(path, httpMethod, postBody, headerParams, queryParams, formParams, fileName, fileBytes) if err != nil { - return successPayload, NewAPIResponse(httpResponse.RawResponse), err + return *successPayload, NewAPIResponse(httpResponse.RawResponse), err } err = json.Unmarshal(httpResponse.Body(), &successPayload) - return successPayload, NewAPIResponse(httpResponse.RawResponse), err + return *successPayload, NewAPIResponse(httpResponse.RawResponse), err } /** diff --git a/samples/client/petstore/go/pet_api_test.go b/samples/client/petstore/go/pet_api_test.go index 2f3b2742804..fdda15acbe5 100644 --- a/samples/client/petstore/go/pet_api_test.go +++ b/samples/client/petstore/go/pet_api_test.go @@ -18,8 +18,8 @@ func TestAddPet(t *testing.T) { t.Errorf("Error while adding pet") t.Log(err) } - if *apiResponse.Response.StatusCode != 200 { - t.Log(*apiResponse.Response) + if apiResponse.Response.StatusCode != 200 { + t.Log(apiResponse.Response) } } @@ -32,8 +32,8 @@ func TestFindPetsByStatusWithMissingParam(t *testing.T) { t.Errorf("Error while testing TestFindPetsByStatusWithMissingParam") t.Log(err) } - if *apiResponse.Response.StatusCode != 200 { - t.Log(*apiResponse) + if apiResponse.Response.StatusCode != 200 { + t.Log(apiResponse) } } @@ -52,8 +52,8 @@ func TestGetPetById(t *testing.T) { //t.Log(resp) } - if *apiResponse.Response.StatusCode != 200 { - t.Log(*apiResponse.Response) + if apiResponse.Response.StatusCode != 200 { + t.Log(apiResponse.Response) } } @@ -67,8 +67,8 @@ func TestGetPetByIdWithInvalidID(t *testing.T) { } else { t.Log(resp) } - if *apiResponse.Response.StatusCode != 200 { - t.Log(*apiResponse.Response) + if apiResponse.Response.StatusCode != 200 { + t.Log(apiResponse.Response) } } @@ -79,10 +79,10 @@ func TestUpdatePetWithForm(t *testing.T) { if err != nil { t.Errorf("Error while updating pet by id") t.Log(err) - t.Log(*apiResponse) + t.Log(apiResponse) } - if *apiResponse.Response.StatusCode != 200 { - t.Log(*apiResponse.Response) + if apiResponse.Response.StatusCode != 200 { + t.Log(apiResponse.Response) } } @@ -92,10 +92,9 @@ func TestFindPetsByStatus(t *testing.T) { if err != nil { t.Errorf("Error while getting pet by id") t.Log(err) - t.Log(*apiResponse) + t.Log(apiResponse) } else { - t.Log(*apiResponse) - if len(*resp) == 0 { + if len(resp) == 0 { t.Errorf("Error no pets returned") } else { assert := assert.New(t) @@ -104,8 +103,8 @@ func TestFindPetsByStatus(t *testing.T) { } } - if *apiResponse.Response.StatusCode != 200 { - t.Log(*apiResponse.Response) + if apiResponse.Response.StatusCode != 200 { + t.Log(apiResponse.Response) } } } @@ -121,7 +120,7 @@ func TestUploadFile(t *testing.T) { t.Log(err) } - if *apiResponse.Response.StatusCode != 200 { + if apiResponse.Response.StatusCode != 200 { t.Log(apiResponse.Response) } } @@ -134,7 +133,7 @@ func TestDeletePet(t *testing.T) { t.Errorf("Error while deleting pet by id") t.Log(err) } - if *apiResponse.Response.StatusCode != 200 { + if apiResponse.Response.StatusCode != 200 { t.Log(apiResponse.Response) } } From 9b1d43c6f539add1b436ea52f5351125c2da7f3a Mon Sep 17 00:00:00 2001 From: Jim Schubert Date: Wed, 4 May 2016 21:44:52 -0400 Subject: [PATCH 07/19] [csharp] default optionalProjectFileFlag to true Possible breaking change. optionalProjectFileFlag handles the generation of csproj and sln files. Not modifying the plurality of the option to reduce the impact of the breaking change for existing settings: optionalProjectFileFlag=true => generates additional .sln file optionalProjectFileFlag=false => no change unspecified => additional files (csproj, sln) may overwrite existing files --- bin/csharp-petstore.sh | 2 +- bin/windows/csharp-petstore.bat | 2 +- .../io/swagger/codegen/languages/AbstractCSharpCodegen.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/csharp-petstore.sh b/bin/csharp-petstore.sh index 15b80bc71f7..a82efa9af10 100755 --- a/bin/csharp-petstore.sh +++ b/bin/csharp-petstore.sh @@ -26,6 +26,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="$@ generate -i modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -l csharp -o samples/client/petstore/csharp/SwaggerClient -DoptionalProjectFile=true" +ags="$@ generate -i modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -l csharp -o samples/client/petstore/csharp/SwaggerClient" java $JAVA_OPTS -jar $executable $ags diff --git a/bin/windows/csharp-petstore.bat b/bin/windows/csharp-petstore.bat index 29338524c02..fbfc18d334d 100755 --- a/bin/windows/csharp-petstore.bat +++ b/bin/windows/csharp-petstore.bat @@ -5,6 +5,6 @@ If Not Exist %executable% ( ) set JAVA_OPTS=%JAVA_OPTS% -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties -set ags=generate -t modules\swagger-codegen\src\main\resources\csharp -i modules\swagger-codegen\src\test\resources\2_0\petstore.json -l csharp -o samples\client\petstore\csharp\SwaggerClient -DoptionalProjectFile=true +set ags=generate -t modules\swagger-codegen\src\main\resources\csharp -i modules\swagger-codegen\src\test\resources\2_0\petstore.json -l csharp -o samples\client\petstore\csharp\SwaggerClient java %JAVA_OPTS% -jar %executable% %ags% 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 cd9bbc728fc..b2ae82544f5 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 @@ -12,7 +12,7 @@ import java.util.*; public abstract class AbstractCSharpCodegen extends DefaultCodegen implements CodegenConfig { protected boolean optionalAssemblyInfoFlag = true; - protected boolean optionalProjectFileFlag = false; + protected boolean optionalProjectFileFlag = true; protected boolean optionalEmitDefaultValue = false; protected boolean optionalMethodArgumentFlag = true; protected boolean useDateTimeOffsetFlag = false; From ebdf12bcd4ab8afdcb6ad1952bb0e86a33f9550a Mon Sep 17 00:00:00 2001 From: Guo Huang Date: Thu, 5 May 2016 11:41:58 -0700 Subject: [PATCH 08/19] fixed code gen using {{#isListContainer}}*{{/isListContainer}} field --- .../codegen/languages/GoClientCodegen.java | 8 +------ .../src/main/resources/go/api.mustache | 10 ++++----- .../petstore/go/go-petstore/docs/PetApi.md | 8 +++---- .../petstore/go/go-petstore/docs/StoreApi.md | 12 +++++----- .../petstore/go/go-petstore/docs/UserApi.md | 8 +++---- .../client/petstore/go/go-petstore/pet_api.go | 16 +++++++------- .../petstore/go/go-petstore/store_api.go | 22 +++++++++---------- .../petstore/go/go-petstore/user_api.go | 18 +++++++-------- 8 files changed, 48 insertions(+), 54 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/GoClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/GoClientCodegen.java index e9162205e7b..fe25436c901 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/GoClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/GoClientCodegen.java @@ -401,13 +401,7 @@ public class GoClientCodegen extends DefaultCodegen implements CodegenConfig { listIterator.add(newImportMap); } } - // add pointer to return type string if it is not array - for (CodegenOperation operation : operations) { - if((operation.returnContainer == null || operation.returnContainer != "array") - && operation.returnType != null) { - operation.returnType = "*" + operation.returnType; - } - } + return objs; } diff --git a/modules/swagger-codegen/src/main/resources/go/api.mustache b/modules/swagger-codegen/src/main/resources/go/api.mustache index fbc0ac0b0d4..480db023f6b 100644 --- a/modules/swagger-codegen/src/main/resources/go/api.mustache +++ b/modules/swagger-codegen/src/main/resources/go/api.mustache @@ -35,9 +35,9 @@ func New{{classname}}WithBasePath(basePath string) *{{classname}} { * {{notes}}{{/notes}} * {{#allParams}} * @param {{paramName}} {{description}} -{{/allParams}} * @return {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}} +{{/allParams}} * @return {{#returnType}}{{^isListContainer}}*{{/isListContainer}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}} */ -func (a {{classname}}) {{nickname}}({{#allParams}}{{paramName}} {{{dataType}}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) ({{#returnType}}{{{returnType}}}, {{/returnType}}*APIResponse, error) { +func (a {{classname}}) {{nickname}}({{#allParams}}{{paramName}} {{{dataType}}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) ({{#returnType}}{{^isListContainer}}*{{/isListContainer}}{{{returnType}}}, {{/returnType}}*APIResponse, error) { var httpMethod = "{{httpMethod}}" // create path and map variables @@ -46,7 +46,7 @@ func (a {{classname}}) {{nickname}}({{#allParams}}{{paramName}} {{{dataType}}}{{ {{#allParams}}{{#required}} // verify the required parameter '{{paramName}}' is set if &{{paramName}} == nil { - return {{#returnType}}*new({{{returnType}}}), {{/returnType}}nil, errors.New("Missing required parameter '{{paramName}}' when calling {{classname}}->{{operationId}}") + return {{#returnType}}{{#isListContainer}}*{{/isListContainer}}new({{{returnType}}}), {{/returnType}}nil, errors.New("Missing required parameter '{{paramName}}' when calling {{classname}}->{{operationId}}") }{{/required}}{{/allParams}} headerParams := make(map[string]string) @@ -113,10 +113,10 @@ func (a {{classname}}) {{nickname}}({{#allParams}}{{paramName}} {{{dataType}}}{{ {{#returnType}} var successPayload = new({{returnType}}){{/returnType}} httpResponse, err := a.Configuration.APIClient.CallAPI(path, httpMethod, postBody, headerParams, queryParams, formParams, fileName, fileBytes) if err != nil { - return {{#returnType}}*successPayload, {{/returnType}}NewAPIResponse(httpResponse.RawResponse), err + return {{#returnType}}{{#isListContainer}}*{{/isListContainer}}successPayload, {{/returnType}}NewAPIResponse(httpResponse.RawResponse), err } {{#returnType}} err = json.Unmarshal(httpResponse.Body(), &successPayload){{/returnType}} - return {{#returnType}}*successPayload, {{/returnType}}NewAPIResponse(httpResponse.RawResponse), err + return {{#returnType}}{{#isListContainer}}*{{/isListContainer}}successPayload, {{/returnType}}NewAPIResponse(httpResponse.RawResponse), err } {{/operation}}{{/operations}} diff --git a/samples/client/petstore/go/go-petstore/docs/PetApi.md b/samples/client/petstore/go/go-petstore/docs/PetApi.md index b0788fb1932..e96bdc1a15e 100644 --- a/samples/client/petstore/go/go-petstore/docs/PetApi.md +++ b/samples/client/petstore/go/go-petstore/docs/PetApi.md @@ -132,7 +132,7 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) # **GetPetById** -> *Pet GetPetById($petId) +> Pet GetPetById($petId) Find pet by ID @@ -147,7 +147,7 @@ Name | Type | Description | Notes ### Return type -[***Pet**](Pet.md) +[**Pet**](Pet.md) ### Authorization @@ -221,7 +221,7 @@ void (empty response body) [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) # **UploadFile** -> *ModelApiResponse UploadFile($petId, $additionalMetadata, $file) +> ModelApiResponse UploadFile($petId, $additionalMetadata, $file) uploads an image @@ -238,7 +238,7 @@ Name | Type | Description | Notes ### Return type -[***ModelApiResponse**](ApiResponse.md) +[**ModelApiResponse**](ApiResponse.md) ### Authorization diff --git a/samples/client/petstore/go/go-petstore/docs/StoreApi.md b/samples/client/petstore/go/go-petstore/docs/StoreApi.md index 15a05e6158f..1ee858d2e30 100644 --- a/samples/client/petstore/go/go-petstore/docs/StoreApi.md +++ b/samples/client/petstore/go/go-petstore/docs/StoreApi.md @@ -40,7 +40,7 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) # **GetInventory** -> *map[string]int32 GetInventory() +> map[string]int32 GetInventory() Returns pet inventories by status @@ -52,7 +52,7 @@ This endpoint does not need any parameter. ### Return type -[***map[string]int32**](map.md) +[**map[string]int32**](map.md) ### Authorization @@ -66,7 +66,7 @@ This endpoint does not need any parameter. [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) # **GetOrderById** -> *Order GetOrderById($orderId) +> Order GetOrderById($orderId) Find purchase order by ID @@ -81,7 +81,7 @@ Name | Type | Description | Notes ### Return type -[***Order**](Order.md) +[**Order**](Order.md) ### Authorization @@ -95,7 +95,7 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) # **PlaceOrder** -> *Order PlaceOrder($body) +> Order PlaceOrder($body) Place an order for a pet @@ -110,7 +110,7 @@ Name | Type | Description | Notes ### Return type -[***Order**](Order.md) +[**Order**](Order.md) ### Authorization diff --git a/samples/client/petstore/go/go-petstore/docs/UserApi.md b/samples/client/petstore/go/go-petstore/docs/UserApi.md index 9063e052229..4950105ca86 100644 --- a/samples/client/petstore/go/go-petstore/docs/UserApi.md +++ b/samples/client/petstore/go/go-petstore/docs/UserApi.md @@ -131,7 +131,7 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) # **GetUserByName** -> *User GetUserByName($username) +> User GetUserByName($username) Get user by user name @@ -146,7 +146,7 @@ Name | Type | Description | Notes ### Return type -[***User**](User.md) +[**User**](User.md) ### Authorization @@ -160,7 +160,7 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) # **LoginUser** -> *string LoginUser($username, $password) +> string LoginUser($username, $password) Logs user into the system @@ -176,7 +176,7 @@ Name | Type | Description | Notes ### Return type -***string** +**string** ### Authorization diff --git a/samples/client/petstore/go/go-petstore/pet_api.go b/samples/client/petstore/go/go-petstore/pet_api.go index 5d2a447dfe3..f70ceaa65f0 100644 --- a/samples/client/petstore/go/go-petstore/pet_api.go +++ b/samples/client/petstore/go/go-petstore/pet_api.go @@ -312,7 +312,7 @@ func (a PetApi) GetPetById(petId int64) (*Pet, *APIResponse, error) { // verify the required parameter 'petId' is set if &petId == nil { - return *new(*Pet), nil, errors.New("Missing required parameter 'petId' when calling PetApi->GetPetById") + return new(Pet), nil, errors.New("Missing required parameter 'petId' when calling PetApi->GetPetById") } headerParams := make(map[string]string) @@ -350,13 +350,13 @@ func (a PetApi) GetPetById(petId int64) (*Pet, *APIResponse, error) { if localVarHttpHeaderAccept != "" { headerParams["Accept"] = localVarHttpHeaderAccept } - var successPayload = new(*Pet) + var successPayload = new(Pet) httpResponse, err := a.Configuration.APIClient.CallAPI(path, httpMethod, postBody, headerParams, queryParams, formParams, fileName, fileBytes) if err != nil { - return *successPayload, NewAPIResponse(httpResponse.RawResponse), err + return successPayload, NewAPIResponse(httpResponse.RawResponse), err } err = json.Unmarshal(httpResponse.Body(), &successPayload) - return *successPayload, NewAPIResponse(httpResponse.RawResponse), err + return successPayload, NewAPIResponse(httpResponse.RawResponse), err } /** @@ -512,7 +512,7 @@ func (a PetApi) UploadFile(petId int64, additionalMetadata string, file *os.File // verify the required parameter 'petId' is set if &petId == nil { - return *new(*ModelApiResponse), nil, errors.New("Missing required parameter 'petId' when calling PetApi->UploadFile") + return new(ModelApiResponse), nil, errors.New("Missing required parameter 'petId' when calling PetApi->UploadFile") } headerParams := make(map[string]string) @@ -556,12 +556,12 @@ func (a PetApi) UploadFile(petId int64, additionalMetadata string, file *os.File fileBytes = fbs fileName = file.Name() - var successPayload = new(*ModelApiResponse) + var successPayload = new(ModelApiResponse) httpResponse, err := a.Configuration.APIClient.CallAPI(path, httpMethod, postBody, headerParams, queryParams, formParams, fileName, fileBytes) if err != nil { - return *successPayload, NewAPIResponse(httpResponse.RawResponse), err + return successPayload, NewAPIResponse(httpResponse.RawResponse), err } err = json.Unmarshal(httpResponse.Body(), &successPayload) - return *successPayload, NewAPIResponse(httpResponse.RawResponse), err + return successPayload, NewAPIResponse(httpResponse.RawResponse), err } diff --git a/samples/client/petstore/go/go-petstore/store_api.go b/samples/client/petstore/go/go-petstore/store_api.go index 7e71e2e7220..56af7223639 100644 --- a/samples/client/petstore/go/go-petstore/store_api.go +++ b/samples/client/petstore/go/go-petstore/store_api.go @@ -133,13 +133,13 @@ func (a StoreApi) GetInventory() (*map[string]int32, *APIResponse, error) { if localVarHttpHeaderAccept != "" { headerParams["Accept"] = localVarHttpHeaderAccept } - var successPayload = new(*map[string]int32) + var successPayload = new(map[string]int32) httpResponse, err := a.Configuration.APIClient.CallAPI(path, httpMethod, postBody, headerParams, queryParams, formParams, fileName, fileBytes) if err != nil { - return *successPayload, NewAPIResponse(httpResponse.RawResponse), err + return successPayload, NewAPIResponse(httpResponse.RawResponse), err } err = json.Unmarshal(httpResponse.Body(), &successPayload) - return *successPayload, NewAPIResponse(httpResponse.RawResponse), err + return successPayload, NewAPIResponse(httpResponse.RawResponse), err } /** @@ -158,7 +158,7 @@ func (a StoreApi) GetOrderById(orderId int64) (*Order, *APIResponse, error) { // verify the required parameter 'orderId' is set if &orderId == nil { - return *new(*Order), nil, errors.New("Missing required parameter 'orderId' when calling StoreApi->GetOrderById") + return new(Order), nil, errors.New("Missing required parameter 'orderId' when calling StoreApi->GetOrderById") } headerParams := make(map[string]string) @@ -192,13 +192,13 @@ func (a StoreApi) GetOrderById(orderId int64) (*Order, *APIResponse, error) { if localVarHttpHeaderAccept != "" { headerParams["Accept"] = localVarHttpHeaderAccept } - var successPayload = new(*Order) + var successPayload = new(Order) httpResponse, err := a.Configuration.APIClient.CallAPI(path, httpMethod, postBody, headerParams, queryParams, formParams, fileName, fileBytes) if err != nil { - return *successPayload, NewAPIResponse(httpResponse.RawResponse), err + return successPayload, NewAPIResponse(httpResponse.RawResponse), err } err = json.Unmarshal(httpResponse.Body(), &successPayload) - return *successPayload, NewAPIResponse(httpResponse.RawResponse), err + return successPayload, NewAPIResponse(httpResponse.RawResponse), err } /** @@ -216,7 +216,7 @@ func (a StoreApi) PlaceOrder(body Order) (*Order, *APIResponse, error) { // verify the required parameter 'body' is set if &body == nil { - return *new(*Order), nil, errors.New("Missing required parameter 'body' when calling StoreApi->PlaceOrder") + return new(Order), nil, errors.New("Missing required parameter 'body' when calling StoreApi->PlaceOrder") } headerParams := make(map[string]string) @@ -253,12 +253,12 @@ func (a StoreApi) PlaceOrder(body Order) (*Order, *APIResponse, error) { // body params postBody = &body - var successPayload = new(*Order) + var successPayload = new(Order) httpResponse, err := a.Configuration.APIClient.CallAPI(path, httpMethod, postBody, headerParams, queryParams, formParams, fileName, fileBytes) if err != nil { - return *successPayload, NewAPIResponse(httpResponse.RawResponse), err + return successPayload, NewAPIResponse(httpResponse.RawResponse), err } err = json.Unmarshal(httpResponse.Body(), &successPayload) - return *successPayload, NewAPIResponse(httpResponse.RawResponse), err + return successPayload, NewAPIResponse(httpResponse.RawResponse), err } diff --git a/samples/client/petstore/go/go-petstore/user_api.go b/samples/client/petstore/go/go-petstore/user_api.go index 410c6e73ad0..1ed8b9a599a 100644 --- a/samples/client/petstore/go/go-petstore/user_api.go +++ b/samples/client/petstore/go/go-petstore/user_api.go @@ -285,7 +285,7 @@ func (a UserApi) GetUserByName(username string) (*User, *APIResponse, error) { // verify the required parameter 'username' is set if &username == nil { - return *new(*User), nil, errors.New("Missing required parameter 'username' when calling UserApi->GetUserByName") + return new(User), nil, errors.New("Missing required parameter 'username' when calling UserApi->GetUserByName") } headerParams := make(map[string]string) @@ -319,13 +319,13 @@ func (a UserApi) GetUserByName(username string) (*User, *APIResponse, error) { if localVarHttpHeaderAccept != "" { headerParams["Accept"] = localVarHttpHeaderAccept } - var successPayload = new(*User) + var successPayload = new(User) httpResponse, err := a.Configuration.APIClient.CallAPI(path, httpMethod, postBody, headerParams, queryParams, formParams, fileName, fileBytes) if err != nil { - return *successPayload, NewAPIResponse(httpResponse.RawResponse), err + return successPayload, NewAPIResponse(httpResponse.RawResponse), err } err = json.Unmarshal(httpResponse.Body(), &successPayload) - return *successPayload, NewAPIResponse(httpResponse.RawResponse), err + return successPayload, NewAPIResponse(httpResponse.RawResponse), err } /** @@ -344,11 +344,11 @@ func (a UserApi) LoginUser(username string, password string) (*string, *APIRespo // verify the required parameter 'username' is set if &username == nil { - return *new(*string), nil, errors.New("Missing required parameter 'username' when calling UserApi->LoginUser") + return new(string), nil, errors.New("Missing required parameter 'username' when calling UserApi->LoginUser") } // verify the required parameter 'password' is set if &password == nil { - return *new(*string), nil, errors.New("Missing required parameter 'password' when calling UserApi->LoginUser") + return new(string), nil, errors.New("Missing required parameter 'password' when calling UserApi->LoginUser") } headerParams := make(map[string]string) @@ -388,13 +388,13 @@ func (a UserApi) LoginUser(username string, password string) (*string, *APIRespo if localVarHttpHeaderAccept != "" { headerParams["Accept"] = localVarHttpHeaderAccept } - var successPayload = new(*string) + var successPayload = new(string) httpResponse, err := a.Configuration.APIClient.CallAPI(path, httpMethod, postBody, headerParams, queryParams, formParams, fileName, fileBytes) if err != nil { - return *successPayload, NewAPIResponse(httpResponse.RawResponse), err + return successPayload, NewAPIResponse(httpResponse.RawResponse), err } err = json.Unmarshal(httpResponse.Body(), &successPayload) - return *successPayload, NewAPIResponse(httpResponse.RawResponse), err + return successPayload, NewAPIResponse(httpResponse.RawResponse), err } /** From 0f1842bb06665706c66b9fe88353426d6356ca81 Mon Sep 17 00:00:00 2001 From: xming Date: Fri, 6 May 2016 10:35:45 +0800 Subject: [PATCH 09/19] add datatype link under responses --- .../swagger-codegen/src/main/resources/htmlDocs/index.mustache | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/swagger-codegen/src/main/resources/htmlDocs/index.mustache b/modules/swagger-codegen/src/main/resources/htmlDocs/index.mustache index fa0e662b67f..1216cae0c20 100644 --- a/modules/swagger-codegen/src/main/resources/htmlDocs/index.mustache +++ b/modules/swagger-codegen/src/main/resources/htmlDocs/index.mustache @@ -127,6 +127,7 @@ {{#responses}}

{{code}}

{{message}} + {{#simpleType}}{{dataType}}{{/simpleType}} {{#examples}}

Example data

Content-Type: {{{contentType}}}
From 70d6e64a8d0f2ae6c253afc874fb6951fb992ec3 Mon Sep 17 00:00:00 2001 From: xming Date: Fri, 6 May 2016 15:31:09 +0800 Subject: [PATCH 10/19] add link to param type --- .../swagger-codegen/src/main/resources/htmlDocs/index.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/resources/htmlDocs/index.mustache b/modules/swagger-codegen/src/main/resources/htmlDocs/index.mustache index 1216cae0c20..60da5979a89 100644 --- a/modules/swagger-codegen/src/main/resources/htmlDocs/index.mustache +++ b/modules/swagger-codegen/src/main/resources/htmlDocs/index.mustache @@ -159,7 +159,7 @@

{{classname}} Up

- {{#vars}}
{{name}} {{^required}}(optional){{/required}}
{{datatype}} {{description}}
+ {{#vars}}
{{name}} {{^required}}(optional){{/required}}
{{^isPrimitiveType}}{{datatype}}{{/isPrimitiveType}} {{description}}
{{#isEnum}}
Enum:
{{#_enum}}
{{this}}
{{/_enum}} From 65d85b776019fb04130d82e936c29d20b592dbd2 Mon Sep 17 00:00:00 2001 From: Mateusz Mackowiak Date: Fri, 6 May 2016 10:46:03 +0200 Subject: [PATCH 11/19] ResponseDeserializer for separating deserialization and service logic --- .../codegen/languages/ObjcClientCodegen.java | 4 +- .../resources/objc/ApiClient-body.mustache | 155 +----------- .../resources/objc/ApiClient-header.mustache | 22 +- .../objc/ResponseDeserializer-body.mustache | 221 ++++++++++++++++++ .../objc/ResponseDeserializer-header.mustache | 45 ++++ samples/client/petstore/objc/README.md | 4 +- .../objc/SwaggerClient/SWGApiClient.h | 22 +- .../objc/SwaggerClient/SWGApiClient.m | 155 +----------- .../SwaggerClient/SWGResponseDeserializer.h | 45 ++++ .../SwaggerClient/SWGResponseDeserializer.m | 221 ++++++++++++++++++ .../Tests/DeserializationTest.m | 91 +++++++- .../SwaggerClientTests/Tests/PetApiTest.m | 2 +- samples/client/petstore/objc/git_push.sh | 4 +- 13 files changed, 627 insertions(+), 364 deletions(-) create mode 100644 modules/swagger-codegen/src/main/resources/objc/ResponseDeserializer-body.mustache create mode 100644 modules/swagger-codegen/src/main/resources/objc/ResponseDeserializer-header.mustache create mode 100644 samples/client/petstore/objc/SwaggerClient/SWGResponseDeserializer.h create mode 100644 samples/client/petstore/objc/SwaggerClient/SWGResponseDeserializer.m diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java index 21e319f6ec9..9340eafd360 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java @@ -109,7 +109,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { "break", "enum", "register", "typedef", "case", "extern", "return", "union", "char", "float", "short", "unsigned", - "const", "for", "signed", "void", + "co nst", "for", "signed", "void", "continue", "goto", "sizeof", "volatile", "default", "if", "id", "static", "while", "do", "int", "struct", "_Packed", @@ -223,6 +223,8 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { supportingFiles.add(new SupportingFile("JSONResponseSerializer-body.mustache", swaggerFolder, classPrefix + "JSONResponseSerializer.m")); supportingFiles.add(new SupportingFile("JSONRequestSerializer-body.mustache", swaggerFolder, classPrefix + "JSONRequestSerializer.m")); supportingFiles.add(new SupportingFile("JSONRequestSerializer-header.mustache", swaggerFolder, classPrefix + "JSONRequestSerializer.h")); + supportingFiles.add(new SupportingFile("ResponseDeserializer-body.mustache", swaggerFolder, classPrefix + "ResponseDeserializer.m")); + supportingFiles.add(new SupportingFile("ResponseDeserializer-header.mustache", swaggerFolder, classPrefix + "ResponseDeserializer.h")); supportingFiles.add(new SupportingFile("JSONValueTransformer+ISO8601.m", swaggerFolder, "JSONValueTransformer+ISO8601.m")); supportingFiles.add(new SupportingFile("JSONValueTransformer+ISO8601.h", swaggerFolder, "JSONValueTransformer+ISO8601.h")); supportingFiles.add(new SupportingFile("Configuration-body.mustache", swaggerFolder, classPrefix + "Configuration.m")); diff --git a/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache b/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache index 18b756f78b0..a8644bab030 100644 --- a/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache @@ -2,10 +2,6 @@ NSString *const {{classPrefix}}ResponseObjectErrorKey = @"{{classPrefix}}ResponseObject"; -NSString *const {{classPrefix}}DeserializationErrorDomainKey = @"{{classPrefix}}DeserializationErrorDomainKey"; - -NSInteger const {{classPrefix}}TypeMismatchErrorCode = 143553; - static long requestId = 0; static bool offlineState = false; static NSMutableSet * queuedRequests = nil; @@ -33,6 +29,7 @@ static void (^reachabilityChangeBlock)(int); self.requestSerializer = [AFJSONRequestSerializer serializer]; self.responseSerializer = [AFJSONResponseSerializer serializer]; self.securityPolicy = [self customSecurityPolicy]; + self.responseDeserializer = [[{{classPrefix}}ResponseDeserializer alloc] init]; // configure reachability [self configureCacheReachibility]; } @@ -290,154 +287,6 @@ static void (^reachabilityChangeBlock)(int); [self.reachabilityManager startMonitoring]; } -#pragma mark - Deserialize methods - -- (id) deserialize:(id) data class:(NSString *) class error:(NSError **) error { - // return nil if data is nil or class is nil - if (!data || !class) { - return nil; - } - - // remove "*" from class, if ends with "*" - if ([class hasSuffix:@"*"]) { - class = [class substringToIndex:[class length] - 1]; - } - - // pure object - if ([class isEqualToString:@"NSObject"]) { - return data; - } - - NSRegularExpression *regexp = nil; - NSTextCheckingResult *match = nil; - NSMutableArray *resultArray = nil; - NSMutableDictionary *resultDict = nil; - NSString *innerType = nil; - - // list of models - NSString *arrayOfModelsPat = @"NSArray<(.+)>"; - regexp = [NSRegularExpression regularExpressionWithPattern:arrayOfModelsPat - options:NSRegularExpressionCaseInsensitive - error:nil]; - - match = [regexp firstMatchInString:class - options:0 - range:NSMakeRange(0, [class length])]; - - if (match) { - if(![data isKindOfClass: [NSArray class]]) { - if(error) { - NSDictionary * userInfo = @{NSLocalizedDescriptionKey : NSLocalizedString(@"Received response is not an array", nil)}; - *error = [NSError errorWithDomain:{{classPrefix}}DeserializationErrorDomainKey code:{{classPrefix}}TypeMismatchErrorCode userInfo:userInfo]; - } - return nil; - } - NSArray *dataArray = data; - innerType = [class substringWithRange:[match rangeAtIndex:1]]; - - resultArray = [NSMutableArray arrayWithCapacity:[dataArray count]]; - [data enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { - id arrObj = [self deserialize:obj class:innerType error:error]; - if(arrObj) { - [resultArray addObject:arrObj]; - } else { - * stop = YES; - } - }]; - - return resultArray; - } - - // list of primitives - NSString *arrayOfPrimitivesPat = @"NSArray\\* /\\* (.+) \\*/"; - regexp = [NSRegularExpression regularExpressionWithPattern:arrayOfPrimitivesPat - options:NSRegularExpressionCaseInsensitive - error:nil]; - match = [regexp firstMatchInString:class - options:0 - range:NSMakeRange(0, [class length])]; - - if (match) { - NSArray *dataArray = data; - innerType = [class substringWithRange:[match rangeAtIndex:1]]; - - resultArray = [NSMutableArray arrayWithCapacity:[dataArray count]]; - [data enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { - id arrObj = [self deserialize:obj class:innerType error:error]; - if(arrObj) { - [resultArray addObject:arrObj]; - } else { - * stop = YES; - } - }]; - - return resultArray; - } - - // map - NSString *dictPat = @"NSDictionary\\* /\\* (.+?), (.+) \\*/"; - regexp = [NSRegularExpression regularExpressionWithPattern:dictPat - options:NSRegularExpressionCaseInsensitive - error:nil]; - match = [regexp firstMatchInString:class - options:0 - range:NSMakeRange(0, [class length])]; - - if (match) { - NSDictionary *dataDict = data; - NSString *valueType = [class substringWithRange:[match rangeAtIndex:2]]; - - resultDict = [NSMutableDictionary dictionaryWithCapacity:[dataDict count]]; - [data enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { - id dicObj = [self deserialize:obj class:valueType error:error]; - if(dicObj) { - [resultDict setValue:dicObj forKey:key]; - } else { - * stop = YES; - } - }]; - - return resultDict; - } - - // primitives - NSArray *primitiveTypes = @[@"NSString", @"NSDate", @"NSNumber"]; - - if ([primitiveTypes containsObject:class]) { - if ([class isEqualToString:@"NSString"]) { - return [NSString stringWithString:data]; - } - else if ([class isEqualToString:@"NSDate"]) { - return [NSDate dateWithISO8601String:data]; - } - else if ([class isEqualToString:@"NSNumber"]) { - // NSNumber from NSNumber - if ([data isKindOfClass:[NSNumber class]]) { - return data; - } - else if ([data isKindOfClass:[NSString class]]) { - // NSNumber (NSCFBoolean) from NSString - if ([[data lowercaseString] isEqualToString:@"true"] || [[data lowercaseString] isEqualToString:@"false"]) { - return [NSNumber numberWithBool:[data boolValue]]; - // NSNumber from NSString - } else { - NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; - formatter.numberStyle = NSNumberFormatterDecimalStyle; - return [formatter numberFromString:data]; - } - } - } - } - - // model - Class ModelClass = NSClassFromString(class); - if ([ModelClass instancesRespondToSelector:@selector(initWithDictionary:error:)]) { - return [(JSONModel *) [ModelClass alloc] initWithDictionary:data error:error]; - } - - return nil; -} - #pragma mark - Operation Methods - (void) operationWithCompletionBlock: (NSURLRequest *)request @@ -661,7 +510,7 @@ static void (^reachabilityChangeBlock)(int); else { [self operationWithCompletionBlock:request requestId:requestId completionBlock:^(id data, NSError *error) { NSError * serializationError; - id response = [self deserialize:data class:responseType error:&serializationError]; + id response = [self.responseDeserializer deserialize:data class:responseType error:&serializationError]; if(!response && !error){ error = serializationError; } diff --git a/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache b/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache index 1cf3db5e523..c7caa7ab11e 100644 --- a/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache @@ -5,7 +5,7 @@ #import "{{classPrefix}}JSONRequestSerializer.h" #import "{{classPrefix}}QueryParamCollection.h" #import "{{classPrefix}}Configuration.h" - +#import "{{classPrefix}}ResponseDeserializer.h" /** * NOTE: This class is auto generated by the swagger code generator program. * https://github.com/swagger-api/swagger-codegen @@ -25,16 +25,6 @@ */ extern NSString *const {{classPrefix}}ResponseObjectErrorKey; -/** - * A key for deserialization ErrorDomain - */ -extern NSString *const {{classPrefix}}DeserializationErrorDomainKey; - -/** - * Code for deserialization type mismatch error - */ -extern NSInteger const {{classPrefix}}TypeMismatchErrorCode; - /** * Log debug message macro */ @@ -49,6 +39,7 @@ extern NSInteger const {{classPrefix}}TypeMismatchErrorCode; /// In order to ensure the HTTPResponseHeaders are correct, it is recommended to initialize one {{classPrefix}}ApiClient instance per thread. @property(nonatomic, readonly) NSDictionary* HTTPResponseHeaders; +@property(nonatomic, strong) id<{{classPrefix}}ResponseDeserializer> responseDeserializer; /** * Clears Cache */ @@ -176,15 +167,6 @@ extern NSInteger const {{classPrefix}}TypeMismatchErrorCode; queryParams:(NSDictionary **)querys WithAuthSettings:(NSArray *)authSettings; -/** - * Deserializes the given data to Objective-C object. - * - * @param data The data will be deserialized. - * @param class The type of objective-c object. - * @param error The error - */ -- (id) deserialize:(id) data class:(NSString *) class error:(NSError**)error; - /** * Logs request and response * diff --git a/modules/swagger-codegen/src/main/resources/objc/ResponseDeserializer-body.mustache b/modules/swagger-codegen/src/main/resources/objc/ResponseDeserializer-body.mustache new file mode 100644 index 00000000000..9b325eca10d --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/objc/ResponseDeserializer-body.mustache @@ -0,0 +1,221 @@ +#import "{{classPrefix}}ResponseDeserializer.h" +#import +#import + +NSString *const {{classPrefix}}DeserializationErrorDomainKey = @"{{classPrefix}}DeserializationErrorDomainKey"; + +NSInteger const {{classPrefix}}TypeMismatchErrorCode = 143553; + +NSInteger const {{classPrefix}}EmptyValueOccurredErrorCode = 143509; + +@interface {{classPrefix}}ResponseDeserializer () + +@property (nonatomic, strong) NSNumberFormatter* numberFormatter; +@property (nonatomic, strong) NSArray *primitiveTypes; +@property (nonatomic, strong) NSArray *basicReturnTypes; + +@property (nonatomic, strong) NSRegularExpression* arrayOfModelsPatExpression; +@property (nonatomic, strong) NSRegularExpression* arrayOfPrimitivesPatExpression; +@property (nonatomic, strong) NSRegularExpression* dictPatExpression; +@property (nonatomic, strong) NSRegularExpression* dictModelsPatExpression; + +@end + +@implementation {{classPrefix}}ResponseDeserializer + +- (instancetype)init { + self = [super init]; + if (self) { + NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; + formatter.numberStyle = NSNumberFormatterDecimalStyle; + _numberFormatter = formatter; + _primitiveTypes = @[@"NSString", @"NSDate", @"NSNumber"]; + _basicReturnTypes = @[@"NSObject", @"id"]; + _arrayOfModelsPatExpression = [NSRegularExpression regularExpressionWithPattern:@"NSArray<(.+)>" + options:NSRegularExpressionCaseInsensitive + error:nil]; + _arrayOfPrimitivesPatExpression = [NSRegularExpression regularExpressionWithPattern:@"NSArray\\* /\\* (.+) \\*/" + options:NSRegularExpressionCaseInsensitive + error:nil]; + _dictPatExpression = [NSRegularExpression regularExpressionWithPattern:@"NSDictionary\\* /\\* (.+?), (.+) \\*/" + options:NSRegularExpressionCaseInsensitive + error:nil]; + _dictModelsPatExpression = [NSRegularExpression regularExpressionWithPattern:@"NSDictionary\\<(.+?), (.+)*\\>" + options:NSRegularExpressionCaseInsensitive + error:nil]; + } + return self; +} + +#pragma mark - Deserialize methods + +- (id) deserialize:(id) data class:(NSString *) className error:(NSError **) error { + // return nil if data is nil or className is nil + if (!data || !className || [data isKindOfClass:[NSNull class]]) { + return nil; + } + + // remove "*" from className, if ends with "*" + if ([className hasSuffix:@"*"]) { + className = [className substringToIndex:[className length] - 1]; + } + // pure object + if ([self.basicReturnTypes containsObject:className]) { + return data; + } + + // primitives + if ([self.primitiveTypes containsObject:className]) { + return [self deserializePrimitiveValue:data class:className error:error]; + } + + NSTextCheckingResult *match = nil; + + // list of models + match = [self.arrayOfModelsPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])]; + if (match) { + NSString *innerType = [className substringWithRange:[match rangeAtIndex:1]]; + return [self deserializeArrayValue:data innerType:innerType error:error]; + } + + // list of primitives + match = [self.arrayOfPrimitivesPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])]; + if (match) { + NSString *innerType = [className substringWithRange:[match rangeAtIndex:1]]; + return [self deserializeArrayValue:data innerType:innerType error:error]; + } + + // map + match = [self.dictPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])]; + if (match) { + NSString *valueType = [className substringWithRange:[match rangeAtIndex:2]]; + return [self deserializeDictionaryValue:data valueType:valueType error:error]; + } + + match = [self.dictModelsPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])]; + if (match) { + NSRange range =[match rangeAtIndex:2]; + range = NSMakeRange(range.location, [className length] - range.location -1); + NSString *valueType = [className substringWithRange:range]; + return [self deserializeDictionaryValue:data valueType:valueType error:error]; + } + + // model + Class ModelClass = NSClassFromString(className); + if ([ModelClass instancesRespondToSelector:@selector(initWithDictionary:error:)]) { + return [(JSONModel *) [ModelClass alloc] initWithDictionary:data error:error]; + } + + return nil; +} + +- (id) deserializeDictionaryValue:(id) data valueType:(NSString *) valueType error:(NSError**)error { + if(![data isKindOfClass: [NSDictionary class]]) { + if(error) { + *error = [self typeMismatchErrorWithExpectedType:NSStringFromClass([NSDictionary class]) data:data]; + } + return nil; + } + __block NSMutableDictionary *resultDict = [NSMutableDictionary dictionaryWithCapacity:[data count]]; + for (id key in [data allKeys]) { + id obj = [data valueForKey:key]; + id dicObj = [self deserialize:obj class:valueType error:error]; + if(dicObj) { + [resultDict setValue:dicObj forKey:key]; + } else if([obj isKindOfClass:[NSNull class]]) { + if(self.treatNullAsError) { + if (error) { + *error = [self emptyValueOccurredError]; + } + resultDict = nil; + break; + } + } else { + resultDict = nil; + break; + } + } + return resultDict; +} + +- (id) deserializeArrayValue:(id) data innerType:(NSString *) innerType error:(NSError**)error { + if(![data isKindOfClass: [NSArray class]]) { + if(error) { + *error = [self typeMismatchErrorWithExpectedType:NSStringFromClass([NSArray class]) data:data]; + } + return nil; + } + NSMutableArray* resultArray = [NSMutableArray arrayWithCapacity:[data count]]; + for (id obj in data) { + id arrObj = [self deserialize:obj class:innerType error:error]; + if(arrObj) { + [resultArray addObject:arrObj]; + } else if([obj isKindOfClass:[NSNull class]]) { + if(self.treatNullAsError) { + if (error) { + *error = [self emptyValueOccurredError]; + } + resultArray = nil; + break; + } + } else { + resultArray = nil; + break; + } + } + return resultArray; +}; + +- (id) deserializePrimitiveValue:(id) data class:(NSString *) className error:(NSError**)error { + if ([className isEqualToString:@"NSString"]) { + return [NSString stringWithString:data]; + } + else if ([className isEqualToString:@"NSDate"]) { + return [self deserializeDateValue:data error:error]; + } + else if ([className isEqualToString:@"NSNumber"]) { + // NSNumber from NSNumber + if ([data isKindOfClass:[NSNumber class]]) { + return data; + } + else if ([data isKindOfClass:[NSString class]]) { + // NSNumber (NSCFBoolean) from NSString + if ([[data lowercaseString] isEqualToString:@"true"] || [[data lowercaseString] isEqualToString:@"false"]) { + return @([data boolValue]); + // NSNumber from NSString + } else { + NSNumber* formattedValue = [self.numberFormatter numberFromString:data]; + if(!formattedValue && [data length] > 0 && error) { + *error = [self typeMismatchErrorWithExpectedType:className data:data]; + } + return formattedValue; + } + } + } + if(error) { + *error = [self typeMismatchErrorWithExpectedType:className data:data]; + } + return nil; +} + +- (id) deserializeDateValue:(id) data error:(NSError**)error { + NSDate *date =[NSDate dateWithISO8601String:data]; + if(!date && [data length] > 0 && error) { + *error = [self typeMismatchErrorWithExpectedType:NSStringFromClass([NSDate class]) data:data]; + } + return date; +}; + +-(NSError *)typeMismatchErrorWithExpectedType:(NSString *)expected data:(id)data { + NSString * message = [NSString stringWithFormat:NSLocalizedString(@"Received response [%@] is not an object of type %@",nil),data, expected]; + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : message}; + return [NSError errorWithDomain:{{classPrefix}}DeserializationErrorDomainKey code:{{classPrefix}}TypeMismatchErrorCode userInfo:userInfo]; +} + +-(NSError *)emptyValueOccurredError { + NSString * message = NSLocalizedString(@"Received response contains null value in dictionary or array response",nil); + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : message}; + return [NSError errorWithDomain:{{classPrefix}}DeserializationErrorDomainKey code:{{classPrefix}}EmptyValueOccurredErrorCode userInfo:userInfo]; +} + +@end diff --git a/modules/swagger-codegen/src/main/resources/objc/ResponseDeserializer-header.mustache b/modules/swagger-codegen/src/main/resources/objc/ResponseDeserializer-header.mustache new file mode 100644 index 00000000000..75894042eee --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/objc/ResponseDeserializer-header.mustache @@ -0,0 +1,45 @@ +#import + +/** + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen + * Do not edit the class manually. + */ + +/** + * A key for deserialization ErrorDomain + */ +extern NSString *const {{classPrefix}}DeserializationErrorDomainKey; + +/** + * Code for deserialization type mismatch error + */ +extern NSInteger const {{classPrefix}}TypeMismatchErrorCode; + +/** + * Code for deserialization empty value error + */ +extern NSInteger const {{classPrefix}}EmptyValueOccurredErrorCode; + +@protocol {{classPrefix}}ResponseDeserializer + +/** + * Deserializes the given data to Objective-C object. + * + * @param data The data will be deserialized. + * @param class The type of objective-c object. + * @param error The error + */ +- (id) deserialize:(id) data class:(NSString *) className error:(NSError**)error; + +@end + +@interface {{classPrefix}}ResponseDeserializer : NSObject <{{classPrefix}}ResponseDeserializer> + +/** + * If an null value occurs in dictionary or array if set to YES whole response will be invalid else will be ignored + * @default NO + */ +@property (nonatomic, assign) BOOL treatNullAsError; + +@end diff --git a/samples/client/petstore/objc/README.md b/samples/client/petstore/objc/README.md index bd0f24851a7..888ecba46f1 100644 --- a/samples/client/petstore/objc/README.md +++ b/samples/client/petstore/objc/README.md @@ -6,7 +6,7 @@ This ObjC package is automatically generated by the [Swagger Codegen](https://gi - API version: 1.0.0 - Package version: -- Build date: 2016-04-25T18:52:19.055+02:00 +- Build date: 2016-05-06T10:30:53.676+02:00 - Build package: class io.swagger.codegen.languages.ObjcClientCodegen ## Requirements @@ -19,7 +19,7 @@ The SDK requires [**ARC (Automatic Reference Counting)**](http://stackoverflow.c Add the following to the Podfile: ```ruby -pod 'SwaggerClient', :git => 'https://github.com/YOUR_GIT_USR_ID/YOUR_GIT_REPO_ID.git' +pod 'SwaggerClient', :git => 'https://github.com/GIT_USER_ID/GIT_REPO_ID.git' ``` To specify a particular branch, append `, :branch => 'branch-name-here'` diff --git a/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h index 5d40ef2f5f0..7dea87a3327 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h @@ -5,7 +5,7 @@ #import "SWGJSONRequestSerializer.h" #import "SWGQueryParamCollection.h" #import "SWGConfiguration.h" - +#import "SWGResponseDeserializer.h" /** * NOTE: This class is auto generated by the swagger code generator program. * https://github.com/swagger-api/swagger-codegen @@ -29,16 +29,6 @@ */ extern NSString *const SWGResponseObjectErrorKey; -/** - * A key for deserialization ErrorDomain - */ -extern NSString *const SWGDeserializationErrorDomainKey; - -/** - * Code for deserialization type mismatch error - */ -extern NSInteger const SWGTypeMismatchErrorCode; - /** * Log debug message macro */ @@ -53,6 +43,7 @@ extern NSInteger const SWGTypeMismatchErrorCode; /// In order to ensure the HTTPResponseHeaders are correct, it is recommended to initialize one SWGApiClient instance per thread. @property(nonatomic, readonly) NSDictionary* HTTPResponseHeaders; +@property(nonatomic, strong) id responseDeserializer; /** * Clears Cache */ @@ -180,15 +171,6 @@ extern NSInteger const SWGTypeMismatchErrorCode; queryParams:(NSDictionary **)querys WithAuthSettings:(NSArray *)authSettings; -/** - * Deserializes the given data to Objective-C object. - * - * @param data The data will be deserialized. - * @param class The type of objective-c object. - * @param error The error - */ -- (id) deserialize:(id) data class:(NSString *) class error:(NSError**)error; - /** * Logs request and response * diff --git a/samples/client/petstore/objc/SwaggerClient/SWGApiClient.m b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.m index ecdf4aaafb2..5d5d2019b0f 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGApiClient.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.m @@ -2,10 +2,6 @@ NSString *const SWGResponseObjectErrorKey = @"SWGResponseObject"; -NSString *const SWGDeserializationErrorDomainKey = @"SWGDeserializationErrorDomainKey"; - -NSInteger const SWGTypeMismatchErrorCode = 143553; - static long requestId = 0; static bool offlineState = false; static NSMutableSet * queuedRequests = nil; @@ -33,6 +29,7 @@ static void (^reachabilityChangeBlock)(int); self.requestSerializer = [AFJSONRequestSerializer serializer]; self.responseSerializer = [AFJSONResponseSerializer serializer]; self.securityPolicy = [self customSecurityPolicy]; + self.responseDeserializer = [[SWGResponseDeserializer alloc] init]; // configure reachability [self configureCacheReachibility]; } @@ -290,154 +287,6 @@ static void (^reachabilityChangeBlock)(int); [self.reachabilityManager startMonitoring]; } -#pragma mark - Deserialize methods - -- (id) deserialize:(id) data class:(NSString *) class error:(NSError **) error { - // return nil if data is nil or class is nil - if (!data || !class) { - return nil; - } - - // remove "*" from class, if ends with "*" - if ([class hasSuffix:@"*"]) { - class = [class substringToIndex:[class length] - 1]; - } - - // pure object - if ([class isEqualToString:@"NSObject"]) { - return data; - } - - NSRegularExpression *regexp = nil; - NSTextCheckingResult *match = nil; - NSMutableArray *resultArray = nil; - NSMutableDictionary *resultDict = nil; - NSString *innerType = nil; - - // list of models - NSString *arrayOfModelsPat = @"NSArray<(.+)>"; - regexp = [NSRegularExpression regularExpressionWithPattern:arrayOfModelsPat - options:NSRegularExpressionCaseInsensitive - error:nil]; - - match = [regexp firstMatchInString:class - options:0 - range:NSMakeRange(0, [class length])]; - - if (match) { - if(![data isKindOfClass: [NSArray class]]) { - if(error) { - NSDictionary * userInfo = @{NSLocalizedDescriptionKey : NSLocalizedString(@"Received response is not an array", nil)}; - *error = [NSError errorWithDomain:SWGDeserializationErrorDomainKey code:SWGTypeMismatchErrorCode userInfo:userInfo]; - } - return nil; - } - NSArray *dataArray = data; - innerType = [class substringWithRange:[match rangeAtIndex:1]]; - - resultArray = [NSMutableArray arrayWithCapacity:[dataArray count]]; - [data enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { - id arrObj = [self deserialize:obj class:innerType error:error]; - if(arrObj) { - [resultArray addObject:arrObj]; - } else { - * stop = YES; - } - }]; - - return resultArray; - } - - // list of primitives - NSString *arrayOfPrimitivesPat = @"NSArray\\* /\\* (.+) \\*/"; - regexp = [NSRegularExpression regularExpressionWithPattern:arrayOfPrimitivesPat - options:NSRegularExpressionCaseInsensitive - error:nil]; - match = [regexp firstMatchInString:class - options:0 - range:NSMakeRange(0, [class length])]; - - if (match) { - NSArray *dataArray = data; - innerType = [class substringWithRange:[match rangeAtIndex:1]]; - - resultArray = [NSMutableArray arrayWithCapacity:[dataArray count]]; - [data enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { - id arrObj = [self deserialize:obj class:innerType error:error]; - if(arrObj) { - [resultArray addObject:arrObj]; - } else { - * stop = YES; - } - }]; - - return resultArray; - } - - // map - NSString *dictPat = @"NSDictionary\\* /\\* (.+?), (.+) \\*/"; - regexp = [NSRegularExpression regularExpressionWithPattern:dictPat - options:NSRegularExpressionCaseInsensitive - error:nil]; - match = [regexp firstMatchInString:class - options:0 - range:NSMakeRange(0, [class length])]; - - if (match) { - NSDictionary *dataDict = data; - NSString *valueType = [class substringWithRange:[match rangeAtIndex:2]]; - - resultDict = [NSMutableDictionary dictionaryWithCapacity:[dataDict count]]; - [data enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { - id dicObj = [self deserialize:obj class:valueType error:error]; - if(dicObj) { - [resultDict setValue:dicObj forKey:key]; - } else { - * stop = YES; - } - }]; - - return resultDict; - } - - // primitives - NSArray *primitiveTypes = @[@"NSString", @"NSDate", @"NSNumber"]; - - if ([primitiveTypes containsObject:class]) { - if ([class isEqualToString:@"NSString"]) { - return [NSString stringWithString:data]; - } - else if ([class isEqualToString:@"NSDate"]) { - return [NSDate dateWithISO8601String:data]; - } - else if ([class isEqualToString:@"NSNumber"]) { - // NSNumber from NSNumber - if ([data isKindOfClass:[NSNumber class]]) { - return data; - } - else if ([data isKindOfClass:[NSString class]]) { - // NSNumber (NSCFBoolean) from NSString - if ([[data lowercaseString] isEqualToString:@"true"] || [[data lowercaseString] isEqualToString:@"false"]) { - return [NSNumber numberWithBool:[data boolValue]]; - // NSNumber from NSString - } else { - NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; - formatter.numberStyle = NSNumberFormatterDecimalStyle; - return [formatter numberFromString:data]; - } - } - } - } - - // model - Class ModelClass = NSClassFromString(class); - if ([ModelClass instancesRespondToSelector:@selector(initWithDictionary:error:)]) { - return [(JSONModel *) [ModelClass alloc] initWithDictionary:data error:error]; - } - - return nil; -} - #pragma mark - Operation Methods - (void) operationWithCompletionBlock: (NSURLRequest *)request @@ -661,7 +510,7 @@ static void (^reachabilityChangeBlock)(int); else { [self operationWithCompletionBlock:request requestId:requestId completionBlock:^(id data, NSError *error) { NSError * serializationError; - id response = [self deserialize:data class:responseType error:&serializationError]; + id response = [self.responseDeserializer deserialize:data class:responseType error:&serializationError]; if(!response && !error){ error = serializationError; } diff --git a/samples/client/petstore/objc/SwaggerClient/SWGResponseDeserializer.h b/samples/client/petstore/objc/SwaggerClient/SWGResponseDeserializer.h new file mode 100644 index 00000000000..26f2ba3a4e6 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClient/SWGResponseDeserializer.h @@ -0,0 +1,45 @@ +#import + +/** + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen + * Do not edit the class manually. + */ + +/** + * A key for deserialization ErrorDomain + */ +extern NSString *const SWGDeserializationErrorDomainKey; + +/** + * Code for deserialization type mismatch error + */ +extern NSInteger const SWGTypeMismatchErrorCode; + +/** + * Code for deserialization empty value error + */ +extern NSInteger const SWGEmptyValueOccurredErrorCode; + +@protocol SWGResponseDeserializer + +/** + * Deserializes the given data to Objective-C object. + * + * @param data The data will be deserialized. + * @param class The type of objective-c object. + * @param error The error + */ +- (id) deserialize:(id) data class:(NSString *) className error:(NSError**)error; + +@end + +@interface SWGResponseDeserializer : NSObject + +/** + * If an null value occurs in dictionary or array if set to YES whole response will be invalid else will be ignored + * @default NO + */ +@property (nonatomic, assign) BOOL treatNullAsError; + +@end diff --git a/samples/client/petstore/objc/SwaggerClient/SWGResponseDeserializer.m b/samples/client/petstore/objc/SwaggerClient/SWGResponseDeserializer.m new file mode 100644 index 00000000000..2bf124604bb --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClient/SWGResponseDeserializer.m @@ -0,0 +1,221 @@ +#import "SWGResponseDeserializer.h" +#import +#import + +NSString *const SWGDeserializationErrorDomainKey = @"SWGDeserializationErrorDomainKey"; + +NSInteger const SWGTypeMismatchErrorCode = 143553; + +NSInteger const SWGEmptyValueOccurredErrorCode = 143509; + +@interface SWGResponseDeserializer () + +@property (nonatomic, strong) NSNumberFormatter* numberFormatter; +@property (nonatomic, strong) NSArray *primitiveTypes; +@property (nonatomic, strong) NSArray *basicReturnTypes; + +@property (nonatomic, strong) NSRegularExpression* arrayOfModelsPatExpression; +@property (nonatomic, strong) NSRegularExpression* arrayOfPrimitivesPatExpression; +@property (nonatomic, strong) NSRegularExpression* dictPatExpression; +@property (nonatomic, strong) NSRegularExpression* dictModelsPatExpression; + +@end + +@implementation SWGResponseDeserializer + +- (instancetype)init { + self = [super init]; + if (self) { + NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; + formatter.numberStyle = NSNumberFormatterDecimalStyle; + _numberFormatter = formatter; + _primitiveTypes = @[@"NSString", @"NSDate", @"NSNumber"]; + _basicReturnTypes = @[@"NSObject", @"id"]; + _arrayOfModelsPatExpression = [NSRegularExpression regularExpressionWithPattern:@"NSArray<(.+)>" + options:NSRegularExpressionCaseInsensitive + error:nil]; + _arrayOfPrimitivesPatExpression = [NSRegularExpression regularExpressionWithPattern:@"NSArray\\* /\\* (.+) \\*/" + options:NSRegularExpressionCaseInsensitive + error:nil]; + _dictPatExpression = [NSRegularExpression regularExpressionWithPattern:@"NSDictionary\\* /\\* (.+?), (.+) \\*/" + options:NSRegularExpressionCaseInsensitive + error:nil]; + _dictModelsPatExpression = [NSRegularExpression regularExpressionWithPattern:@"NSDictionary\\<(.+?), (.+)*\\>" + options:NSRegularExpressionCaseInsensitive + error:nil]; + } + return self; +} + +#pragma mark - Deserialize methods + +- (id) deserialize:(id) data class:(NSString *) className error:(NSError **) error { + // return nil if data is nil or className is nil + if (!data || !className || [data isKindOfClass:[NSNull class]]) { + return nil; + } + + // remove "*" from className, if ends with "*" + if ([className hasSuffix:@"*"]) { + className = [className substringToIndex:[className length] - 1]; + } + // pure object + if ([self.basicReturnTypes containsObject:className]) { + return data; + } + + // primitives + if ([self.primitiveTypes containsObject:className]) { + return [self deserializePrimitiveValue:data class:className error:error]; + } + + NSTextCheckingResult *match = nil; + + // list of models + match = [self.arrayOfModelsPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])]; + if (match) { + NSString *innerType = [className substringWithRange:[match rangeAtIndex:1]]; + return [self deserializeArrayValue:data innerType:innerType error:error]; + } + + // list of primitives + match = [self.arrayOfPrimitivesPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])]; + if (match) { + NSString *innerType = [className substringWithRange:[match rangeAtIndex:1]]; + return [self deserializeArrayValue:data innerType:innerType error:error]; + } + + // map + match = [self.dictPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])]; + if (match) { + NSString *valueType = [className substringWithRange:[match rangeAtIndex:2]]; + return [self deserializeDictionaryValue:data valueType:valueType error:error]; + } + + match = [self.dictModelsPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])]; + if (match) { + NSRange range =[match rangeAtIndex:2]; + range = NSMakeRange(range.location, [className length] - range.location -1); + NSString *valueType = [className substringWithRange:range]; + return [self deserializeDictionaryValue:data valueType:valueType error:error]; + } + + // model + Class ModelClass = NSClassFromString(className); + if ([ModelClass instancesRespondToSelector:@selector(initWithDictionary:error:)]) { + return [(JSONModel *) [ModelClass alloc] initWithDictionary:data error:error]; + } + + return nil; +} + +- (id) deserializeDictionaryValue:(id) data valueType:(NSString *) valueType error:(NSError**)error { + if(![data isKindOfClass: [NSDictionary class]]) { + if(error) { + *error = [self typeMismatchErrorWithExpectedType:NSStringFromClass([NSDictionary class]) data:data]; + } + return nil; + } + __block NSMutableDictionary *resultDict = [NSMutableDictionary dictionaryWithCapacity:[data count]]; + for (id key in [data allKeys]) { + id obj = [data valueForKey:key]; + id dicObj = [self deserialize:obj class:valueType error:error]; + if(dicObj) { + [resultDict setValue:dicObj forKey:key]; + } else if([obj isKindOfClass:[NSNull class]]) { + if(self.treatNullAsError) { + if (error) { + *error = [self emptyValueOccurredError]; + } + resultDict = nil; + break; + } + } else { + resultDict = nil; + break; + } + } + return resultDict; +} + +- (id) deserializeArrayValue:(id) data innerType:(NSString *) innerType error:(NSError**)error { + if(![data isKindOfClass: [NSArray class]]) { + if(error) { + *error = [self typeMismatchErrorWithExpectedType:NSStringFromClass([NSArray class]) data:data]; + } + return nil; + } + NSMutableArray* resultArray = [NSMutableArray arrayWithCapacity:[data count]]; + for (id obj in data) { + id arrObj = [self deserialize:obj class:innerType error:error]; + if(arrObj) { + [resultArray addObject:arrObj]; + } else if([obj isKindOfClass:[NSNull class]]) { + if(self.treatNullAsError) { + if (error) { + *error = [self emptyValueOccurredError]; + } + resultArray = nil; + break; + } + } else { + resultArray = nil; + break; + } + } + return resultArray; +}; + +- (id) deserializePrimitiveValue:(id) data class:(NSString *) className error:(NSError**)error { + if ([className isEqualToString:@"NSString"]) { + return [NSString stringWithString:data]; + } + else if ([className isEqualToString:@"NSDate"]) { + return [self deserializeDateValue:data error:error]; + } + else if ([className isEqualToString:@"NSNumber"]) { + // NSNumber from NSNumber + if ([data isKindOfClass:[NSNumber class]]) { + return data; + } + else if ([data isKindOfClass:[NSString class]]) { + // NSNumber (NSCFBoolean) from NSString + if ([[data lowercaseString] isEqualToString:@"true"] || [[data lowercaseString] isEqualToString:@"false"]) { + return @([data boolValue]); + // NSNumber from NSString + } else { + NSNumber* formattedValue = [self.numberFormatter numberFromString:data]; + if(!formattedValue && [data length] > 0 && error) { + *error = [self typeMismatchErrorWithExpectedType:className data:data]; + } + return formattedValue; + } + } + } + if(error) { + *error = [self typeMismatchErrorWithExpectedType:className data:data]; + } + return nil; +} + +- (id) deserializeDateValue:(id) data error:(NSError**)error { + NSDate *date =[NSDate dateWithISO8601String:data]; + if(!date && [data length] > 0 && error) { + *error = [self typeMismatchErrorWithExpectedType:NSStringFromClass([NSDate class]) data:data]; + } + return date; +}; + +-(NSError *)typeMismatchErrorWithExpectedType:(NSString *)expected data:(id)data { + NSString * message = [NSString stringWithFormat:NSLocalizedString(@"Received response [%@] is not an object of type %@",nil),data, expected]; + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : message}; + return [NSError errorWithDomain:SWGDeserializationErrorDomainKey code:SWGTypeMismatchErrorCode userInfo:userInfo]; +} + +-(NSError *)emptyValueOccurredError { + NSString * message = NSLocalizedString(@"Received response contains null value in dictionary or array response",nil); + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : message}; + return [NSError errorWithDomain:SWGDeserializationErrorDomainKey code:SWGEmptyValueOccurredErrorCode userInfo:userInfo]; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Tests/DeserializationTest.m b/samples/client/petstore/objc/SwaggerClientTests/Tests/DeserializationTest.m index 5f5d274b4b0..8241c00b012 100644 --- a/samples/client/petstore/objc/SwaggerClientTests/Tests/DeserializationTest.m +++ b/samples/client/petstore/objc/SwaggerClientTests/Tests/DeserializationTest.m @@ -27,11 +27,28 @@ [formatter setDateFormat:@"yyyy-MM-dd"]; NSDate *date = [formatter dateFromString:dateStr]; NSError* error; - NSDate *deserializedDate = [apiClient deserialize:dateStr class:@"NSDate*" error:&error]; + NSDate *deserializedDate = [apiClient.responseDeserializer deserialize:dateStr class:@"NSDate*" error:&error]; XCTAssertNil(error); XCTAssertEqualWithAccuracy([date timeIntervalSinceReferenceDate], [deserializedDate timeIntervalSinceReferenceDate], 0.001); } +- (void)testDeserializeInvalidDate { + NSString *dateStr = @"random string"; + + NSError* error; + NSDate *deserializedDate = [apiClient.responseDeserializer deserialize:dateStr class:@"NSDate*" error:&error]; + XCTAssertNotNil(error); + XCTAssertNil(deserializedDate); +} + +- (void)testDeserializeEmptyDate { + NSString *dateStr = @""; + NSError* error; + NSDate *deserializedDate = [apiClient.responseDeserializer deserialize:dateStr class:@"NSDate*" error:&error]; + XCTAssertNil(error); + XCTAssertNil(deserializedDate); +} + - (void)testDeserializeDateTime { NSString *dateTimeStr = @"1997-07-16T19:20:30+00:00"; @@ -39,7 +56,7 @@ [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; NSDate *dateTime = [formatter dateFromString:dateTimeStr]; NSError* error; - NSDate *deserializedDateTime = [apiClient deserialize:dateTimeStr class:@"NSDate*" error:&error]; + NSDate *deserializedDateTime = [apiClient.responseDeserializer deserialize:dateTimeStr class:@"NSDate*" error:&error]; XCTAssertNil(error); XCTAssertEqualWithAccuracy([dateTime timeIntervalSinceReferenceDate], [deserializedDateTime timeIntervalSinceReferenceDate], 0.001); } @@ -47,7 +64,7 @@ - (void)testDeserializeObject { NSNumber *data = @1; NSError* error; - NSNumber *result = [apiClient deserialize:data class:@"NSObject*" error:&error]; + NSNumber *result = [apiClient.responseDeserializer deserialize:data class:@"NSObject*" error:&error]; XCTAssertNil(error); XCTAssertEqualObjects(data, result); } @@ -55,7 +72,7 @@ - (void)testDeserializeString { NSString *data = @"test string"; NSError* error; - NSString *result = [apiClient deserialize:data class:@"NSString*" error:&error]; + NSString *result = [apiClient.responseDeserializer deserialize:data class:@"NSString*" error:&error]; XCTAssertNil(error); XCTAssertTrue([result isEqualToString:data]); } @@ -63,12 +80,29 @@ - (void)testDeserializeListOfString { NSArray *data = @[@"test string"]; NSError* error; - NSArray *result = [apiClient deserialize:data class:@"NSArray* /* NSString */" error:&error]; + NSArray *result = [apiClient.responseDeserializer deserialize:data class:@"NSArray*" error:&error]; XCTAssertNil(error); XCTAssertTrue([result isKindOfClass:[NSArray class]]); XCTAssertTrue([result[0] isKindOfClass:[NSString class]]); } +- (void)testDeserializeInvalidListOfNumbers { + NSArray *data = @[@"test string"]; + NSError* error; + NSArray *result = [apiClient.responseDeserializer deserialize:data class:@"NSArray*" error:&error]; + XCTAssertNotNil(error); + XCTAssertNil(result); +} + +- (void)testDeserializeListOfNumbers { + NSArray *data = @[@"1.0"]; + NSError* error; + NSArray *result = [apiClient.responseDeserializer deserialize:data class:@"NSArray*" error:&error]; + XCTAssertNil(error); + XCTAssertTrue([result isKindOfClass:[NSArray class]]); + XCTAssertTrue([result[0] isKindOfClass:[NSNumber class]]); +} + - (void)testDeserializeListOfModels { NSArray *data = @[ @@ -92,7 +126,7 @@ }]; NSError* error; - NSArray *result = [apiClient deserialize:data class:@"NSArray*" error:&error]; + NSArray *result = [apiClient.responseDeserializer deserialize:data class:@"NSArray*" error:&error]; XCTAssertTrue([result isKindOfClass:[NSArray class]]); XCTAssertTrue([[result firstObject] isKindOfClass:[SWGPet class]]); @@ -123,7 +157,7 @@ } }; NSError* error; - NSDictionary *result = [apiClient deserialize:data class:@"NSDictionary* /* NSString, SWGPet */" error:&error]; + NSDictionary *result = [apiClient.responseDeserializer deserialize:data class:@"NSDictionary* /* NSString, SWGPet */" error:&error]; XCTAssertTrue([result isKindOfClass:[NSDictionary class]]); XCTAssertTrue([result[@"pet"] isKindOfClass:[SWGPet class]]); @@ -134,11 +168,44 @@ NSDictionary *data = @{ @"foo": @{ - @"bar": @1 + @"bar": @1, + @"bar2": [NSNull null] } }; + SWGResponseDeserializer* responseDeserializer = [[SWGResponseDeserializer alloc] init]; NSError* error; - NSDictionary *result = [apiClient deserialize:data class:@"NSDictionary* /* NSString, NSDictionary* /* NSString, NSNumber */ */" error:&error]; + NSDictionary *result = [responseDeserializer deserialize:data class:@"NSDictionary* /* NSString, NSDictionary* /* NSString, NSNumber */ */" error:&error]; + + XCTAssertTrue([result isKindOfClass:[NSDictionary class]]); + XCTAssertTrue([result[@"foo"] isKindOfClass:[NSDictionary class]]); + XCTAssertTrue([result[@"foo"][@"bar"] isKindOfClass:[NSNumber class]]); +} + + +- (void)testDeserializeNestedMapWithNullValue { + NSDictionary *data = + @{ + @"foo": @{ + @"bar": @1, + @"bar2": [NSNull null] + } + }; + SWGResponseDeserializer* responseDeserializer = [[SWGResponseDeserializer alloc] init]; + responseDeserializer.treatNullAsError = YES; + NSError* error; + NSDictionary *result = [responseDeserializer deserialize:data class:@"NSDictionary* /* NSString, NSDictionary* /* NSString, NSNumber */ */" error:&error]; + XCTAssertNil(result); + XCTAssertNotNil(error); +} + +- (void)testDeserializeNestedMap2 { + NSDictionary *data = @{ + @"foo": @{ + @"bar": @1 + } + }; + NSError* error; + NSDictionary *result = [apiClient.responseDeserializer deserialize:data class:@"NSDictionary*>*" error:&error]; XCTAssertTrue([result isKindOfClass:[NSDictionary class]]); XCTAssertTrue([result[@"foo"] isKindOfClass:[NSDictionary class]]); @@ -148,7 +215,7 @@ - (void)testDeserializeNestedList { NSArray *data = @[@[@"foo"]]; NSError* error; - NSArray *result = [apiClient deserialize:data class:@"NSArray* /* NSArray* /* NSString */ */" error:&error]; + NSArray *result = [apiClient.responseDeserializer deserialize:data class:@"NSArray* /* NSArray* /* NSString */ */" error:&error]; XCTAssertTrue([result isKindOfClass:[NSArray class]]); XCTAssertTrue([result[0] isKindOfClass:[NSArray class]]); @@ -161,11 +228,11 @@ data = @"true"; NSError* error; - result = [apiClient deserialize:data class:@"NSNumber*" error:&error]; + result = [apiClient.responseDeserializer deserialize:data class:@"NSNumber*" error:&error]; XCTAssertTrue([result isEqual:@YES]); data = @"false"; - result = [apiClient deserialize:data class:@"NSNumber*" error:&error]; + result = [apiClient.responseDeserializer deserialize:data class:@"NSNumber*" error:&error]; XCTAssertTrue([result isEqual:@NO]); } diff --git a/samples/client/petstore/objc/SwaggerClientTests/Tests/PetApiTest.m b/samples/client/petstore/objc/SwaggerClientTests/Tests/PetApiTest.m index 7fd3d4f97c8..7ddc817e9ef 100644 --- a/samples/client/petstore/objc/SwaggerClientTests/Tests/PetApiTest.m +++ b/samples/client/petstore/objc/SwaggerClientTests/Tests/PetApiTest.m @@ -165,7 +165,7 @@ which causes an exception when deserializing the data SWGTag* tag = [[SWGTag alloc] init]; tag.name = @"tony"; NSLog(@"%@", pet._id); - pet.tags = [[NSArray alloc] initWithObjects:tag, nil]; + pet.tags = (id)[[NSArray alloc] initWithObjects:tag, nil]; [api addPetWithBody:pet completionHandler:^(NSError *error) { if(error) { diff --git a/samples/client/petstore/objc/git_push.sh b/samples/client/petstore/objc/git_push.sh index 1a36388db02..ed374619b13 100644 --- a/samples/client/petstore/objc/git_push.sh +++ b/samples/client/petstore/objc/git_push.sh @@ -8,12 +8,12 @@ git_repo_id=$2 release_note=$3 if [ "$git_user_id" = "" ]; then - git_user_id="YOUR_GIT_USR_ID" + git_user_id="GIT_USER_ID" echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" fi if [ "$git_repo_id" = "" ]; then - git_repo_id="YOUR_GIT_REPO_ID" + git_repo_id="GIT_REPO_ID" echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" fi From 75cc10fdfa913cc1b0818ee316b20602e2b47e7d Mon Sep 17 00:00:00 2001 From: Mateusz Mackowiak Date: Fri, 6 May 2016 10:51:59 +0200 Subject: [PATCH 12/19] Fix typo --- .../java/io/swagger/codegen/languages/ObjcClientCodegen.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java index 9340eafd360..0ecdfb667c9 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java @@ -109,7 +109,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { "break", "enum", "register", "typedef", "case", "extern", "return", "union", "char", "float", "short", "unsigned", - "co nst", "for", "signed", "void", + "const", "for", "signed", "void", "continue", "goto", "sizeof", "volatile", "default", "if", "id", "static", "while", "do", "int", "struct", "_Packed", From 385bf6d9eafdad8188711535d7c8efcacaf5a4a6 Mon Sep 17 00:00:00 2001 From: Mateusz Mackowiak Date: Fri, 6 May 2016 11:41:30 +0200 Subject: [PATCH 13/19] Additional UnknownResponseObjectErrorCode if response object expected type is an unknown type --- .../objc/ResponseDeserializer-body.mustache | 26 +++++++++++++------ .../objc/ResponseDeserializer-header.mustache | 5 ++++ samples/client/petstore/objc/README.md | 2 +- .../SwaggerClient/SWGResponseDeserializer.h | 5 ++++ .../SwaggerClient/SWGResponseDeserializer.m | 26 +++++++++++++------ .../Tests/DeserializationTest.m | 8 ++++++ 6 files changed, 55 insertions(+), 17 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/objc/ResponseDeserializer-body.mustache b/modules/swagger-codegen/src/main/resources/objc/ResponseDeserializer-body.mustache index 9b325eca10d..27a59e39cdc 100644 --- a/modules/swagger-codegen/src/main/resources/objc/ResponseDeserializer-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/ResponseDeserializer-body.mustache @@ -8,6 +8,9 @@ NSInteger const {{classPrefix}}TypeMismatchErrorCode = 143553; NSInteger const {{classPrefix}}EmptyValueOccurredErrorCode = 143509; +NSInteger const {{classPrefix}}UnknownResponseObjectErrorCode = 143528; + + @interface {{classPrefix}}ResponseDeserializer () @property (nonatomic, strong) NSNumberFormatter* numberFormatter; @@ -70,33 +73,31 @@ NSInteger const {{classPrefix}}EmptyValueOccurredErrorCode = 143509; } NSTextCheckingResult *match = nil; - + NSRange range = NSMakeRange(0, [className length]); // list of models - match = [self.arrayOfModelsPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])]; + match = [self.arrayOfModelsPatExpression firstMatchInString:className options:0 range:range]; if (match) { NSString *innerType = [className substringWithRange:[match rangeAtIndex:1]]; return [self deserializeArrayValue:data innerType:innerType error:error]; } // list of primitives - match = [self.arrayOfPrimitivesPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])]; + match = [self.arrayOfPrimitivesPatExpression firstMatchInString:className options:0 range:range]; if (match) { NSString *innerType = [className substringWithRange:[match rangeAtIndex:1]]; return [self deserializeArrayValue:data innerType:innerType error:error]; } // map - match = [self.dictPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])]; + match = [self.dictPatExpression firstMatchInString:className options:0 range:range]; if (match) { NSString *valueType = [className substringWithRange:[match rangeAtIndex:2]]; return [self deserializeDictionaryValue:data valueType:valueType error:error]; } - match = [self.dictModelsPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])]; + match = [self.dictModelsPatExpression firstMatchInString:className options:0 range:range]; if (match) { - NSRange range =[match rangeAtIndex:2]; - range = NSMakeRange(range.location, [className length] - range.location -1); - NSString *valueType = [className substringWithRange:range]; + NSString *valueType = [className substringWithRange:[match rangeAtIndex:2]]; return [self deserializeDictionaryValue:data valueType:valueType error:error]; } @@ -106,6 +107,9 @@ NSInteger const {{classPrefix}}EmptyValueOccurredErrorCode = 143509; return [(JSONModel *) [ModelClass alloc] initWithDictionary:data error:error]; } + if(error) { + *error = [self unknownResponseErrorWithExpectedType:className data:data]; + } return nil; } @@ -218,4 +222,10 @@ NSInteger const {{classPrefix}}EmptyValueOccurredErrorCode = 143509; return [NSError errorWithDomain:{{classPrefix}}DeserializationErrorDomainKey code:{{classPrefix}}EmptyValueOccurredErrorCode userInfo:userInfo]; } +-(NSError *)unknownResponseErrorWithExpectedType:(NSString *)expected data:(id)data { + NSString * message = [NSString stringWithFormat:NSLocalizedString(@"Unknown response expected type %@ [reponse: %@]",nil),expected,data]; + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : message}; + return [NSError errorWithDomain:{{classPrefix}}DeserializationErrorDomainKey code:{{classPrefix}}UnknownResponseObjectErrorCode userInfo:userInfo]; +} + @end diff --git a/modules/swagger-codegen/src/main/resources/objc/ResponseDeserializer-header.mustache b/modules/swagger-codegen/src/main/resources/objc/ResponseDeserializer-header.mustache index 75894042eee..2dd038c13f0 100644 --- a/modules/swagger-codegen/src/main/resources/objc/ResponseDeserializer-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/ResponseDeserializer-header.mustache @@ -21,6 +21,11 @@ extern NSInteger const {{classPrefix}}TypeMismatchErrorCode; */ extern NSInteger const {{classPrefix}}EmptyValueOccurredErrorCode; +/** + * Error code for unknown response + */ +extern NSInteger const {{classPrefix}}UnknownResponseObjectErrorCode; + @protocol {{classPrefix}}ResponseDeserializer /** diff --git a/samples/client/petstore/objc/README.md b/samples/client/petstore/objc/README.md index 888ecba46f1..4b0b92a259e 100644 --- a/samples/client/petstore/objc/README.md +++ b/samples/client/petstore/objc/README.md @@ -6,7 +6,7 @@ This ObjC package is automatically generated by the [Swagger Codegen](https://gi - API version: 1.0.0 - Package version: -- Build date: 2016-05-06T10:30:53.676+02:00 +- Build date: 2016-05-06T11:35:18.146+02:00 - Build package: class io.swagger.codegen.languages.ObjcClientCodegen ## Requirements diff --git a/samples/client/petstore/objc/SwaggerClient/SWGResponseDeserializer.h b/samples/client/petstore/objc/SwaggerClient/SWGResponseDeserializer.h index 26f2ba3a4e6..b20ead44f83 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGResponseDeserializer.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGResponseDeserializer.h @@ -21,6 +21,11 @@ extern NSInteger const SWGTypeMismatchErrorCode; */ extern NSInteger const SWGEmptyValueOccurredErrorCode; +/** + * Error code for unknown response + */ +extern NSInteger const SWGUnknownResponseObjectErrorCode; + @protocol SWGResponseDeserializer /** diff --git a/samples/client/petstore/objc/SwaggerClient/SWGResponseDeserializer.m b/samples/client/petstore/objc/SwaggerClient/SWGResponseDeserializer.m index 2bf124604bb..fa5be3af3d2 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGResponseDeserializer.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGResponseDeserializer.m @@ -8,6 +8,9 @@ NSInteger const SWGTypeMismatchErrorCode = 143553; NSInteger const SWGEmptyValueOccurredErrorCode = 143509; +NSInteger const SWGUnknownResponseObjectErrorCode = 143528; + + @interface SWGResponseDeserializer () @property (nonatomic, strong) NSNumberFormatter* numberFormatter; @@ -70,33 +73,31 @@ NSInteger const SWGEmptyValueOccurredErrorCode = 143509; } NSTextCheckingResult *match = nil; - + NSRange range = NSMakeRange(0, [className length]); // list of models - match = [self.arrayOfModelsPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])]; + match = [self.arrayOfModelsPatExpression firstMatchInString:className options:0 range:range]; if (match) { NSString *innerType = [className substringWithRange:[match rangeAtIndex:1]]; return [self deserializeArrayValue:data innerType:innerType error:error]; } // list of primitives - match = [self.arrayOfPrimitivesPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])]; + match = [self.arrayOfPrimitivesPatExpression firstMatchInString:className options:0 range:range]; if (match) { NSString *innerType = [className substringWithRange:[match rangeAtIndex:1]]; return [self deserializeArrayValue:data innerType:innerType error:error]; } // map - match = [self.dictPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])]; + match = [self.dictPatExpression firstMatchInString:className options:0 range:range]; if (match) { NSString *valueType = [className substringWithRange:[match rangeAtIndex:2]]; return [self deserializeDictionaryValue:data valueType:valueType error:error]; } - match = [self.dictModelsPatExpression firstMatchInString:className options:0 range:NSMakeRange(0, [className length])]; + match = [self.dictModelsPatExpression firstMatchInString:className options:0 range:range]; if (match) { - NSRange range =[match rangeAtIndex:2]; - range = NSMakeRange(range.location, [className length] - range.location -1); - NSString *valueType = [className substringWithRange:range]; + NSString *valueType = [className substringWithRange:[match rangeAtIndex:2]]; return [self deserializeDictionaryValue:data valueType:valueType error:error]; } @@ -106,6 +107,9 @@ NSInteger const SWGEmptyValueOccurredErrorCode = 143509; return [(JSONModel *) [ModelClass alloc] initWithDictionary:data error:error]; } + if(error) { + *error = [self unknownResponseErrorWithExpectedType:className data:data]; + } return nil; } @@ -218,4 +222,10 @@ NSInteger const SWGEmptyValueOccurredErrorCode = 143509; return [NSError errorWithDomain:SWGDeserializationErrorDomainKey code:SWGEmptyValueOccurredErrorCode userInfo:userInfo]; } +-(NSError *)unknownResponseErrorWithExpectedType:(NSString *)expected data:(id)data { + NSString * message = [NSString stringWithFormat:NSLocalizedString(@"Unknown response expected type %@ [reponse: %@]",nil),expected,data]; + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : message}; + return [NSError errorWithDomain:SWGDeserializationErrorDomainKey code:SWGUnknownResponseObjectErrorCode userInfo:userInfo]; +} + @end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Tests/DeserializationTest.m b/samples/client/petstore/objc/SwaggerClientTests/Tests/DeserializationTest.m index 8241c00b012..3284336a64b 100644 --- a/samples/client/petstore/objc/SwaggerClientTests/Tests/DeserializationTest.m +++ b/samples/client/petstore/objc/SwaggerClientTests/Tests/DeserializationTest.m @@ -61,6 +61,14 @@ XCTAssertEqualWithAccuracy([dateTime timeIntervalSinceReferenceDate], [deserializedDateTime timeIntervalSinceReferenceDate], 0.001); } +- (void)testDeserializeUnknownObject { + NSString *data = @"random string"; + NSError* error; + NSNumber *result = [apiClient.responseDeserializer deserialize:data class:@"DeserializationTest*" error:&error]; + XCTAssertNotNil(error); + XCTAssertNil(result); +} + - (void)testDeserializeObject { NSNumber *data = @1; NSError* error; From 3dbab1b8931492dbc03d105830b3d48fcd2025e4 Mon Sep 17 00:00:00 2001 From: xhh Date: Fri, 6 May 2016 17:36:07 +0800 Subject: [PATCH 14/19] JavaScript client: fix exporting of outer enum model --- .../partial_model_enum_class.mustache | 2 +- .../javascript/docs/InlineResponse200.md | 13 -- .../javascript/src/model/EnumClass.js | 2 +- .../javascript/src/model/InlineResponse200.js | 132 ------------------ 4 files changed, 2 insertions(+), 147 deletions(-) delete mode 100644 samples/client/petstore/javascript/docs/InlineResponse200.md delete mode 100644 samples/client/petstore/javascript/src/model/InlineResponse200.js diff --git a/modules/swagger-codegen/src/main/resources/Javascript/partial_model_enum_class.mustache b/modules/swagger-codegen/src/main/resources/Javascript/partial_model_enum_class.mustache index c7d18d35841..c85e82aa764 100644 --- a/modules/swagger-codegen/src/main/resources/Javascript/partial_model_enum_class.mustache +++ b/modules/swagger-codegen/src/main/resources/Javascript/partial_model_enum_class.mustache @@ -5,7 +5,7 @@ * @readonly */ {{/emitJSDoc}} - exports.{{classname}} = { + var exports = { {{#allowableValues}} {{#values}} {{#emitJSDoc}} diff --git a/samples/client/petstore/javascript/docs/InlineResponse200.md b/samples/client/petstore/javascript/docs/InlineResponse200.md deleted file mode 100644 index bbb11067e9a..00000000000 --- a/samples/client/petstore/javascript/docs/InlineResponse200.md +++ /dev/null @@ -1,13 +0,0 @@ -# SwaggerPetstore.InlineResponse200 - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**tags** | [**[Tag]**](Tag.md) | | [optional] -**id** | **Integer** | | -**category** | **Object** | | [optional] -**status** | **String** | pet status in the store | [optional] -**name** | **String** | | [optional] -**photoUrls** | **[String]** | | [optional] - - diff --git a/samples/client/petstore/javascript/src/model/EnumClass.js b/samples/client/petstore/javascript/src/model/EnumClass.js index 2ff3398113a..268addcbaed 100644 --- a/samples/client/petstore/javascript/src/model/EnumClass.js +++ b/samples/client/petstore/javascript/src/model/EnumClass.js @@ -21,7 +21,7 @@ * @enum {} * @readonly */ - exports.EnumClass = { + var exports = { /** * value: _abc * @const diff --git a/samples/client/petstore/javascript/src/model/InlineResponse200.js b/samples/client/petstore/javascript/src/model/InlineResponse200.js deleted file mode 100644 index f2abaf1bd1b..00000000000 --- a/samples/client/petstore/javascript/src/model/InlineResponse200.js +++ /dev/null @@ -1,132 +0,0 @@ -(function(root, factory) { - if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['ApiClient', 'model/Tag'], factory); - } else if (typeof module === 'object' && module.exports) { - // CommonJS-like environments that support module.exports, like Node. - module.exports = factory(require('../ApiClient'), require('./Tag')); - } else { - // Browser globals (root is window) - if (!root.SwaggerPetstore) { - root.SwaggerPetstore = {}; - } - root.SwaggerPetstore.InlineResponse200 = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.Tag); - } -}(this, function(ApiClient, Tag) { - 'use strict'; - - /** - * The InlineResponse200 model module. - * @module model/InlineResponse200 - * @version 1.0.0 - */ - - /** - * Constructs a new InlineResponse200. - * @alias module:model/InlineResponse200 - * @class - * @param id - */ - var exports = function(id) { - - - this['id'] = id; - - - - - }; - - /** - * Constructs a InlineResponse200 from a plain JavaScript object, optionally creating a new instance. - * Copies all relevant properties from data to obj if supplied or a new instance if not. - * @param {Object} data The plain JavaScript object bearing properties of interest. - * @param {module:model/InlineResponse200} obj Optional instance to populate. - * @return {module:model/InlineResponse200} The populated InlineResponse200 instance. - */ - exports.constructFromObject = function(data, obj) { - if (data) { - obj = obj || new exports(); - - if (data.hasOwnProperty('tags')) { - obj['tags'] = ApiClient.convertToType(data['tags'], [Tag]); - } - if (data.hasOwnProperty('id')) { - obj['id'] = ApiClient.convertToType(data['id'], 'Integer'); - } - if (data.hasOwnProperty('category')) { - obj['category'] = ApiClient.convertToType(data['category'], Object); - } - if (data.hasOwnProperty('status')) { - obj['status'] = ApiClient.convertToType(data['status'], 'String'); - } - if (data.hasOwnProperty('name')) { - obj['name'] = ApiClient.convertToType(data['name'], 'String'); - } - if (data.hasOwnProperty('photoUrls')) { - obj['photoUrls'] = ApiClient.convertToType(data['photoUrls'], ['String']); - } - } - return obj; - } - - - /** - * @member {Array.} tags - */ - exports.prototype['tags'] = undefined; - - /** - * @member {Integer} id - */ - exports.prototype['id'] = undefined; - - /** - * @member {Object} category - */ - exports.prototype['category'] = undefined; - - /** - * pet status in the store - * @member {module:model/InlineResponse200.StatusEnum} status - */ - exports.prototype['status'] = undefined; - - /** - * @member {String} name - */ - exports.prototype['name'] = undefined; - - /** - * @member {Array.} photoUrls - */ - exports.prototype['photoUrls'] = undefined; - - - /** - * Allowed values for the status property. - * @enum {String} - * @readonly - */ - exports.StatusEnum = { - /** - * value: available - * @const - */ - AVAILABLE: "available", - - /** - * value: pending - * @const - */ - PENDING: "pending", - - /** - * value: sold - * @const - */ - SOLD: "sold" - }; - - return exports; -})); From 5acef6d634ece2d71874abdb56943a7d68df0ae5 Mon Sep 17 00:00:00 2001 From: xhh Date: Fri, 6 May 2016 18:02:32 +0800 Subject: [PATCH 15/19] Update petstore sample for JS-promise client --- bin/javascript-promise-petstore.sh | 2 +- .../petstore/javascript-promise/README.md | 52 +++++-- .../javascript-promise/docs/AnimalFarm.md | 7 + .../javascript-promise/docs/ApiResponse.md | 10 ++ .../javascript-promise/docs/EnumClass.md | 7 + .../javascript-promise/docs/EnumTest.md | 10 ++ .../javascript-promise/docs/FakeApi.md | 79 +++++++++++ .../javascript-promise/docs/FormatTest.md | 8 +- .../docs/InlineResponse200.md | 13 -- .../petstore/javascript-promise/docs/Name.md | 1 + .../petstore/javascript-promise/docs/Order.md | 2 +- .../javascript-promise/docs/PetApi.md | 88 ++++++------ .../javascript-promise/docs/StoreApi.md | 23 ++- .../javascript-promise/docs/UserApi.md | 76 +++++----- .../petstore/javascript-promise/package.json | 2 +- .../javascript-promise/src/ApiClient.js | 4 +- .../javascript-promise/src/api/FakeApi.js | 113 +++++++++++++++ .../javascript-promise/src/api/PetApi.js | 91 ++++++------ .../javascript-promise/src/api/StoreApi.js | 23 +-- .../javascript-promise/src/api/UserApi.js | 90 +++++++----- .../petstore/javascript-promise/src/index.js | 73 +++++++++- .../javascript-promise/src/model/Animal.js | 13 +- .../src/model/AnimalFarm.js | 64 +++++++++ .../src/model/ApiResponse.js | 83 +++++++++++ .../javascript-promise/src/model/Cat.js | 13 +- .../javascript-promise/src/model/Category.js | 7 +- .../javascript-promise/src/model/Dog.js | 13 +- .../javascript-promise/src/model/EnumClass.js | 44 ++++++ .../javascript-promise/src/model/EnumTest.js | 131 +++++++++++++++++ .../src/model/FormatTest.js | 52 ++++--- .../src/model/InlineResponse200.js | 132 ------------------ .../src/model/Model200Response.js | 9 +- .../src/model/ModelReturn.js | 9 +- .../javascript-promise/src/model/Name.js | 20 ++- .../javascript-promise/src/model/Order.js | 32 ++--- .../javascript-promise/src/model/Pet.js | 29 ++-- .../src/model/SpecialModelName.js | 9 +- .../javascript-promise/src/model/Tag.js | 7 +- .../javascript-promise/src/model/User.js | 13 +- .../javascript-promise/test/api/PetApiTest.js | 4 +- 40 files changed, 1014 insertions(+), 444 deletions(-) create mode 100644 samples/client/petstore/javascript-promise/docs/AnimalFarm.md create mode 100644 samples/client/petstore/javascript-promise/docs/ApiResponse.md create mode 100644 samples/client/petstore/javascript-promise/docs/EnumClass.md create mode 100644 samples/client/petstore/javascript-promise/docs/EnumTest.md create mode 100644 samples/client/petstore/javascript-promise/docs/FakeApi.md delete mode 100644 samples/client/petstore/javascript-promise/docs/InlineResponse200.md create mode 100644 samples/client/petstore/javascript-promise/src/api/FakeApi.js create mode 100644 samples/client/petstore/javascript-promise/src/model/AnimalFarm.js create mode 100644 samples/client/petstore/javascript-promise/src/model/ApiResponse.js create mode 100644 samples/client/petstore/javascript-promise/src/model/EnumClass.js create mode 100644 samples/client/petstore/javascript-promise/src/model/EnumTest.js delete mode 100644 samples/client/petstore/javascript-promise/src/model/InlineResponse200.js diff --git a/bin/javascript-promise-petstore.sh b/bin/javascript-promise-petstore.sh index f6e7ef13913..fac0f221424 100755 --- a/bin/javascript-promise-petstore.sh +++ b/bin/javascript-promise-petstore.sh @@ -27,7 +27,7 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" ags="$@ generate -t modules/swagger-codegen/src/main/resources/Javascript \ --i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l javascript \ +-i modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -l javascript \ -o samples/client/petstore/javascript-promise \ --additional-properties usePromises=true" diff --git a/samples/client/petstore/javascript-promise/README.md b/samples/client/petstore/javascript-promise/README.md index f1d10a435b6..ba181cae089 100644 --- a/samples/client/petstore/javascript-promise/README.md +++ b/samples/client/petstore/javascript-promise/README.md @@ -1,12 +1,12 @@ # swagger-petstore SwaggerPetstore - JavaScript client for swagger-petstore -This is a sample server Petstore server. You can find out more about Swagger at http://swagger.io or on irc.freenode.net, #swagger. For this sample, you can use the api key \"special-key\" to test the authorization filters +This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. This SDK is automatically generated by the [Swagger Codegen](https://github.com/swagger-api/swagger-codegen) project: - API version: 1.0.0 - Package version: 1.0.0 -- Build date: 2016-05-01T12:08:53.092+08:00 +- Build date: 2016-05-06T17:51:36.114+08:00 - Build package: class io.swagger.codegen.languages.JavascriptClientCodegen ## Installation @@ -53,18 +53,27 @@ Please follow the [installation](#installation) instruction and execute the foll ```javascript var SwaggerPetstore = require('swagger-petstore'); -var defaultClient = SwaggerPetstore.ApiClient.default; +var api = new SwaggerPetstore.FakeApi() -// Configure OAuth2 access token for authorization: petstore_auth -var petstore_auth = defaultClient.authentications['petstore_auth']; -petstore_auth.accessToken = "YOUR ACCESS TOKEN" +var _number = 3.4; // {Number} None -var api = new SwaggerPetstore.PetApi() +var _double = 1.2; // {Number} None + +var _string = "_string_example"; // {String} None + +var _byte = "B"; // {String} None var opts = { - 'body': new SwaggerPetstore.Pet() // {Pet} Pet object that needs to be added to the store + 'integer': 56, // {Integer} None + 'int32': 56, // {Integer} None + 'int64': 789, // {Integer} None + '_float': 3.4, // {Number} None + 'binary': "B", // {String} None + '_date': new Date("2013-10-20"), // {Date} None + 'dateTime': new Date("2013-10-20T19:20:30+01:00"), // {Date} None + 'password': "password_example" // {String} None }; -api.addPet(opts).then(function() { +api.testEndpointParameters(_number, _double, _string, _byte, opts).then(function() { console.log('API called successfully.'); }, function(error) { console.error(error); @@ -79,6 +88,7 @@ All URIs are relative to *http://petstore.swagger.io/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- +*SwaggerPetstore.FakeApi* | [**testEndpointParameters**](docs/FakeApi.md#testEndpointParameters) | **POST** /fake | Fake endpoint for testing various parameters *SwaggerPetstore.PetApi* | [**addPet**](docs/PetApi.md#addPet) | **POST** /pet | Add a new pet to the store *SwaggerPetstore.PetApi* | [**deletePet**](docs/PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet *SwaggerPetstore.PetApi* | [**findPetsByStatus**](docs/PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status @@ -103,9 +113,21 @@ Class | Method | HTTP request | Description ## Documentation for Models + - [SwaggerPetstore.Animal](docs/Animal.md) + - [SwaggerPetstore.AnimalFarm](docs/AnimalFarm.md) + - [SwaggerPetstore.ApiResponse](docs/ApiResponse.md) + - [SwaggerPetstore.Cat](docs/Cat.md) - [SwaggerPetstore.Category](docs/Category.md) + - [SwaggerPetstore.Dog](docs/Dog.md) + - [SwaggerPetstore.EnumClass](docs/EnumClass.md) + - [SwaggerPetstore.EnumTest](docs/EnumTest.md) + - [SwaggerPetstore.FormatTest](docs/FormatTest.md) + - [SwaggerPetstore.Model200Response](docs/Model200Response.md) + - [SwaggerPetstore.ModelReturn](docs/ModelReturn.md) + - [SwaggerPetstore.Name](docs/Name.md) - [SwaggerPetstore.Order](docs/Order.md) - [SwaggerPetstore.Pet](docs/Pet.md) + - [SwaggerPetstore.SpecialModelName](docs/SpecialModelName.md) - [SwaggerPetstore.Tag](docs/Tag.md) - [SwaggerPetstore.User](docs/User.md) @@ -113,12 +135,6 @@ Class | Method | HTTP request | Description ## Documentation for Authorization -### api_key - -- **Type**: API key -- **API key parameter name**: api_key -- **Location**: HTTP header - ### petstore_auth - **Type**: OAuth @@ -128,3 +144,9 @@ Class | Method | HTTP request | Description - write:pets: modify pets in your account - read:pets: read your pets +### api_key + +- **Type**: API key +- **API key parameter name**: api_key +- **Location**: HTTP header + diff --git a/samples/client/petstore/javascript-promise/docs/AnimalFarm.md b/samples/client/petstore/javascript-promise/docs/AnimalFarm.md new file mode 100644 index 00000000000..b72739a44c4 --- /dev/null +++ b/samples/client/petstore/javascript-promise/docs/AnimalFarm.md @@ -0,0 +1,7 @@ +# SwaggerPetstore.AnimalFarm + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + + diff --git a/samples/client/petstore/javascript-promise/docs/ApiResponse.md b/samples/client/petstore/javascript-promise/docs/ApiResponse.md new file mode 100644 index 00000000000..0ee678b84af --- /dev/null +++ b/samples/client/petstore/javascript-promise/docs/ApiResponse.md @@ -0,0 +1,10 @@ +# SwaggerPetstore.ApiResponse + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**code** | **Integer** | | [optional] +**type** | **String** | | [optional] +**message** | **String** | | [optional] + + diff --git a/samples/client/petstore/javascript-promise/docs/EnumClass.md b/samples/client/petstore/javascript-promise/docs/EnumClass.md new file mode 100644 index 00000000000..5159ccfb454 --- /dev/null +++ b/samples/client/petstore/javascript-promise/docs/EnumClass.md @@ -0,0 +1,7 @@ +# SwaggerPetstore.EnumClass + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + + diff --git a/samples/client/petstore/javascript-promise/docs/EnumTest.md b/samples/client/petstore/javascript-promise/docs/EnumTest.md new file mode 100644 index 00000000000..724eea8a25e --- /dev/null +++ b/samples/client/petstore/javascript-promise/docs/EnumTest.md @@ -0,0 +1,10 @@ +# SwaggerPetstore.EnumTest + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**enumString** | **String** | | [optional] +**enumInteger** | **Integer** | | [optional] +**enumNumber** | **Number** | | [optional] + + diff --git a/samples/client/petstore/javascript-promise/docs/FakeApi.md b/samples/client/petstore/javascript-promise/docs/FakeApi.md new file mode 100644 index 00000000000..83925c1266d --- /dev/null +++ b/samples/client/petstore/javascript-promise/docs/FakeApi.md @@ -0,0 +1,79 @@ +# SwaggerPetstore.FakeApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**testEndpointParameters**](FakeApi.md#testEndpointParameters) | **POST** /fake | Fake endpoint for testing various parameters + + + +# **testEndpointParameters** +> testEndpointParameters(_number, _double, _string, _byte, opts) + +Fake endpoint for testing various parameters + +Fake endpoint for testing various parameters + +### Example +```javascript +var SwaggerPetstore = require('swagger-petstore'); + +var apiInstance = new SwaggerPetstore.FakeApi(); + +var _number = 3.4; // Number | None + +var _double = 1.2; // Number | None + +var _string = "_string_example"; // String | None + +var _byte = "B"; // String | None + +var opts = { + 'integer': 56, // Integer | None + 'int32': 56, // Integer | None + 'int64': 789, // Integer | None + '_float': 3.4, // Number | None + 'binary': "B", // String | None + '_date': new Date("2013-10-20"), // Date | None + 'dateTime': new Date("2013-10-20T19:20:30+01:00"), // Date | None + 'password': "password_example" // String | None +}; +apiInstance.testEndpointParameters(_number, _double, _string, _byte, opts).then(function() { + console.log('API called successfully.'); +}, function(error) { + console.error(error); +}); + +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_number** | **Number**| None | + **_double** | **Number**| None | + **_string** | **String**| None | + **_byte** | **String**| None | + **integer** | **Integer**| None | [optional] + **int32** | **Integer**| None | [optional] + **int64** | **Integer**| None | [optional] + **_float** | **Number**| None | [optional] + **binary** | **String**| None | [optional] + **_date** | **Date**| None | [optional] + **dateTime** | **Date**| None | [optional] + **password** | **String**| None | [optional] + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + diff --git a/samples/client/petstore/javascript-promise/docs/FormatTest.md b/samples/client/petstore/javascript-promise/docs/FormatTest.md index 57a4fb132d5..9600904ee6d 100644 --- a/samples/client/petstore/javascript-promise/docs/FormatTest.md +++ b/samples/client/petstore/javascript-promise/docs/FormatTest.md @@ -10,9 +10,11 @@ Name | Type | Description | Notes **_float** | **Number** | | [optional] **_double** | **Number** | | [optional] **_string** | **String** | | [optional] -**_byte** | **String** | | [optional] +**_byte** | **String** | | **binary** | **String** | | [optional] -**_date** | **Date** | | [optional] -**dateTime** | **String** | | [optional] +**_date** | **Date** | | +**dateTime** | **Date** | | [optional] +**uuid** | **String** | | [optional] +**password** | **String** | | diff --git a/samples/client/petstore/javascript-promise/docs/InlineResponse200.md b/samples/client/petstore/javascript-promise/docs/InlineResponse200.md deleted file mode 100644 index bbb11067e9a..00000000000 --- a/samples/client/petstore/javascript-promise/docs/InlineResponse200.md +++ /dev/null @@ -1,13 +0,0 @@ -# SwaggerPetstore.InlineResponse200 - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**tags** | [**[Tag]**](Tag.md) | | [optional] -**id** | **Integer** | | -**category** | **Object** | | [optional] -**status** | **String** | pet status in the store | [optional] -**name** | **String** | | [optional] -**photoUrls** | **[String]** | | [optional] - - diff --git a/samples/client/petstore/javascript-promise/docs/Name.md b/samples/client/petstore/javascript-promise/docs/Name.md index f0e693f2f56..3bdb76be085 100644 --- a/samples/client/petstore/javascript-promise/docs/Name.md +++ b/samples/client/petstore/javascript-promise/docs/Name.md @@ -5,5 +5,6 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **name** | **Integer** | | **snakeCase** | **Integer** | | [optional] +**property** | **String** | | [optional] diff --git a/samples/client/petstore/javascript-promise/docs/Order.md b/samples/client/petstore/javascript-promise/docs/Order.md index b34b67d3a56..10503b58206 100644 --- a/samples/client/petstore/javascript-promise/docs/Order.md +++ b/samples/client/petstore/javascript-promise/docs/Order.md @@ -8,6 +8,6 @@ Name | Type | Description | Notes **quantity** | **Integer** | | [optional] **shipDate** | **Date** | | [optional] **status** | **String** | Order Status | [optional] -**complete** | **Boolean** | | [optional] +**complete** | **Boolean** | | [optional] [default to false] diff --git a/samples/client/petstore/javascript-promise/docs/PetApi.md b/samples/client/petstore/javascript-promise/docs/PetApi.md index 0a0513875eb..af66741523b 100644 --- a/samples/client/petstore/javascript-promise/docs/PetApi.md +++ b/samples/client/petstore/javascript-promise/docs/PetApi.md @@ -16,7 +16,7 @@ Method | HTTP request | Description # **addPet** -> addPet(opts) +> addPet(body) Add a new pet to the store @@ -33,10 +33,9 @@ petstore_auth.accessToken = 'YOUR ACCESS TOKEN'; var apiInstance = new SwaggerPetstore.PetApi(); -var opts = { - 'body': new SwaggerPetstore.Pet() // Pet | Pet object that needs to be added to the store -}; -apiInstance.addPet(opts).then(function() { +var body = new SwaggerPetstore.Pet(); // Pet | Pet object that needs to be added to the store + +apiInstance.addPet(body).then(function() { console.log('API called successfully.'); }, function(error) { console.error(error); @@ -48,7 +47,7 @@ apiInstance.addPet(opts).then(function() { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | [optional] + **body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | ### Return type @@ -61,7 +60,7 @@ null (empty response body) ### HTTP request headers - **Content-Type**: application/json, application/xml - - **Accept**: application/json, application/xml + - **Accept**: application/xml, application/json # **deletePet** @@ -113,15 +112,15 @@ null (empty response body) ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/json, application/xml + - **Accept**: application/xml, application/json # **findPetsByStatus** -> [Pet] findPetsByStatus(opts) +> [Pet] findPetsByStatus(status) Finds Pets by status -Multiple status values can be provided with comma seperated strings +Multiple status values can be provided with comma separated strings ### Example ```javascript @@ -134,10 +133,9 @@ petstore_auth.accessToken = 'YOUR ACCESS TOKEN'; var apiInstance = new SwaggerPetstore.PetApi(); -var opts = { - 'status': ["available"] // [String] | Status values that need to be considered for filter -}; -apiInstance.findPetsByStatus(opts).then(function(data) { +var status = ["status_example"]; // [String] | Status values that need to be considered for filter + +apiInstance.findPetsByStatus(status).then(function(data) { console.log('API called successfully. Returned data: ' + data); }, function(error) { console.error(error); @@ -149,7 +147,7 @@ apiInstance.findPetsByStatus(opts).then(function(data) { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **status** | [**[String]**](String.md)| Status values that need to be considered for filter | [optional] [default to available] + **status** | [**[String]**](String.md)| Status values that need to be considered for filter | ### Return type @@ -162,15 +160,15 @@ Name | Type | Description | Notes ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/json, application/xml + - **Accept**: application/xml, application/json # **findPetsByTags** -> [Pet] findPetsByTags(opts) +> [Pet] findPetsByTags(tags) Finds Pets by tags -Muliple tags can be provided with comma seperated strings. Use tag1, tag2, tag3 for testing. +Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. ### Example ```javascript @@ -183,10 +181,9 @@ petstore_auth.accessToken = 'YOUR ACCESS TOKEN'; var apiInstance = new SwaggerPetstore.PetApi(); -var opts = { - 'tags': ["tags_example"] // [String] | Tags to filter by -}; -apiInstance.findPetsByTags(opts).then(function(data) { +var tags = ["tags_example"]; // [String] | Tags to filter by + +apiInstance.findPetsByTags(tags).then(function(data) { console.log('API called successfully. Returned data: ' + data); }, function(error) { console.error(error); @@ -198,7 +195,7 @@ apiInstance.findPetsByTags(opts).then(function(data) { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **tags** | [**[String]**](String.md)| Tags to filter by | [optional] + **tags** | [**[String]**](String.md)| Tags to filter by | ### Return type @@ -211,7 +208,7 @@ Name | Type | Description | Notes ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/json, application/xml + - **Accept**: application/xml, application/json # **getPetById** @@ -219,7 +216,7 @@ Name | Type | Description | Notes Find pet by ID -Returns a pet when ID < 10. ID > 10 or nonintegers will simulate API error conditions +Returns a single pet ### Example ```javascript @@ -232,13 +229,9 @@ api_key.apiKey = 'YOUR API KEY'; // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null) //api_key.apiKeyPrefix = 'Token'; -// Configure OAuth2 access token for authorization: petstore_auth -var petstore_auth = defaultClient.authentications['petstore_auth']; -petstore_auth.accessToken = 'YOUR ACCESS TOKEN'; - var apiInstance = new SwaggerPetstore.PetApi(); -var petId = 789; // Integer | ID of pet that needs to be fetched +var petId = 789; // Integer | ID of pet to return apiInstance.getPetById(petId).then(function(data) { console.log('API called successfully. Returned data: ' + data); @@ -252,7 +245,7 @@ apiInstance.getPetById(petId).then(function(data) { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **petId** | **Integer**| ID of pet that needs to be fetched | + **petId** | **Integer**| ID of pet to return | ### Return type @@ -260,16 +253,16 @@ Name | Type | Description | Notes ### Authorization -[api_key](../README.md#api_key), [petstore_auth](../README.md#petstore_auth) +[api_key](../README.md#api_key) ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/json, application/xml + - **Accept**: application/xml, application/json # **updatePet** -> updatePet(opts) +> updatePet(body) Update an existing pet @@ -286,10 +279,9 @@ petstore_auth.accessToken = 'YOUR ACCESS TOKEN'; var apiInstance = new SwaggerPetstore.PetApi(); -var opts = { - 'body': new SwaggerPetstore.Pet() // Pet | Pet object that needs to be added to the store -}; -apiInstance.updatePet(opts).then(function() { +var body = new SwaggerPetstore.Pet(); // Pet | Pet object that needs to be added to the store + +apiInstance.updatePet(body).then(function() { console.log('API called successfully.'); }, function(error) { console.error(error); @@ -301,7 +293,7 @@ apiInstance.updatePet(opts).then(function() { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | [optional] + **body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | ### Return type @@ -314,7 +306,7 @@ null (empty response body) ### HTTP request headers - **Content-Type**: application/json, application/xml - - **Accept**: application/json, application/xml + - **Accept**: application/xml, application/json # **updatePetWithForm** @@ -335,7 +327,7 @@ petstore_auth.accessToken = 'YOUR ACCESS TOKEN'; var apiInstance = new SwaggerPetstore.PetApi(); -var petId = "petId_example"; // String | ID of pet that needs to be updated +var petId = 789; // Integer | ID of pet that needs to be updated var opts = { 'name': "name_example", // String | Updated name of the pet @@ -353,7 +345,7 @@ apiInstance.updatePetWithForm(petId, opts).then(function() { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **petId** | **String**| ID of pet that needs to be updated | + **petId** | **Integer**| ID of pet that needs to be updated | **name** | **String**| Updated name of the pet | [optional] **status** | **String**| Updated status of the pet | [optional] @@ -368,11 +360,11 @@ null (empty response body) ### HTTP request headers - **Content-Type**: application/x-www-form-urlencoded - - **Accept**: application/json, application/xml + - **Accept**: application/xml, application/json # **uploadFile** -> uploadFile(petId, opts) +> ApiResponse uploadFile(petId, opts) uploads an image @@ -395,8 +387,8 @@ var opts = { 'additionalMetadata': "additionalMetadata_example", // String | Additional data to pass to server 'file': "/path/to/file.txt" // File | file to upload }; -apiInstance.uploadFile(petId, opts).then(function() { - console.log('API called successfully.'); +apiInstance.uploadFile(petId, opts).then(function(data) { + console.log('API called successfully. Returned data: ' + data); }, function(error) { console.error(error); }); @@ -413,7 +405,7 @@ Name | Type | Description | Notes ### Return type -null (empty response body) +[**ApiResponse**](ApiResponse.md) ### Authorization @@ -422,5 +414,5 @@ null (empty response body) ### HTTP request headers - **Content-Type**: multipart/form-data - - **Accept**: application/json, application/xml + - **Accept**: application/json diff --git a/samples/client/petstore/javascript-promise/docs/StoreApi.md b/samples/client/petstore/javascript-promise/docs/StoreApi.md index ce57b57bc4f..0d96cfc9e34 100644 --- a/samples/client/petstore/javascript-promise/docs/StoreApi.md +++ b/samples/client/petstore/javascript-promise/docs/StoreApi.md @@ -51,7 +51,7 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/json, application/xml + - **Accept**: application/xml, application/json # **getInventory** @@ -95,7 +95,7 @@ This endpoint does not need any parameter. ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/json, application/xml + - **Accept**: application/json # **getOrderById** @@ -111,7 +111,7 @@ var SwaggerPetstore = require('swagger-petstore'); var apiInstance = new SwaggerPetstore.StoreApi(); -var orderId = "orderId_example"; // String | ID of pet that needs to be fetched +var orderId = 789; // Integer | ID of pet that needs to be fetched apiInstance.getOrderById(orderId).then(function(data) { console.log('API called successfully. Returned data: ' + data); @@ -125,7 +125,7 @@ apiInstance.getOrderById(orderId).then(function(data) { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **orderId** | **String**| ID of pet that needs to be fetched | + **orderId** | **Integer**| ID of pet that needs to be fetched | ### Return type @@ -138,11 +138,11 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/json, application/xml + - **Accept**: application/xml, application/json # **placeOrder** -> Order placeOrder(opts) +> Order placeOrder(body) Place an order for a pet @@ -154,10 +154,9 @@ var SwaggerPetstore = require('swagger-petstore'); var apiInstance = new SwaggerPetstore.StoreApi(); -var opts = { - 'body': new SwaggerPetstore.Order() // Order | order placed for purchasing the pet -}; -apiInstance.placeOrder(opts).then(function(data) { +var body = new SwaggerPetstore.Order(); // Order | order placed for purchasing the pet + +apiInstance.placeOrder(body).then(function(data) { console.log('API called successfully. Returned data: ' + data); }, function(error) { console.error(error); @@ -169,7 +168,7 @@ apiInstance.placeOrder(opts).then(function(data) { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **body** | [**Order**](Order.md)| order placed for purchasing the pet | [optional] + **body** | [**Order**](Order.md)| order placed for purchasing the pet | ### Return type @@ -182,5 +181,5 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/json, application/xml + - **Accept**: application/xml, application/json diff --git a/samples/client/petstore/javascript-promise/docs/UserApi.md b/samples/client/petstore/javascript-promise/docs/UserApi.md index 99b56e9cf3d..2634d41e611 100644 --- a/samples/client/petstore/javascript-promise/docs/UserApi.md +++ b/samples/client/petstore/javascript-promise/docs/UserApi.md @@ -16,7 +16,7 @@ Method | HTTP request | Description # **createUser** -> createUser(opts) +> createUser(body) Create user @@ -28,10 +28,9 @@ var SwaggerPetstore = require('swagger-petstore'); var apiInstance = new SwaggerPetstore.UserApi(); -var opts = { - 'body': new SwaggerPetstore.User() // User | Created user object -}; -apiInstance.createUser(opts).then(function() { +var body = new SwaggerPetstore.User(); // User | Created user object + +apiInstance.createUser(body).then(function() { console.log('API called successfully.'); }, function(error) { console.error(error); @@ -43,7 +42,7 @@ apiInstance.createUser(opts).then(function() { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **body** | [**User**](User.md)| Created user object | [optional] + **body** | [**User**](User.md)| Created user object | ### Return type @@ -56,11 +55,11 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/json, application/xml + - **Accept**: application/xml, application/json # **createUsersWithArrayInput** -> createUsersWithArrayInput(opts) +> createUsersWithArrayInput(body) Creates list of users with given input array @@ -72,10 +71,9 @@ var SwaggerPetstore = require('swagger-petstore'); var apiInstance = new SwaggerPetstore.UserApi(); -var opts = { - 'body': [new SwaggerPetstore.User()] // [User] | List of user object -}; -apiInstance.createUsersWithArrayInput(opts).then(function() { +var body = [new SwaggerPetstore.User()]; // [User] | List of user object + +apiInstance.createUsersWithArrayInput(body).then(function() { console.log('API called successfully.'); }, function(error) { console.error(error); @@ -87,7 +85,7 @@ apiInstance.createUsersWithArrayInput(opts).then(function() { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **body** | [**[User]**](User.md)| List of user object | [optional] + **body** | [**[User]**](User.md)| List of user object | ### Return type @@ -100,11 +98,11 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/json, application/xml + - **Accept**: application/xml, application/json # **createUsersWithListInput** -> createUsersWithListInput(opts) +> createUsersWithListInput(body) Creates list of users with given input array @@ -116,10 +114,9 @@ var SwaggerPetstore = require('swagger-petstore'); var apiInstance = new SwaggerPetstore.UserApi(); -var opts = { - 'body': [new SwaggerPetstore.User()] // [User] | List of user object -}; -apiInstance.createUsersWithListInput(opts).then(function() { +var body = [new SwaggerPetstore.User()]; // [User] | List of user object + +apiInstance.createUsersWithListInput(body).then(function() { console.log('API called successfully.'); }, function(error) { console.error(error); @@ -131,7 +128,7 @@ apiInstance.createUsersWithListInput(opts).then(function() { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **body** | [**[User]**](User.md)| List of user object | [optional] + **body** | [**[User]**](User.md)| List of user object | ### Return type @@ -144,7 +141,7 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/json, application/xml + - **Accept**: application/xml, application/json # **deleteUser** @@ -187,7 +184,7 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/json, application/xml + - **Accept**: application/xml, application/json # **getUserByName** @@ -230,11 +227,11 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/json, application/xml + - **Accept**: application/xml, application/json # **loginUser** -> 'String' loginUser(opts) +> 'String' loginUser(username, password) Logs user into the system @@ -246,11 +243,11 @@ var SwaggerPetstore = require('swagger-petstore'); var apiInstance = new SwaggerPetstore.UserApi(); -var opts = { - 'username': "username_example", // String | The user name for login - 'password': "password_example" // String | The password for login in clear text -}; -apiInstance.loginUser(opts).then(function(data) { +var username = "username_example"; // String | The user name for login + +var password = "password_example"; // String | The password for login in clear text + +apiInstance.loginUser(username, password).then(function(data) { console.log('API called successfully. Returned data: ' + data); }, function(error) { console.error(error); @@ -262,8 +259,8 @@ apiInstance.loginUser(opts).then(function(data) { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **username** | **String**| The user name for login | [optional] - **password** | **String**| The password for login in clear text | [optional] + **username** | **String**| The user name for login | + **password** | **String**| The password for login in clear text | ### Return type @@ -276,7 +273,7 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/json, application/xml + - **Accept**: application/xml, application/json # **logoutUser** @@ -313,11 +310,11 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/json, application/xml + - **Accept**: application/xml, application/json # **updateUser** -> updateUser(username, opts) +> updateUser(username, body) Updated user @@ -331,10 +328,9 @@ var apiInstance = new SwaggerPetstore.UserApi(); var username = "username_example"; // String | name that need to be deleted -var opts = { - 'body': new SwaggerPetstore.User() // User | Updated user object -}; -apiInstance.updateUser(username, opts).then(function() { +var body = new SwaggerPetstore.User(); // User | Updated user object + +apiInstance.updateUser(username, body).then(function() { console.log('API called successfully.'); }, function(error) { console.error(error); @@ -347,7 +343,7 @@ apiInstance.updateUser(username, opts).then(function() { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **username** | **String**| name that need to be deleted | - **body** | [**User**](User.md)| Updated user object | [optional] + **body** | [**User**](User.md)| Updated user object | ### Return type @@ -360,5 +356,5 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/json, application/xml + - **Accept**: application/xml, application/json diff --git a/samples/client/petstore/javascript-promise/package.json b/samples/client/petstore/javascript-promise/package.json index 72a48ac71de..8ff02a78ae3 100644 --- a/samples/client/petstore/javascript-promise/package.json +++ b/samples/client/petstore/javascript-promise/package.json @@ -1,7 +1,7 @@ { "name": "swagger-petstore", "version": "1.0.0", - "description": "This is a sample server Petstore server. You can find out more about Swagger at http://swagger.io or on irc.freenode.net, #swagger. For this sample, you can use the api key \"special-key\" to test the authorization filters", + "description": "This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose.", "license": "Apache 2.0", "main": "src/index.js", "scripts": { diff --git a/samples/client/petstore/javascript-promise/src/ApiClient.js b/samples/client/petstore/javascript-promise/src/ApiClient.js index ac0b172ff22..4033ad41e00 100644 --- a/samples/client/petstore/javascript-promise/src/ApiClient.js +++ b/samples/client/petstore/javascript-promise/src/ApiClient.js @@ -40,8 +40,8 @@ * @type {Array.} */ this.authentications = { - 'api_key': {type: 'apiKey', 'in': 'header', name: 'api_key'}, - 'petstore_auth': {type: 'oauth2'} + 'petstore_auth': {type: 'oauth2'}, + 'api_key': {type: 'apiKey', 'in': 'header', name: 'api_key'} }; /** * The default HTTP headers to be included for all API calls. diff --git a/samples/client/petstore/javascript-promise/src/api/FakeApi.js b/samples/client/petstore/javascript-promise/src/api/FakeApi.js new file mode 100644 index 00000000000..84d262725a2 --- /dev/null +++ b/samples/client/petstore/javascript-promise/src/api/FakeApi.js @@ -0,0 +1,113 @@ +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['ApiClient'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(require('../ApiClient')); + } else { + // Browser globals (root is window) + if (!root.SwaggerPetstore) { + root.SwaggerPetstore = {}; + } + root.SwaggerPetstore.FakeApi = factory(root.SwaggerPetstore.ApiClient); + } +}(this, function(ApiClient) { + 'use strict'; + + /** + * Fake service. + * @module api/FakeApi + * @version 1.0.0 + */ + + /** + * Constructs a new FakeApi. + * @alias module:api/FakeApi + * @class + * @param {module:ApiClient} apiClient Optional API client implementation to use, + * default to {@link module:ApiClient#instance} if unspecified. + */ + var exports = function(apiClient) { + this.apiClient = apiClient || ApiClient.instance; + + + + /** + * Fake endpoint for testing various parameters + * Fake endpoint for testing various parameters + * @param {Number} _number None + * @param {Number} _double None + * @param {String} _string None + * @param {String} _byte None + * @param {Object} opts Optional parameters + * @param {Integer} opts.integer None + * @param {Integer} opts.int32 None + * @param {Integer} opts.int64 None + * @param {Number} opts._float None + * @param {String} opts.binary None + * @param {Date} opts._date None + * @param {Date} opts.dateTime None + * @param {String} opts.password None + */ + this.testEndpointParameters = function(_number, _double, _string, _byte, opts) { + opts = opts || {}; + var postBody = null; + + // verify the required parameter '_number' is set + if (_number == undefined || _number == null) { + throw "Missing the required parameter '_number' when calling testEndpointParameters"; + } + + // verify the required parameter '_double' is set + if (_double == undefined || _double == null) { + throw "Missing the required parameter '_double' when calling testEndpointParameters"; + } + + // verify the required parameter '_string' is set + if (_string == undefined || _string == null) { + throw "Missing the required parameter '_string' when calling testEndpointParameters"; + } + + // verify the required parameter '_byte' is set + if (_byte == undefined || _byte == null) { + throw "Missing the required parameter '_byte' when calling testEndpointParameters"; + } + + + var pathParams = { + }; + var queryParams = { + }; + var headerParams = { + }; + var formParams = { + 'integer': opts['integer'], + 'int32': opts['int32'], + 'int64': opts['int64'], + 'number': _number, + 'float': opts['_float'], + 'double': _double, + 'string': _string, + 'byte': _byte, + 'binary': opts['binary'], + 'date': opts['_date'], + 'dateTime': opts['dateTime'], + 'password': opts['password'] + }; + + var authNames = []; + var contentTypes = []; + var accepts = ['application/xml', 'application/json']; + var returnType = null; + + return this.apiClient.callApi( + '/fake', 'POST', + pathParams, queryParams, headerParams, formParams, postBody, + authNames, contentTypes, accepts, returnType + ); + } + }; + + return exports; +})); diff --git a/samples/client/petstore/javascript-promise/src/api/PetApi.js b/samples/client/petstore/javascript-promise/src/api/PetApi.js index 1b0855e5287..572fe19dbf2 100644 --- a/samples/client/petstore/javascript-promise/src/api/PetApi.js +++ b/samples/client/petstore/javascript-promise/src/api/PetApi.js @@ -1,18 +1,18 @@ (function(root, factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. - define(['ApiClient', 'model/Pet'], factory); + define(['ApiClient', 'model/Pet', 'model/ApiResponse'], factory); } else if (typeof module === 'object' && module.exports) { // CommonJS-like environments that support module.exports, like Node. - module.exports = factory(require('../ApiClient'), require('../model/Pet')); + module.exports = factory(require('../ApiClient'), require('../model/Pet'), require('../model/ApiResponse')); } else { // Browser globals (root is window) if (!root.SwaggerPetstore) { root.SwaggerPetstore = {}; } - root.SwaggerPetstore.PetApi = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.Pet); + root.SwaggerPetstore.PetApi = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.Pet, root.SwaggerPetstore.ApiResponse); } -}(this, function(ApiClient, Pet) { +}(this, function(ApiClient, Pet, ApiResponse) { 'use strict'; /** @@ -36,12 +36,15 @@ /** * Add a new pet to the store * - * @param {Object} opts Optional parameters - * @param {module:model/Pet} opts.body Pet object that needs to be added to the store + * @param {module:model/Pet} body Pet object that needs to be added to the store */ - this.addPet = function(opts) { - opts = opts || {}; - var postBody = opts['body']; + this.addPet = function(body) { + var postBody = body; + + // verify the required parameter 'body' is set + if (body == undefined || body == null) { + throw "Missing the required parameter 'body' when calling addPet"; + } var pathParams = { @@ -55,7 +58,7 @@ var authNames = ['petstore_auth']; var contentTypes = ['application/json', 'application/xml']; - var accepts = ['application/json', 'application/xml']; + var accepts = ['application/xml', 'application/json']; var returnType = null; return this.apiClient.callApi( @@ -96,7 +99,7 @@ var authNames = ['petstore_auth']; var contentTypes = []; - var accepts = ['application/json', 'application/xml']; + var accepts = ['application/xml', 'application/json']; var returnType = null; return this.apiClient.callApi( @@ -109,20 +112,23 @@ /** * Finds Pets by status - * Multiple status values can be provided with comma seperated strings - * @param {Object} opts Optional parameters - * @param {Array.} opts.status Status values that need to be considered for filter (default to available) + * Multiple status values can be provided with comma separated strings + * @param {Array.} status Status values that need to be considered for filter * data is of type: {Array.} */ - this.findPetsByStatus = function(opts) { - opts = opts || {}; + this.findPetsByStatus = function(status) { var postBody = null; + // verify the required parameter 'status' is set + if (status == undefined || status == null) { + throw "Missing the required parameter 'status' when calling findPetsByStatus"; + } + var pathParams = { }; var queryParams = { - 'status': this.apiClient.buildCollectionParam(opts['status'], 'multi') + 'status': this.apiClient.buildCollectionParam(status, 'csv') }; var headerParams = { }; @@ -131,7 +137,7 @@ var authNames = ['petstore_auth']; var contentTypes = []; - var accepts = ['application/json', 'application/xml']; + var accepts = ['application/xml', 'application/json']; var returnType = [Pet]; return this.apiClient.callApi( @@ -144,20 +150,23 @@ /** * Finds Pets by tags - * Muliple tags can be provided with comma seperated strings. Use tag1, tag2, tag3 for testing. - * @param {Object} opts Optional parameters - * @param {Array.} opts.tags Tags to filter by + * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * @param {Array.} tags Tags to filter by * data is of type: {Array.} */ - this.findPetsByTags = function(opts) { - opts = opts || {}; + this.findPetsByTags = function(tags) { var postBody = null; + // verify the required parameter 'tags' is set + if (tags == undefined || tags == null) { + throw "Missing the required parameter 'tags' when calling findPetsByTags"; + } + var pathParams = { }; var queryParams = { - 'tags': this.apiClient.buildCollectionParam(opts['tags'], 'multi') + 'tags': this.apiClient.buildCollectionParam(tags, 'csv') }; var headerParams = { }; @@ -166,7 +175,7 @@ var authNames = ['petstore_auth']; var contentTypes = []; - var accepts = ['application/json', 'application/xml']; + var accepts = ['application/xml', 'application/json']; var returnType = [Pet]; return this.apiClient.callApi( @@ -179,8 +188,8 @@ /** * Find pet by ID - * Returns a pet when ID < 10. ID > 10 or nonintegers will simulate API error conditions - * @param {Integer} petId ID of pet that needs to be fetched + * Returns a single pet + * @param {Integer} petId ID of pet to return * data is of type: {module:model/Pet} */ this.getPetById = function(petId) { @@ -202,9 +211,9 @@ var formParams = { }; - var authNames = ['api_key', 'petstore_auth']; + var authNames = ['api_key']; var contentTypes = []; - var accepts = ['application/json', 'application/xml']; + var accepts = ['application/xml', 'application/json']; var returnType = Pet; return this.apiClient.callApi( @@ -218,12 +227,15 @@ /** * Update an existing pet * - * @param {Object} opts Optional parameters - * @param {module:model/Pet} opts.body Pet object that needs to be added to the store + * @param {module:model/Pet} body Pet object that needs to be added to the store */ - this.updatePet = function(opts) { - opts = opts || {}; - var postBody = opts['body']; + this.updatePet = function(body) { + var postBody = body; + + // verify the required parameter 'body' is set + if (body == undefined || body == null) { + throw "Missing the required parameter 'body' when calling updatePet"; + } var pathParams = { @@ -237,7 +249,7 @@ var authNames = ['petstore_auth']; var contentTypes = ['application/json', 'application/xml']; - var accepts = ['application/json', 'application/xml']; + var accepts = ['application/xml', 'application/json']; var returnType = null; return this.apiClient.callApi( @@ -251,7 +263,7 @@ /** * Updates a pet in the store with form data * - * @param {String} petId ID of pet that needs to be updated + * @param {Integer} petId ID of pet that needs to be updated * @param {Object} opts Optional parameters * @param {String} opts.name Updated name of the pet * @param {String} opts.status Updated status of the pet @@ -280,7 +292,7 @@ var authNames = ['petstore_auth']; var contentTypes = ['application/x-www-form-urlencoded']; - var accepts = ['application/json', 'application/xml']; + var accepts = ['application/xml', 'application/json']; var returnType = null; return this.apiClient.callApi( @@ -298,6 +310,7 @@ * @param {Object} opts Optional parameters * @param {String} opts.additionalMetadata Additional data to pass to server * @param {File} opts.file file to upload + * data is of type: {module:model/ApiResponse} */ this.uploadFile = function(petId, opts) { opts = opts || {}; @@ -323,8 +336,8 @@ var authNames = ['petstore_auth']; var contentTypes = ['multipart/form-data']; - var accepts = ['application/json', 'application/xml']; - var returnType = null; + var accepts = ['application/json']; + var returnType = ApiResponse; return this.apiClient.callApi( '/pet/{petId}/uploadImage', 'POST', diff --git a/samples/client/petstore/javascript-promise/src/api/StoreApi.js b/samples/client/petstore/javascript-promise/src/api/StoreApi.js index 6c6f7ea5dc4..f8b889256b2 100644 --- a/samples/client/petstore/javascript-promise/src/api/StoreApi.js +++ b/samples/client/petstore/javascript-promise/src/api/StoreApi.js @@ -59,7 +59,7 @@ var authNames = []; var contentTypes = []; - var accepts = ['application/json', 'application/xml']; + var accepts = ['application/xml', 'application/json']; var returnType = null; return this.apiClient.callApi( @@ -90,7 +90,7 @@ var authNames = ['api_key']; var contentTypes = []; - var accepts = ['application/json', 'application/xml']; + var accepts = ['application/json']; var returnType = {'String': 'Integer'}; return this.apiClient.callApi( @@ -104,7 +104,7 @@ /** * Find purchase order by ID * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions - * @param {String} orderId ID of pet that needs to be fetched + * @param {Integer} orderId ID of pet that needs to be fetched * data is of type: {module:model/Order} */ this.getOrderById = function(orderId) { @@ -128,7 +128,7 @@ var authNames = []; var contentTypes = []; - var accepts = ['application/json', 'application/xml']; + var accepts = ['application/xml', 'application/json']; var returnType = Order; return this.apiClient.callApi( @@ -142,13 +142,16 @@ /** * Place an order for a pet * - * @param {Object} opts Optional parameters - * @param {module:model/Order} opts.body order placed for purchasing the pet + * @param {module:model/Order} body order placed for purchasing the pet * data is of type: {module:model/Order} */ - this.placeOrder = function(opts) { - opts = opts || {}; - var postBody = opts['body']; + this.placeOrder = function(body) { + var postBody = body; + + // verify the required parameter 'body' is set + if (body == undefined || body == null) { + throw "Missing the required parameter 'body' when calling placeOrder"; + } var pathParams = { @@ -162,7 +165,7 @@ var authNames = []; var contentTypes = []; - var accepts = ['application/json', 'application/xml']; + var accepts = ['application/xml', 'application/json']; var returnType = Order; return this.apiClient.callApi( diff --git a/samples/client/petstore/javascript-promise/src/api/UserApi.js b/samples/client/petstore/javascript-promise/src/api/UserApi.js index e58ee580d3b..ff8f745735d 100644 --- a/samples/client/petstore/javascript-promise/src/api/UserApi.js +++ b/samples/client/petstore/javascript-promise/src/api/UserApi.js @@ -36,12 +36,15 @@ /** * Create user * This can only be done by the logged in user. - * @param {Object} opts Optional parameters - * @param {module:model/User} opts.body Created user object + * @param {module:model/User} body Created user object */ - this.createUser = function(opts) { - opts = opts || {}; - var postBody = opts['body']; + this.createUser = function(body) { + var postBody = body; + + // verify the required parameter 'body' is set + if (body == undefined || body == null) { + throw "Missing the required parameter 'body' when calling createUser"; + } var pathParams = { @@ -55,7 +58,7 @@ var authNames = []; var contentTypes = []; - var accepts = ['application/json', 'application/xml']; + var accepts = ['application/xml', 'application/json']; var returnType = null; return this.apiClient.callApi( @@ -69,12 +72,15 @@ /** * Creates list of users with given input array * - * @param {Object} opts Optional parameters - * @param {Array.} opts.body List of user object + * @param {Array.} body List of user object */ - this.createUsersWithArrayInput = function(opts) { - opts = opts || {}; - var postBody = opts['body']; + this.createUsersWithArrayInput = function(body) { + var postBody = body; + + // verify the required parameter 'body' is set + if (body == undefined || body == null) { + throw "Missing the required parameter 'body' when calling createUsersWithArrayInput"; + } var pathParams = { @@ -88,7 +94,7 @@ var authNames = []; var contentTypes = []; - var accepts = ['application/json', 'application/xml']; + var accepts = ['application/xml', 'application/json']; var returnType = null; return this.apiClient.callApi( @@ -102,12 +108,15 @@ /** * Creates list of users with given input array * - * @param {Object} opts Optional parameters - * @param {Array.} opts.body List of user object + * @param {Array.} body List of user object */ - this.createUsersWithListInput = function(opts) { - opts = opts || {}; - var postBody = opts['body']; + this.createUsersWithListInput = function(body) { + var postBody = body; + + // verify the required parameter 'body' is set + if (body == undefined || body == null) { + throw "Missing the required parameter 'body' when calling createUsersWithListInput"; + } var pathParams = { @@ -121,7 +130,7 @@ var authNames = []; var contentTypes = []; - var accepts = ['application/json', 'application/xml']; + var accepts = ['application/xml', 'application/json']; var returnType = null; return this.apiClient.callApi( @@ -158,7 +167,7 @@ var authNames = []; var contentTypes = []; - var accepts = ['application/json', 'application/xml']; + var accepts = ['application/xml', 'application/json']; var returnType = null; return this.apiClient.callApi( @@ -196,7 +205,7 @@ var authNames = []; var contentTypes = []; - var accepts = ['application/json', 'application/xml']; + var accepts = ['application/xml', 'application/json']; var returnType = User; return this.apiClient.callApi( @@ -210,21 +219,29 @@ /** * Logs user into the system * - * @param {Object} opts Optional parameters - * @param {String} opts.username The user name for login - * @param {String} opts.password The password for login in clear text + * @param {String} username The user name for login + * @param {String} password The password for login in clear text * data is of type: {'String'} */ - this.loginUser = function(opts) { - opts = opts || {}; + this.loginUser = function(username, password) { var postBody = null; + // verify the required parameter 'username' is set + if (username == undefined || username == null) { + throw "Missing the required parameter 'username' when calling loginUser"; + } + + // verify the required parameter 'password' is set + if (password == undefined || password == null) { + throw "Missing the required parameter 'password' when calling loginUser"; + } + var pathParams = { }; var queryParams = { - 'username': opts['username'], - 'password': opts['password'] + 'username': username, + 'password': password }; var headerParams = { }; @@ -233,7 +250,7 @@ var authNames = []; var contentTypes = []; - var accepts = ['application/json', 'application/xml']; + var accepts = ['application/xml', 'application/json']; var returnType = 'String'; return this.apiClient.callApi( @@ -263,7 +280,7 @@ var authNames = []; var contentTypes = []; - var accepts = ['application/json', 'application/xml']; + var accepts = ['application/xml', 'application/json']; var returnType = null; return this.apiClient.callApi( @@ -278,18 +295,21 @@ * Updated user * This can only be done by the logged in user. * @param {String} username name that need to be deleted - * @param {Object} opts Optional parameters - * @param {module:model/User} opts.body Updated user object + * @param {module:model/User} body Updated user object */ - this.updateUser = function(username, opts) { - opts = opts || {}; - var postBody = opts['body']; + this.updateUser = function(username, body) { + var postBody = body; // verify the required parameter 'username' is set if (username == undefined || username == null) { throw "Missing the required parameter 'username' when calling updateUser"; } + // verify the required parameter 'body' is set + if (body == undefined || body == null) { + throw "Missing the required parameter 'body' when calling updateUser"; + } + var pathParams = { 'username': username @@ -303,7 +323,7 @@ var authNames = []; var contentTypes = []; - var accepts = ['application/json', 'application/xml']; + var accepts = ['application/xml', 'application/json']; var returnType = null; return this.apiClient.callApi( diff --git a/samples/client/petstore/javascript-promise/src/index.js b/samples/client/petstore/javascript-promise/src/index.js index b0d17b3ef3a..727b4782f45 100644 --- a/samples/client/petstore/javascript-promise/src/index.js +++ b/samples/client/petstore/javascript-promise/src/index.js @@ -1,16 +1,16 @@ (function(factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. - define(['ApiClient', 'model/Category', 'model/Order', 'model/Pet', 'model/Tag', 'model/User', 'api/PetApi', 'api/StoreApi', 'api/UserApi'], factory); + define(['ApiClient', 'model/Animal', 'model/AnimalFarm', 'model/ApiResponse', 'model/Cat', 'model/Category', 'model/Dog', 'model/EnumClass', 'model/EnumTest', 'model/FormatTest', 'model/Model200Response', 'model/ModelReturn', 'model/Name', 'model/Order', 'model/Pet', 'model/SpecialModelName', 'model/Tag', 'model/User', 'api/FakeApi', 'api/PetApi', 'api/StoreApi', 'api/UserApi'], factory); } else if (typeof module === 'object' && module.exports) { // CommonJS-like environments that support module.exports, like Node. - module.exports = factory(require('./ApiClient'), require('./model/Category'), require('./model/Order'), require('./model/Pet'), require('./model/Tag'), require('./model/User'), require('./api/PetApi'), require('./api/StoreApi'), require('./api/UserApi')); + module.exports = factory(require('./ApiClient'), require('./model/Animal'), require('./model/AnimalFarm'), require('./model/ApiResponse'), require('./model/Cat'), require('./model/Category'), require('./model/Dog'), require('./model/EnumClass'), require('./model/EnumTest'), require('./model/FormatTest'), require('./model/Model200Response'), require('./model/ModelReturn'), require('./model/Name'), require('./model/Order'), require('./model/Pet'), require('./model/SpecialModelName'), require('./model/Tag'), require('./model/User'), require('./api/FakeApi'), require('./api/PetApi'), require('./api/StoreApi'), require('./api/UserApi')); } -}(function(ApiClient, Category, Order, Pet, Tag, User, PetApi, StoreApi, UserApi) { +}(function(ApiClient, Animal, AnimalFarm, ApiResponse, Cat, Category, Dog, EnumClass, EnumTest, FormatTest, Model200Response, ModelReturn, Name, Order, Pet, SpecialModelName, Tag, User, FakeApi, PetApi, StoreApi, UserApi) { 'use strict'; /** - * This is a sample server Petstore server. You can find out more about Swagger at <a href=\"http://swagger.io\">http://swagger.io</a> or on irc.freenode.net, #swagger. For this sample, you can use the api key \"special-key\" to test the authorization filters.
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose..
* The index module provides access to constructors for all the classes which comprise the public API. *

* An AMD (recommended!) or CommonJS application will generally do something equivalent to the following: @@ -46,11 +46,66 @@ * @property {module:ApiClient} */ ApiClient: ApiClient, + /** + * The Animal model constructor. + * @property {module:model/Animal} + */ + Animal: Animal, + /** + * The AnimalFarm model constructor. + * @property {module:model/AnimalFarm} + */ + AnimalFarm: AnimalFarm, + /** + * The ApiResponse model constructor. + * @property {module:model/ApiResponse} + */ + ApiResponse: ApiResponse, + /** + * The Cat model constructor. + * @property {module:model/Cat} + */ + Cat: Cat, /** * The Category model constructor. * @property {module:model/Category} */ Category: Category, + /** + * The Dog model constructor. + * @property {module:model/Dog} + */ + Dog: Dog, + /** + * The EnumClass model constructor. + * @property {module:model/EnumClass} + */ + EnumClass: EnumClass, + /** + * The EnumTest model constructor. + * @property {module:model/EnumTest} + */ + EnumTest: EnumTest, + /** + * The FormatTest model constructor. + * @property {module:model/FormatTest} + */ + FormatTest: FormatTest, + /** + * The Model200Response model constructor. + * @property {module:model/Model200Response} + */ + Model200Response: Model200Response, + /** + * The ModelReturn model constructor. + * @property {module:model/ModelReturn} + */ + ModelReturn: ModelReturn, + /** + * The Name model constructor. + * @property {module:model/Name} + */ + Name: Name, /** * The Order model constructor. * @property {module:model/Order} @@ -61,6 +116,11 @@ * @property {module:model/Pet} */ Pet: Pet, + /** + * The SpecialModelName model constructor. + * @property {module:model/SpecialModelName} + */ + SpecialModelName: SpecialModelName, /** * The Tag model constructor. * @property {module:model/Tag} @@ -71,6 +131,11 @@ * @property {module:model/User} */ User: User, + /** + * The FakeApi service constructor. + * @property {module:api/FakeApi} + */ + FakeApi: FakeApi, /** * The PetApi service constructor. * @property {module:api/PetApi} diff --git a/samples/client/petstore/javascript-promise/src/model/Animal.js b/samples/client/petstore/javascript-promise/src/model/Animal.js index 674471a30ee..e42874c669b 100644 --- a/samples/client/petstore/javascript-promise/src/model/Animal.js +++ b/samples/client/petstore/javascript-promise/src/model/Animal.js @@ -1,7 +1,7 @@ (function(root, factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. - define(['../ApiClient'], factory); + define(['ApiClient'], factory); } else if (typeof module === 'object' && module.exports) { // CommonJS-like environments that support module.exports, like Node. module.exports = factory(require('../ApiClient')); @@ -15,6 +15,9 @@ }(this, function(ApiClient) { 'use strict'; + + + /** * The Animal model module. * @module model/Animal @@ -28,8 +31,9 @@ * @param className */ var exports = function(className) { + var _this = this; - this['className'] = className; + _this['className'] = className; }; /** @@ -40,7 +44,7 @@ * @return {module:model/Animal} The populated Animal instance. */ exports.constructFromObject = function(data, obj) { - if (data) { + if (data) { obj = obj || new exports(); if (data.hasOwnProperty('className')) { @@ -50,7 +54,6 @@ return obj; } - /** * @member {String} className */ @@ -61,3 +64,5 @@ return exports; })); + + diff --git a/samples/client/petstore/javascript-promise/src/model/AnimalFarm.js b/samples/client/petstore/javascript-promise/src/model/AnimalFarm.js new file mode 100644 index 00000000000..d5f6aa2a424 --- /dev/null +++ b/samples/client/petstore/javascript-promise/src/model/AnimalFarm.js @@ -0,0 +1,64 @@ +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['ApiClient', 'model/Animal'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(require('../ApiClient'), require('./Animal')); + } else { + // Browser globals (root is window) + if (!root.SwaggerPetstore) { + root.SwaggerPetstore = {}; + } + root.SwaggerPetstore.AnimalFarm = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.Animal); + } +}(this, function(ApiClient, Animal) { + 'use strict'; + + + + + /** + * The AnimalFarm model module. + * @module model/AnimalFarm + * @version 1.0.0 + */ + + /** + * Constructs a new AnimalFarm. + * @alias module:model/AnimalFarm + * @class + * @extends Array + */ + var exports = function() { + var _this = this; + _this = new Array(); + Object.setPrototypeOf(_this, exports); + + return _this; + }; + + /** + * Constructs a AnimalFarm from a plain JavaScript object, optionally creating a new instance. + * Copies all relevant properties from data to obj if supplied or a new instance if not. + * @param {Object} data The plain JavaScript object bearing properties of interest. + * @param {module:model/AnimalFarm} obj Optional instance to populate. + * @return {module:model/AnimalFarm} The populated AnimalFarm instance. + */ + exports.constructFromObject = function(data, obj) { + if (data) { + obj = obj || new exports(); + ApiClient.constructFromObject(data, obj, Animal); + + } + return obj; + } + + + + + + return exports; +})); + + diff --git a/samples/client/petstore/javascript-promise/src/model/ApiResponse.js b/samples/client/petstore/javascript-promise/src/model/ApiResponse.js new file mode 100644 index 00000000000..6d4c970264b --- /dev/null +++ b/samples/client/petstore/javascript-promise/src/model/ApiResponse.js @@ -0,0 +1,83 @@ +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['ApiClient'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(require('../ApiClient')); + } else { + // Browser globals (root is window) + if (!root.SwaggerPetstore) { + root.SwaggerPetstore = {}; + } + root.SwaggerPetstore.ApiResponse = factory(root.SwaggerPetstore.ApiClient); + } +}(this, function(ApiClient) { + 'use strict'; + + + + + /** + * The ApiResponse model module. + * @module model/ApiResponse + * @version 1.0.0 + */ + + /** + * Constructs a new ApiResponse. + * @alias module:model/ApiResponse + * @class + */ + var exports = function() { + var _this = this; + + + + + }; + + /** + * Constructs a ApiResponse from a plain JavaScript object, optionally creating a new instance. + * Copies all relevant properties from data to obj if supplied or a new instance if not. + * @param {Object} data The plain JavaScript object bearing properties of interest. + * @param {module:model/ApiResponse} obj Optional instance to populate. + * @return {module:model/ApiResponse} The populated ApiResponse instance. + */ + exports.constructFromObject = function(data, obj) { + if (data) { + obj = obj || new exports(); + + if (data.hasOwnProperty('code')) { + obj['code'] = ApiClient.convertToType(data['code'], 'Integer'); + } + if (data.hasOwnProperty('type')) { + obj['type'] = ApiClient.convertToType(data['type'], 'String'); + } + if (data.hasOwnProperty('message')) { + obj['message'] = ApiClient.convertToType(data['message'], 'String'); + } + } + return obj; + } + + /** + * @member {Integer} code + */ + exports.prototype['code'] = undefined; + /** + * @member {String} type + */ + exports.prototype['type'] = undefined; + /** + * @member {String} message + */ + exports.prototype['message'] = undefined; + + + + + return exports; +})); + + diff --git a/samples/client/petstore/javascript-promise/src/model/Cat.js b/samples/client/petstore/javascript-promise/src/model/Cat.js index c878af6edec..a6b25bc6d58 100644 --- a/samples/client/petstore/javascript-promise/src/model/Cat.js +++ b/samples/client/petstore/javascript-promise/src/model/Cat.js @@ -1,7 +1,7 @@ (function(root, factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. - define(['../ApiClient', './Animal'], factory); + define(['ApiClient', 'model/Animal'], factory); } else if (typeof module === 'object' && module.exports) { // CommonJS-like environments that support module.exports, like Node. module.exports = factory(require('../ApiClient'), require('./Animal')); @@ -15,6 +15,9 @@ }(this, function(ApiClient, Animal) { 'use strict'; + + + /** * The Cat model module. * @module model/Cat @@ -29,7 +32,8 @@ * @param className */ var exports = function(className) { - Animal.call(this, className); + var _this = this; + Animal.call(_this, className); }; @@ -41,7 +45,7 @@ * @return {module:model/Cat} The populated Cat instance. */ exports.constructFromObject = function(data, obj) { - if (data) { + if (data) { obj = obj || new exports(); Animal.constructFromObject(data, obj); if (data.hasOwnProperty('declawed')) { @@ -54,7 +58,6 @@ exports.prototype = Object.create(Animal.prototype); exports.prototype.constructor = exports; - /** * @member {Boolean} declawed */ @@ -65,3 +68,5 @@ return exports; })); + + diff --git a/samples/client/petstore/javascript-promise/src/model/Category.js b/samples/client/petstore/javascript-promise/src/model/Category.js index 9956525e037..9e2e19ac5bb 100644 --- a/samples/client/petstore/javascript-promise/src/model/Category.js +++ b/samples/client/petstore/javascript-promise/src/model/Category.js @@ -15,6 +15,9 @@ }(this, function(ApiClient) { 'use strict'; + + + /** * The Category model module. * @module model/Category @@ -54,12 +57,10 @@ return obj; } - /** * @member {Integer} id */ exports.prototype['id'] = undefined; - /** * @member {String} name */ @@ -70,3 +71,5 @@ return exports; })); + + diff --git a/samples/client/petstore/javascript-promise/src/model/Dog.js b/samples/client/petstore/javascript-promise/src/model/Dog.js index e5e55581a70..ee17ae3467f 100644 --- a/samples/client/petstore/javascript-promise/src/model/Dog.js +++ b/samples/client/petstore/javascript-promise/src/model/Dog.js @@ -1,7 +1,7 @@ (function(root, factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. - define(['../ApiClient', './Animal'], factory); + define(['ApiClient', 'model/Animal'], factory); } else if (typeof module === 'object' && module.exports) { // CommonJS-like environments that support module.exports, like Node. module.exports = factory(require('../ApiClient'), require('./Animal')); @@ -15,6 +15,9 @@ }(this, function(ApiClient, Animal) { 'use strict'; + + + /** * The Dog model module. * @module model/Dog @@ -29,7 +32,8 @@ * @param className */ var exports = function(className) { - Animal.call(this, className); + var _this = this; + Animal.call(_this, className); }; @@ -41,7 +45,7 @@ * @return {module:model/Dog} The populated Dog instance. */ exports.constructFromObject = function(data, obj) { - if (data) { + if (data) { obj = obj || new exports(); Animal.constructFromObject(data, obj); if (data.hasOwnProperty('breed')) { @@ -54,7 +58,6 @@ exports.prototype = Object.create(Animal.prototype); exports.prototype.constructor = exports; - /** * @member {String} breed */ @@ -65,3 +68,5 @@ return exports; })); + + diff --git a/samples/client/petstore/javascript-promise/src/model/EnumClass.js b/samples/client/petstore/javascript-promise/src/model/EnumClass.js new file mode 100644 index 00000000000..268addcbaed --- /dev/null +++ b/samples/client/petstore/javascript-promise/src/model/EnumClass.js @@ -0,0 +1,44 @@ +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['ApiClient'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(require('../ApiClient')); + } else { + // Browser globals (root is window) + if (!root.SwaggerPetstore) { + root.SwaggerPetstore = {}; + } + root.SwaggerPetstore.EnumClass = factory(root.SwaggerPetstore.ApiClient); + } +}(this, function(ApiClient) { + 'use strict'; + + + /** + * Enum class EnumClass. + * @enum {} + * @readonly + */ + var exports = { + /** + * value: _abc + * @const + */ + "_abc": "_abc", + /** + * value: -efg + * @const + */ + "-efg": "-efg", + /** + * value: (xyz) + * @const + */ + "(xyz)": "(xyz)" }; + + return exports; +})); + + diff --git a/samples/client/petstore/javascript-promise/src/model/EnumTest.js b/samples/client/petstore/javascript-promise/src/model/EnumTest.js new file mode 100644 index 00000000000..6f8f0de3836 --- /dev/null +++ b/samples/client/petstore/javascript-promise/src/model/EnumTest.js @@ -0,0 +1,131 @@ +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['ApiClient'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(require('../ApiClient')); + } else { + // Browser globals (root is window) + if (!root.SwaggerPetstore) { + root.SwaggerPetstore = {}; + } + root.SwaggerPetstore.EnumTest = factory(root.SwaggerPetstore.ApiClient); + } +}(this, function(ApiClient) { + 'use strict'; + + + + + /** + * The EnumTest model module. + * @module model/EnumTest + * @version 1.0.0 + */ + + /** + * Constructs a new EnumTest. + * @alias module:model/EnumTest + * @class + */ + var exports = function() { + var _this = this; + + + + + }; + + /** + * Constructs a EnumTest from a plain JavaScript object, optionally creating a new instance. + * Copies all relevant properties from data to obj if supplied or a new instance if not. + * @param {Object} data The plain JavaScript object bearing properties of interest. + * @param {module:model/EnumTest} obj Optional instance to populate. + * @return {module:model/EnumTest} The populated EnumTest instance. + */ + exports.constructFromObject = function(data, obj) { + if (data) { + obj = obj || new exports(); + + if (data.hasOwnProperty('enum_string')) { + obj['enum_string'] = ApiClient.convertToType(data['enum_string'], 'String'); + } + if (data.hasOwnProperty('enum_integer')) { + obj['enum_integer'] = ApiClient.convertToType(data['enum_integer'], 'Integer'); + } + if (data.hasOwnProperty('enum_number')) { + obj['enum_number'] = ApiClient.convertToType(data['enum_number'], 'Number'); + } + } + return obj; + } + + /** + * @member {module:model/EnumTest.EnumStringEnum} enum_string + */ + exports.prototype['enum_string'] = undefined; + /** + * @member {module:model/EnumTest.EnumIntegerEnum} enum_integer + */ + exports.prototype['enum_integer'] = undefined; + /** + * @member {module:model/EnumTest.EnumNumberEnum} enum_number + */ + exports.prototype['enum_number'] = undefined; + + + /** + * Allowed values for the enum_string property. + * @enum {String} + * @readonly + */ + exports.EnumStringEnum = { + /** + * value: "UPPER" + * @const + */ + "UPPER": "UPPER", + /** + * value: "lower" + * @const + */ + "lower": "lower" }; + /** + * Allowed values for the enum_integer property. + * @enum {Integer} + * @readonly + */ + exports.EnumIntegerEnum = { + /** + * value: 1 + * @const + */ + "1": 1, + /** + * value: -1 + * @const + */ + "-1": -1 }; + /** + * Allowed values for the enum_number property. + * @enum {Number} + * @readonly + */ + exports.EnumNumberEnum = { + /** + * value: 1.1 + * @const + */ + "1.1": 1.1, + /** + * value: -1.2 + * @const + */ + "-1.2": -1.2 }; + + + return exports; +})); + + diff --git a/samples/client/petstore/javascript-promise/src/model/FormatTest.js b/samples/client/petstore/javascript-promise/src/model/FormatTest.js index 46a9bc854fc..ed9e0cfcaf8 100644 --- a/samples/client/petstore/javascript-promise/src/model/FormatTest.js +++ b/samples/client/petstore/javascript-promise/src/model/FormatTest.js @@ -1,7 +1,7 @@ (function(root, factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. - define(['../ApiClient'], factory); + define(['ApiClient'], factory); } else if (typeof module === 'object' && module.exports) { // CommonJS-like environments that support module.exports, like Node. module.exports = factory(require('../ApiClient')); @@ -15,6 +15,9 @@ }(this, function(ApiClient) { 'use strict'; + + + /** * The FormatTest model module. * @module model/FormatTest @@ -26,20 +29,26 @@ * @alias module:model/FormatTest * @class * @param _number + * @param _byte + * @param _date + * @param password */ - var exports = function(_number) { + var exports = function(_number, _byte, _date, password) { + var _this = this; - this['number'] = _number; - - + _this['number'] = _number; + _this['byte'] = _byte; + + _this['date'] = _date; + _this['password'] = password; }; /** @@ -50,7 +59,7 @@ * @return {module:model/FormatTest} The populated FormatTest instance. */ exports.constructFromObject = function(data, obj) { - if (data) { + if (data) { obj = obj || new exports(); if (data.hasOwnProperty('integer')) { @@ -84,70 +93,75 @@ obj['date'] = ApiClient.convertToType(data['date'], 'Date'); } if (data.hasOwnProperty('dateTime')) { - obj['dateTime'] = ApiClient.convertToType(data['dateTime'], 'String'); + obj['dateTime'] = ApiClient.convertToType(data['dateTime'], 'Date'); + } + if (data.hasOwnProperty('uuid')) { + obj['uuid'] = ApiClient.convertToType(data['uuid'], 'String'); + } + if (data.hasOwnProperty('password')) { + obj['password'] = ApiClient.convertToType(data['password'], 'String'); } } return obj; } - /** * @member {Integer} integer */ exports.prototype['integer'] = undefined; - /** * @member {Integer} int32 */ exports.prototype['int32'] = undefined; - /** * @member {Integer} int64 */ exports.prototype['int64'] = undefined; - /** * @member {Number} number */ exports.prototype['number'] = undefined; - /** * @member {Number} float */ exports.prototype['float'] = undefined; - /** * @member {Number} double */ exports.prototype['double'] = undefined; - /** * @member {String} string */ exports.prototype['string'] = undefined; - /** * @member {String} byte */ exports.prototype['byte'] = undefined; - /** * @member {String} binary */ exports.prototype['binary'] = undefined; - /** * @member {Date} date */ exports.prototype['date'] = undefined; - /** - * @member {String} dateTime + * @member {Date} dateTime */ exports.prototype['dateTime'] = undefined; + /** + * @member {String} uuid + */ + exports.prototype['uuid'] = undefined; + /** + * @member {String} password + */ + exports.prototype['password'] = undefined; return exports; })); + + diff --git a/samples/client/petstore/javascript-promise/src/model/InlineResponse200.js b/samples/client/petstore/javascript-promise/src/model/InlineResponse200.js deleted file mode 100644 index f2abaf1bd1b..00000000000 --- a/samples/client/petstore/javascript-promise/src/model/InlineResponse200.js +++ /dev/null @@ -1,132 +0,0 @@ -(function(root, factory) { - if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['ApiClient', 'model/Tag'], factory); - } else if (typeof module === 'object' && module.exports) { - // CommonJS-like environments that support module.exports, like Node. - module.exports = factory(require('../ApiClient'), require('./Tag')); - } else { - // Browser globals (root is window) - if (!root.SwaggerPetstore) { - root.SwaggerPetstore = {}; - } - root.SwaggerPetstore.InlineResponse200 = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.Tag); - } -}(this, function(ApiClient, Tag) { - 'use strict'; - - /** - * The InlineResponse200 model module. - * @module model/InlineResponse200 - * @version 1.0.0 - */ - - /** - * Constructs a new InlineResponse200. - * @alias module:model/InlineResponse200 - * @class - * @param id - */ - var exports = function(id) { - - - this['id'] = id; - - - - - }; - - /** - * Constructs a InlineResponse200 from a plain JavaScript object, optionally creating a new instance. - * Copies all relevant properties from data to obj if supplied or a new instance if not. - * @param {Object} data The plain JavaScript object bearing properties of interest. - * @param {module:model/InlineResponse200} obj Optional instance to populate. - * @return {module:model/InlineResponse200} The populated InlineResponse200 instance. - */ - exports.constructFromObject = function(data, obj) { - if (data) { - obj = obj || new exports(); - - if (data.hasOwnProperty('tags')) { - obj['tags'] = ApiClient.convertToType(data['tags'], [Tag]); - } - if (data.hasOwnProperty('id')) { - obj['id'] = ApiClient.convertToType(data['id'], 'Integer'); - } - if (data.hasOwnProperty('category')) { - obj['category'] = ApiClient.convertToType(data['category'], Object); - } - if (data.hasOwnProperty('status')) { - obj['status'] = ApiClient.convertToType(data['status'], 'String'); - } - if (data.hasOwnProperty('name')) { - obj['name'] = ApiClient.convertToType(data['name'], 'String'); - } - if (data.hasOwnProperty('photoUrls')) { - obj['photoUrls'] = ApiClient.convertToType(data['photoUrls'], ['String']); - } - } - return obj; - } - - - /** - * @member {Array.} tags - */ - exports.prototype['tags'] = undefined; - - /** - * @member {Integer} id - */ - exports.prototype['id'] = undefined; - - /** - * @member {Object} category - */ - exports.prototype['category'] = undefined; - - /** - * pet status in the store - * @member {module:model/InlineResponse200.StatusEnum} status - */ - exports.prototype['status'] = undefined; - - /** - * @member {String} name - */ - exports.prototype['name'] = undefined; - - /** - * @member {Array.} photoUrls - */ - exports.prototype['photoUrls'] = undefined; - - - /** - * Allowed values for the status property. - * @enum {String} - * @readonly - */ - exports.StatusEnum = { - /** - * value: available - * @const - */ - AVAILABLE: "available", - - /** - * value: pending - * @const - */ - PENDING: "pending", - - /** - * value: sold - * @const - */ - SOLD: "sold" - }; - - return exports; -})); diff --git a/samples/client/petstore/javascript-promise/src/model/Model200Response.js b/samples/client/petstore/javascript-promise/src/model/Model200Response.js index 8381185d9d0..1d83d420287 100644 --- a/samples/client/petstore/javascript-promise/src/model/Model200Response.js +++ b/samples/client/petstore/javascript-promise/src/model/Model200Response.js @@ -15,6 +15,9 @@ }(this, function(ApiClient) { 'use strict'; + + + /** * The Model200Response model module. * @module model/Model200Response @@ -28,6 +31,7 @@ * @class */ var exports = function() { + var _this = this; }; @@ -40,7 +44,7 @@ * @return {module:model/Model200Response} The populated Model200Response instance. */ exports.constructFromObject = function(data, obj) { - if (data) { + if (data) { obj = obj || new exports(); if (data.hasOwnProperty('name')) { @@ -50,7 +54,6 @@ return obj; } - /** * @member {Integer} name */ @@ -61,3 +64,5 @@ return exports; })); + + diff --git a/samples/client/petstore/javascript-promise/src/model/ModelReturn.js b/samples/client/petstore/javascript-promise/src/model/ModelReturn.js index 9549db64d46..d0236e77b17 100644 --- a/samples/client/petstore/javascript-promise/src/model/ModelReturn.js +++ b/samples/client/petstore/javascript-promise/src/model/ModelReturn.js @@ -15,6 +15,9 @@ }(this, function(ApiClient) { 'use strict'; + + + /** * The ModelReturn model module. * @module model/ModelReturn @@ -28,6 +31,7 @@ * @class */ var exports = function() { + var _this = this; }; @@ -40,7 +44,7 @@ * @return {module:model/ModelReturn} The populated ModelReturn instance. */ exports.constructFromObject = function(data, obj) { - if (data) { + if (data) { obj = obj || new exports(); if (data.hasOwnProperty('return')) { @@ -50,7 +54,6 @@ return obj; } - /** * @member {Integer} return */ @@ -61,3 +64,5 @@ return exports; })); + + diff --git a/samples/client/petstore/javascript-promise/src/model/Name.js b/samples/client/petstore/javascript-promise/src/model/Name.js index 08a5a34c29a..93d1d55deb2 100644 --- a/samples/client/petstore/javascript-promise/src/model/Name.js +++ b/samples/client/petstore/javascript-promise/src/model/Name.js @@ -15,6 +15,9 @@ }(this, function(ApiClient) { 'use strict'; + + + /** * The Name model module. * @module model/Name @@ -29,8 +32,10 @@ * @param name */ var exports = function(name) { + var _this = this; + + _this['name'] = name; - this['name'] = name; }; @@ -42,7 +47,7 @@ * @return {module:model/Name} The populated Name instance. */ exports.constructFromObject = function(data, obj) { - if (data) { + if (data) { obj = obj || new exports(); if (data.hasOwnProperty('name')) { @@ -51,23 +56,30 @@ if (data.hasOwnProperty('snake_case')) { obj['snake_case'] = ApiClient.convertToType(data['snake_case'], 'Integer'); } + if (data.hasOwnProperty('property')) { + obj['property'] = ApiClient.convertToType(data['property'], 'String'); + } } return obj; } - /** * @member {Integer} name */ exports.prototype['name'] = undefined; - /** * @member {Integer} snake_case */ exports.prototype['snake_case'] = undefined; + /** + * @member {String} property + */ + exports.prototype['property'] = undefined; return exports; })); + + diff --git a/samples/client/petstore/javascript-promise/src/model/Order.js b/samples/client/petstore/javascript-promise/src/model/Order.js index 664908b77a9..57f77d84ccd 100644 --- a/samples/client/petstore/javascript-promise/src/model/Order.js +++ b/samples/client/petstore/javascript-promise/src/model/Order.js @@ -15,6 +15,9 @@ }(this, function(ApiClient) { 'use strict'; + + + /** * The Order model module. * @module model/Order @@ -70,37 +73,32 @@ return obj; } - /** * @member {Integer} id */ exports.prototype['id'] = undefined; - /** * @member {Integer} petId */ exports.prototype['petId'] = undefined; - /** * @member {Integer} quantity */ exports.prototype['quantity'] = undefined; - /** * @member {Date} shipDate */ exports.prototype['shipDate'] = undefined; - /** * Order Status * @member {module:model/Order.StatusEnum} status */ exports.prototype['status'] = undefined; - /** * @member {Boolean} complete + * @default false */ - exports.prototype['complete'] = undefined; + exports.prototype['complete'] = false; /** @@ -108,25 +106,25 @@ * @enum {String} * @readonly */ - exports.StatusEnum = { + exports.StatusEnum = { /** - * value: placed + * value: "placed" * @const */ - PLACED: "placed", - + "placed": "placed", /** - * value: approved + * value: "approved" * @const */ - APPROVED: "approved", - + "approved": "approved", /** - * value: delivered + * value: "delivered" * @const */ - DELIVERED: "delivered" - }; + "delivered": "delivered" }; + return exports; })); + + diff --git a/samples/client/petstore/javascript-promise/src/model/Pet.js b/samples/client/petstore/javascript-promise/src/model/Pet.js index ae907d35ca2..fe14361dbf2 100644 --- a/samples/client/petstore/javascript-promise/src/model/Pet.js +++ b/samples/client/petstore/javascript-promise/src/model/Pet.js @@ -15,6 +15,9 @@ }(this, function(ApiClient, Category, Tag) { 'use strict'; + + + /** * The Pet model module. * @module model/Pet @@ -72,32 +75,26 @@ return obj; } - /** * @member {Integer} id */ exports.prototype['id'] = undefined; - /** * @member {module:model/Category} category */ exports.prototype['category'] = undefined; - /** * @member {String} name */ exports.prototype['name'] = undefined; - /** * @member {Array.} photoUrls */ exports.prototype['photoUrls'] = undefined; - /** * @member {Array.} tags */ exports.prototype['tags'] = undefined; - /** * pet status in the store * @member {module:model/Pet.StatusEnum} status @@ -110,25 +107,25 @@ * @enum {String} * @readonly */ - exports.StatusEnum = { + exports.StatusEnum = { /** - * value: available + * value: "available" * @const */ - AVAILABLE: "available", - + "available": "available", /** - * value: pending + * value: "pending" * @const */ - PENDING: "pending", - + "pending": "pending", /** - * value: sold + * value: "sold" * @const */ - SOLD: "sold" - }; + "sold": "sold" }; + return exports; })); + + diff --git a/samples/client/petstore/javascript-promise/src/model/SpecialModelName.js b/samples/client/petstore/javascript-promise/src/model/SpecialModelName.js index 8694196cdd9..d5a0e992a73 100644 --- a/samples/client/petstore/javascript-promise/src/model/SpecialModelName.js +++ b/samples/client/petstore/javascript-promise/src/model/SpecialModelName.js @@ -15,6 +15,9 @@ }(this, function(ApiClient) { 'use strict'; + + + /** * The SpecialModelName model module. * @module model/SpecialModelName @@ -27,6 +30,7 @@ * @class */ var exports = function() { + var _this = this; }; @@ -39,7 +43,7 @@ * @return {module:model/SpecialModelName} The populated SpecialModelName instance. */ exports.constructFromObject = function(data, obj) { - if (data) { + if (data) { obj = obj || new exports(); if (data.hasOwnProperty('$special[property.name]')) { @@ -49,7 +53,6 @@ return obj; } - /** * @member {Integer} $special[property.name] */ @@ -60,3 +63,5 @@ return exports; })); + + diff --git a/samples/client/petstore/javascript-promise/src/model/Tag.js b/samples/client/petstore/javascript-promise/src/model/Tag.js index d9ab35fb8b5..443d312b76a 100644 --- a/samples/client/petstore/javascript-promise/src/model/Tag.js +++ b/samples/client/petstore/javascript-promise/src/model/Tag.js @@ -15,6 +15,9 @@ }(this, function(ApiClient) { 'use strict'; + + + /** * The Tag model module. * @module model/Tag @@ -54,12 +57,10 @@ return obj; } - /** * @member {Integer} id */ exports.prototype['id'] = undefined; - /** * @member {String} name */ @@ -70,3 +71,5 @@ return exports; })); + + diff --git a/samples/client/petstore/javascript-promise/src/model/User.js b/samples/client/petstore/javascript-promise/src/model/User.js index 3bc6aaab630..2360c7c6314 100644 --- a/samples/client/petstore/javascript-promise/src/model/User.js +++ b/samples/client/petstore/javascript-promise/src/model/User.js @@ -15,6 +15,9 @@ }(this, function(ApiClient) { 'use strict'; + + + /** * The User model module. * @module model/User @@ -78,42 +81,34 @@ return obj; } - /** * @member {Integer} id */ exports.prototype['id'] = undefined; - /** * @member {String} username */ exports.prototype['username'] = undefined; - /** * @member {String} firstName */ exports.prototype['firstName'] = undefined; - /** * @member {String} lastName */ exports.prototype['lastName'] = undefined; - /** * @member {String} email */ exports.prototype['email'] = undefined; - /** * @member {String} password */ exports.prototype['password'] = undefined; - /** * @member {String} phone */ exports.prototype['phone'] = undefined; - /** * User Status * @member {Integer} userStatus @@ -125,3 +120,5 @@ return exports; })); + + diff --git a/samples/client/petstore/javascript-promise/test/api/PetApiTest.js b/samples/client/petstore/javascript-promise/test/api/PetApiTest.js index 1119546014d..98debb8ea19 100644 --- a/samples/client/petstore/javascript-promise/test/api/PetApiTest.js +++ b/samples/client/petstore/javascript-promise/test/api/PetApiTest.js @@ -49,7 +49,7 @@ var createRandomPet = function() { describe('PetApi', function() { it('should create and get pet', function(done) { var pet = createRandomPet(); - api.addPet({body: pet}) + api.addPet(pet) .then(function() { return api.getPetById(pet.id) }) @@ -63,7 +63,7 @@ describe('PetApi', function() { .to.be(getProperty(getProperty(pet, "getCategory", "category"), "getName", "name")); api.deletePet(pet.id); - done(); + done(); }); }); }); From fa68f84ec64f48c29008f6508a43587a5c2c34fe Mon Sep 17 00:00:00 2001 From: Mateusz Mackowiak Date: Fri, 6 May 2016 12:13:34 +0200 Subject: [PATCH 16/19] - Remove petsotre demo leftovers - Moved description method to basic class --- .../main/resources/objc/Object-body.mustache | 9 ++++ .../main/resources/objc/model-body.mustache | 25 ++------- samples/client/petstore/objc/README.md | 2 +- .../objc/SwaggerClient/SWG200Response.h | 20 -------- .../objc/SwaggerClient/SWG200Response.m | 51 ------------------- .../petstore/objc/SwaggerClient/SWGCategory.m | 24 ++------- .../objc/SwaggerClient/SWGInlineResponse200.h | 32 ------------ .../objc/SwaggerClient/SWGInlineResponse200.m | 51 ------------------- .../petstore/objc/SwaggerClient/SWGName.h | 22 -------- .../petstore/objc/SwaggerClient/SWGName.m | 51 ------------------- .../petstore/objc/SwaggerClient/SWGObject.m | 9 ++++ .../petstore/objc/SwaggerClient/SWGOrder.m | 24 ++------- .../petstore/objc/SwaggerClient/SWGPet.m | 24 ++------- .../petstore/objc/SwaggerClient/SWGReturn.h | 20 -------- .../petstore/objc/SwaggerClient/SWGReturn.m | 51 ------------------- .../objc/SwaggerClient/SWGSpecialModelName_.h | 20 -------- .../objc/SwaggerClient/SWGSpecialModelName_.m | 51 ------------------- .../petstore/objc/SwaggerClient/SWGTag.m | 24 ++------- .../petstore/objc/SwaggerClient/SWGUser.m | 24 ++------- 19 files changed, 43 insertions(+), 491 deletions(-) delete mode 100644 samples/client/petstore/objc/SwaggerClient/SWG200Response.h delete mode 100644 samples/client/petstore/objc/SwaggerClient/SWG200Response.m delete mode 100644 samples/client/petstore/objc/SwaggerClient/SWGInlineResponse200.h delete mode 100644 samples/client/petstore/objc/SwaggerClient/SWGInlineResponse200.m delete mode 100644 samples/client/petstore/objc/SwaggerClient/SWGName.h delete mode 100644 samples/client/petstore/objc/SwaggerClient/SWGName.m delete mode 100644 samples/client/petstore/objc/SwaggerClient/SWGReturn.h delete mode 100644 samples/client/petstore/objc/SwaggerClient/SWGReturn.m delete mode 100644 samples/client/petstore/objc/SwaggerClient/SWGSpecialModelName_.h delete mode 100644 samples/client/petstore/objc/SwaggerClient/SWGSpecialModelName_.m diff --git a/modules/swagger-codegen/src/main/resources/objc/Object-body.mustache b/modules/swagger-codegen/src/main/resources/objc/Object-body.mustache index 122484f1ad4..b4599c34f3f 100644 --- a/modules/swagger-codegen/src/main/resources/objc/Object-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/Object-body.mustache @@ -1,4 +1,13 @@ #import "{{classPrefix}}Object.h" @implementation {{classPrefix}}Object + +/** + * Gets the string presentation of the object. + * This method will be called when logging model object using `NSLog`. + */ +- (NSString *)description { + return [[self toDictionary] description]; +} + @end diff --git a/modules/swagger-codegen/src/main/resources/objc/model-body.mustache b/modules/swagger-codegen/src/main/resources/objc/model-body.mustache index ec5ab3b9f80..776cd55ccef 100644 --- a/modules/swagger-codegen/src/main/resources/objc/model-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/model-body.mustache @@ -6,13 +6,11 @@ - (instancetype)init { self = [super init]; - if (self) { // initalise property's default value, if any {{#vars}}{{#defaultValue}}self.{{name}} = {{{defaultValue}}}; {{/defaultValue}}{{/vars}} } - return self; } @@ -22,7 +20,6 @@ */ - (id)initWithDictionary:(NSDictionary *)dict error:(NSError *__autoreleasing *)err { - NSString * discriminatedClassName = [dict valueForKey:@"{{discriminator}}"]; if(discriminatedClassName == nil ){ @@ -45,8 +42,7 @@ * Maps json key to property name. * This method is used by `JSONModel`. */ -+ (JSONKeyMapper *)keyMapper -{ ++ (JSONKeyMapper *)keyMapper { return [[JSONKeyMapper alloc] initWithDictionary:@{ {{#vars}}@"{{baseName}}": @"{{name}}"{{#hasMore}}, {{/hasMore}}{{/vars}} }]; } @@ -55,24 +51,11 @@ * If `propertyName` is optional, then return `YES`, otherwise return `NO`. * This method is used by `JSONModel`. */ -+ (BOOL)propertyIsOptional:(NSString *)propertyName -{ ++ (BOOL)propertyIsOptional:(NSString *)propertyName { + NSArray *optionalProperties = @[{{#vars}}{{^required}}@"{{name}}"{{#hasMore}}, {{/hasMore}}{{/required}}{{/vars}}]; + return [optionalProperties containsObject:propertyName]; - if ([optionalProperties containsObject:propertyName]) { - return YES; - } - else { - return NO; - } -} - -/** - * Gets the string presentation of the object. - * This method will be called when logging model object using `NSLog`. - */ -- (NSString *)description { - return [[self toDictionary] description]; } {{/model}} diff --git a/samples/client/petstore/objc/README.md b/samples/client/petstore/objc/README.md index 4b0b92a259e..a3550545c24 100644 --- a/samples/client/petstore/objc/README.md +++ b/samples/client/petstore/objc/README.md @@ -6,7 +6,7 @@ This ObjC package is automatically generated by the [Swagger Codegen](https://gi - API version: 1.0.0 - Package version: -- Build date: 2016-05-06T11:35:18.146+02:00 +- Build date: 2016-05-06T12:20:47.112+02:00 - Build package: class io.swagger.codegen.languages.ObjcClientCodegen ## Requirements diff --git a/samples/client/petstore/objc/SwaggerClient/SWG200Response.h b/samples/client/petstore/objc/SwaggerClient/SWG200Response.h deleted file mode 100644 index c576bc204ad..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SWG200Response.h +++ /dev/null @@ -1,20 +0,0 @@ -#import -#import "SWGObject.h" - -/** - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen - * Do not edit the class manually. - */ - - - -@protocol SWG200Response -@end - -@interface SWG200Response : SWGObject - - -@property(nonatomic) NSNumber* name; - -@end diff --git a/samples/client/petstore/objc/SwaggerClient/SWG200Response.m b/samples/client/petstore/objc/SwaggerClient/SWG200Response.m deleted file mode 100644 index 9cafc782f1a..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SWG200Response.m +++ /dev/null @@ -1,51 +0,0 @@ -#import "SWG200Response.h" - -@implementation SWG200Response - -- (instancetype)init { - self = [super init]; - - if (self) { - // initalise property's default value, if any - - } - - return self; -} - - -/** - * Maps json key to property name. - * This method is used by `JSONModel`. - */ -+ (JSONKeyMapper *)keyMapper -{ - return [[JSONKeyMapper alloc] initWithDictionary:@{ @"name": @"name" }]; -} - -/** - * Indicates whether the property with the given name is optional. - * If `propertyName` is optional, then return `YES`, otherwise return `NO`. - * This method is used by `JSONModel`. - */ -+ (BOOL)propertyIsOptional:(NSString *)propertyName -{ - NSArray *optionalProperties = @[@"name"]; - - if ([optionalProperties containsObject:propertyName]) { - return YES; - } - else { - return NO; - } -} - -/** - * Gets the string presentation of the object. - * This method will be called when logging model object using `NSLog`. - */ -- (NSString *)description { - return [[self toDictionary] description]; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClient/SWGCategory.m b/samples/client/petstore/objc/SwaggerClient/SWGCategory.m index c323eda5a0a..29e3bc16226 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGCategory.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGCategory.m @@ -4,12 +4,10 @@ - (instancetype)init { self = [super init]; - if (self) { // initalise property's default value, if any } - return self; } @@ -18,8 +16,7 @@ * Maps json key to property name. * This method is used by `JSONModel`. */ -+ (JSONKeyMapper *)keyMapper -{ ++ (JSONKeyMapper *)keyMapper { return [[JSONKeyMapper alloc] initWithDictionary:@{ @"id": @"_id", @"name": @"name" }]; } @@ -28,24 +25,11 @@ * If `propertyName` is optional, then return `YES`, otherwise return `NO`. * This method is used by `JSONModel`. */ -+ (BOOL)propertyIsOptional:(NSString *)propertyName -{ ++ (BOOL)propertyIsOptional:(NSString *)propertyName { + NSArray *optionalProperties = @[@"_id", @"name"]; + return [optionalProperties containsObject:propertyName]; - if ([optionalProperties containsObject:propertyName]) { - return YES; - } - else { - return NO; - } -} - -/** - * Gets the string presentation of the object. - * This method will be called when logging model object using `NSLog`. - */ -- (NSString *)description { - return [[self toDictionary] description]; } @end diff --git a/samples/client/petstore/objc/SwaggerClient/SWGInlineResponse200.h b/samples/client/petstore/objc/SwaggerClient/SWGInlineResponse200.h deleted file mode 100644 index 577434faae6..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SWGInlineResponse200.h +++ /dev/null @@ -1,32 +0,0 @@ -#import -#import "SWGObject.h" - -/** - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen - * Do not edit the class manually. - */ - -#import "SWGTag.h" - - -@protocol SWGInlineResponse200 -@end - -@interface SWGInlineResponse200 : SWGObject - - -@property(nonatomic) NSArray* /* NSString */ photoUrls; - -@property(nonatomic) NSString* name; - -@property(nonatomic) NSNumber* _id; - -@property(nonatomic) NSObject* category; - -@property(nonatomic) NSArray* tags; -/* pet status in the store [optional] - */ -@property(nonatomic) NSString* status; - -@end diff --git a/samples/client/petstore/objc/SwaggerClient/SWGInlineResponse200.m b/samples/client/petstore/objc/SwaggerClient/SWGInlineResponse200.m deleted file mode 100644 index 5fbe9ec6ec2..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SWGInlineResponse200.m +++ /dev/null @@ -1,51 +0,0 @@ -#import "SWGInlineResponse200.h" - -@implementation SWGInlineResponse200 - -- (instancetype)init { - self = [super init]; - - if (self) { - // initalise property's default value, if any - - } - - return self; -} - - -/** - * Maps json key to property name. - * This method is used by `JSONModel`. - */ -+ (JSONKeyMapper *)keyMapper -{ - return [[JSONKeyMapper alloc] initWithDictionary:@{ @"photoUrls": @"photoUrls", @"name": @"name", @"id": @"_id", @"category": @"category", @"tags": @"tags", @"status": @"status" }]; -} - -/** - * Indicates whether the property with the given name is optional. - * If `propertyName` is optional, then return `YES`, otherwise return `NO`. - * This method is used by `JSONModel`. - */ -+ (BOOL)propertyIsOptional:(NSString *)propertyName -{ - NSArray *optionalProperties = @[@"photoUrls", @"name", @"category", @"tags", @"status"]; - - if ([optionalProperties containsObject:propertyName]) { - return YES; - } - else { - return NO; - } -} - -/** - * Gets the string presentation of the object. - * This method will be called when logging model object using `NSLog`. - */ -- (NSString *)description { - return [[self toDictionary] description]; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClient/SWGName.h b/samples/client/petstore/objc/SwaggerClient/SWGName.h deleted file mode 100644 index fd34af7b66a..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SWGName.h +++ /dev/null @@ -1,22 +0,0 @@ -#import -#import "SWGObject.h" - -/** - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen - * Do not edit the class manually. - */ - - - -@protocol SWGName -@end - -@interface SWGName : SWGObject - - -@property(nonatomic) NSNumber* name; - -@property(nonatomic) NSNumber* snakeCase; - -@end diff --git a/samples/client/petstore/objc/SwaggerClient/SWGName.m b/samples/client/petstore/objc/SwaggerClient/SWGName.m deleted file mode 100644 index 16aec784549..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SWGName.m +++ /dev/null @@ -1,51 +0,0 @@ -#import "SWGName.h" - -@implementation SWGName - -- (instancetype)init { - self = [super init]; - - if (self) { - // initalise property's default value, if any - - } - - return self; -} - - -/** - * Maps json key to property name. - * This method is used by `JSONModel`. - */ -+ (JSONKeyMapper *)keyMapper -{ - return [[JSONKeyMapper alloc] initWithDictionary:@{ @"name": @"name", @"snake_case": @"snakeCase" }]; -} - -/** - * Indicates whether the property with the given name is optional. - * If `propertyName` is optional, then return `YES`, otherwise return `NO`. - * This method is used by `JSONModel`. - */ -+ (BOOL)propertyIsOptional:(NSString *)propertyName -{ - NSArray *optionalProperties = @[@"snakeCase"]; - - if ([optionalProperties containsObject:propertyName]) { - return YES; - } - else { - return NO; - } -} - -/** - * Gets the string presentation of the object. - * This method will be called when logging model object using `NSLog`. - */ -- (NSString *)description { - return [[self toDictionary] description]; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClient/SWGObject.m b/samples/client/petstore/objc/SwaggerClient/SWGObject.m index 1f897ab1d56..8085c404f7e 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGObject.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGObject.m @@ -1,4 +1,13 @@ #import "SWGObject.h" @implementation SWGObject + +/** + * Gets the string presentation of the object. + * This method will be called when logging model object using `NSLog`. + */ +- (NSString *)description { + return [[self toDictionary] description]; +} + @end diff --git a/samples/client/petstore/objc/SwaggerClient/SWGOrder.m b/samples/client/petstore/objc/SwaggerClient/SWGOrder.m index e41bc7a188d..d10ed802b8d 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGOrder.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGOrder.m @@ -4,12 +4,10 @@ - (instancetype)init { self = [super init]; - if (self) { // initalise property's default value, if any } - return self; } @@ -18,8 +16,7 @@ * Maps json key to property name. * This method is used by `JSONModel`. */ -+ (JSONKeyMapper *)keyMapper -{ ++ (JSONKeyMapper *)keyMapper { return [[JSONKeyMapper alloc] initWithDictionary:@{ @"id": @"_id", @"petId": @"petId", @"quantity": @"quantity", @"shipDate": @"shipDate", @"status": @"status", @"complete": @"complete" }]; } @@ -28,24 +25,11 @@ * If `propertyName` is optional, then return `YES`, otherwise return `NO`. * This method is used by `JSONModel`. */ -+ (BOOL)propertyIsOptional:(NSString *)propertyName -{ ++ (BOOL)propertyIsOptional:(NSString *)propertyName { + NSArray *optionalProperties = @[@"_id", @"petId", @"quantity", @"shipDate", @"status", @"complete"]; + return [optionalProperties containsObject:propertyName]; - if ([optionalProperties containsObject:propertyName]) { - return YES; - } - else { - return NO; - } -} - -/** - * Gets the string presentation of the object. - * This method will be called when logging model object using `NSLog`. - */ -- (NSString *)description { - return [[self toDictionary] description]; } @end diff --git a/samples/client/petstore/objc/SwaggerClient/SWGPet.m b/samples/client/petstore/objc/SwaggerClient/SWGPet.m index 86389c2590b..98e75189ed3 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGPet.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGPet.m @@ -4,12 +4,10 @@ - (instancetype)init { self = [super init]; - if (self) { // initalise property's default value, if any } - return self; } @@ -18,8 +16,7 @@ * Maps json key to property name. * This method is used by `JSONModel`. */ -+ (JSONKeyMapper *)keyMapper -{ ++ (JSONKeyMapper *)keyMapper { return [[JSONKeyMapper alloc] initWithDictionary:@{ @"id": @"_id", @"category": @"category", @"name": @"name", @"photoUrls": @"photoUrls", @"tags": @"tags", @"status": @"status" }]; } @@ -28,24 +25,11 @@ * If `propertyName` is optional, then return `YES`, otherwise return `NO`. * This method is used by `JSONModel`. */ -+ (BOOL)propertyIsOptional:(NSString *)propertyName -{ ++ (BOOL)propertyIsOptional:(NSString *)propertyName { + NSArray *optionalProperties = @[@"_id", @"category", @"tags", @"status"]; + return [optionalProperties containsObject:propertyName]; - if ([optionalProperties containsObject:propertyName]) { - return YES; - } - else { - return NO; - } -} - -/** - * Gets the string presentation of the object. - * This method will be called when logging model object using `NSLog`. - */ -- (NSString *)description { - return [[self toDictionary] description]; } @end diff --git a/samples/client/petstore/objc/SwaggerClient/SWGReturn.h b/samples/client/petstore/objc/SwaggerClient/SWGReturn.h deleted file mode 100644 index fcce78f3681..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SWGReturn.h +++ /dev/null @@ -1,20 +0,0 @@ -#import -#import "SWGObject.h" - -/** - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen - * Do not edit the class manually. - */ - - - -@protocol SWGReturn -@end - -@interface SWGReturn : SWGObject - - -@property(nonatomic) NSNumber* _return; - -@end diff --git a/samples/client/petstore/objc/SwaggerClient/SWGReturn.m b/samples/client/petstore/objc/SwaggerClient/SWGReturn.m deleted file mode 100644 index ad97f1b15e9..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SWGReturn.m +++ /dev/null @@ -1,51 +0,0 @@ -#import "SWGReturn.h" - -@implementation SWGReturn - -- (instancetype)init { - self = [super init]; - - if (self) { - // initalise property's default value, if any - - } - - return self; -} - - -/** - * Maps json key to property name. - * This method is used by `JSONModel`. - */ -+ (JSONKeyMapper *)keyMapper -{ - return [[JSONKeyMapper alloc] initWithDictionary:@{ @"return": @"_return" }]; -} - -/** - * Indicates whether the property with the given name is optional. - * If `propertyName` is optional, then return `YES`, otherwise return `NO`. - * This method is used by `JSONModel`. - */ -+ (BOOL)propertyIsOptional:(NSString *)propertyName -{ - NSArray *optionalProperties = @[@"_return"]; - - if ([optionalProperties containsObject:propertyName]) { - return YES; - } - else { - return NO; - } -} - -/** - * Gets the string presentation of the object. - * This method will be called when logging model object using `NSLog`. - */ -- (NSString *)description { - return [[self toDictionary] description]; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClient/SWGSpecialModelName_.h b/samples/client/petstore/objc/SwaggerClient/SWGSpecialModelName_.h deleted file mode 100644 index 88187b28877..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SWGSpecialModelName_.h +++ /dev/null @@ -1,20 +0,0 @@ -#import -#import "SWGObject.h" - -/** - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen - * Do not edit the class manually. - */ - - - -@protocol SWGSpecialModelName_ -@end - -@interface SWGSpecialModelName_ : SWGObject - - -@property(nonatomic) NSNumber* specialPropertyName; - -@end diff --git a/samples/client/petstore/objc/SwaggerClient/SWGSpecialModelName_.m b/samples/client/petstore/objc/SwaggerClient/SWGSpecialModelName_.m deleted file mode 100644 index 9e1e680787d..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SWGSpecialModelName_.m +++ /dev/null @@ -1,51 +0,0 @@ -#import "SWGSpecialModelName_.h" - -@implementation SWGSpecialModelName_ - -- (instancetype)init { - self = [super init]; - - if (self) { - // initalise property's default value, if any - - } - - return self; -} - - -/** - * Maps json key to property name. - * This method is used by `JSONModel`. - */ -+ (JSONKeyMapper *)keyMapper -{ - return [[JSONKeyMapper alloc] initWithDictionary:@{ @"$special[property.name]": @"specialPropertyName" }]; -} - -/** - * Indicates whether the property with the given name is optional. - * If `propertyName` is optional, then return `YES`, otherwise return `NO`. - * This method is used by `JSONModel`. - */ -+ (BOOL)propertyIsOptional:(NSString *)propertyName -{ - NSArray *optionalProperties = @[@"specialPropertyName"]; - - if ([optionalProperties containsObject:propertyName]) { - return YES; - } - else { - return NO; - } -} - -/** - * Gets the string presentation of the object. - * This method will be called when logging model object using `NSLog`. - */ -- (NSString *)description { - return [[self toDictionary] description]; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClient/SWGTag.m b/samples/client/petstore/objc/SwaggerClient/SWGTag.m index 9eb00a157e3..8ad1742750d 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGTag.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGTag.m @@ -4,12 +4,10 @@ - (instancetype)init { self = [super init]; - if (self) { // initalise property's default value, if any } - return self; } @@ -18,8 +16,7 @@ * Maps json key to property name. * This method is used by `JSONModel`. */ -+ (JSONKeyMapper *)keyMapper -{ ++ (JSONKeyMapper *)keyMapper { return [[JSONKeyMapper alloc] initWithDictionary:@{ @"id": @"_id", @"name": @"name" }]; } @@ -28,24 +25,11 @@ * If `propertyName` is optional, then return `YES`, otherwise return `NO`. * This method is used by `JSONModel`. */ -+ (BOOL)propertyIsOptional:(NSString *)propertyName -{ ++ (BOOL)propertyIsOptional:(NSString *)propertyName { + NSArray *optionalProperties = @[@"_id", @"name"]; + return [optionalProperties containsObject:propertyName]; - if ([optionalProperties containsObject:propertyName]) { - return YES; - } - else { - return NO; - } -} - -/** - * Gets the string presentation of the object. - * This method will be called when logging model object using `NSLog`. - */ -- (NSString *)description { - return [[self toDictionary] description]; } @end diff --git a/samples/client/petstore/objc/SwaggerClient/SWGUser.m b/samples/client/petstore/objc/SwaggerClient/SWGUser.m index 2445dd37854..2551108cb5f 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGUser.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGUser.m @@ -4,12 +4,10 @@ - (instancetype)init { self = [super init]; - if (self) { // initalise property's default value, if any } - return self; } @@ -18,8 +16,7 @@ * Maps json key to property name. * This method is used by `JSONModel`. */ -+ (JSONKeyMapper *)keyMapper -{ ++ (JSONKeyMapper *)keyMapper { return [[JSONKeyMapper alloc] initWithDictionary:@{ @"id": @"_id", @"username": @"username", @"firstName": @"firstName", @"lastName": @"lastName", @"email": @"email", @"password": @"password", @"phone": @"phone", @"userStatus": @"userStatus" }]; } @@ -28,24 +25,11 @@ * If `propertyName` is optional, then return `YES`, otherwise return `NO`. * This method is used by `JSONModel`. */ -+ (BOOL)propertyIsOptional:(NSString *)propertyName -{ ++ (BOOL)propertyIsOptional:(NSString *)propertyName { + NSArray *optionalProperties = @[@"_id", @"username", @"firstName", @"lastName", @"email", @"password", @"phone", @"userStatus"]; + return [optionalProperties containsObject:propertyName]; - if ([optionalProperties containsObject:propertyName]) { - return YES; - } - else { - return NO; - } -} - -/** - * Gets the string presentation of the object. - * This method will be called when logging model object using `NSLog`. - */ -- (NSString *)description { - return [[self toDictionary] description]; } @end From 020a9fcdc053b0bd67372726f9b08bf582df0708 Mon Sep 17 00:00:00 2001 From: xhh Date: Fri, 6 May 2016 18:41:15 +0800 Subject: [PATCH 17/19] Fix enum model docs for JS and Java clients --- .../languages/JavascriptClientCodegen.java | 37 +---- .../resources/Java/enum_outer_doc.mustache | 6 +- .../okhttp-gson/enum_outer_doc.mustache | 2 +- .../resources/Javascript/model_doc.mustache | 20 ++- .../partial_model_enum_class.mustache | 8 +- .../petstore/java/default/docs/AnimalFarm.md | 9 ++ .../petstore/java/default/docs/EnumClass.md | 8 +- .../petstore/java/default/docs/FakeApi.md | 4 +- .../petstore/java/default/docs/FormatTest.md | 1 + .../java/io/swagger/client/api/FakeApi.java | 3 +- .../java/io/swagger/client/api/PetApi.java | 2 +- .../io/swagger/client/model/AnimalFarm.java | 53 ++++++++ .../client/petstore/java/feign/git_push.sh | 4 +- .../java/io/swagger/client/api/FakeApi.java | 5 +- .../io/swagger/client/model/AnimalFarm.java | 53 ++++++++ .../io/swagger/client/model/FormatTest.java | 24 +++- .../petstore/java/jersey2/docs/AnimalFarm.md | 9 ++ .../petstore/java/jersey2/docs/EnumClass.md | 14 ++ .../petstore/java/jersey2/docs/EnumTest.md | 36 +++++ .../petstore/java/jersey2/docs/FakeApi.md | 75 ++++++++++ .../petstore/java/jersey2/docs/FormatTest.md | 7 +- .../petstore/java/jersey2/docs/Order.md | 6 +- .../client/petstore/java/jersey2/docs/Pet.md | 6 +- .../client/petstore/java/jersey2/git_push.sh | 4 +- .../java/io/swagger/client/api/FakeApi.java | 128 ++++++++++++++++++ .../java/io/swagger/client/model/Animal.java | 3 +- .../io/swagger/client/model/AnimalFarm.java | 53 ++++++++ .../java/io/swagger/client/model/Cat.java | 5 +- .../io/swagger/client/model/Category.java | 5 +- .../java/io/swagger/client/model/Dog.java | 5 +- .../io/swagger/client/model/EnumTest.java | 7 +- .../io/swagger/client/model/FormatTest.java | 46 +++++-- .../client/model/Model200Response.java | 6 +- .../client/model/ModelApiResponse.java | 8 +- .../io/swagger/client/model/ModelReturn.java | 6 +- .../java/io/swagger/client/model/Name.java | 42 +++--- .../java/io/swagger/client/model/Order.java | 27 ++-- .../java/io/swagger/client/model/Pet.java | 13 +- .../client/model/SpecialModelName.java | 3 +- .../java/io/swagger/client/model/Tag.java | 5 +- .../java/io/swagger/client/model/User.java | 17 ++- .../java/okhttp-gson/docs/AnimalFarm.md | 9 ++ .../java/okhttp-gson/docs/EnumClass.md | 6 +- .../petstore/java/okhttp-gson/docs/FakeApi.md | 4 +- .../java/okhttp-gson/docs/FormatTest.md | 1 + .../petstore/java/okhttp-gson/git_push.sh | 4 +- .../java/io/swagger/client/api/FakeApi.java | 9 +- .../io/swagger/client/model/AnimalFarm.java | 53 ++++++++ .../io/swagger/client/model/FormatTest.java | 17 ++- .../client/petstore/java/retrofit/git_push.sh | 4 +- .../java/io/swagger/client/api/FakeApi.java | 5 +- .../io/swagger/client/model/AnimalFarm.java | 53 ++++++++ .../io/swagger/client/model/FormatTest.java | 17 ++- .../petstore/java/retrofit2/git_push.sh | 4 +- .../java/io/swagger/client/api/FakeApi.java | 3 +- .../io/swagger/client/model/AnimalFarm.java | 53 ++++++++ .../io/swagger/client/model/FormatTest.java | 17 ++- .../petstore/java/retrofit2rx/git_push.sh | 4 +- .../io/swagger/client/model/AnimalFarm.java | 53 ++++++++ .../io/swagger/client/model/FormatTest.java | 7 +- .../javascript-promise/docs/EnumClass.md | 11 +- .../javascript-promise/docs/EnumTest.md | 33 +++++ .../petstore/javascript-promise/docs/Order.md | 13 ++ .../petstore/javascript-promise/docs/Pet.md | 13 ++ .../javascript-promise/src/model/EnumClass.js | 6 +- samples/client/petstore/javascript/README.md | 15 +- .../petstore/javascript/docs/AnimalFarm.md | 7 + .../petstore/javascript/docs/EnumClass.md | 11 +- .../petstore/javascript/docs/EnumTest.md | 33 +++++ .../client/petstore/javascript/docs/Order.md | 13 ++ .../client/petstore/javascript/docs/Pet.md | 13 ++ .../petstore/javascript/src/ApiClient.js | 4 +- .../client/petstore/javascript/src/index.js | 11 +- .../javascript/src/model/AnimalFarm.js | 64 +++++++++ .../javascript/src/model/EnumClass.js | 6 +- 75 files changed, 1153 insertions(+), 198 deletions(-) create mode 100644 samples/client/petstore/java/default/docs/AnimalFarm.md create mode 100644 samples/client/petstore/java/default/src/main/java/io/swagger/client/model/AnimalFarm.java create mode 100644 samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/AnimalFarm.java create mode 100644 samples/client/petstore/java/jersey2/docs/AnimalFarm.md create mode 100644 samples/client/petstore/java/jersey2/docs/EnumClass.md create mode 100644 samples/client/petstore/java/jersey2/docs/EnumTest.md create mode 100644 samples/client/petstore/java/jersey2/docs/FakeApi.md create mode 100644 samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/api/FakeApi.java create mode 100644 samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/AnimalFarm.java create mode 100644 samples/client/petstore/java/okhttp-gson/docs/AnimalFarm.md create mode 100644 samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/AnimalFarm.java create mode 100644 samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/AnimalFarm.java create mode 100644 samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/AnimalFarm.java create mode 100644 samples/client/petstore/java/retrofit2rx/src/main/java/io/swagger/client/model/AnimalFarm.java create mode 100644 samples/client/petstore/javascript/docs/AnimalFarm.md create mode 100644 samples/client/petstore/javascript/src/model/AnimalFarm.js diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavascriptClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavascriptClientCodegen.java index feec76d8de2..d654363727c 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavascriptClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavascriptClientCodegen.java @@ -839,6 +839,7 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo @SuppressWarnings("unchecked") @Override public Map postProcessModels(Map objs) { + objs = super.postProcessModelsEnum(objs); List models = (List) objs.get("models"); for (Object _mo : models) { Map mo = (Map) _mo; @@ -853,8 +854,6 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo cm.vendorExtensions.put("x-all-required", allRequired); for (CodegenProperty var : cm.vars) { - Map allowableValues = var.allowableValues; - // Add JSDoc @type value for this property. String jsDocType = getJSDocTypeWithBraces(cm, var); var.vendorExtensions.put("x-jsdoc-type", jsDocType); @@ -862,40 +861,6 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo if (Boolean.TRUE.equals(var.required)) { required.add(var.name); } - - // 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 (Object value : values) { - Map enumVar = new HashMap(); - String enumName; - if (truncateIdx == 0) { - enumName = value.toString(); - } else { - enumName = value.toString().substring(truncateIdx); - if ("".equals(enumName)) { - enumName = value.toString(); - } - } - enumVar.put("name", toEnumVarName(enumName, var.datatype)); - enumVar.put("value",toEnumValue(value.toString(), var.datatype)); - enumVars.add(enumVar); - } - allowableValues.put("enumVars", enumVars); } if (supportsInheritance) { diff --git a/modules/swagger-codegen/src/main/resources/Java/enum_outer_doc.mustache b/modules/swagger-codegen/src/main/resources/Java/enum_outer_doc.mustache index 14b5d524c4a..20c512aaeae 100644 --- a/modules/swagger-codegen/src/main/resources/Java/enum_outer_doc.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/enum_outer_doc.mustache @@ -2,6 +2,6 @@ ## Enum -{{#allowableValues}} -* `{{.}}` -{{/allowableValues}} +{{#allowableValues}}{{#enumVars}} +* `{{name}}` (value: `{{{value}}}`) +{{/enumVars}}{{/allowableValues}} diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/enum_outer_doc.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/enum_outer_doc.mustache index b5370c1360b..20c512aaeae 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/enum_outer_doc.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/enum_outer_doc.mustache @@ -3,5 +3,5 @@ ## Enum {{#allowableValues}}{{#enumVars}} -* `{{name}}` (value: `{{value}}`) +* `{{name}}` (value: `{{{value}}}`) {{/enumVars}}{{/allowableValues}} diff --git a/modules/swagger-codegen/src/main/resources/Javascript/model_doc.mustache b/modules/swagger-codegen/src/main/resources/Javascript/model_doc.mustache index 306d8a2b3f7..4f2324fa2a7 100644 --- a/modules/swagger-codegen/src/main/resources/Javascript/model_doc.mustache +++ b/modules/swagger-codegen/src/main/resources/Javascript/model_doc.mustache @@ -1,9 +1,25 @@ -{{#models}}{{#model}}# {{moduleName}}.{{classname}} +{{#models}}{{#model}}{{#isEnum}}# {{moduleName}}.{{classname}} + +## Enum + +{{#allowableValues}}{{#enumVars}} +* `{{name}}` (value: `{{{value}}}`) +{{/enumVars}}{{/allowableValues}} +{{/isEnum}}{{^isEnum}}# {{moduleName}}.{{classname}} ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- {{#vars}}**{{name}}** | {{#isPrimitiveType}}**{{datatype}}**{{/isPrimitiveType}}{{^isPrimitiveType}}[**{{datatype}}**]({{complexType}}.md){{/isPrimitiveType}} | {{description}} | {{^required}}[optional] {{/required}}{{#readOnly}}[readonly] {{/readOnly}}{{#defaultValue}}[default to {{defaultValue}}]{{/defaultValue}} {{/vars}} +{{#vars}}{{#isEnum}} -{{/model}}{{/models}} + +## Enum: {{datatypeWithEnum}} + +{{#allowableValues}}{{#enumVars}} +* `{{name}}` (value: `{{{value}}}`) +{{/enumVars}}{{/allowableValues}} + +{{/isEnum}}{{/vars}} +{{/isEnum}}{{/model}}{{/models}} diff --git a/modules/swagger-codegen/src/main/resources/Javascript/partial_model_enum_class.mustache b/modules/swagger-codegen/src/main/resources/Javascript/partial_model_enum_class.mustache index c85e82aa764..9ad7e3d3a90 100644 --- a/modules/swagger-codegen/src/main/resources/Javascript/partial_model_enum_class.mustache +++ b/modules/swagger-codegen/src/main/resources/Javascript/partial_model_enum_class.mustache @@ -7,16 +7,16 @@ {{/emitJSDoc}} var exports = { {{#allowableValues}} - {{#values}} + {{#enumVars}} {{#emitJSDoc}} /** - * value: {{{.}}} + * value: {{{value}}} * @const */ {{/emitJSDoc}} - "{{{.}}}": "{{{.}}}"{{^-last}}, + "{{name}}": {{{value}}}{{^-last}}, {{/-last}} - {{/values}} + {{/enumVars}} {{/allowableValues}} }; diff --git a/samples/client/petstore/java/default/docs/AnimalFarm.md b/samples/client/petstore/java/default/docs/AnimalFarm.md new file mode 100644 index 00000000000..c7c7f1ddcce --- /dev/null +++ b/samples/client/petstore/java/default/docs/AnimalFarm.md @@ -0,0 +1,9 @@ + +# AnimalFarm + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + + + diff --git a/samples/client/petstore/java/default/docs/EnumClass.md b/samples/client/petstore/java/default/docs/EnumClass.md index de0bc8a95ac..c746edc3cb1 100644 --- a/samples/client/petstore/java/default/docs/EnumClass.md +++ b/samples/client/petstore/java/default/docs/EnumClass.md @@ -3,6 +3,12 @@ ## Enum -* `{values=[_abc, -efg, (xyz)], enumVars=[{name=_ABC, value="_abc"}, {name=_EFG, value="-efg"}, {name=_XYZ_, value="(xyz)"}]}` + +* `_ABC` (value: `"_abc"`) + +* `_EFG` (value: `"-efg"`) + +* `_XYZ_` (value: `"(xyz)"`) + diff --git a/samples/client/petstore/java/default/docs/FakeApi.md b/samples/client/petstore/java/default/docs/FakeApi.md index f642566c8e7..c1fdd310321 100644 --- a/samples/client/petstore/java/default/docs/FakeApi.md +++ b/samples/client/petstore/java/default/docs/FakeApi.md @@ -23,7 +23,7 @@ Fake endpoint for testing various parameters FakeApi apiInstance = new FakeApi(); -String number = "number_example"; // String | None +BigDecimal number = new BigDecimal(); // BigDecimal | None Double _double = 3.4D; // Double | None String string = "string_example"; // String | None byte[] _byte = B; // byte[] | None @@ -47,7 +47,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **number** | **String**| None | + **number** | **BigDecimal**| None | **_double** | **Double**| None | **string** | **String**| None | **_byte** | **byte[]**| None | diff --git a/samples/client/petstore/java/default/docs/FormatTest.md b/samples/client/petstore/java/default/docs/FormatTest.md index 5e54362e535..dc2b559dad2 100644 --- a/samples/client/petstore/java/default/docs/FormatTest.md +++ b/samples/client/petstore/java/default/docs/FormatTest.md @@ -15,6 +15,7 @@ Name | Type | Description | Notes **binary** | **byte[]** | | [optional] **date** | [**Date**](Date.md) | | **dateTime** | [**Date**](Date.md) | | [optional] +**uuid** | **String** | | [optional] **password** | **String** | | diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/api/FakeApi.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/api/FakeApi.java index ddfaff67d0f..efa202418d6 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/api/FakeApi.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/api/FakeApi.java @@ -7,6 +7,7 @@ import io.swagger.client.ApiClient; import io.swagger.client.Configuration; import io.swagger.client.Pair; +import java.math.BigDecimal; import java.util.Date; import java.util.ArrayList; @@ -51,7 +52,7 @@ public class FakeApi { * @param password None (optional) * @throws ApiException if fails to make API call */ - public void testEndpointParameters(String number, Double _double, String string, byte[] _byte, Integer integer, Integer int32, Long int64, Float _float, byte[] binary, Date date, Date dateTime, String password) throws ApiException { + public void testEndpointParameters(BigDecimal number, Double _double, String string, byte[] _byte, Integer integer, Integer int32, Long int64, Float _float, byte[] binary, Date date, Date dateTime, String password) throws ApiException { Object localVarPostBody = null; // verify the required parameter 'number' is set 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 c4ff05ec24f..584c85aaae4 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 @@ -8,8 +8,8 @@ import io.swagger.client.Configuration; import io.swagger.client.Pair; import io.swagger.client.model.Pet; -import java.io.File; import io.swagger.client.model.ModelApiResponse; +import java.io.File; import java.util.ArrayList; import java.util.HashMap; diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/AnimalFarm.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/AnimalFarm.java new file mode 100644 index 00000000000..9dbd29436ad --- /dev/null +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/AnimalFarm.java @@ -0,0 +1,53 @@ +package io.swagger.client.model; + +import java.util.Objects; +import io.swagger.client.model.Animal; +import java.util.ArrayList; +import java.util.List; + + +/** + * AnimalFarm + */ + +public class AnimalFarm extends ArrayList { + + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + return true; + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode()); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class AnimalFarm {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} + diff --git a/samples/client/petstore/java/feign/git_push.sh b/samples/client/petstore/java/feign/git_push.sh index 1a36388db02..ed374619b13 100644 --- a/samples/client/petstore/java/feign/git_push.sh +++ b/samples/client/petstore/java/feign/git_push.sh @@ -8,12 +8,12 @@ git_repo_id=$2 release_note=$3 if [ "$git_user_id" = "" ]; then - git_user_id="YOUR_GIT_USR_ID" + git_user_id="GIT_USER_ID" echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" fi if [ "$git_repo_id" = "" ]; then - git_repo_id="YOUR_GIT_REPO_ID" + git_repo_id="GIT_REPO_ID" echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" fi diff --git a/samples/client/petstore/java/feign/src/main/java/io/swagger/client/api/FakeApi.java b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/api/FakeApi.java index b92a064d3e5..b1dc92805ab 100644 --- a/samples/client/petstore/java/feign/src/main/java/io/swagger/client/api/FakeApi.java +++ b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/api/FakeApi.java @@ -2,6 +2,7 @@ package io.swagger.client.api; import io.swagger.client.ApiClient; +import java.math.BigDecimal; import java.util.Date; import java.util.ArrayList; @@ -10,7 +11,7 @@ import java.util.List; import java.util.Map; import feign.*; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-04-27T23:17:22.230+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-05-06T18:35:05.435+08:00") public interface FakeApi extends ApiClient.Api { @@ -36,5 +37,5 @@ public interface FakeApi extends ApiClient.Api { "Content-type: application/x-www-form-urlencoded", "Accepts: application/json", }) - void testEndpointParameters(@Param("number") String number, @Param("_double") Double _double, @Param("string") String string, @Param("_byte") byte[] _byte, @Param("integer") Integer integer, @Param("int32") Integer int32, @Param("int64") Long int64, @Param("_float") Float _float, @Param("binary") byte[] binary, @Param("date") Date date, @Param("dateTime") Date dateTime, @Param("password") String password); + void testEndpointParameters(@Param("number") BigDecimal number, @Param("_double") Double _double, @Param("string") String string, @Param("_byte") byte[] _byte, @Param("integer") Integer integer, @Param("int32") Integer int32, @Param("int64") Long int64, @Param("_float") Float _float, @Param("binary") byte[] binary, @Param("date") Date date, @Param("dateTime") Date dateTime, @Param("password") String password); } diff --git a/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/AnimalFarm.java b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/AnimalFarm.java new file mode 100644 index 00000000000..f38bf504d50 --- /dev/null +++ b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/AnimalFarm.java @@ -0,0 +1,53 @@ +package io.swagger.client.model; + +import java.util.Objects; +import io.swagger.client.model.Animal; +import java.util.ArrayList; +import java.util.List; + + +/** + * AnimalFarm + */ +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-05-06T18:35:05.435+08:00") +public class AnimalFarm extends ArrayList { + + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + return true; + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode()); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class AnimalFarm {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} + diff --git a/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/FormatTest.java b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/FormatTest.java index 53aa13638a7..072decf8079 100644 --- a/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/FormatTest.java +++ b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/FormatTest.java @@ -11,7 +11,7 @@ import java.util.Date; /** * FormatTest */ -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-04-27T23:17:22.230+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-05-06T18:35:05.435+08:00") public class FormatTest { private Integer integer = null; @@ -25,6 +25,7 @@ public class FormatTest { private byte[] binary = null; private Date date = null; private Date dateTime = null; + private String uuid = null; private String password = null; @@ -225,6 +226,23 @@ public class FormatTest { } + /** + **/ + public FormatTest uuid(String uuid) { + this.uuid = uuid; + return this; + } + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("uuid") + public String getUuid() { + return uuid; + } + public void setUuid(String uuid) { + this.uuid = uuid; + } + + /** **/ public FormatTest password(String password) { @@ -262,12 +280,13 @@ public class FormatTest { Objects.equals(this.binary, formatTest.binary) && Objects.equals(this.date, formatTest.date) && Objects.equals(this.dateTime, formatTest.dateTime) && + Objects.equals(this.uuid, formatTest.uuid) && Objects.equals(this.password, formatTest.password); } @Override public int hashCode() { - return Objects.hash(integer, int32, int64, number, _float, _double, string, _byte, binary, date, dateTime, password); + return Objects.hash(integer, int32, int64, number, _float, _double, string, _byte, binary, date, dateTime, uuid, password); } @Override @@ -286,6 +305,7 @@ public class FormatTest { sb.append(" binary: ").append(toIndentedString(binary)).append("\n"); sb.append(" date: ").append(toIndentedString(date)).append("\n"); sb.append(" dateTime: ").append(toIndentedString(dateTime)).append("\n"); + sb.append(" uuid: ").append(toIndentedString(uuid)).append("\n"); sb.append(" password: ").append(toIndentedString(password)).append("\n"); sb.append("}"); return sb.toString(); diff --git a/samples/client/petstore/java/jersey2/docs/AnimalFarm.md b/samples/client/petstore/java/jersey2/docs/AnimalFarm.md new file mode 100644 index 00000000000..c7c7f1ddcce --- /dev/null +++ b/samples/client/petstore/java/jersey2/docs/AnimalFarm.md @@ -0,0 +1,9 @@ + +# AnimalFarm + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + + + diff --git a/samples/client/petstore/java/jersey2/docs/EnumClass.md b/samples/client/petstore/java/jersey2/docs/EnumClass.md new file mode 100644 index 00000000000..c746edc3cb1 --- /dev/null +++ b/samples/client/petstore/java/jersey2/docs/EnumClass.md @@ -0,0 +1,14 @@ + +# EnumClass + +## Enum + + +* `_ABC` (value: `"_abc"`) + +* `_EFG` (value: `"-efg"`) + +* `_XYZ_` (value: `"(xyz)"`) + + + diff --git a/samples/client/petstore/java/jersey2/docs/EnumTest.md b/samples/client/petstore/java/jersey2/docs/EnumTest.md new file mode 100644 index 00000000000..deb1951c552 --- /dev/null +++ b/samples/client/petstore/java/jersey2/docs/EnumTest.md @@ -0,0 +1,36 @@ + +# EnumTest + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**enumString** | [**EnumStringEnum**](#EnumStringEnum) | | [optional] +**enumInteger** | [**EnumIntegerEnum**](#EnumIntegerEnum) | | [optional] +**enumNumber** | [**EnumNumberEnum**](#EnumNumberEnum) | | [optional] + + + +## Enum: EnumStringEnum +Name | Value +---- | ----- +UPPER | "UPPER" +LOWER | "lower" + + + +## Enum: EnumIntegerEnum +Name | Value +---- | ----- +NUMBER_1 | 1 +NUMBER_MINUS_1 | -1 + + + +## Enum: EnumNumberEnum +Name | Value +---- | ----- +NUMBER_1_DOT_1 | 1.1 +NUMBER_MINUS_1_DOT_2 | -1.2 + + + diff --git a/samples/client/petstore/java/jersey2/docs/FakeApi.md b/samples/client/petstore/java/jersey2/docs/FakeApi.md new file mode 100644 index 00000000000..c1fdd310321 --- /dev/null +++ b/samples/client/petstore/java/jersey2/docs/FakeApi.md @@ -0,0 +1,75 @@ +# FakeApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**testEndpointParameters**](FakeApi.md#testEndpointParameters) | **POST** /fake | Fake endpoint for testing various parameters + + + +# **testEndpointParameters** +> testEndpointParameters(number, _double, string, _byte, integer, int32, int64, _float, binary, date, dateTime, password) + +Fake endpoint for testing various parameters + +Fake endpoint for testing various parameters + +### Example +```java +// Import classes: +//import io.swagger.client.ApiException; +//import io.swagger.client.api.FakeApi; + + +FakeApi apiInstance = new FakeApi(); +BigDecimal number = new BigDecimal(); // BigDecimal | None +Double _double = 3.4D; // Double | None +String string = "string_example"; // String | None +byte[] _byte = B; // byte[] | None +Integer integer = 56; // Integer | None +Integer int32 = 56; // Integer | None +Long int64 = 789L; // Long | None +Float _float = 3.4F; // Float | None +byte[] binary = B; // byte[] | None +Date date = new Date(); // Date | None +Date dateTime = new Date(); // Date | None +String password = "password_example"; // String | None +try { + apiInstance.testEndpointParameters(number, _double, string, _byte, integer, int32, int64, _float, binary, date, dateTime, password); +} catch (ApiException e) { + System.err.println("Exception when calling FakeApi#testEndpointParameters"); + e.printStackTrace(); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **number** | **BigDecimal**| None | + **_double** | **Double**| None | + **string** | **String**| None | + **_byte** | **byte[]**| None | + **integer** | **Integer**| None | [optional] + **int32** | **Integer**| None | [optional] + **int64** | **Long**| None | [optional] + **_float** | **Float**| None | [optional] + **binary** | **byte[]**| None | [optional] + **date** | **Date**| None | [optional] + **dateTime** | **Date**| None | [optional] + **password** | **String**| None | [optional] + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + diff --git a/samples/client/petstore/java/jersey2/docs/FormatTest.md b/samples/client/petstore/java/jersey2/docs/FormatTest.md index 8e400e7bcd7..dc2b559dad2 100644 --- a/samples/client/petstore/java/jersey2/docs/FormatTest.md +++ b/samples/client/petstore/java/jersey2/docs/FormatTest.md @@ -11,11 +11,12 @@ Name | Type | Description | Notes **_float** | **Float** | | [optional] **_double** | **Double** | | [optional] **string** | **String** | | [optional] -**_byte** | **byte[]** | | [optional] +**_byte** | **byte[]** | | **binary** | **byte[]** | | [optional] -**date** | [**Date**](Date.md) | | [optional] +**date** | [**Date**](Date.md) | | **dateTime** | [**Date**](Date.md) | | [optional] -**password** | **String** | | [optional] +**uuid** | **String** | | [optional] +**password** | **String** | | diff --git a/samples/client/petstore/java/jersey2/docs/Order.md b/samples/client/petstore/java/jersey2/docs/Order.md index b1709c14eee..29ca3ddbc6b 100644 --- a/samples/client/petstore/java/jersey2/docs/Order.md +++ b/samples/client/petstore/java/jersey2/docs/Order.md @@ -16,9 +16,9 @@ Name | Type | Description | Notes ## Enum: StatusEnum Name | Value ---- | ----- -PLACED | placed -APPROVED | approved -DELIVERED | delivered +PLACED | "placed" +APPROVED | "approved" +DELIVERED | "delivered" diff --git a/samples/client/petstore/java/jersey2/docs/Pet.md b/samples/client/petstore/java/jersey2/docs/Pet.md index 20a1c298dd6..5b63109ef92 100644 --- a/samples/client/petstore/java/jersey2/docs/Pet.md +++ b/samples/client/petstore/java/jersey2/docs/Pet.md @@ -16,9 +16,9 @@ Name | Type | Description | Notes ## Enum: StatusEnum Name | Value ---- | ----- -AVAILABLE | available -PENDING | pending -SOLD | sold +AVAILABLE | "available" +PENDING | "pending" +SOLD | "sold" diff --git a/samples/client/petstore/java/jersey2/git_push.sh b/samples/client/petstore/java/jersey2/git_push.sh index 1a36388db02..ed374619b13 100644 --- a/samples/client/petstore/java/jersey2/git_push.sh +++ b/samples/client/petstore/java/jersey2/git_push.sh @@ -8,12 +8,12 @@ git_repo_id=$2 release_note=$3 if [ "$git_user_id" = "" ]; then - git_user_id="YOUR_GIT_USR_ID" + git_user_id="GIT_USER_ID" echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" fi if [ "$git_repo_id" = "" ]; then - git_repo_id="YOUR_GIT_REPO_ID" + git_repo_id="GIT_REPO_ID" echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" fi diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/api/FakeApi.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/api/FakeApi.java new file mode 100644 index 00000000000..33c74e7a51c --- /dev/null +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/api/FakeApi.java @@ -0,0 +1,128 @@ +package io.swagger.client.api; + +import io.swagger.client.ApiException; +import io.swagger.client.ApiClient; +import io.swagger.client.Configuration; +import io.swagger.client.Pair; + +import javax.ws.rs.core.GenericType; + +import java.math.BigDecimal; +import java.util.Date; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-05-06T18:35:03.551+08:00") +public class FakeApi { + private ApiClient apiClient; + + public FakeApi() { + this(Configuration.getDefaultApiClient()); + } + + public FakeApi(ApiClient apiClient) { + this.apiClient = apiClient; + } + + public ApiClient getApiClient() { + return apiClient; + } + + public void setApiClient(ApiClient apiClient) { + this.apiClient = apiClient; + } + + /** + * Fake endpoint for testing various parameters + * Fake endpoint for testing various parameters + * @param number None (required) + * @param _double None (required) + * @param string None (required) + * @param _byte None (required) + * @param integer None (optional) + * @param int32 None (optional) + * @param int64 None (optional) + * @param _float None (optional) + * @param binary None (optional) + * @param date None (optional) + * @param dateTime None (optional) + * @param password None (optional) + * @throws ApiException if fails to make API call + */ + public void testEndpointParameters(BigDecimal number, Double _double, String string, byte[] _byte, Integer integer, Integer int32, Long int64, Float _float, byte[] binary, Date date, Date dateTime, String password) throws ApiException { + Object localVarPostBody = null; + + // verify the required parameter 'number' is set + if (number == null) { + throw new ApiException(400, "Missing the required parameter 'number' when calling testEndpointParameters"); + } + + // verify the required parameter '_double' is set + if (_double == null) { + throw new ApiException(400, "Missing the required parameter '_double' when calling testEndpointParameters"); + } + + // verify the required parameter 'string' is set + if (string == null) { + throw new ApiException(400, "Missing the required parameter 'string' when calling testEndpointParameters"); + } + + // verify the required parameter '_byte' is set + if (_byte == null) { + throw new ApiException(400, "Missing the required parameter '_byte' when calling testEndpointParameters"); + } + + // create path and map variables + String localVarPath = "/fake".replaceAll("\\{format\\}","json"); + + // query params + List localVarQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + + + if (integer != null) + localVarFormParams.put("integer", integer); +if (int32 != null) + localVarFormParams.put("int32", int32); +if (int64 != null) + localVarFormParams.put("int64", int64); +if (number != null) + localVarFormParams.put("number", number); +if (_float != null) + localVarFormParams.put("float", _float); +if (_double != null) + localVarFormParams.put("double", _double); +if (string != null) + localVarFormParams.put("string", string); +if (_byte != null) + localVarFormParams.put("byte", _byte); +if (binary != null) + localVarFormParams.put("binary", binary); +if (date != null) + localVarFormParams.put("date", date); +if (dateTime != null) + localVarFormParams.put("dateTime", dateTime); +if (password != null) + localVarFormParams.put("password", password); + + final String[] localVarAccepts = { + "application/xml", "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + + final String[] localVarContentTypes = { + + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + + String[] localVarAuthNames = new String[] { }; + + + apiClient.invokeAPI(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, null); + } +} diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Animal.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Animal.java index 1a3029ec922..0781e60a4d4 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Animal.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Animal.java @@ -9,7 +9,7 @@ import io.swagger.annotations.ApiModelProperty; /** * Animal */ -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-04-12T23:06:12.393+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-05-06T18:35:03.551+08:00") public class Animal { private String className = null; @@ -31,7 +31,6 @@ public class Animal { this.className = className; } - @Override public boolean equals(java.lang.Object o) { diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/AnimalFarm.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/AnimalFarm.java new file mode 100644 index 00000000000..04767c63252 --- /dev/null +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/AnimalFarm.java @@ -0,0 +1,53 @@ +package io.swagger.client.model; + +import java.util.Objects; +import io.swagger.client.model.Animal; +import java.util.ArrayList; +import java.util.List; + + +/** + * AnimalFarm + */ +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-05-06T18:35:03.551+08:00") +public class AnimalFarm extends ArrayList { + + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + return true; + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode()); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class AnimalFarm {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} + diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Cat.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Cat.java index c877047cd45..8acadb9a2f6 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Cat.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Cat.java @@ -10,7 +10,7 @@ import io.swagger.client.model.Animal; /** * Cat */ -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-04-12T23:06:12.393+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-05-06T18:35:03.551+08:00") public class Cat extends Animal { private String className = null; @@ -33,7 +33,7 @@ public class Cat extends Animal { this.className = className; } - + /** **/ public Cat declawed(Boolean declawed) { @@ -50,7 +50,6 @@ public class Cat extends Animal { this.declawed = declawed; } - @Override public boolean equals(java.lang.Object o) { diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Category.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Category.java index b9cb4951346..763fcccf2a7 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Category.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Category.java @@ -9,7 +9,7 @@ import io.swagger.annotations.ApiModelProperty; /** * Category */ -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-04-12T23:06:12.393+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-05-06T18:35:03.551+08:00") public class Category { private Long id = null; @@ -32,7 +32,7 @@ public class Category { this.id = id; } - + /** **/ public Category name(String name) { @@ -49,7 +49,6 @@ public class Category { this.name = name; } - @Override public boolean equals(java.lang.Object o) { diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Dog.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Dog.java index 15d3ce320b2..a9e7e2acce0 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Dog.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Dog.java @@ -10,7 +10,7 @@ import io.swagger.client.model.Animal; /** * Dog */ -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-04-12T23:06:12.393+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-05-06T18:35:03.551+08:00") public class Dog extends Animal { private String className = null; @@ -33,7 +33,7 @@ public class Dog extends Animal { this.className = className; } - + /** **/ public Dog breed(String breed) { @@ -50,7 +50,6 @@ public class Dog extends Animal { this.breed = breed; } - @Override public boolean equals(java.lang.Object o) { diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/EnumTest.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/EnumTest.java index 6b8ee8102be..8152b440599 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/EnumTest.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/EnumTest.java @@ -10,7 +10,7 @@ import io.swagger.annotations.ApiModelProperty; /** * EnumTest */ -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-04-12T23:06:12.393+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-05-06T18:35:03.551+08:00") public class EnumTest { @@ -97,7 +97,7 @@ public class EnumTest { this.enumString = enumString; } - + /** **/ public EnumTest enumInteger(EnumIntegerEnum enumInteger) { @@ -114,7 +114,7 @@ public class EnumTest { this.enumInteger = enumInteger; } - + /** **/ public EnumTest enumNumber(EnumNumberEnum enumNumber) { @@ -131,7 +131,6 @@ public class EnumTest { this.enumNumber = enumNumber; } - @Override public boolean equals(java.lang.Object o) { diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/FormatTest.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/FormatTest.java index 774ce0ebcfe..4098e37a8a9 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/FormatTest.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/FormatTest.java @@ -8,10 +8,10 @@ import java.math.BigDecimal; import java.util.Date; - - - -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-04-23T12:58:40.273+08:00") +/** + * FormatTest + */ +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-05-06T18:35:03.551+08:00") public class FormatTest { private Integer integer = null; @@ -25,10 +25,13 @@ public class FormatTest { private byte[] binary = null; private Date date = null; private Date dateTime = null; + private String uuid = null; private String password = null; /** + * minimum: 10.0 + * maximum: 100.0 **/ public FormatTest integer(Integer integer) { this.integer = integer; @@ -46,6 +49,8 @@ public class FormatTest { /** + * minimum: 20.0 + * maximum: 200.0 **/ public FormatTest int32(Integer int32) { this.int32 = int32; @@ -80,6 +85,8 @@ public class FormatTest { /** + * minimum: 32.1 + * maximum: 543.2 **/ public FormatTest number(BigDecimal number) { this.number = number; @@ -97,6 +104,8 @@ public class FormatTest { /** + * minimum: 54.3 + * maximum: 987.6 **/ public FormatTest _float(Float _float) { this._float = _float; @@ -114,6 +123,8 @@ public class FormatTest { /** + * minimum: 67.8 + * maximum: 123.4 **/ public FormatTest _double(Double _double) { this._double = _double; @@ -154,7 +165,7 @@ public class FormatTest { return this; } - @ApiModelProperty(example = "null", value = "") + @ApiModelProperty(example = "null", required = true, value = "") @JsonProperty("byte") public byte[] getByte() { return _byte; @@ -188,7 +199,7 @@ public class FormatTest { return this; } - @ApiModelProperty(example = "null", value = "") + @ApiModelProperty(example = "null", required = true, value = "") @JsonProperty("date") public Date getDate() { return date; @@ -215,6 +226,23 @@ public class FormatTest { } + /** + **/ + public FormatTest uuid(String uuid) { + this.uuid = uuid; + return this; + } + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("uuid") + public String getUuid() { + return uuid; + } + public void setUuid(String uuid) { + this.uuid = uuid; + } + + /** **/ public FormatTest password(String password) { @@ -222,7 +250,7 @@ public class FormatTest { return this; } - @ApiModelProperty(example = "null", value = "") + @ApiModelProperty(example = "null", required = true, value = "") @JsonProperty("password") public String getPassword() { return password; @@ -252,12 +280,13 @@ public class FormatTest { Objects.equals(this.binary, formatTest.binary) && Objects.equals(this.date, formatTest.date) && Objects.equals(this.dateTime, formatTest.dateTime) && + Objects.equals(this.uuid, formatTest.uuid) && Objects.equals(this.password, formatTest.password); } @Override public int hashCode() { - return Objects.hash(integer, int32, int64, number, _float, _double, string, _byte, binary, date, dateTime, password); + return Objects.hash(integer, int32, int64, number, _float, _double, string, _byte, binary, date, dateTime, uuid, password); } @Override @@ -276,6 +305,7 @@ public class FormatTest { sb.append(" binary: ").append(toIndentedString(binary)).append("\n"); sb.append(" date: ").append(toIndentedString(date)).append("\n"); sb.append(" dateTime: ").append(toIndentedString(dateTime)).append("\n"); + sb.append(" uuid: ").append(toIndentedString(uuid)).append("\n"); sb.append(" password: ").append(toIndentedString(password)).append("\n"); sb.append("}"); return sb.toString(); diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Model200Response.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Model200Response.java index 36f04c225f6..0101cd5e8e3 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Model200Response.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Model200Response.java @@ -7,9 +7,10 @@ import io.swagger.annotations.ApiModelProperty; /** - * Model200Response + * Model for testing model name starting with number */ -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-04-12T23:06:12.393+08:00") +@ApiModel(description = "Model for testing model name starting with number") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-05-06T18:35:03.551+08:00") public class Model200Response { private Integer name = null; @@ -31,7 +32,6 @@ public class Model200Response { this.name = name; } - @Override public boolean equals(java.lang.Object o) { diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/ModelApiResponse.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/ModelApiResponse.java index 5a3f9254bae..af6f23fd782 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/ModelApiResponse.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/ModelApiResponse.java @@ -6,10 +6,10 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; - - - -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-04-23T12:58:40.273+08:00") +/** + * ModelApiResponse + */ +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-05-06T18:35:03.551+08:00") public class ModelApiResponse { private Integer code = null; diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/ModelReturn.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/ModelReturn.java index 62224f3b2c3..827c22bef67 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/ModelReturn.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/ModelReturn.java @@ -7,9 +7,10 @@ import io.swagger.annotations.ApiModelProperty; /** - * ModelReturn + * Model for testing reserved words */ -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-04-12T23:06:12.393+08:00") +@ApiModel(description = "Model for testing reserved words") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-05-06T18:35:03.551+08:00") public class ModelReturn { private Integer _return = null; @@ -31,7 +32,6 @@ public class ModelReturn { this._return = _return; } - @Override public boolean equals(java.lang.Object o) { diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Name.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Name.java index 92bf36a7952..b7209d46b19 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Name.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Name.java @@ -7,13 +7,15 @@ import io.swagger.annotations.ApiModelProperty; /** - * Name + * Model for testing model name same as property name */ -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-04-12T23:06:12.393+08:00") +@ApiModel(description = "Model for testing model name same as property name") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-05-06T18:35:03.551+08:00") public class Name { private Integer name = null; private Integer snakeCase = null; + private String property = null; /** @@ -23,7 +25,7 @@ public class Name { return this; } - @ApiModelProperty(example = "null", value = "") + @ApiModelProperty(example = "null", required = true, value = "") @JsonProperty("name") public Integer getName() { return name; @@ -32,24 +34,30 @@ public class Name { this.name = name; } - - /** - **/ - public Name snakeCase(Integer snakeCase) { - this.snakeCase = snakeCase; - return this; - } - + @ApiModelProperty(example = "null", value = "") @JsonProperty("snake_case") public Integer getSnakeCase() { return snakeCase; } - public void setSnakeCase(Integer snakeCase) { - this.snakeCase = snakeCase; + + + /** + **/ + public Name property(String property) { + this.property = property; + return this; + } + + @ApiModelProperty(example = "null", value = "") + @JsonProperty("property") + public String getProperty() { + return property; + } + public void setProperty(String property) { + this.property = property; } - @Override public boolean equals(java.lang.Object o) { @@ -61,12 +69,13 @@ public class Name { } Name name = (Name) o; return Objects.equals(this.name, name.name) && - Objects.equals(this.snakeCase, name.snakeCase); + Objects.equals(this.snakeCase, name.snakeCase) && + Objects.equals(this.property, name.property); } @Override public int hashCode() { - return Objects.hash(name, snakeCase); + return Objects.hash(name, snakeCase, property); } @Override @@ -76,6 +85,7 @@ public class Name { sb.append(" name: ").append(toIndentedString(name)).append("\n"); sb.append(" snakeCase: ").append(toIndentedString(snakeCase)).append("\n"); + sb.append(" property: ").append(toIndentedString(property)).append("\n"); sb.append("}"); return sb.toString(); } diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Order.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Order.java index 116f07dc14d..322b2b832cb 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Order.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Order.java @@ -11,7 +11,7 @@ import java.util.Date; /** * Order */ -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-04-12T23:06:12.393+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-05-06T18:35:03.551+08:00") public class Order { private Long id = null; @@ -40,17 +40,27 @@ public class Order { } } - private StatusEnum status = StatusEnum.PLACED; - private Boolean complete = null; + private StatusEnum status = null; + private Boolean complete = false; + /** + **/ + public Order id(Long id) { + this.id = id; + return this; + } + @ApiModelProperty(example = "null", value = "") @JsonProperty("id") public Long getId() { return id; } + public void setId(Long id) { + this.id = id; + } + - /** **/ public Order petId(Long petId) { @@ -67,7 +77,7 @@ public class Order { this.petId = petId; } - + /** **/ public Order quantity(Integer quantity) { @@ -84,7 +94,7 @@ public class Order { this.quantity = quantity; } - + /** **/ public Order shipDate(Date shipDate) { @@ -101,7 +111,7 @@ public class Order { this.shipDate = shipDate; } - + /** * Order Status **/ @@ -119,7 +129,7 @@ public class Order { this.status = status; } - + /** **/ public Order complete(Boolean complete) { @@ -136,7 +146,6 @@ public class Order { this.complete = complete; } - @Override public boolean equals(java.lang.Object o) { diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Pet.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Pet.java index 82dc1e9a1a4..07becbd4107 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Pet.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Pet.java @@ -14,7 +14,7 @@ import java.util.List; /** * Pet */ -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-04-12T23:06:12.393+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-05-06T18:35:03.551+08:00") public class Pet { private Long id = null; @@ -63,7 +63,7 @@ public class Pet { this.id = id; } - + /** **/ public Pet category(Category category) { @@ -80,7 +80,7 @@ public class Pet { this.category = category; } - + /** **/ public Pet name(String name) { @@ -97,7 +97,7 @@ public class Pet { this.name = name; } - + /** **/ public Pet photoUrls(List photoUrls) { @@ -114,7 +114,7 @@ public class Pet { this.photoUrls = photoUrls; } - + /** **/ public Pet tags(List tags) { @@ -131,7 +131,7 @@ public class Pet { this.tags = tags; } - + /** * pet status in the store **/ @@ -149,7 +149,6 @@ public class Pet { this.status = status; } - @Override public boolean equals(java.lang.Object o) { diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/SpecialModelName.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/SpecialModelName.java index 12e360e83a4..fccd55df94d 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/SpecialModelName.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/SpecialModelName.java @@ -9,7 +9,7 @@ import io.swagger.annotations.ApiModelProperty; /** * SpecialModelName */ -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-04-12T23:06:12.393+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-05-06T18:35:03.551+08:00") public class SpecialModelName { private Long specialPropertyName = null; @@ -31,7 +31,6 @@ public class SpecialModelName { this.specialPropertyName = specialPropertyName; } - @Override public boolean equals(java.lang.Object o) { diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Tag.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Tag.java index 0c579b9ed7e..417f95d4a2f 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Tag.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Tag.java @@ -9,7 +9,7 @@ import io.swagger.annotations.ApiModelProperty; /** * Tag */ -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-04-12T23:06:12.393+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-05-06T18:35:03.551+08:00") public class Tag { private Long id = null; @@ -32,7 +32,7 @@ public class Tag { this.id = id; } - + /** **/ public Tag name(String name) { @@ -49,7 +49,6 @@ public class Tag { this.name = name; } - @Override public boolean equals(java.lang.Object o) { diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/User.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/User.java index 48933177c5f..bf361b5a765 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/User.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/User.java @@ -9,7 +9,7 @@ import io.swagger.annotations.ApiModelProperty; /** * User */ -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-04-12T23:06:12.393+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-05-06T18:35:03.551+08:00") public class User { private Long id = null; @@ -38,7 +38,7 @@ public class User { this.id = id; } - + /** **/ public User username(String username) { @@ -55,7 +55,7 @@ public class User { this.username = username; } - + /** **/ public User firstName(String firstName) { @@ -72,7 +72,7 @@ public class User { this.firstName = firstName; } - + /** **/ public User lastName(String lastName) { @@ -89,7 +89,7 @@ public class User { this.lastName = lastName; } - + /** **/ public User email(String email) { @@ -106,7 +106,7 @@ public class User { this.email = email; } - + /** **/ public User password(String password) { @@ -123,7 +123,7 @@ public class User { this.password = password; } - + /** **/ public User phone(String phone) { @@ -140,7 +140,7 @@ public class User { this.phone = phone; } - + /** * User Status **/ @@ -158,7 +158,6 @@ public class User { this.userStatus = userStatus; } - @Override public boolean equals(java.lang.Object o) { diff --git a/samples/client/petstore/java/okhttp-gson/docs/AnimalFarm.md b/samples/client/petstore/java/okhttp-gson/docs/AnimalFarm.md new file mode 100644 index 00000000000..c7c7f1ddcce --- /dev/null +++ b/samples/client/petstore/java/okhttp-gson/docs/AnimalFarm.md @@ -0,0 +1,9 @@ + +# AnimalFarm + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + + + diff --git a/samples/client/petstore/java/okhttp-gson/docs/EnumClass.md b/samples/client/petstore/java/okhttp-gson/docs/EnumClass.md index d03195a19a4..c746edc3cb1 100644 --- a/samples/client/petstore/java/okhttp-gson/docs/EnumClass.md +++ b/samples/client/petstore/java/okhttp-gson/docs/EnumClass.md @@ -4,11 +4,11 @@ ## Enum -* `_ABC` (value: `"_abc"`) +* `_ABC` (value: `"_abc"`) -* `_EFG` (value: `"-efg"`) +* `_EFG` (value: `"-efg"`) -* `_XYZ_` (value: `"(xyz)"`) +* `_XYZ_` (value: `"(xyz)"`) diff --git a/samples/client/petstore/java/okhttp-gson/docs/FakeApi.md b/samples/client/petstore/java/okhttp-gson/docs/FakeApi.md index f642566c8e7..c1fdd310321 100644 --- a/samples/client/petstore/java/okhttp-gson/docs/FakeApi.md +++ b/samples/client/petstore/java/okhttp-gson/docs/FakeApi.md @@ -23,7 +23,7 @@ Fake endpoint for testing various parameters FakeApi apiInstance = new FakeApi(); -String number = "number_example"; // String | None +BigDecimal number = new BigDecimal(); // BigDecimal | None Double _double = 3.4D; // Double | None String string = "string_example"; // String | None byte[] _byte = B; // byte[] | None @@ -47,7 +47,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **number** | **String**| None | + **number** | **BigDecimal**| None | **_double** | **Double**| None | **string** | **String**| None | **_byte** | **byte[]**| None | diff --git a/samples/client/petstore/java/okhttp-gson/docs/FormatTest.md b/samples/client/petstore/java/okhttp-gson/docs/FormatTest.md index 5e54362e535..dc2b559dad2 100644 --- a/samples/client/petstore/java/okhttp-gson/docs/FormatTest.md +++ b/samples/client/petstore/java/okhttp-gson/docs/FormatTest.md @@ -15,6 +15,7 @@ Name | Type | Description | Notes **binary** | **byte[]** | | [optional] **date** | [**Date**](Date.md) | | **dateTime** | [**Date**](Date.md) | | [optional] +**uuid** | **String** | | [optional] **password** | **String** | | diff --git a/samples/client/petstore/java/okhttp-gson/git_push.sh b/samples/client/petstore/java/okhttp-gson/git_push.sh index 1a36388db02..ed374619b13 100644 --- a/samples/client/petstore/java/okhttp-gson/git_push.sh +++ b/samples/client/petstore/java/okhttp-gson/git_push.sh @@ -8,12 +8,12 @@ git_repo_id=$2 release_note=$3 if [ "$git_user_id" = "" ]; then - git_user_id="YOUR_GIT_USR_ID" + git_user_id="GIT_USER_ID" echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" fi if [ "$git_repo_id" = "" ]; then - git_repo_id="YOUR_GIT_REPO_ID" + git_repo_id="GIT_REPO_ID" echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" fi diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/api/FakeApi.java b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/api/FakeApi.java index dd6d8236607..e021970cdb7 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/api/FakeApi.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/api/FakeApi.java @@ -17,6 +17,7 @@ import com.squareup.okhttp.Response; import java.io.IOException; +import java.math.BigDecimal; import java.util.Date; import java.lang.reflect.Type; @@ -45,7 +46,7 @@ public class FakeApi { } /* Build call for testEndpointParameters */ - private Call testEndpointParametersCall(String number, Double _double, String string, byte[] _byte, Integer integer, Integer int32, Long int64, Float _float, byte[] binary, Date date, Date dateTime, String password, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + private Call testEndpointParametersCall(BigDecimal number, Double _double, String string, byte[] _byte, Integer integer, Integer int32, Long int64, Float _float, byte[] binary, Date date, Date dateTime, String password, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { Object localVarPostBody = null; // verify the required parameter 'number' is set @@ -147,7 +148,7 @@ public class FakeApi { * @param password None (optional) * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body */ - public void testEndpointParameters(String number, Double _double, String string, byte[] _byte, Integer integer, Integer int32, Long int64, Float _float, byte[] binary, Date date, Date dateTime, String password) throws ApiException { + public void testEndpointParameters(BigDecimal number, Double _double, String string, byte[] _byte, Integer integer, Integer int32, Long int64, Float _float, byte[] binary, Date date, Date dateTime, String password) throws ApiException { testEndpointParametersWithHttpInfo(number, _double, string, _byte, integer, int32, int64, _float, binary, date, dateTime, password); } @@ -169,7 +170,7 @@ public class FakeApi { * @return ApiResponse * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body */ - public ApiResponse testEndpointParametersWithHttpInfo(String number, Double _double, String string, byte[] _byte, Integer integer, Integer int32, Long int64, Float _float, byte[] binary, Date date, Date dateTime, String password) throws ApiException { + public ApiResponse testEndpointParametersWithHttpInfo(BigDecimal number, Double _double, String string, byte[] _byte, Integer integer, Integer int32, Long int64, Float _float, byte[] binary, Date date, Date dateTime, String password) throws ApiException { Call call = testEndpointParametersCall(number, _double, string, _byte, integer, int32, int64, _float, binary, date, dateTime, password, null, null); return apiClient.execute(call); } @@ -193,7 +194,7 @@ public class FakeApi { * @return The request call * @throws ApiException If fail to process the API call, e.g. serializing the request body object */ - public Call testEndpointParametersAsync(String number, Double _double, String string, byte[] _byte, Integer integer, Integer int32, Long int64, Float _float, byte[] binary, Date date, Date dateTime, String password, final ApiCallback callback) throws ApiException { + public Call testEndpointParametersAsync(BigDecimal number, Double _double, String string, byte[] _byte, Integer integer, Integer int32, Long int64, Float _float, byte[] binary, Date date, Date dateTime, String password, final ApiCallback callback) throws ApiException { ProgressResponseBody.ProgressListener progressListener = null; ProgressRequestBody.ProgressRequestListener progressRequestListener = null; diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/AnimalFarm.java b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/AnimalFarm.java new file mode 100644 index 00000000000..8be2f1ecd0d --- /dev/null +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/AnimalFarm.java @@ -0,0 +1,53 @@ +package io.swagger.client.model; + +import java.util.Objects; +import io.swagger.client.model.Animal; +import java.util.ArrayList; +import java.util.List; + +import com.google.gson.annotations.SerializedName; + + +/** + * AnimalFarm + */ +public class AnimalFarm extends ArrayList { + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + return true; + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode()); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class AnimalFarm {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} + diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/FormatTest.java b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/FormatTest.java index 0fc4082d119..af3fec2a2ea 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/FormatTest.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/FormatTest.java @@ -47,6 +47,9 @@ public class FormatTest { @SerializedName("dateTime") private Date dateTime = null; + @SerializedName("uuid") + private String uuid = null; + @SerializedName("password") private String password = null; @@ -170,6 +173,16 @@ public class FormatTest { this.dateTime = dateTime; } + /** + **/ + @ApiModelProperty(value = "") + public String getUuid() { + return uuid; + } + public void setUuid(String uuid) { + this.uuid = uuid; + } + /** **/ @ApiModelProperty(required = true, value = "") @@ -201,12 +214,13 @@ public class FormatTest { Objects.equals(this.binary, formatTest.binary) && Objects.equals(this.date, formatTest.date) && Objects.equals(this.dateTime, formatTest.dateTime) && + Objects.equals(this.uuid, formatTest.uuid) && Objects.equals(this.password, formatTest.password); } @Override public int hashCode() { - return Objects.hash(integer, int32, int64, number, _float, _double, string, _byte, binary, date, dateTime, password); + return Objects.hash(integer, int32, int64, number, _float, _double, string, _byte, binary, date, dateTime, uuid, password); } @Override @@ -225,6 +239,7 @@ public class FormatTest { sb.append(" binary: ").append(toIndentedString(binary)).append("\n"); sb.append(" date: ").append(toIndentedString(date)).append("\n"); sb.append(" dateTime: ").append(toIndentedString(dateTime)).append("\n"); + sb.append(" uuid: ").append(toIndentedString(uuid)).append("\n"); sb.append(" password: ").append(toIndentedString(password)).append("\n"); sb.append("}"); return sb.toString(); diff --git a/samples/client/petstore/java/retrofit/git_push.sh b/samples/client/petstore/java/retrofit/git_push.sh index 1a36388db02..ed374619b13 100644 --- a/samples/client/petstore/java/retrofit/git_push.sh +++ b/samples/client/petstore/java/retrofit/git_push.sh @@ -8,12 +8,12 @@ git_repo_id=$2 release_note=$3 if [ "$git_user_id" = "" ]; then - git_user_id="YOUR_GIT_USR_ID" + git_user_id="GIT_USER_ID" echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" fi if [ "$git_repo_id" = "" ]; then - git_repo_id="YOUR_GIT_REPO_ID" + git_repo_id="GIT_REPO_ID" echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" fi diff --git a/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/api/FakeApi.java b/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/api/FakeApi.java index 03f5b9aff1b..89fb9ddba73 100644 --- a/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/api/FakeApi.java +++ b/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/api/FakeApi.java @@ -6,6 +6,7 @@ import retrofit.Callback; import retrofit.http.*; import retrofit.mime.*; +import java.math.BigDecimal; import java.util.Date; import java.util.ArrayList; @@ -36,7 +37,7 @@ public interface FakeApi { @FormUrlEncoded @POST("/fake") Void testEndpointParameters( - @Field("number") String number, @Field("double") Double _double, @Field("string") String string, @Field("byte") byte[] _byte, @Field("integer") Integer integer, @Field("int32") Integer int32, @Field("int64") Long int64, @Field("float") Float _float, @Field("binary") byte[] binary, @Field("date") Date date, @Field("dateTime") Date dateTime, @Field("password") String password + @Field("number") BigDecimal number, @Field("double") Double _double, @Field("string") String string, @Field("byte") byte[] _byte, @Field("integer") Integer integer, @Field("int32") Integer int32, @Field("int64") Long int64, @Field("float") Float _float, @Field("binary") byte[] binary, @Field("date") Date date, @Field("dateTime") Date dateTime, @Field("password") String password ); /** @@ -61,6 +62,6 @@ public interface FakeApi { @FormUrlEncoded @POST("/fake") void testEndpointParameters( - @Field("number") String number, @Field("double") Double _double, @Field("string") String string, @Field("byte") byte[] _byte, @Field("integer") Integer integer, @Field("int32") Integer int32, @Field("int64") Long int64, @Field("float") Float _float, @Field("binary") byte[] binary, @Field("date") Date date, @Field("dateTime") Date dateTime, @Field("password") String password, Callback cb + @Field("number") BigDecimal number, @Field("double") Double _double, @Field("string") String string, @Field("byte") byte[] _byte, @Field("integer") Integer integer, @Field("int32") Integer int32, @Field("int64") Long int64, @Field("float") Float _float, @Field("binary") byte[] binary, @Field("date") Date date, @Field("dateTime") Date dateTime, @Field("password") String password, Callback cb ); } diff --git a/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/AnimalFarm.java b/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/AnimalFarm.java new file mode 100644 index 00000000000..c7d37b1512c --- /dev/null +++ b/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/AnimalFarm.java @@ -0,0 +1,53 @@ +package io.swagger.client.model; + +import java.util.Objects; +import io.swagger.client.model.Animal; +import java.util.ArrayList; +import java.util.List; + +import com.google.gson.annotations.SerializedName; + + + + + +public class AnimalFarm extends ArrayList { + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + AnimalFarm animalFarm = (AnimalFarm) o; + return true; + } + + @Override + public int hashCode() { + return Objects.hash(); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class AnimalFarm {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/FormatTest.java b/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/FormatTest.java index 40d1ca0ecea..694335531fd 100644 --- a/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/FormatTest.java +++ b/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/FormatTest.java @@ -47,6 +47,9 @@ public class FormatTest { @SerializedName("dateTime") private Date dateTime = null; + @SerializedName("uuid") + private String uuid = null; + @SerializedName("password") private String password = null; @@ -170,6 +173,16 @@ public class FormatTest { this.dateTime = dateTime; } + /** + **/ + @ApiModelProperty(value = "") + public String getUuid() { + return uuid; + } + public void setUuid(String uuid) { + this.uuid = uuid; + } + /** **/ @ApiModelProperty(required = true, value = "") @@ -201,12 +214,13 @@ public class FormatTest { Objects.equals(binary, formatTest.binary) && Objects.equals(date, formatTest.date) && Objects.equals(dateTime, formatTest.dateTime) && + Objects.equals(uuid, formatTest.uuid) && Objects.equals(password, formatTest.password); } @Override public int hashCode() { - return Objects.hash(integer, int32, int64, number, _float, _double, string, _byte, binary, date, dateTime, password); + return Objects.hash(integer, int32, int64, number, _float, _double, string, _byte, binary, date, dateTime, uuid, password); } @Override @@ -225,6 +239,7 @@ public class FormatTest { sb.append(" binary: ").append(toIndentedString(binary)).append("\n"); sb.append(" date: ").append(toIndentedString(date)).append("\n"); sb.append(" dateTime: ").append(toIndentedString(dateTime)).append("\n"); + sb.append(" uuid: ").append(toIndentedString(uuid)).append("\n"); sb.append(" password: ").append(toIndentedString(password)).append("\n"); sb.append("}"); return sb.toString(); diff --git a/samples/client/petstore/java/retrofit2/git_push.sh b/samples/client/petstore/java/retrofit2/git_push.sh index 1a36388db02..ed374619b13 100644 --- a/samples/client/petstore/java/retrofit2/git_push.sh +++ b/samples/client/petstore/java/retrofit2/git_push.sh @@ -8,12 +8,12 @@ git_repo_id=$2 release_note=$3 if [ "$git_user_id" = "" ]; then - git_user_id="YOUR_GIT_USR_ID" + git_user_id="GIT_USER_ID" echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" fi if [ "$git_repo_id" = "" ]; then - git_repo_id="YOUR_GIT_REPO_ID" + git_repo_id="GIT_REPO_ID" echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" fi diff --git a/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/api/FakeApi.java b/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/api/FakeApi.java index dc732e67ae7..28db89beefd 100644 --- a/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/api/FakeApi.java +++ b/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/api/FakeApi.java @@ -8,6 +8,7 @@ import retrofit2.http.*; import okhttp3.RequestBody; +import java.math.BigDecimal; import java.util.Date; import java.util.ArrayList; @@ -37,7 +38,7 @@ public interface FakeApi { @FormUrlEncoded @POST("fake") Call testEndpointParameters( - @Field("number") String number, @Field("double") Double _double, @Field("string") String string, @Field("byte") byte[] _byte, @Field("integer") Integer integer, @Field("int32") Integer int32, @Field("int64") Long int64, @Field("float") Float _float, @Field("binary") byte[] binary, @Field("date") Date date, @Field("dateTime") Date dateTime, @Field("password") String password + @Field("number") BigDecimal number, @Field("double") Double _double, @Field("string") String string, @Field("byte") byte[] _byte, @Field("integer") Integer integer, @Field("int32") Integer int32, @Field("int64") Long int64, @Field("float") Float _float, @Field("binary") byte[] binary, @Field("date") Date date, @Field("dateTime") Date dateTime, @Field("password") String password ); } diff --git a/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/AnimalFarm.java b/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/AnimalFarm.java new file mode 100644 index 00000000000..c7d37b1512c --- /dev/null +++ b/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/AnimalFarm.java @@ -0,0 +1,53 @@ +package io.swagger.client.model; + +import java.util.Objects; +import io.swagger.client.model.Animal; +import java.util.ArrayList; +import java.util.List; + +import com.google.gson.annotations.SerializedName; + + + + + +public class AnimalFarm extends ArrayList { + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + AnimalFarm animalFarm = (AnimalFarm) o; + return true; + } + + @Override + public int hashCode() { + return Objects.hash(); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class AnimalFarm {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/FormatTest.java b/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/FormatTest.java index 40d1ca0ecea..694335531fd 100644 --- a/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/FormatTest.java +++ b/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/FormatTest.java @@ -47,6 +47,9 @@ public class FormatTest { @SerializedName("dateTime") private Date dateTime = null; + @SerializedName("uuid") + private String uuid = null; + @SerializedName("password") private String password = null; @@ -170,6 +173,16 @@ public class FormatTest { this.dateTime = dateTime; } + /** + **/ + @ApiModelProperty(value = "") + public String getUuid() { + return uuid; + } + public void setUuid(String uuid) { + this.uuid = uuid; + } + /** **/ @ApiModelProperty(required = true, value = "") @@ -201,12 +214,13 @@ public class FormatTest { Objects.equals(binary, formatTest.binary) && Objects.equals(date, formatTest.date) && Objects.equals(dateTime, formatTest.dateTime) && + Objects.equals(uuid, formatTest.uuid) && Objects.equals(password, formatTest.password); } @Override public int hashCode() { - return Objects.hash(integer, int32, int64, number, _float, _double, string, _byte, binary, date, dateTime, password); + return Objects.hash(integer, int32, int64, number, _float, _double, string, _byte, binary, date, dateTime, uuid, password); } @Override @@ -225,6 +239,7 @@ public class FormatTest { sb.append(" binary: ").append(toIndentedString(binary)).append("\n"); sb.append(" date: ").append(toIndentedString(date)).append("\n"); sb.append(" dateTime: ").append(toIndentedString(dateTime)).append("\n"); + sb.append(" uuid: ").append(toIndentedString(uuid)).append("\n"); sb.append(" password: ").append(toIndentedString(password)).append("\n"); sb.append("}"); return sb.toString(); diff --git a/samples/client/petstore/java/retrofit2rx/git_push.sh b/samples/client/petstore/java/retrofit2rx/git_push.sh index 1a36388db02..ed374619b13 100644 --- a/samples/client/petstore/java/retrofit2rx/git_push.sh +++ b/samples/client/petstore/java/retrofit2rx/git_push.sh @@ -8,12 +8,12 @@ git_repo_id=$2 release_note=$3 if [ "$git_user_id" = "" ]; then - git_user_id="YOUR_GIT_USR_ID" + git_user_id="GIT_USER_ID" echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" fi if [ "$git_repo_id" = "" ]; then - git_repo_id="YOUR_GIT_REPO_ID" + git_repo_id="GIT_REPO_ID" echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" fi diff --git a/samples/client/petstore/java/retrofit2rx/src/main/java/io/swagger/client/model/AnimalFarm.java b/samples/client/petstore/java/retrofit2rx/src/main/java/io/swagger/client/model/AnimalFarm.java new file mode 100644 index 00000000000..c7d37b1512c --- /dev/null +++ b/samples/client/petstore/java/retrofit2rx/src/main/java/io/swagger/client/model/AnimalFarm.java @@ -0,0 +1,53 @@ +package io.swagger.client.model; + +import java.util.Objects; +import io.swagger.client.model.Animal; +import java.util.ArrayList; +import java.util.List; + +import com.google.gson.annotations.SerializedName; + + + + + +public class AnimalFarm extends ArrayList { + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + AnimalFarm animalFarm = (AnimalFarm) o; + return true; + } + + @Override + public int hashCode() { + return Objects.hash(); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class AnimalFarm {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/samples/client/petstore/java/retrofit2rx/src/main/java/io/swagger/client/model/FormatTest.java b/samples/client/petstore/java/retrofit2rx/src/main/java/io/swagger/client/model/FormatTest.java index 4106b15caaf..694335531fd 100644 --- a/samples/client/petstore/java/retrofit2rx/src/main/java/io/swagger/client/model/FormatTest.java +++ b/samples/client/petstore/java/retrofit2rx/src/main/java/io/swagger/client/model/FormatTest.java @@ -5,7 +5,6 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.math.BigDecimal; import java.util.Date; -import java.util.UUID; import com.google.gson.annotations.SerializedName; @@ -49,7 +48,7 @@ public class FormatTest { private Date dateTime = null; @SerializedName("uuid") - private UUID uuid = null; + private String uuid = null; @SerializedName("password") private String password = null; @@ -177,10 +176,10 @@ public class FormatTest { /** **/ @ApiModelProperty(value = "") - public UUID getUuid() { + public String getUuid() { return uuid; } - public void setUuid(UUID uuid) { + public void setUuid(String uuid) { this.uuid = uuid; } diff --git a/samples/client/petstore/javascript-promise/docs/EnumClass.md b/samples/client/petstore/javascript-promise/docs/EnumClass.md index 5159ccfb454..04b89362941 100644 --- a/samples/client/petstore/javascript-promise/docs/EnumClass.md +++ b/samples/client/petstore/javascript-promise/docs/EnumClass.md @@ -1,7 +1,12 @@ # SwaggerPetstore.EnumClass -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- +## Enum + + +* `_abc` (value: `"_abc"`) + +* `-efg` (value: `"-efg"`) + +* `(xyz)` (value: `"(xyz)"`) diff --git a/samples/client/petstore/javascript-promise/docs/EnumTest.md b/samples/client/petstore/javascript-promise/docs/EnumTest.md index 724eea8a25e..22c4da11b9d 100644 --- a/samples/client/petstore/javascript-promise/docs/EnumTest.md +++ b/samples/client/petstore/javascript-promise/docs/EnumTest.md @@ -8,3 +8,36 @@ Name | Type | Description | Notes **enumNumber** | **Number** | | [optional] + +## Enum: EnumStringEnum + + +* `UPPER` (value: `"UPPER"`) + +* `lower` (value: `"lower"`) + + + + + +## Enum: EnumIntegerEnum + + +* `1` (value: `1`) + +* `-1` (value: `-1`) + + + + + +## Enum: EnumNumberEnum + + +* `1.1` (value: `1.1`) + +* `-1.2` (value: `-1.2`) + + + + diff --git a/samples/client/petstore/javascript-promise/docs/Order.md b/samples/client/petstore/javascript-promise/docs/Order.md index 10503b58206..95ee5946ed2 100644 --- a/samples/client/petstore/javascript-promise/docs/Order.md +++ b/samples/client/petstore/javascript-promise/docs/Order.md @@ -11,3 +11,16 @@ Name | Type | Description | Notes **complete** | **Boolean** | | [optional] [default to false] + +## Enum: StatusEnum + + +* `placed` (value: `"placed"`) + +* `approved` (value: `"approved"`) + +* `delivered` (value: `"delivered"`) + + + + diff --git a/samples/client/petstore/javascript-promise/docs/Pet.md b/samples/client/petstore/javascript-promise/docs/Pet.md index f1b049dcadd..a08333731c0 100644 --- a/samples/client/petstore/javascript-promise/docs/Pet.md +++ b/samples/client/petstore/javascript-promise/docs/Pet.md @@ -11,3 +11,16 @@ Name | Type | Description | Notes **status** | **String** | pet status in the store | [optional] + +## Enum: StatusEnum + + +* `available` (value: `"available"`) + +* `pending` (value: `"pending"`) + +* `sold` (value: `"sold"`) + + + + diff --git a/samples/client/petstore/javascript-promise/src/model/EnumClass.js b/samples/client/petstore/javascript-promise/src/model/EnumClass.js index 268addcbaed..e9bf5219ee5 100644 --- a/samples/client/petstore/javascript-promise/src/model/EnumClass.js +++ b/samples/client/petstore/javascript-promise/src/model/EnumClass.js @@ -23,17 +23,17 @@ */ var exports = { /** - * value: _abc + * value: "_abc" * @const */ "_abc": "_abc", /** - * value: -efg + * value: "-efg" * @const */ "-efg": "-efg", /** - * value: (xyz) + * value: "(xyz)" * @const */ "(xyz)": "(xyz)" }; diff --git a/samples/client/petstore/javascript/README.md b/samples/client/petstore/javascript/README.md index 651e1e6047f..1bf60abb9c3 100644 --- a/samples/client/petstore/javascript/README.md +++ b/samples/client/petstore/javascript/README.md @@ -6,7 +6,7 @@ This SDK is automatically generated by the [Swagger Codegen](https://github.com/ - API version: 1.0.0 - Package version: 1.0.0 -- Build date: 2016-05-03T11:05:41.851+08:00 +- Build date: 2016-05-06T18:34:50.267+08:00 - Build package: class io.swagger.codegen.languages.JavascriptClientCodegen ## Installation @@ -117,6 +117,7 @@ Class | Method | HTTP request | Description ## Documentation for Models - [SwaggerPetstore.Animal](docs/Animal.md) + - [SwaggerPetstore.AnimalFarm](docs/AnimalFarm.md) - [SwaggerPetstore.ApiResponse](docs/ApiResponse.md) - [SwaggerPetstore.Cat](docs/Cat.md) - [SwaggerPetstore.Category](docs/Category.md) @@ -137,12 +138,6 @@ Class | Method | HTTP request | Description ## Documentation for Authorization -### api_key - -- **Type**: API key -- **API key parameter name**: api_key -- **Location**: HTTP header - ### petstore_auth - **Type**: OAuth @@ -152,3 +147,9 @@ Class | Method | HTTP request | Description - write:pets: modify pets in your account - read:pets: read your pets +### api_key + +- **Type**: API key +- **API key parameter name**: api_key +- **Location**: HTTP header + diff --git a/samples/client/petstore/javascript/docs/AnimalFarm.md b/samples/client/petstore/javascript/docs/AnimalFarm.md new file mode 100644 index 00000000000..b72739a44c4 --- /dev/null +++ b/samples/client/petstore/javascript/docs/AnimalFarm.md @@ -0,0 +1,7 @@ +# SwaggerPetstore.AnimalFarm + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + + diff --git a/samples/client/petstore/javascript/docs/EnumClass.md b/samples/client/petstore/javascript/docs/EnumClass.md index 5159ccfb454..04b89362941 100644 --- a/samples/client/petstore/javascript/docs/EnumClass.md +++ b/samples/client/petstore/javascript/docs/EnumClass.md @@ -1,7 +1,12 @@ # SwaggerPetstore.EnumClass -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- +## Enum + + +* `_abc` (value: `"_abc"`) + +* `-efg` (value: `"-efg"`) + +* `(xyz)` (value: `"(xyz)"`) diff --git a/samples/client/petstore/javascript/docs/EnumTest.md b/samples/client/petstore/javascript/docs/EnumTest.md index 724eea8a25e..22c4da11b9d 100644 --- a/samples/client/petstore/javascript/docs/EnumTest.md +++ b/samples/client/petstore/javascript/docs/EnumTest.md @@ -8,3 +8,36 @@ Name | Type | Description | Notes **enumNumber** | **Number** | | [optional] + +## Enum: EnumStringEnum + + +* `UPPER` (value: `"UPPER"`) + +* `lower` (value: `"lower"`) + + + + + +## Enum: EnumIntegerEnum + + +* `1` (value: `1`) + +* `-1` (value: `-1`) + + + + + +## Enum: EnumNumberEnum + + +* `1.1` (value: `1.1`) + +* `-1.2` (value: `-1.2`) + + + + diff --git a/samples/client/petstore/javascript/docs/Order.md b/samples/client/petstore/javascript/docs/Order.md index 10503b58206..95ee5946ed2 100644 --- a/samples/client/petstore/javascript/docs/Order.md +++ b/samples/client/petstore/javascript/docs/Order.md @@ -11,3 +11,16 @@ Name | Type | Description | Notes **complete** | **Boolean** | | [optional] [default to false] + +## Enum: StatusEnum + + +* `placed` (value: `"placed"`) + +* `approved` (value: `"approved"`) + +* `delivered` (value: `"delivered"`) + + + + diff --git a/samples/client/petstore/javascript/docs/Pet.md b/samples/client/petstore/javascript/docs/Pet.md index f1b049dcadd..a08333731c0 100644 --- a/samples/client/petstore/javascript/docs/Pet.md +++ b/samples/client/petstore/javascript/docs/Pet.md @@ -11,3 +11,16 @@ Name | Type | Description | Notes **status** | **String** | pet status in the store | [optional] + +## Enum: StatusEnum + + +* `available` (value: `"available"`) + +* `pending` (value: `"pending"`) + +* `sold` (value: `"sold"`) + + + + diff --git a/samples/client/petstore/javascript/src/ApiClient.js b/samples/client/petstore/javascript/src/ApiClient.js index d45704dcdac..2598dd8d9ea 100644 --- a/samples/client/petstore/javascript/src/ApiClient.js +++ b/samples/client/petstore/javascript/src/ApiClient.js @@ -40,8 +40,8 @@ * @type {Array.} */ this.authentications = { - 'api_key': {type: 'apiKey', 'in': 'header', name: 'api_key'}, - 'petstore_auth': {type: 'oauth2'} + 'petstore_auth': {type: 'oauth2'}, + 'api_key': {type: 'apiKey', 'in': 'header', name: 'api_key'} }; /** * The default HTTP headers to be included for all API calls. diff --git a/samples/client/petstore/javascript/src/index.js b/samples/client/petstore/javascript/src/index.js index 2c3fb27ef65..727b4782f45 100644 --- a/samples/client/petstore/javascript/src/index.js +++ b/samples/client/petstore/javascript/src/index.js @@ -1,12 +1,12 @@ (function(factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. - define(['ApiClient', 'model/Animal', 'model/ApiResponse', 'model/Cat', 'model/Category', 'model/Dog', 'model/EnumClass', 'model/EnumTest', 'model/FormatTest', 'model/Model200Response', 'model/ModelReturn', 'model/Name', 'model/Order', 'model/Pet', 'model/SpecialModelName', 'model/Tag', 'model/User', 'api/FakeApi', 'api/PetApi', 'api/StoreApi', 'api/UserApi'], factory); + define(['ApiClient', 'model/Animal', 'model/AnimalFarm', 'model/ApiResponse', 'model/Cat', 'model/Category', 'model/Dog', 'model/EnumClass', 'model/EnumTest', 'model/FormatTest', 'model/Model200Response', 'model/ModelReturn', 'model/Name', 'model/Order', 'model/Pet', 'model/SpecialModelName', 'model/Tag', 'model/User', 'api/FakeApi', 'api/PetApi', 'api/StoreApi', 'api/UserApi'], factory); } else if (typeof module === 'object' && module.exports) { // CommonJS-like environments that support module.exports, like Node. - module.exports = factory(require('./ApiClient'), require('./model/Animal'), require('./model/ApiResponse'), require('./model/Cat'), require('./model/Category'), require('./model/Dog'), require('./model/EnumClass'), require('./model/EnumTest'), require('./model/FormatTest'), require('./model/Model200Response'), require('./model/ModelReturn'), require('./model/Name'), require('./model/Order'), require('./model/Pet'), require('./model/SpecialModelName'), require('./model/Tag'), require('./model/User'), require('./api/FakeApi'), require('./api/PetApi'), require('./api/StoreApi'), require('./api/UserApi')); + module.exports = factory(require('./ApiClient'), require('./model/Animal'), require('./model/AnimalFarm'), require('./model/ApiResponse'), require('./model/Cat'), require('./model/Category'), require('./model/Dog'), require('./model/EnumClass'), require('./model/EnumTest'), require('./model/FormatTest'), require('./model/Model200Response'), require('./model/ModelReturn'), require('./model/Name'), require('./model/Order'), require('./model/Pet'), require('./model/SpecialModelName'), require('./model/Tag'), require('./model/User'), require('./api/FakeApi'), require('./api/PetApi'), require('./api/StoreApi'), require('./api/UserApi')); } -}(function(ApiClient, Animal, ApiResponse, Cat, Category, Dog, EnumClass, EnumTest, FormatTest, Model200Response, ModelReturn, Name, Order, Pet, SpecialModelName, Tag, User, FakeApi, PetApi, StoreApi, UserApi) { +}(function(ApiClient, Animal, AnimalFarm, ApiResponse, Cat, Category, Dog, EnumClass, EnumTest, FormatTest, Model200Response, ModelReturn, Name, Order, Pet, SpecialModelName, Tag, User, FakeApi, PetApi, StoreApi, UserApi) { 'use strict'; /** @@ -51,6 +51,11 @@ * @property {module:model/Animal} */ Animal: Animal, + /** + * The AnimalFarm model constructor. + * @property {module:model/AnimalFarm} + */ + AnimalFarm: AnimalFarm, /** * The ApiResponse model constructor. * @property {module:model/ApiResponse} diff --git a/samples/client/petstore/javascript/src/model/AnimalFarm.js b/samples/client/petstore/javascript/src/model/AnimalFarm.js new file mode 100644 index 00000000000..d5f6aa2a424 --- /dev/null +++ b/samples/client/petstore/javascript/src/model/AnimalFarm.js @@ -0,0 +1,64 @@ +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['ApiClient', 'model/Animal'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(require('../ApiClient'), require('./Animal')); + } else { + // Browser globals (root is window) + if (!root.SwaggerPetstore) { + root.SwaggerPetstore = {}; + } + root.SwaggerPetstore.AnimalFarm = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.Animal); + } +}(this, function(ApiClient, Animal) { + 'use strict'; + + + + + /** + * The AnimalFarm model module. + * @module model/AnimalFarm + * @version 1.0.0 + */ + + /** + * Constructs a new AnimalFarm. + * @alias module:model/AnimalFarm + * @class + * @extends Array + */ + var exports = function() { + var _this = this; + _this = new Array(); + Object.setPrototypeOf(_this, exports); + + return _this; + }; + + /** + * Constructs a AnimalFarm from a plain JavaScript object, optionally creating a new instance. + * Copies all relevant properties from data to obj if supplied or a new instance if not. + * @param {Object} data The plain JavaScript object bearing properties of interest. + * @param {module:model/AnimalFarm} obj Optional instance to populate. + * @return {module:model/AnimalFarm} The populated AnimalFarm instance. + */ + exports.constructFromObject = function(data, obj) { + if (data) { + obj = obj || new exports(); + ApiClient.constructFromObject(data, obj, Animal); + + } + return obj; + } + + + + + + return exports; +})); + + diff --git a/samples/client/petstore/javascript/src/model/EnumClass.js b/samples/client/petstore/javascript/src/model/EnumClass.js index 268addcbaed..e9bf5219ee5 100644 --- a/samples/client/petstore/javascript/src/model/EnumClass.js +++ b/samples/client/petstore/javascript/src/model/EnumClass.js @@ -23,17 +23,17 @@ */ var exports = { /** - * value: _abc + * value: "_abc" * @const */ "_abc": "_abc", /** - * value: -efg + * value: "-efg" * @const */ "-efg": "-efg", /** - * value: (xyz) + * value: "(xyz)" * @const */ "(xyz)": "(xyz)" }; From bff6c8bab4ffb04815e69d79ca5bd4b5195471f1 Mon Sep 17 00:00:00 2001 From: wing328 Date: Sat, 7 May 2016 08:47:30 +0800 Subject: [PATCH 18/19] add bitly --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c1617b9b79e..8eca8ecd53e 100644 --- a/README.md +++ b/README.md @@ -763,6 +763,7 @@ Here are some companies/projects using Swagger Codegen in production. To add you - [Acunetix](https://www.acunetix.com/) - [Atlassian](https://www.atlassian.com/) - [beemo](http://www.beemo.eu) +- [bitly](https://bitly.com) - [Cachet Financial](http://www.cachetfinancial.com/) - [CloudBoost](https://www.CloudBoost.io/) - [Cupix](http://www.cupix.com) From 77e56084ac889c198a92175c40c95d863bd805bd Mon Sep 17 00:00:00 2001 From: wing328 Date: Sat, 7 May 2016 17:49:54 +0800 Subject: [PATCH 19/19] regenerate c# petstore sample --- .../csharp/SwaggerClient/IO.Swagger.sln | 10 +- .../petstore/csharp/SwaggerClient/README.md | 17 +- .../csharp/SwaggerClient/docs/AnimalFarm.md | 8 + .../csharp/SwaggerClient/docs/EnumClass.md | 8 + .../csharp/SwaggerClient/docs/EnumTest.md | 11 + .../csharp/SwaggerClient/docs/FormatTest.md | 2 +- .../IO.Swagger.Test/IO.Swagger.Test.csproj | 2 +- .../IO.Swagger.Test/Model/AnimalFarmTests.cs | 56 +++++ .../IO.Swagger.Test/Model/EnumClassTests.cs | 56 +++++ .../IO.Swagger.Test/Model/EnumTestTests.cs | 80 +++++++ .../src/IO.Swagger/IO.Swagger.csproj | 2 +- .../src/IO.Swagger/Model/AnimalFarm.cs | 91 ++++++++ .../src/IO.Swagger/Model/EnumClass.cs | 40 ++++ .../src/IO.Swagger/Model/EnumTest.cs | 199 ++++++++++++++++++ .../src/IO.Swagger/Model/FormatTest.cs | 79 ++++--- .../SwaggerClientTest.csproj | 19 +- .../SwaggerClientTest.userprefs | 10 +- ...ClientTest.csproj.FilesWrittenAbsolute.txt | 22 +- 18 files changed, 617 insertions(+), 95 deletions(-) create mode 100644 samples/client/petstore/csharp/SwaggerClient/docs/AnimalFarm.md create mode 100644 samples/client/petstore/csharp/SwaggerClient/docs/EnumClass.md create mode 100644 samples/client/petstore/csharp/SwaggerClient/docs/EnumTest.md create mode 100644 samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/AnimalFarmTests.cs create mode 100644 samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/EnumClassTests.cs create mode 100644 samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/EnumTestTests.cs create mode 100644 samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/AnimalFarm.cs create mode 100644 samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/EnumClass.cs create mode 100644 samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/EnumTest.cs diff --git a/samples/client/petstore/csharp/SwaggerClient/IO.Swagger.sln b/samples/client/petstore/csharp/SwaggerClient/IO.Swagger.sln index 08cd5875c2e..72e6e04d121 100644 --- a/samples/client/petstore/csharp/SwaggerClient/IO.Swagger.sln +++ b/samples/client/petstore/csharp/SwaggerClient/IO.Swagger.sln @@ -2,7 +2,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2012 VisualStudioVersion = 12.0.0.0 MinimumVisualStudioVersion = 10.0.0.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IO.Swagger", "src\IO.Swagger\IO.Swagger.csproj", "{27FD0ED8-0F4A-458A-B564-6BFC0A02B9C9}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IO.Swagger", "src\IO.Swagger\IO.Swagger.csproj", "{AC0D0300-7030-473F-B672-17C40187815A}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IO.Swagger.Test", "src\IO.Swagger.Test\IO.Swagger.Test.csproj", "{19F1DEBC-DE5E-4517-8062-F000CD499087}" EndProject @@ -12,10 +12,10 @@ Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution -{27FD0ED8-0F4A-458A-B564-6BFC0A02B9C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU -{27FD0ED8-0F4A-458A-B564-6BFC0A02B9C9}.Debug|Any CPU.Build.0 = Debug|Any CPU -{27FD0ED8-0F4A-458A-B564-6BFC0A02B9C9}.Release|Any CPU.ActiveCfg = Release|Any CPU -{27FD0ED8-0F4A-458A-B564-6BFC0A02B9C9}.Release|Any CPU.Build.0 = Release|Any CPU +{AC0D0300-7030-473F-B672-17C40187815A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU +{AC0D0300-7030-473F-B672-17C40187815A}.Debug|Any CPU.Build.0 = Debug|Any CPU +{AC0D0300-7030-473F-B672-17C40187815A}.Release|Any CPU.ActiveCfg = Release|Any CPU +{AC0D0300-7030-473F-B672-17C40187815A}.Release|Any CPU.Build.0 = Release|Any CPU {19F1DEBC-DE5E-4517-8062-F000CD499087}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {19F1DEBC-DE5E-4517-8062-F000CD499087}.Debug|Any CPU.Build.0 = Debug|Any CPU {19F1DEBC-DE5E-4517-8062-F000CD499087}.Release|Any CPU.ActiveCfg = Release|Any CPU diff --git a/samples/client/petstore/csharp/SwaggerClient/README.md b/samples/client/petstore/csharp/SwaggerClient/README.md index 174b3292633..1f7e9f634e0 100644 --- a/samples/client/petstore/csharp/SwaggerClient/README.md +++ b/samples/client/petstore/csharp/SwaggerClient/README.md @@ -6,7 +6,7 @@ This C# SDK is automatically generated by the [Swagger Codegen](https://github.c - API version: 1.0.0 - SDK version: 1.0.0 -- Build date: 2016-05-01T20:17:48.968-04:00 +- Build date: 2016-05-07T17:39:09.181+08:00 - Build package: class io.swagger.codegen.languages.CSharpClientCodegen ## Frameworks supported @@ -113,10 +113,13 @@ Class | Method | HTTP request | Description ## Documentation for Models - [Model.Animal](docs/Animal.md) + - [Model.AnimalFarm](docs/AnimalFarm.md) - [Model.ApiResponse](docs/ApiResponse.md) - [Model.Cat](docs/Cat.md) - [Model.Category](docs/Category.md) - [Model.Dog](docs/Dog.md) + - [Model.EnumClass](docs/EnumClass.md) + - [Model.EnumTest](docs/EnumTest.md) - [Model.FormatTest](docs/FormatTest.md) - [Model.Model200Response](docs/Model200Response.md) - [Model.ModelReturn](docs/ModelReturn.md) @@ -131,6 +134,12 @@ Class | Method | HTTP request | Description ## Documentation for Authorization +### api_key + +- **Type**: API key +- **API key parameter name**: api_key +- **Location**: HTTP header + ### petstore_auth - **Type**: OAuth @@ -140,9 +149,3 @@ Class | Method | HTTP request | Description - write:pets: modify pets in your account - read:pets: read your pets -### api_key - -- **Type**: API key -- **API key parameter name**: api_key -- **Location**: HTTP header - diff --git a/samples/client/petstore/csharp/SwaggerClient/docs/AnimalFarm.md b/samples/client/petstore/csharp/SwaggerClient/docs/AnimalFarm.md new file mode 100644 index 00000000000..4d1cccb0cef --- /dev/null +++ b/samples/client/petstore/csharp/SwaggerClient/docs/AnimalFarm.md @@ -0,0 +1,8 @@ +# IO.Swagger.Model.AnimalFarm +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp/SwaggerClient/docs/EnumClass.md b/samples/client/petstore/csharp/SwaggerClient/docs/EnumClass.md new file mode 100644 index 00000000000..d936aad6f0b --- /dev/null +++ b/samples/client/petstore/csharp/SwaggerClient/docs/EnumClass.md @@ -0,0 +1,8 @@ +# IO.Swagger.Model.EnumClass +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp/SwaggerClient/docs/EnumTest.md b/samples/client/petstore/csharp/SwaggerClient/docs/EnumTest.md new file mode 100644 index 00000000000..f0f300021b5 --- /dev/null +++ b/samples/client/petstore/csharp/SwaggerClient/docs/EnumTest.md @@ -0,0 +1,11 @@ +# IO.Swagger.Model.EnumTest +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**EnumString** | **string** | | [optional] +**EnumInteger** | **int?** | | [optional] +**EnumNumber** | **double?** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp/SwaggerClient/docs/FormatTest.md b/samples/client/petstore/csharp/SwaggerClient/docs/FormatTest.md index 2672fee238c..7ddfad04d05 100644 --- a/samples/client/petstore/csharp/SwaggerClient/docs/FormatTest.md +++ b/samples/client/petstore/csharp/SwaggerClient/docs/FormatTest.md @@ -14,7 +14,7 @@ Name | Type | Description | Notes **Binary** | **byte[]** | | [optional] **Date** | **DateTime?** | | **DateTime** | **DateTime?** | | [optional] -**Uuid** | **Guid** | | [optional] +**Uuid** | **Guid?** | | [optional] **Password** | **string** | | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/IO.Swagger.Test.csproj b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/IO.Swagger.Test.csproj index 618cc188575..de3b57cfe78 100644 --- a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/IO.Swagger.Test.csproj +++ b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/IO.Swagger.Test.csproj @@ -65,7 +65,7 @@ - {27FD0ED8-0F4A-458A-B564-6BFC0A02B9C9} + {AC0D0300-7030-473F-B672-17C40187815A} IO.Swagger diff --git a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/AnimalFarmTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/AnimalFarmTests.cs new file mode 100644 index 00000000000..5baa4d93485 --- /dev/null +++ b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/AnimalFarmTests.cs @@ -0,0 +1,56 @@ +using NUnit.Framework; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using IO.Swagger.Api; +using IO.Swagger.Model; +using IO.Swagger.Client; +using System.Reflection; + +namespace IO.Swagger.Test +{ + /// + /// Class for testing AnimalFarm + /// + /// + /// This file is automatically generated by Swagger Codegen. + /// Please update the test case below to test the model. + /// + [TestFixture] + public class AnimalFarmTests + { + private AnimalFarm instance; + + /// + /// Setup before each test + /// + [SetUp] + public void Init() + { + instance = new AnimalFarm(); + } + + /// + /// Clean up after each test + /// + [TearDown] + public void Cleanup() + { + + } + + /// + /// Test an instance of AnimalFarm + /// + [Test] + public void AnimalFarmInstanceTest() + { + Assert.IsInstanceOf (instance, "instance is a AnimalFarm"); + } + + + } + +} diff --git a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/EnumClassTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/EnumClassTests.cs new file mode 100644 index 00000000000..8c81c81fbb1 --- /dev/null +++ b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/EnumClassTests.cs @@ -0,0 +1,56 @@ +using NUnit.Framework; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using IO.Swagger.Api; +using IO.Swagger.Model; +using IO.Swagger.Client; +using System.Reflection; + +namespace IO.Swagger.Test +{ + /// + /// Class for testing EnumClass + /// + /// + /// This file is automatically generated by Swagger Codegen. + /// Please update the test case below to test the model. + /// + [TestFixture] + public class EnumClassTests + { + private EnumClass instance; + + /// + /// Setup before each test + /// + [SetUp] + public void Init() + { + instance = new EnumClass(); + } + + /// + /// Clean up after each test + /// + [TearDown] + public void Cleanup() + { + + } + + /// + /// Test an instance of EnumClass + /// + [Test] + public void EnumClassInstanceTest() + { + Assert.IsInstanceOf (instance, "instance is a EnumClass"); + } + + + } + +} diff --git a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/EnumTestTests.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/EnumTestTests.cs new file mode 100644 index 00000000000..2679b085233 --- /dev/null +++ b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger.Test/Model/EnumTestTests.cs @@ -0,0 +1,80 @@ +using NUnit.Framework; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using IO.Swagger.Api; +using IO.Swagger.Model; +using IO.Swagger.Client; +using System.Reflection; + +namespace IO.Swagger.Test +{ + /// + /// Class for testing EnumTest + /// + /// + /// This file is automatically generated by Swagger Codegen. + /// Please update the test case below to test the model. + /// + [TestFixture] + public class EnumTestTests + { + private EnumTest instance; + + /// + /// Setup before each test + /// + [SetUp] + public void Init() + { + instance = new EnumTest(); + } + + /// + /// Clean up after each test + /// + [TearDown] + public void Cleanup() + { + + } + + /// + /// Test an instance of EnumTest + /// + [Test] + public void EnumTestInstanceTest() + { + Assert.IsInstanceOf (instance, "instance is a EnumTest"); + } + + /// + /// Test the property 'EnumString' + /// + [Test] + public void EnumStringTest() + { + // TODO: unit test for the property 'EnumString' + } + /// + /// Test the property 'EnumInteger' + /// + [Test] + public void EnumIntegerTest() + { + // TODO: unit test for the property 'EnumInteger' + } + /// + /// Test the property 'EnumNumber' + /// + [Test] + public void EnumNumberTest() + { + // TODO: unit test for the property 'EnumNumber' + } + + } + +} diff --git a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/IO.Swagger.csproj b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/IO.Swagger.csproj index 36e6f0008e9..5d9a64329c1 100644 --- a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/IO.Swagger.csproj +++ b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/IO.Swagger.csproj @@ -3,7 +3,7 @@ Debug AnyCPU - {27FD0ED8-0F4A-458A-B564-6BFC0A02B9C9} + {AC0D0300-7030-473F-B672-17C40187815A} Library Properties Swagger Library diff --git a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/AnimalFarm.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/AnimalFarm.cs new file mode 100644 index 00000000000..76685fe8495 --- /dev/null +++ b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/AnimalFarm.cs @@ -0,0 +1,91 @@ +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace IO.Swagger.Model +{ + /// + /// AnimalFarm + /// + [DataContract] + public partial class AnimalFarm : List, IEquatable + { + /// + /// Initializes a new instance of the class. + /// + public AnimalFarm() + { + + + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class AnimalFarm {\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public new 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 AnimalFarm); + } + + /// + /// Returns true if AnimalFarm instances are equal + /// + /// Instance of AnimalFarm to be compared + /// Boolean + public bool Equals(AnimalFarm other) + { + // credit: http://stackoverflow.com/a/10454552/677735 + if (other == null) + return false; + + return false; + } + + /// + /// 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 :) + return hash; + } + } + } + +} diff --git a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/EnumClass.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/EnumClass.cs new file mode 100644 index 00000000000..1fb5f0b6626 --- /dev/null +++ b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/EnumClass.cs @@ -0,0 +1,40 @@ +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace IO.Swagger.Model +{ + /// + /// Gets or Sets EnumClass + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum EnumClass + { + + /// + /// Enum Abc for "_abc" + /// + [EnumMember(Value = "_abc")] + Abc, + + /// + /// Enum efg for "-efg" + /// + [EnumMember(Value = "-efg")] + efg, + + /// + /// Enum xyz for "(xyz)" + /// + [EnumMember(Value = "(xyz)")] + xyz + } + +} diff --git a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/EnumTest.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/EnumTest.cs new file mode 100644 index 00000000000..f8bebd6b2d7 --- /dev/null +++ b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/EnumTest.cs @@ -0,0 +1,199 @@ +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace IO.Swagger.Model +{ + /// + /// EnumTest + /// + [DataContract] + public partial class EnumTest : IEquatable + { + /// + /// Gets or Sets EnumString + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum EnumStringEnum + { + + /// + /// Enum Upper for "UPPER" + /// + [EnumMember(Value = "UPPER")] + Upper, + + /// + /// Enum Lower for "lower" + /// + [EnumMember(Value = "lower")] + Lower + } + + /// + /// Gets or Sets EnumInteger + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum EnumIntegerEnum + { + + /// + /// Enum NUMBER_1 for 1 + /// + [EnumMember(Value = "1")] + NUMBER_1 = 1, + + /// + /// Enum NUMBER_MINUS_1 for -1 + /// + [EnumMember(Value = "-1")] + NUMBER_MINUS_1 = -1 + } + + /// + /// Gets or Sets EnumNumber + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum EnumNumberEnum + { + + /// + /// Enum NUMBER_1_DOT_1 for 1.1 + /// + [EnumMember(Value = "1.1")] + NUMBER_1_DOT_1, + + /// + /// Enum NUMBER_MINUS_1_DOT_2 for -1.2 + /// + [EnumMember(Value = "-1.2")] + NUMBER_MINUS_1_DOT_2 + } + + /// + /// Gets or Sets EnumString + /// + [DataMember(Name="enum_string", EmitDefaultValue=false)] + public EnumStringEnum? EnumString { get; set; } + /// + /// Gets or Sets EnumInteger + /// + [DataMember(Name="enum_integer", EmitDefaultValue=false)] + public EnumIntegerEnum? EnumInteger { get; set; } + /// + /// Gets or Sets EnumNumber + /// + [DataMember(Name="enum_number", EmitDefaultValue=false)] + public EnumNumberEnum? EnumNumber { get; set; } + /// + /// Initializes a new instance of the class. + /// + /// EnumString. + /// EnumInteger. + /// EnumNumber. + public EnumTest(EnumStringEnum? EnumString = null, EnumIntegerEnum? EnumInteger = null, EnumNumberEnum? EnumNumber = null) + { + + + this.EnumString = EnumString; + + this.EnumInteger = EnumInteger; + + this.EnumNumber = EnumNumber; + + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class EnumTest {\n"); + sb.Append(" EnumString: ").Append(EnumString).Append("\n"); +sb.Append(" EnumInteger: ").Append(EnumInteger).Append("\n"); +sb.Append(" EnumNumber: ").Append(EnumNumber).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public 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 EnumTest); + } + + /// + /// Returns true if EnumTest instances are equal + /// + /// Instance of EnumTest to be compared + /// Boolean + public bool Equals(EnumTest other) + { + // credit: http://stackoverflow.com/a/10454552/677735 + if (other == null) + return false; + + return + ( + this.EnumString == other.EnumString || + this.EnumString != null && + this.EnumString.Equals(other.EnumString) + ) && + ( + this.EnumInteger == other.EnumInteger || + this.EnumInteger != null && + this.EnumInteger.Equals(other.EnumInteger) + ) && + ( + this.EnumNumber == other.EnumNumber || + this.EnumNumber != null && + this.EnumNumber.Equals(other.EnumNumber) + ); + } + + /// + /// 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.EnumString != null) + hash = hash * 59 + this.EnumString.GetHashCode(); + if (this.EnumInteger != null) + hash = hash * 59 + this.EnumInteger.GetHashCode(); + if (this.EnumNumber != null) + hash = hash * 59 + this.EnumNumber.GetHashCode(); + return hash; + } + } + } + +} diff --git a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/FormatTest.cs b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/FormatTest.cs index 49e7d1041aa..33301f02a95 100644 --- a/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/FormatTest.cs +++ b/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Model/FormatTest.cs @@ -12,15 +12,13 @@ using Newtonsoft.Json.Converters; namespace IO.Swagger.Model { /// - /// + /// FormatTest /// [DataContract] public partial class FormatTest : IEquatable - { - + { /// /// Initializes a new instance of the class. - /// Initializes a new instance of the class. /// /// Integer. /// Int32. @@ -35,7 +33,6 @@ namespace IO.Swagger.Model /// DateTime. /// Uuid. /// Password (required). - public FormatTest(int? Integer = null, int? Int32 = null, long? Int64 = null, double? Number = null, float? _Float = null, double? _Double = null, string _String = null, byte[] _Byte = null, byte[] Binary = null, DateTime? Date = null, DateTime? DateTime = null, Guid? Uuid = null, string Password = null) { // to ensure "Number" is required (not null) @@ -74,97 +71,93 @@ namespace IO.Swagger.Model { this.Password = Password; } - this.Integer = Integer; - this.Int32 = Int32; - this.Int64 = Int64; - this._Float = _Float; - this._Double = _Double; - this._String = _String; - this.Binary = Binary; - this.DateTime = DateTime; - this.Uuid = Uuid; + + + this.Integer = Integer; + + this.Int32 = Int32; + + this.Int64 = Int64; + + this._Float = _Float; + + this._Double = _Double; + + this._String = _String; + + this.Binary = Binary; + + this.DateTime = DateTime; + + this.Uuid = Uuid; } - - + /// /// Gets or Sets Integer /// [DataMember(Name="integer", EmitDefaultValue=false)] public int? Integer { get; set; } - /// /// Gets or Sets Int32 /// [DataMember(Name="int32", EmitDefaultValue=false)] public int? Int32 { get; set; } - /// /// Gets or Sets Int64 /// [DataMember(Name="int64", EmitDefaultValue=false)] public long? Int64 { get; set; } - /// /// Gets or Sets Number /// [DataMember(Name="number", EmitDefaultValue=false)] public double? Number { get; set; } - /// /// Gets or Sets _Float /// [DataMember(Name="float", EmitDefaultValue=false)] public float? _Float { get; set; } - /// /// Gets or Sets _Double /// [DataMember(Name="double", EmitDefaultValue=false)] public double? _Double { get; set; } - /// /// Gets or Sets _String /// [DataMember(Name="string", EmitDefaultValue=false)] public string _String { get; set; } - /// /// Gets or Sets _Byte /// [DataMember(Name="byte", EmitDefaultValue=false)] public byte[] _Byte { get; set; } - /// /// Gets or Sets Binary /// [DataMember(Name="binary", EmitDefaultValue=false)] public byte[] Binary { get; set; } - /// /// Gets or Sets Date /// [DataMember(Name="date", EmitDefaultValue=false)] public DateTime? Date { get; set; } - /// /// Gets or Sets DateTime /// [DataMember(Name="dateTime", EmitDefaultValue=false)] public DateTime? DateTime { get; set; } - /// /// Gets or Sets Uuid /// [DataMember(Name="uuid", EmitDefaultValue=false)] public Guid? Uuid { get; set; } - /// /// Gets or Sets Password /// [DataMember(Name="password", EmitDefaultValue=false)] public string Password { get; set; } - /// /// Returns the string presentation of the object /// @@ -174,22 +167,22 @@ namespace IO.Swagger.Model var sb = new StringBuilder(); sb.Append("class FormatTest {\n"); sb.Append(" Integer: ").Append(Integer).Append("\n"); - sb.Append(" Int32: ").Append(Int32).Append("\n"); - sb.Append(" Int64: ").Append(Int64).Append("\n"); - sb.Append(" Number: ").Append(Number).Append("\n"); - sb.Append(" _Float: ").Append(_Float).Append("\n"); - sb.Append(" _Double: ").Append(_Double).Append("\n"); - sb.Append(" _String: ").Append(_String).Append("\n"); - sb.Append(" _Byte: ").Append(_Byte).Append("\n"); - sb.Append(" Binary: ").Append(Binary).Append("\n"); - sb.Append(" Date: ").Append(Date).Append("\n"); - sb.Append(" DateTime: ").Append(DateTime).Append("\n"); - sb.Append(" Uuid: ").Append(Uuid).Append("\n"); - sb.Append(" Password: ").Append(Password).Append("\n"); +sb.Append(" Int32: ").Append(Int32).Append("\n"); +sb.Append(" Int64: ").Append(Int64).Append("\n"); +sb.Append(" Number: ").Append(Number).Append("\n"); +sb.Append(" _Float: ").Append(_Float).Append("\n"); +sb.Append(" _Double: ").Append(_Double).Append("\n"); +sb.Append(" _String: ").Append(_String).Append("\n"); +sb.Append(" _Byte: ").Append(_Byte).Append("\n"); +sb.Append(" Binary: ").Append(Binary).Append("\n"); +sb.Append(" Date: ").Append(Date).Append("\n"); +sb.Append(" DateTime: ").Append(DateTime).Append("\n"); +sb.Append(" Uuid: ").Append(Uuid).Append("\n"); +sb.Append(" Password: ").Append(Password).Append("\n"); sb.Append("}\n"); return sb.ToString(); } - + /// /// Returns the JSON string presentation of the object /// @@ -329,6 +322,6 @@ namespace IO.Swagger.Model return hash; } } - } + } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.csproj b/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.csproj index a093c8f2ebf..c7be212db66 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.csproj +++ b/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.csproj @@ -47,24 +47,7 @@ -<<<<<<< HEAD - - - - - - - - - - - - - - -======= ->>>>>>> 9b1d43c6f539add1b436ea52f5351125c2da7f3a @@ -85,4 +68,4 @@ IO.Swagger - \ No newline at end of file + diff --git a/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.userprefs b/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.userprefs index 65a0da9f040..b87503528b6 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.userprefs +++ b/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.userprefs @@ -1,18 +1,12 @@  - + + - - - - - - - diff --git a/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.csproj.FilesWrittenAbsolute.txt b/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.csproj.FilesWrittenAbsolute.txt index 8e1a7e18f36..fe5b5e6a930 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.csproj.FilesWrittenAbsolute.txt +++ b/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.csproj.FilesWrittenAbsolute.txt @@ -1,11 +1,11 @@ -/Volumes/Extra/projects/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/.NETFramework,Version=v4.5.AssemblyAttribute.cs -/Volumes/Extra/projects/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.swagger-logo.png -/Volumes/Extra/projects/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll.mdb -/Volumes/Extra/projects/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll -/Volumes/Extra/projects/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.dll -/Volumes/Extra/projects/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.dll.mdb -/Volumes/Extra/projects/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/Newtonsoft.Json.dll -/Volumes/Extra/projects/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/RestSharp.dll -/Volumes/Extra/projects/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/nunit.framework.dll -/Volumes/Extra/projects/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/Swagger Library.dll -/Volumes/Extra/projects/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/Swagger Library.dll.mdb +/Users/williamcheng/Code/swagger-api/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/.NETFramework,Version=v4.5.AssemblyAttribute.cs +/Users/williamcheng/Code/swagger-api/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.swagger-logo.png +/Users/williamcheng/Code/swagger-api/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll.mdb +/Users/williamcheng/Code/swagger-api/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll +/Users/williamcheng/Code/swagger-api/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.dll +/Users/williamcheng/Code/swagger-api/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.dll.mdb +/Users/williamcheng/Code/swagger-api/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/Newtonsoft.Json.dll +/Users/williamcheng/Code/swagger-api/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/RestSharp.dll +/Users/williamcheng/Code/swagger-api/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/nunit.framework.dll +/Users/williamcheng/Code/swagger-api/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/Swagger Library.dll +/Users/williamcheng/Code/swagger-api/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/Swagger Library.dll.mdb