From 8005931e5a4678298c70e82b5ce061ddf3509131 Mon Sep 17 00:00:00 2001 From: Maelig Nantel Date: Fri, 15 Jan 2016 16:49:36 +0100 Subject: [PATCH 1/8] Corrent issue 1885 Handle the Swagger "default" value for a parameter with the JAX-RS @DefaultValue annotation. This correction will also be reported in the new JAX-RS CXF Codegen. --- .../main/resources/JavaJaxRS/jersey1_18/queryParams.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/queryParams.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/queryParams.mustache index 342da154a87..168233d222e 100644 --- a/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/queryParams.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/queryParams.mustache @@ -1 +1 @@ -{{#isQueryParam}}@ApiParam(value = "{{{description}}}"{{#required}},required=true{{/required}}{{#allowableValues}}, {{> allowableValues }}{{/allowableValues}}{{#defaultValue}}, defaultValue="{{{defaultValue}}}"{{/defaultValue}}) @QueryParam("{{baseName}}") {{{dataType}}} {{paramName}}{{/isQueryParam}} \ No newline at end of file +{{#isQueryParam}}@ApiParam(value = "{{{description}}}"{{#required}},required=true{{/required}}{{#allowableValues}}, {{> allowableValues }}{{/allowableValues}}{{#defaultValue}}, defaultValue="{{{defaultValue}}}"{{/defaultValue}}) @DefaultValue("{{defaultValue}}") @QueryParam("{{baseName}}") {{{dataType}}} {{paramName}}{{/isQueryParam}} \ No newline at end of file From 0c2376b429845259adca4ef6871323b01524291d Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Fri, 15 Jan 2016 09:35:41 -0800 Subject: [PATCH 2/8] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e267217ebd0..f44085cfe03 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ Swagger Codegen Version | Release Date | OpenAPI Spec compatibility | Notes ### Prerequisites -If you're looking for the latest stable version, you can grab it directly from maven central (you'll need the java 7 runtime): +If you're looking for the latest stable version, you can grab it directly from maven central (you'll need java 7 runtime at a minimum): ``` wget http://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/2.1.4/swagger-codegen-cli-2.1.4.jar swagger-codegen-cli.jar From e3d8eb0e0a4cb033ad42de023a6e0f5e9205ec21 Mon Sep 17 00:00:00 2001 From: Ole Lensmar Date: Fri, 15 Jan 2016 14:02:35 -0500 Subject: [PATCH 3/8] fixed cmdline class in custom template examples --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f44085cfe03..9bd5fdb01fe 100644 --- a/README.md +++ b/README.md @@ -237,16 +237,15 @@ This will write, in the folder `output/myLibrary`, all the files you need to get You would then compile your library in the `output/myLibrary` folder with `mvn package` and execute the codegen like such: - ``` -java -cp output/myLibrary/target/myClientCodegen-swagger-codegen-1.0.0.jar:modules/swagger-codegen-cli/target/swagger-codegen-cli.jar io.swagger.codegen.Codegen +java -cp output/myLibrary/target/myClientCodegen-swagger-codegen-1.0.0.jar:modules/swagger-codegen-cli/target/swagger-codegen-cli.jar io.swagger.codegen.SwaggerCodegen ``` Note the `myClientCodegen` is an option now, and you can use the usual arguments for generating your library: ``` java -cp output/myLibrary/target/myClientCodegen-swagger-codegen-1.0.0.jar:modules/swagger-codegen-cli/target/swagger-codegen-cli.jar \ - io.swagger.codegen.Codegen generate -l myClientCodegen\ + io.swagger.codegen.SwaggerCodegen generate -l myClientCodegen\ -i http://petstore.swagger.io/v2/swagger.json \ -o myClient ``` From 04e0df3b4a49b306f9deb3741dfd607450bdb5db Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Fri, 15 Jan 2016 14:20:20 -0800 Subject: [PATCH 4/8] added date library option --- .../codegen/languages/JavaClientCodegen.java | 40 +++++++++++++++++++ .../codegen/languages/JaxRSServerCodegen.java | 40 ------------------- .../codegen/options/JavaOptionsProvider.java | 1 + .../options/JaxRSServerOptionsProvider.java | 4 +- 4 files changed, 42 insertions(+), 43 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java index 0658e3ad6f3..fc2b93e58a1 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java @@ -20,7 +20,9 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { private static final Logger LOGGER = LoggerFactory.getLogger(JavaClientCodegen.class); public static final String FULL_JAVA_UTIL = "fullJavaUtil"; public static final String DEFAULT_LIBRARY = ""; + public static final String DATE_LIBRARY = "dateLibrary"; + protected String dateLibrary = "default"; protected String invokerPackage = "io.swagger.client"; protected String groupId = "io.swagger"; protected String artifactId = "swagger-java-client"; @@ -97,6 +99,14 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { library.setEnum(supportedLibraries); library.setDefault(DEFAULT_LIBRARY); cliOptions.add(library); + + CliOption dateLibrary = new CliOption(DATE_LIBRARY, "Option. Date library to use"); + Map dateOptions = new HashMap(); + dateOptions.put("java8", "Java 8 native"); + dateOptions.put("joda", "Joda"); + dateLibrary.setEnum(dateOptions); + + cliOptions.add(dateLibrary); } @Override @@ -253,6 +263,32 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { } else if("jersey2".equals(getLibrary())) { supportingFiles.add(new SupportingFile("JSON.mustache", invokerFolder, "JSON.java")); } + + if("joda".equals(dateLibrary)) { + typeMapping.put("date", "LocalDate"); + typeMapping.put("DateTime", "DateTime"); + + importMapping.put("LocalDate", "org.joda.time.LocalDate"); + importMapping.put("DateTime", "org.joda.time.DateTime"); + + supportingFiles.add(new SupportingFile("JodaDateTimeProvider.mustache", + (sourceFolder + '/' + apiPackage).replace(".", "/"), "JodaDateTimeProvider.java")); + supportingFiles.add(new SupportingFile("JodaLocalDateProvider.mustache", + (sourceFolder + '/' + apiPackage).replace(".", "/"), "JodaLocalDateProvider.java")); + } + else if ("java8".equals(dateLibrary)) { + additionalProperties.put("java8", "true"); + additionalProperties.put("javaVersion", "1.8"); + typeMapping.put("date", "LocalDate"); + typeMapping.put("DateTime", "LocalDateTime"); + importMapping.put("LocalDate", "java.time.LocalDate"); + importMapping.put("LocalDateTime", "java.time.LocalDateTime"); + + supportingFiles.add(new SupportingFile("LocalDateTimeProvider.mustache", + (sourceFolder + '/' + apiPackage).replace(".", "/"), "LocalDateTimeProvider.java")); + supportingFiles.add(new SupportingFile("LocalDateProvider.mustache", + (sourceFolder + '/' + apiPackage).replace(".", "/"), "LocalDateProvider.java")); + } } private void sanitizeConfig() { @@ -761,4 +797,8 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { public void setFullJavaUtil(boolean fullJavaUtil) { this.fullJavaUtil = fullJavaUtil; } + + public void setDateLibrary(String library) { + this.dateLibrary = library; + } } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JaxRSServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JaxRSServerCodegen.java index 5814751d63c..e131a7bcbbb 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JaxRSServerCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JaxRSServerCodegen.java @@ -9,11 +9,9 @@ import java.io.File; import java.util.*; public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConfig { - protected String dateLibrary = "default"; protected String title = "Swagger Server"; protected String implFolder = "src/main/java"; - public static final String DATE_LIBRARY = "dateLibrary"; public JaxRSServerCodegen() { super(); @@ -41,14 +39,6 @@ public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConf } } - CliOption dateLibrary = new CliOption(DATE_LIBRARY, "Option. Date library to use"); - Map dateOptions = new HashMap(); - dateOptions.put("java8", "Java 8 native"); - dateOptions.put("joda", "Joda"); - dateLibrary.setEnum(dateOptions); - - cliOptions.add(dateLibrary); - CliOption library = new CliOption(CodegenConstants.LIBRARY, "library template (sub-template) to use"); library.setDefault(DEFAULT_LIBRARY); @@ -109,32 +99,6 @@ public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConf setDateLibrary(additionalProperties.get("dateLibrary").toString()); additionalProperties.put(dateLibrary, "true"); } - - if("joda".equals(dateLibrary)) { - typeMapping.put("date", "LocalDate"); - typeMapping.put("DateTime", "DateTime"); - - importMapping.put("LocalDate", "org.joda.time.LocalDate"); - importMapping.put("DateTime", "org.joda.time.DateTime"); - - supportingFiles.add(new SupportingFile("JodaDateTimeProvider.mustache", - (sourceFolder + '/' + apiPackage).replace(".", "/"), "JodaDateTimeProvider.java")); - supportingFiles.add(new SupportingFile("JodaLocalDateProvider.mustache", - (sourceFolder + '/' + apiPackage).replace(".", "/"), "JodaLocalDateProvider.java")); - } - else if ("java8".equals(dateLibrary)) { - additionalProperties.put("java8", "true"); - additionalProperties.put("javaVersion", "1.8"); - typeMapping.put("date", "LocalDate"); - typeMapping.put("DateTime", "LocalDateTime"); - importMapping.put("LocalDate", "java.time.LocalDate"); - importMapping.put("LocalDateTime", "java.time.LocalDateTime"); - - supportingFiles.add(new SupportingFile("LocalDateTimeProvider.mustache", - (sourceFolder + '/' + apiPackage).replace(".", "/"), "LocalDateTimeProvider.java")); - supportingFiles.add(new SupportingFile("LocalDateProvider.mustache", - (sourceFolder + '/' + apiPackage).replace(".", "/"), "LocalDateProvider.java")); - } } @Override @@ -291,8 +255,4 @@ public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConf public boolean shouldOverwrite(String filename) { return super.shouldOverwrite(filename) && !filename.endsWith("ServiceImpl.java") && !filename.endsWith("ServiceFactory.java"); } - - public void setDateLibrary(String library) { - this.dateLibrary = library; - } } diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JavaOptionsProvider.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JavaOptionsProvider.java index 7e5fd36793a..32490ba659b 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JavaOptionsProvider.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JavaOptionsProvider.java @@ -39,6 +39,7 @@ public class JavaOptionsProvider implements OptionsProvider { .put(JavaClientCodegen.FULL_JAVA_UTIL, FULL_JAVA_UTIL_VALUE) .put(CodegenConstants.LIBRARY, LIBRARY_VALUE) .put(CodegenConstants.SERIALIZE_BIG_DECIMAL_AS_STRING, "true") + .put(JavaClientCodegen.DATE_LIBRARY, "joda") .build(); } diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JaxRSServerOptionsProvider.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JaxRSServerOptionsProvider.java index e7286094564..b74623e8517 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JaxRSServerOptionsProvider.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JaxRSServerOptionsProvider.java @@ -1,7 +1,6 @@ package io.swagger.codegen.options; import com.google.common.collect.ImmutableMap; -import io.swagger.codegen.languages.JaxRSServerCodegen; import io.swagger.codegen.CodegenConstants; import java.util.Map; @@ -26,8 +25,7 @@ public class JaxRSServerOptionsProvider extends JavaOptionsProvider { ImmutableMap.Builder builder = new ImmutableMap.Builder(); builder.putAll(options) - .put(CodegenConstants.IMPL_FOLDER, IMPL_FOLDER_VALUE) - .put(JaxRSServerCodegen.DATE_LIBRARY, "joda"); + .put(CodegenConstants.IMPL_FOLDER, IMPL_FOLDER_VALUE); return builder.build(); } From 70784a3d9894633bf7fe69e4dca5f712d007197a Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Fri, 15 Jan 2016 14:28:55 -0800 Subject: [PATCH 5/8] fixed templates --- .../codegen/languages/JavaClientCodegen.java | 14 ++++---------- .../codegen/languages/JaxRSServerCodegen.java | 13 +++++++++++++ 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java index fc2b93e58a1..727e9e497aa 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java @@ -264,17 +264,16 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { supportingFiles.add(new SupportingFile("JSON.mustache", invokerFolder, "JSON.java")); } + if(additionalProperties.containsKey(DATE_LIBRARY)) { + this.dateLibrary = additionalProperties.get(DATE_LIBRARY).toString(); + } + if("joda".equals(dateLibrary)) { typeMapping.put("date", "LocalDate"); typeMapping.put("DateTime", "DateTime"); importMapping.put("LocalDate", "org.joda.time.LocalDate"); importMapping.put("DateTime", "org.joda.time.DateTime"); - - supportingFiles.add(new SupportingFile("JodaDateTimeProvider.mustache", - (sourceFolder + '/' + apiPackage).replace(".", "/"), "JodaDateTimeProvider.java")); - supportingFiles.add(new SupportingFile("JodaLocalDateProvider.mustache", - (sourceFolder + '/' + apiPackage).replace(".", "/"), "JodaLocalDateProvider.java")); } else if ("java8".equals(dateLibrary)) { additionalProperties.put("java8", "true"); @@ -283,11 +282,6 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { typeMapping.put("DateTime", "LocalDateTime"); importMapping.put("LocalDate", "java.time.LocalDate"); importMapping.put("LocalDateTime", "java.time.LocalDateTime"); - - supportingFiles.add(new SupportingFile("LocalDateTimeProvider.mustache", - (sourceFolder + '/' + apiPackage).replace(".", "/"), "LocalDateTimeProvider.java")); - supportingFiles.add(new SupportingFile("LocalDateProvider.mustache", - (sourceFolder + '/' + apiPackage).replace(".", "/"), "LocalDateProvider.java")); } } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JaxRSServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JaxRSServerCodegen.java index e131a7bcbbb..089022ecd33 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JaxRSServerCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JaxRSServerCodegen.java @@ -99,6 +99,19 @@ public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConf setDateLibrary(additionalProperties.get("dateLibrary").toString()); additionalProperties.put(dateLibrary, "true"); } + + if("joda".equals(dateLibrary)) { + supportingFiles.add(new SupportingFile("JodaDateTimeProvider.mustache", + (sourceFolder + '/' + apiPackage).replace(".", "/"), "JodaDateTimeProvider.java")); + supportingFiles.add(new SupportingFile("JodaLocalDateProvider.mustache", + (sourceFolder + '/' + apiPackage).replace(".", "/"), "JodaLocalDateProvider.java")); + } + else if ("java8".equals(dateLibrary)) { + supportingFiles.add(new SupportingFile("LocalDateTimeProvider.mustache", + (sourceFolder + '/' + apiPackage).replace(".", "/"), "LocalDateTimeProvider.java")); + supportingFiles.add(new SupportingFile("LocalDateProvider.mustache", + (sourceFolder + '/' + apiPackage).replace(".", "/"), "LocalDateProvider.java")); + } } @Override From 1bae5c44b2d406cf229e06f76d0eb6e1bcfedc6b Mon Sep 17 00:00:00 2001 From: wing328 Date: Sun, 17 Jan 2016 16:04:13 +0800 Subject: [PATCH 6/8] fix null apiclient in .net (windows) --- .gitignore | 3 ++ .../resources/csharp/Configuration.mustache | 4 +-- .../csharp/IO/Swagger/Client/Configuration.cs | 4 +-- .../bin/Debug/SwaggerClientTest.dll | Bin 126464 -> 126464 bytes .../bin/Debug/SwaggerClientTest.dll.mdb | Bin 35062 -> 34926 bytes ...ClientTest.csproj.FilesWrittenAbsolute.txt | 27 ++++++------------ .../obj/Debug/SwaggerClientTest.dll | Bin 126464 -> 126464 bytes 7 files changed, 16 insertions(+), 22 deletions(-) diff --git a/.gitignore b/.gitignore index d84a08f7b94..e337758c906 100644 --- a/.gitignore +++ b/.gitignore @@ -67,3 +67,6 @@ samples/client/petstore/python/.venv/ *.pm~ *.xml~ *.t~ + +samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/ +samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/ diff --git a/modules/swagger-codegen/src/main/resources/csharp/Configuration.mustache b/modules/swagger-codegen/src/main/resources/csharp/Configuration.mustache index 029b38324c0..a7e5df5179c 100644 --- a/modules/swagger-codegen/src/main/resources/csharp/Configuration.mustache +++ b/modules/swagger-codegen/src/main/resources/csharp/Configuration.mustache @@ -38,8 +38,8 @@ namespace {{packageName}}.Client ) { if (apiClient == null) - ApiClient = ApiClient.Default; - else + ApiClient = ApiClient.Default == null ? new ApiClient() : ApiClient.Default; + else ApiClient = apiClient; Username = username; diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/Configuration.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/Configuration.cs index 3df5d02c116..d321ad5ef82 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/Configuration.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/Configuration.cs @@ -38,8 +38,8 @@ namespace IO.Swagger.Client ) { if (apiClient == null) - ApiClient = ApiClient.Default; - else + ApiClient = ApiClient.Default == null ? new ApiClient() : ApiClient.Default; + else ApiClient = apiClient; Username = username; diff --git a/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll b/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll index f70fa971c5b10d8a8f33600bed509a4cc7e77a6d..10b5d98d5fad634730375b3da0c5a3c58207f3ab 100755 GIT binary patch delta 2138 zcmYk;e@vBC7zgn4<(Kb@L|j)8e`R~Q$$OzO=O2j4*47jmf8Z)hP)GzrpnGqM{4nI@ zCSDB5flykp)*t*)tr>+1GnzP&6}HAwh=?gEzfwqXsAM%d=Q&TayWQ=6_@48g=Q-!y z8I?oxDu?FPeF}H|XRqL?2Eay9gAew~w4eZ?KFRVMAc94z1@Xf#LV*4%M0@MXfET|) zPs7?%8yA~uP({2DL5YvapL_2K5t0xrf3==(ovN^te^QhDkyAl0n6IKm%SeeRb8JN) zYfHrGMO!h$ijDbaX*$9#(>x<7CdEw0Vl81T4_lUjSkBU73dDA7U~P}_NTspzWtNG2 zn^_{mOcb%IWSE7ctVWq-;e?iGj&VC)!yV4r<;Wcfy`qb`BuDN*CF`opvhfjXT4vek zBE2tytoIx{;q9~4#QMnbRYB%XoaiHog;u&$2TAQrw#dPET87igHFI#C6=&^}nq*xI zEfBc~>DR@qu{=@>NZlelxIpYeozBF1OX-V#q1Nvf7b2%3cA=NTF$ZR*#Sh?0&Gavak*h1G9elzNG! zj%g3vB-?MObJ~Ma4sTeOqW9t$Yufr%s);pcjYJpW49jrcm+EAxo!N&$mfD$p7$NEI zi!pJHnxO8B5j3pSZPVEoV--<#FPtUl{Eb37`%*MqSJK^=qDhOoFU1*_>b?}6EY)Ed z23e}XGK`RPG5e8ogPtjD^(O8|B~ibK`_W8N#mslU1@FkCV#;xuq>CxXkQNnFj{7WC zOgY3TEn%oz-~ggn>J~TvlND~e3Pc5xm@8Z!sbp51%xq+{5@lwikhM`}mGHAR%d8T0 zEOoW`@HtD}EIyoKWypDN<40Dm%l1ePFg>ob=0V(LRk(Vj{wC>dt3vX)-Zr&sRmdUf zU8}-jlG?SU&O;dZ{n4)Z@!%%Sqr1e9&|6AA@vh5bJN@WoW;@J9ei)N9R2+9@i)zHP znn>GN%_Q%X9@$R1@`u&{Y38=pIO(}NT7j|ZnYFB?Qg$^ynbzTI3TIi*>!Ejb_A;q% zMk`B?WR;Ls-=mB=tVW`ic!#o7)-h5C>!gwm^S*v)7lnseqogj@!Z=m;f(LqJ5@{RD zLs~xj|K*)pynF(yibl4uj+5+JW-~GDPrbxBQUYs$RK=Pg84vYHJgZ9UU_DNX`|H1A zVgss?s%6{@E_2ji7s+RYM4et#1Fyy5x{w=DM^M9|BPw~x5j1i(ZG0G5i<51e60zdo zg7qz%#Ja+psUM%~-E!Xd%&oT4Z_&8wiDdqtK&_m4eAyV5Agyif7%rl1{sbNd26)%B Mg-_x(>f`7A3q!>$od5s; delta 2120 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%0AORGE4t&wZoe9zoYdv3$s~k#OPB!C^RwD9v&P0 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 literal 35062 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 Mg-_x(>f`7A3q!>$od5s; delta 2120 zcmYk-e@vBC7zgn4<>$L<1k{xqlFser4&E!RIo8O`(dHJ}a%#&I`Q;T1g}6kDKv!OF zUN5AyNtmQ_tvUXn#mokVBbt?ZSL&LjA{8MDA|-?{G!mPg^PH#E-PrDj@A>gO=Y4l> zU4L|4fAroqk&*b6cv!i4%{$-giWDKadGb3X|I`mYeJ9Sg!<{tTZt zztrjJxY=>J)=vLXMM39y#4>X&4rv+76RI8S@HJ~q!m&B)Fvwb%`gc+`W?4&9mz&v$ zyg;i6W8TA$uZL61SeaTPaUte zL=y2zY!s4f zvzF2ay+Z9D5+|MG37gPE;RsGTcbTuD;j$VU5@(#%j$+&->0*j8twqHYBc_iQHB>Rh zaI#j(LN{X(YrV`iV+pIs>NdAvjg;I!XjE8dBnvpStqW!eYFLfdb*TXBfULU|AF^6y zhoxv^eQHgZuj3n5k9A+_97%UyhGF?8%KfPOGKilgZ0^1crlL^Y8_8ar>sQjNf%M%|YqiS?cJMe-YXiq&hKmda$Q$5erAk{vYEbE-fgheOucBhLgAAFw1b?k!okDli7w4OP$O%oG0n-D{=7(6-wP#;ua}n)3dL{qk}3` z-3!-tv|m-y-B-cBrlh;CLW34{UxmXg_3W$A&Qcv#Bg9e-R^vQL7gK|kL$s!_)tgv@ zQlfqlYp|E3iivT(g`8nER2SpJ36d_xhi|p07$2^&R53n`vD7WF15wv$LqpvHI}po? zv)v`478Y~9+bfmMN|Tw56|BWFv$2--yv*uQ!CED=I`~-XYVl(~OWiDfe8gHW=e>jo+1mR9&ewPqD7Ny@HA(cP7j^Z*()U9v{t?z$=XhucbhWmupTZg z@eXAftoKN5tRqS`V(;ihPf@s)b)9sS6`!W+zQXY41PWe0wEI{4y&_#;=R zmaTrItMN Date: Sun, 17 Jan 2016 19:14:11 +0800 Subject: [PATCH 7/8] add binary mapping for code generator --- .../codegen/languages/AbstractTypeScriptClientCodegen.java | 4 +++- .../java/io/swagger/codegen/languages/DartClientCodegen.java | 3 +++ .../io/swagger/codegen/languages/FlashClientCodegen.java | 3 +++ .../java/io/swagger/codegen/languages/PerlClientCodegen.java | 3 +++ .../io/swagger/codegen/languages/PythonClientCodegen.java | 3 +++ .../java/io/swagger/codegen/languages/Qt5CPPGenerator.java | 3 +++ .../io/swagger/codegen/languages/ScalaClientCodegen.java | 3 +++ .../io/swagger/codegen/languages/ScalatraServerCodegen.java | 5 ++++- .../io/swagger/codegen/languages/SilexServerCodegen.java | 3 +++ .../io/swagger/codegen/languages/SinatraServerCodegen.java | 3 +++ .../codegen/languages/SlimFrameworkServerCodegen.java | 3 +++ .../main/java/io/swagger/codegen/languages/SwiftCodegen.java | 3 +++ .../io/swagger/codegen/languages/TizenClientCodegen.java | 3 +++ 13 files changed, 40 insertions(+), 2 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractTypeScriptClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractTypeScriptClientCodegen.java index cdfc01d2f82..ebc8a0617f0 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractTypeScriptClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractTypeScriptClientCodegen.java @@ -52,7 +52,9 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp typeMapping.put("integer", "number"); typeMapping.put("Map", "any"); typeMapping.put("DateTime", "Date"); - + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "string"); } @Override diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/DartClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/DartClientCodegen.java index 7d11f2a8183..e936a37f3c0 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/DartClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/DartClientCodegen.java @@ -76,6 +76,9 @@ public class DartClientCodegen extends DefaultCodegen implements CodegenConfig { typeMapping.put("Date", "DateTime"); typeMapping.put("date", "DateTime"); typeMapping.put("File", "MultipartFile"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "String"); cliOptions.add(new CliOption(BROWSER_CLIENT, "Is the client browser based")); cliOptions.add(new CliOption(PUB_NAME, "Name in generated pubspec")); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/FlashClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/FlashClientCodegen.java index dac3d23b22a..435e235c681 100755 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/FlashClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/FlashClientCodegen.java @@ -63,6 +63,9 @@ public class FlashClientCodegen extends DefaultCodegen implements CodegenConfig typeMapping.put("DateTime", "Date"); typeMapping.put("object", "Object"); typeMapping.put("file", "File"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "String"); importMapping = new HashMap(); importMapping.put("File", "flash.filesystem.File"); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PerlClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PerlClientCodegen.java index 90fea3f4a9b..9f287ea0891 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PerlClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PerlClientCodegen.java @@ -72,6 +72,9 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig { typeMapping.put("array", "ARRAY"); typeMapping.put("map", "HASH"); typeMapping.put("object", "object"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "string"); cliOptions.clear(); cliOptions.add(new CliOption(MODULE_NAME, "Perl module name (convention: CamelCase or Long::Module).").defaultValue("SwaggerClient")); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PythonClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PythonClientCodegen.java index 02ce858d0cd..6bcb9c5d550 100755 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PythonClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PythonClientCodegen.java @@ -51,6 +51,9 @@ public class PythonClientCodegen extends DefaultCodegen implements CodegenConfig typeMapping.put("DateTime", "datetime"); typeMapping.put("object", "object"); typeMapping.put("file", "file"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "str"); // from https://docs.python.org/release/2.5.4/ref/keywords.html reservedWords = new HashSet( diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/Qt5CPPGenerator.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/Qt5CPPGenerator.java index 18ba3718068..94cac627e9f 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/Qt5CPPGenerator.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/Qt5CPPGenerator.java @@ -121,6 +121,9 @@ public class Qt5CPPGenerator extends DefaultCodegen implements CodegenConfig { typeMapping.put("map", "QMap"); typeMapping.put("file", "SWGHttpRequestInputFileElement"); typeMapping.put("object", PREFIX + "Object"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "QString"); importMapping = new HashMap(); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ScalaClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ScalaClientCodegen.java index 088d7fdaad8..e8f462a41fd 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ScalaClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ScalaClientCodegen.java @@ -96,6 +96,9 @@ public class ScalaClientCodegen extends DefaultCodegen implements CodegenConfig typeMapping.put("double", "Double"); typeMapping.put("object", "Any"); typeMapping.put("file", "File"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "String"); languageSpecificPrimitives = new HashSet( Arrays.asList( diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ScalatraServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ScalatraServerCodegen.java index 5d6da580130..5a4d5c43ef8 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ScalatraServerCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ScalatraServerCodegen.java @@ -67,6 +67,9 @@ public class ScalatraServerCodegen extends DefaultCodegen implements CodegenConf typeMapping.put("integer", "Int"); typeMapping.put("long", "Long"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "String"); additionalProperties.put("appName", "Swagger Sample"); additionalProperties.put("appName", "Swagger Sample"); @@ -193,4 +196,4 @@ public class ScalatraServerCodegen extends DefaultCodegen implements CodegenConf } return toModelName(type); } -} \ No newline at end of file +} diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SilexServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SilexServerCodegen.java index 4effb480048..40dedb0aeae 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SilexServerCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SilexServerCodegen.java @@ -81,6 +81,9 @@ public class SilexServerCodegen extends DefaultCodegen implements CodegenConfig typeMapping.put("array", "array"); typeMapping.put("list", "array"); typeMapping.put("object", "object"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "string"); supportingFiles.add(new SupportingFile("README.mustache", packagePath.replace('/', File.separatorChar), "README.md")); supportingFiles.add(new SupportingFile("composer.json", packagePath.replace('/', File.separatorChar), "composer.json")); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SinatraServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SinatraServerCodegen.java index e478c00341e..d512f7deb9e 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SinatraServerCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SinatraServerCodegen.java @@ -60,6 +60,9 @@ public class SinatraServerCodegen extends DefaultCodegen implements CodegenConfi typeMapping.put("String", "string"); typeMapping.put("List", "array"); typeMapping.put("map", "map"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "string"); // remove modelPackage and apiPackage added by default cliOptions.clear(); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SlimFrameworkServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SlimFrameworkServerCodegen.java index ae28493fe7c..3810c6895ec 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SlimFrameworkServerCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SlimFrameworkServerCodegen.java @@ -83,6 +83,9 @@ public class SlimFrameworkServerCodegen extends DefaultCodegen implements Codege typeMapping.put("array", "array"); typeMapping.put("list", "array"); typeMapping.put("object", "object"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "string"); supportingFiles.add(new SupportingFile("README.mustache", packagePath.replace('/', File.separatorChar), "README.md")); supportingFiles.add(new SupportingFile("composer.json", packagePath.replace('/', File.separatorChar), "composer.json")); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwiftCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwiftCodegen.java index ddd72e4230b..1beb9a3b236 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwiftCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwiftCodegen.java @@ -120,6 +120,9 @@ public class SwiftCodegen extends DefaultCodegen implements CodegenConfig { typeMapping.put("double", "Double"); typeMapping.put("object", "String"); typeMapping.put("file", "NSURL"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "String"); importMapping = new HashMap(); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/TizenClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/TizenClientCodegen.java index 83241ddc5e7..d7b7d13f637 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/TizenClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/TizenClientCodegen.java @@ -76,6 +76,9 @@ public class TizenClientCodegen extends DefaultCodegen implements CodegenConfig typeMapping.put("map", "HashMap"); typeMapping.put("number", "Long"); typeMapping.put("object", PREFIX + "Object"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "String"); importMapping = new HashMap(); From bfc83b330fdaf8f8ce9846175a990d0f53b079d5 Mon Sep 17 00:00:00 2001 From: wing328 Date: Sun, 17 Jan 2016 19:32:50 +0800 Subject: [PATCH 8/8] fix indent, update perl & python sample --- .gitignore | 1 + .../AbstractTypeScriptClientCodegen.java | 2 +- samples/client/petstore/perl/README.md | 2 +- .../perl/lib/WWW/SwaggerClient/Role.pm | 4 +- samples/client/petstore/perl/t/04_role.t | 2 +- samples/client/petstore/python/.coverage | 2 +- .../petstore/python/dev-requirements.txt.log | 15 ++ .../python/swagger_client/apis/pet_api.py | 155 ++++++++++++++++++ 8 files changed, 177 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index d84a08f7b94..f80da2af555 100644 --- a/.gitignore +++ b/.gitignore @@ -59,6 +59,7 @@ samples/client/petstore/perl/deep_module_test/ samples/client/petstore/python/.projectile samples/client/petstore/python/.venv/ +samples/client/petstore/python/dev-requirements.txt.log .settings diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractTypeScriptClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractTypeScriptClientCodegen.java index ebc8a0617f0..4a9c0557305 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractTypeScriptClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractTypeScriptClientCodegen.java @@ -52,7 +52,7 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp typeMapping.put("integer", "number"); typeMapping.put("Map", "any"); typeMapping.put("DateTime", "Date"); - //TODO binary should be mapped to byte array + //TODO binary should be mapped to byte array // mapped to String as a workaround typeMapping.put("binary", "string"); } diff --git a/samples/client/petstore/perl/README.md b/samples/client/petstore/perl/README.md index f42bbf6eb17..e2685dd2468 100644 --- a/samples/client/petstore/perl/README.md +++ b/samples/client/petstore/perl/README.md @@ -8,7 +8,7 @@ WWW::SwaggerClient::Role - a Moose role for the Swagger Petstore Automatically generated by the Perl Swagger Codegen project: -- Build date: 2016-01-15T15:57:32.150+08:00 +- Build date: 2016-01-17T19:21:19.346+08:00 - Build package: class io.swagger.codegen.languages.PerlClientCodegen - Codegen version: diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm index 07b499ad75e..cc1e39c6657 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm @@ -37,7 +37,7 @@ has version_info => ( is => 'ro', default => sub { { app_name => 'Swagger Petstore', app_version => '1.0.0', - generated_date => '2016-01-15T15:57:32.150+08:00', + generated_date => '2016-01-17T19:21:19.346+08:00', generator_class => 'class io.swagger.codegen.languages.PerlClientCodegen', } }, documentation => 'Information about the application version and the codegen codebase version' @@ -103,7 +103,7 @@ Automatically generated by the Perl Swagger Codegen project: =over 4 -=item Build date: 2016-01-15T15:57:32.150+08:00 +=item Build date: 2016-01-17T19:21:19.346+08:00 =item Build package: class io.swagger.codegen.languages.PerlClientCodegen diff --git a/samples/client/petstore/perl/t/04_role.t b/samples/client/petstore/perl/t/04_role.t index 73328fa6e62..a5f47ec53c5 100644 --- a/samples/client/petstore/perl/t/04_role.t +++ b/samples/client/petstore/perl/t/04_role.t @@ -50,7 +50,7 @@ is $get_pet->tags->[0]->id, '11', 'stored and retrieved: got the proper tag id'; # API method docs is_deeply( [sort keys %{$api->pet_api->method_documentation}], - [ 'add_pet', 'delete_pet', 'find_pets_by_status', 'find_pets_by_tags', 'get_pet_by_id', 'update_pet', 'update_pet_with_form', 'upload_file'], + [ 'add_pet', 'add_pet_using_byte_array', 'delete_pet', 'find_pets_by_status', 'find_pets_by_tags', 'get_pet_by_id', 'get_pet_by_id_with_byte_array', 'update_pet', 'update_pet_with_form', 'upload_file'], "Pet API method_documentation has the correct keys"); is $api->pet_api->method_documentation->{get_pet_by_id}->{params}->{pet_id}->{description}, 'ID of pet that needs to be fetched', 'get_pet_by_id parameter pet_id description is correct'; diff --git a/samples/client/petstore/python/.coverage b/samples/client/petstore/python/.coverage index 9921d07556e..4cd98e43d2c 100644 --- a/samples/client/petstore/python/.coverage +++ b/samples/client/petstore/python/.coverage @@ -1 +1 @@ -!coverage.py: This is a private format, don't read it directly!{"lines": {"/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/python/swagger_client/models/user.py": [278, 70, 136, 202, 272, 81, 147, 213, 22, 25, 92, 29, 158, 224, 103, 169, 235, 284, 114, 19, 180, 30, 246, 266, 191, 125, 21], "/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/python/swagger_client/models/category.py": [128, 134, 72, 74, 109, 19, 21, 22, 104, 25, 29, 30, 96, 100, 114, 102, 39, 40, 41, 103, 44, 45, 46, 112, 49, 50, 83, 116, 94, 52, 122, 61, 85, 63], "/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/python/swagger_client/models/order.py": [130, 172, 141, 173, 19, 21, 22, 152, 25, 29, 30, 52, 161, 163, 39, 40, 41, 42, 43, 44, 45, 174, 175, 48, 49, 50, 51, 180, 53, 54, 57, 58, 59, 60, 61, 62, 191, 64, 202, 75, 86, 176, 222, 97, 228, 178, 234, 108, 240, 119], "/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/python/swagger_client/apis/__init__.py": [1, 4, 5, 6], "/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/python/swagger_client/apis/pet_api.py": [512, 513, 514, 516, 598, 18, 20, 22, 23, 26, 539, 28, 29, 542, 543, 32, 548, 37, 39, 40, 41, 42, 555, 556, 45, 558, 559, 560, 562, 564, 565, 566, 265, 568, 569, 345, 571, 574, 575, 576, 580, 581, 70, 584, 73, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 86, 88, 90, 92, 93, 95, 96, 97, 100, 101, 102, 106, 107, 621, 622, 624, 625, 626, 115, 116, 117, 118, 631, 632, 121, 122, 635, 124, 638, 639, 669, 641, 642, 643, 645, 647, 649, 650, 651, 652, 653, 654, 656, 145, 146, 659, 148, 661, 150, 665, 666, 155, 156, 538, 159, 160, 673, 162, 675, 676, 677, 166, 679, 168, 169, 171, 172, 173, 541, 176, 177, 178, 182, 183, 186, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 200, 119, 120, 377, 221, 222, 549, 224, 225, 226, 231, 232, 235, 236, 110, 238, 240, 552, 242, 244, 246, 247, 249, 383, 252, 253, 254, 258, 259, 262, 264, 44, 266, 267, 268, 269, 270, 271, 272, 273, 274, 276, 46, 48, 475, 112, 298, 300, 301, 302, 307, 308, 311, 312, 314, 316, 317, 318, 320, 322, 505, 325, 113, 328, 329, 330, 334, 335, 338, 340, 341, 342, 343, 344, 241, 346, 347, 348, 349, 350, 485, 352, 114, 373, 374, 376, 660, 378, 149, 384, 387, 390, 391, 393, 394, 395, 397, 399, 401, 402, 323, 404, 407, 408, 409, 297, 413, 414, 69, 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 431, 72, 499, 671, 74, 672, 454, 455, 457, 458, 459, 674, 464, 465, 468, 471, 472, 164, 474, 79, 476, 478, 480, 80, 482, 483, 484, 678, 486, 487, 489, 492, 493, 494, 680, 498, 83, 502, 681, 504, 84, 506, 507, 508, 509, 510, 511], "/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/python/swagger_client/configuration.py": [135, 136, 137, 138, 139, 142, 19, 149, 22, 23, 25, 26, 27, 29, 158, 31, 32, 34, 36, 37, 39, 40, 41, 170, 43, 172, 46, 47, 189, 179, 52, 54, 59, 61, 190, 63, 192, 224, 67, 69, 71, 200, 73, 204, 80, 81, 82, 84, 213, 86, 199, 88, 90, 219, 92, 221, 222, 223, 96, 225, 98, 100, 102, 230, 104, 167, 111, 76, 168, 157, 122, 123, 42, 21], "/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/python/swagger_client/apis/user_api.py": [32, 355, 37, 39, 200, 124, 428, 589, 48, 18, 20, 22, 23, 276, 26, 507, 28, 29], "/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/python/swagger_client/rest.py": [20, 21, 23, 24, 25, 26, 27, 28, 31, 33, 35, 36, 40, 42, 48, 51, 53, 54, 55, 56, 57, 59, 63, 65, 72, 74, 82, 83, 88, 92, 95, 98, 101, 102, 103, 104, 105, 106, 109, 110, 121, 122, 124, 129, 130, 132, 135, 137, 138, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 155, 156, 159, 160, 161, 166, 170, 171, 174, 176, 177, 179, 181, 182, 183, 184, 186, 191, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 210, 211, 212, 213, 214, 215, 217, 225, 227, 228, 229, 230, 231, 232, 239, 243, 244, 245, 246, 248, 249, 251], "/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/python/swagger_client/apis/store_api.py": [18, 276, 22, 23, 26, 28, 29, 197, 32, 37, 39, 40, 41, 44, 46, 48, 20, 68, 69, 71, 72, 79, 82, 83, 85, 87, 89, 91, 92, 94, 97, 98, 99, 103, 104, 107, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121], "/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/python/swagger_client/models/pet.py": [128, 130, 150, 172, 139, 141, 19, 215, 21, 22, 152, 25, 29, 30, 161, 163, 39, 40, 41, 42, 43, 44, 45, 174, 48, 49, 50, 51, 52, 53, 54, 183, 57, 58, 59, 60, 61, 62, 64, 194, 195, 200, 73, 202, 75, 206, 208, 209, 210, 211, 84, 213, 86, 185, 216, 218, 220, 222, 95, 97, 226, 228, 234, 108, 238, 240, 117, 119, 212, 106], "/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/python/swagger_client/api_client.py": [512, 520, 527, 528, 529, 19, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 550, 40, 42, 44, 560, 49, 52, 568, 570, 571, 572, 573, 574, 575, 577, 68, 69, 74, 75, 76, 78, 79, 81, 82, 84, 86, 93, 98, 100, 104, 105, 106, 109, 110, 111, 113, 114, 117, 118, 119, 120, 121, 122, 125, 126, 127, 128, 131, 132, 133, 136, 139, 140, 143, 146, 147, 148, 149, 151, 154, 155, 157, 159, 160, 162, 539, 164, 173, 174, 176, 178, 193, 194, 196, 197, 198, 199, 200, 201, 202, 203, 204, 206, 207, 214, 215, 216, 548, 218, 219, 221, 549, 233, 237, 238, 242, 244, 253, 254, 256, 257, 258, 259, 260, 262, 263, 264, 265, 269, 270, 271, 274, 276, 277, 278, 280, 281, 282, 283, 285, 288, 289, 290, 318, 319, 320, 321, 322, 324, 325, 326, 327, 328, 329, 330, 331, 332, 334, 335, 339, 340, 341, 342, 343, 347, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 371, 372, 373, 374, 381, 389, 391, 392, 394, 395, 396, 397, 399, 400, 401, 402, 403, 404, 406, 408, 415, 416, 418, 420, 421, 423, 425, 432, 433, 435, 437, 438, 440, 442, 450, 452, 455, 456, 457, 458, 460, 461, 469, 495, 504, 505, 510], "/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/python/swagger_client/models/tag.py": [128, 132, 134, 72, 74, 109, 19, 21, 22, 104, 25, 29, 30, 96, 100, 114, 102, 39, 40, 41, 103, 44, 45, 46, 112, 49, 50, 83, 116, 94, 52, 122, 61, 85, 63], "/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/python/swagger_client/__init__.py": [1, 4, 5, 6, 7, 8, 11, 12, 13, 16, 18, 20], "/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/python/swagger_client/models/__init__.py": [1, 4, 5, 6, 7, 8]}} \ No newline at end of file +!coverage.py: This is a private format, don't read it directly!{"lines": {"/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/apis/pet_api.py": [512, 513, 514, 683, 516, 86, 18, 20, 22, 23, 26, 539, 28, 29, 542, 543, 32, 548, 37, 39, 40, 41, 42, 555, 556, 45, 558, 559, 560, 562, 564, 565, 566, 265, 568, 569, 571, 574, 575, 576, 580, 581, 70, 584, 73, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 598, 88, 90, 92, 93, 95, 96, 97, 100, 101, 102, 106, 107, 621, 622, 624, 625, 626, 79, 116, 117, 118, 631, 632, 121, 122, 635, 124, 638, 639, 641, 642, 643, 645, 647, 649, 650, 651, 652, 653, 654, 656, 145, 146, 659, 148, 661, 150, 665, 666, 155, 156, 538, 159, 160, 673, 162, 675, 164, 677, 166, 679, 168, 169, 171, 172, 173, 541, 176, 177, 178, 115, 182, 183, 186, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 200, 119, 120, 377, 221, 222, 549, 224, 225, 226, 231, 232, 431, 235, 236, 110, 238, 240, 552, 242, 244, 246, 247, 249, 762, 383, 252, 253, 254, 258, 259, 262, 264, 44, 266, 267, 268, 269, 270, 271, 272, 273, 274, 276, 46, 48, 297, 298, 300, 301, 302, 307, 308, 311, 312, 314, 316, 317, 318, 320, 322, 323, 325, 113, 328, 329, 330, 334, 335, 338, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 485, 352, 84, 114, 373, 374, 376, 660, 378, 149, 384, 387, 390, 391, 393, 394, 395, 397, 399, 401, 402, 404, 407, 408, 409, 413, 414, 69, 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 669, 72, 241, 671, 74, 672, 83, 454, 455, 457, 458, 459, 674, 112, 464, 465, 468, 471, 472, 676, 474, 475, 476, 478, 480, 80, 482, 483, 484, 678, 486, 487, 489, 492, 493, 494, 680, 498, 499, 502, 681, 504, 505, 506, 507, 508, 509, 510, 511], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/models/category.py": [128, 134, 72, 74, 109, 19, 21, 22, 104, 25, 29, 30, 96, 100, 114, 102, 39, 40, 41, 103, 44, 45, 46, 112, 49, 50, 83, 116, 94, 52, 122, 61, 85, 63], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/models/tag.py": [128, 132, 134, 72, 74, 109, 19, 21, 22, 104, 25, 29, 30, 96, 100, 114, 102, 39, 40, 41, 103, 44, 45, 46, 112, 49, 50, 83, 116, 94, 52, 122, 61, 85, 63], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/__init__.py": [1, 4, 5, 6, 7, 8, 11, 12, 13, 16, 18, 20], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/models/pet.py": [128, 130, 150, 172, 139, 141, 19, 215, 21, 22, 152, 25, 29, 30, 161, 163, 39, 40, 41, 42, 43, 44, 45, 174, 48, 49, 50, 51, 52, 53, 54, 183, 57, 58, 59, 60, 61, 62, 64, 194, 195, 200, 73, 202, 75, 206, 208, 209, 210, 211, 84, 213, 86, 185, 216, 218, 220, 222, 95, 97, 226, 228, 234, 108, 238, 240, 117, 119, 212, 106], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/configuration.py": [135, 136, 137, 138, 139, 142, 19, 149, 22, 23, 25, 26, 27, 29, 158, 31, 32, 34, 36, 37, 39, 40, 41, 170, 43, 172, 46, 47, 189, 179, 52, 54, 59, 61, 190, 63, 192, 224, 67, 69, 71, 200, 73, 204, 80, 81, 82, 84, 213, 86, 199, 88, 90, 219, 92, 221, 222, 223, 96, 225, 98, 100, 102, 230, 104, 167, 111, 76, 168, 157, 122, 123, 42, 21], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/models/order.py": [130, 172, 141, 173, 19, 21, 22, 152, 25, 29, 30, 52, 161, 163, 39, 40, 41, 42, 43, 44, 45, 174, 175, 48, 49, 50, 51, 180, 53, 54, 57, 58, 59, 60, 61, 62, 191, 64, 202, 75, 86, 176, 222, 97, 228, 178, 234, 108, 240, 119], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/api_client.py": [512, 520, 527, 528, 529, 19, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 550, 40, 42, 44, 560, 49, 52, 568, 570, 571, 572, 573, 574, 575, 577, 68, 69, 74, 75, 76, 78, 79, 81, 82, 84, 86, 93, 98, 100, 104, 105, 106, 109, 110, 111, 113, 114, 117, 118, 119, 120, 121, 122, 125, 126, 127, 128, 131, 132, 133, 136, 139, 140, 143, 146, 147, 148, 149, 151, 154, 155, 157, 159, 160, 162, 539, 164, 173, 174, 176, 178, 193, 194, 196, 197, 198, 199, 200, 201, 202, 203, 204, 206, 207, 214, 215, 216, 548, 218, 219, 221, 549, 233, 237, 238, 242, 244, 253, 254, 256, 257, 258, 259, 260, 262, 263, 264, 265, 269, 270, 271, 274, 276, 277, 278, 280, 281, 282, 283, 285, 288, 289, 290, 318, 319, 320, 321, 322, 324, 325, 326, 327, 328, 329, 330, 331, 332, 334, 335, 339, 340, 341, 342, 343, 347, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 371, 372, 373, 374, 381, 389, 391, 392, 394, 395, 396, 397, 399, 400, 401, 402, 403, 404, 406, 408, 415, 416, 418, 420, 421, 423, 425, 432, 433, 435, 437, 438, 440, 442, 450, 452, 455, 456, 457, 458, 460, 461, 469, 495, 504, 505, 510], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/apis/__init__.py": [1, 4, 5, 6], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/apis/store_api.py": [18, 276, 22, 23, 26, 28, 29, 197, 32, 37, 39, 40, 41, 44, 46, 48, 20, 68, 69, 71, 72, 79, 82, 83, 85, 87, 89, 91, 92, 94, 97, 98, 99, 103, 104, 107, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/models/user.py": [278, 70, 136, 202, 272, 81, 147, 213, 22, 25, 92, 29, 158, 224, 103, 169, 235, 284, 114, 19, 180, 30, 246, 266, 191, 125, 21], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/apis/user_api.py": [32, 355, 37, 39, 200, 124, 428, 589, 48, 18, 20, 22, 23, 276, 26, 507, 28, 29], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/models/__init__.py": [1, 4, 5, 6, 7, 8], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/rest.py": [20, 21, 23, 24, 25, 26, 27, 28, 31, 33, 35, 36, 40, 42, 48, 51, 53, 54, 55, 56, 57, 59, 63, 65, 72, 74, 82, 83, 88, 92, 95, 98, 101, 102, 103, 104, 105, 106, 109, 110, 121, 122, 124, 129, 130, 132, 135, 137, 138, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 155, 156, 159, 160, 161, 166, 170, 171, 174, 176, 177, 179, 181, 182, 183, 184, 186, 191, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 210, 211, 212, 213, 214, 215, 217, 225, 227, 228, 229, 230, 231, 232, 239, 243, 244, 245, 246, 248, 249, 251]}} \ No newline at end of file diff --git a/samples/client/petstore/python/dev-requirements.txt.log b/samples/client/petstore/python/dev-requirements.txt.log index 28a3909b9e4..3418ab244d8 100644 --- a/samples/client/petstore/python/dev-requirements.txt.log +++ b/samples/client/petstore/python/dev-requirements.txt.log @@ -146,3 +146,18 @@ Requirement already satisfied (use --upgrade to upgrade): randomize in /private/ Requirement already satisfied (use --upgrade to upgrade): virtualenv>=1.11.2 in /private/var/tmp/pr/Tengah/swagger-codegen/samples/client/petstore/python/venv/lib/python2.7/site-packages (from tox->-r dev-requirements.txt (line 2)) Requirement already satisfied (use --upgrade to upgrade): py>=1.4.17 in /private/var/tmp/pr/Tengah/swagger-codegen/samples/client/petstore/python/venv/lib/python2.7/site-packages (from tox->-r dev-requirements.txt (line 2)) Requirement already satisfied (use --upgrade to upgrade): pluggy<0.4.0,>=0.3.0 in /private/var/tmp/pr/Tengah/swagger-codegen/samples/client/petstore/python/venv/lib/python2.7/site-packages (from tox->-r dev-requirements.txt (line 2)) +Collecting nose (from -r dev-requirements.txt (line 1)) + Using cached nose-1.3.7-py2-none-any.whl +Collecting tox (from -r dev-requirements.txt (line 2)) + Using cached tox-2.3.1-py2.py3-none-any.whl +Collecting coverage (from -r dev-requirements.txt (line 3)) +Collecting randomize (from -r dev-requirements.txt (line 4)) + Using cached randomize-0.13-py2.py3-none-any.whl +Collecting virtualenv>=1.11.2 (from tox->-r dev-requirements.txt (line 2)) + Using cached virtualenv-13.1.2-py2.py3-none-any.whl +Collecting py>=1.4.17 (from tox->-r dev-requirements.txt (line 2)) + Using cached py-1.4.31-py2.py3-none-any.whl +Collecting pluggy<0.4.0,>=0.3.0 (from tox->-r dev-requirements.txt (line 2)) + Using cached pluggy-0.3.1-py2.py3-none-any.whl +Installing collected packages: nose, virtualenv, py, pluggy, tox, coverage, randomize +Successfully installed coverage-4.0.3 nose-1.3.7 pluggy-0.3.1 py-1.4.31 randomize-0.13 tox-2.3.1 virtualenv-13.1.2 diff --git a/samples/client/petstore/python/swagger_client/apis/pet_api.py b/samples/client/petstore/python/swagger_client/apis/pet_api.py index 8e50474658c..c3171760ddf 100644 --- a/samples/client/petstore/python/swagger_client/apis/pet_api.py +++ b/samples/client/petstore/python/swagger_client/apis/pet_api.py @@ -679,3 +679,158 @@ class PetApi(object): auth_settings=auth_settings, callback=params.get('callback')) return response + + def get_pet_by_id_with_byte_array(self, pet_id, **kwargs): + """ + Fake endpoint to test byte array return by 'Find pet by ID' + Returns a pet when ID < 10. ID > 10 or nonintegers will simulate API error conditions + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please define a `callback` function + to be invoked when receiving the response. + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.get_pet_by_id_with_byte_array(pet_id, callback=callback_function) + + :param callback function: The callback function + for asynchronous request. (optional) + :param int pet_id: ID of pet that needs to be fetched (required) + :return: Binary + If the method is called asynchronously, + returns the request thread. + """ + + all_params = ['pet_id'] + all_params.append('callback') + + params = locals() + for key, val in iteritems(params['kwargs']): + if key not in all_params: + raise TypeError( + "Got an unexpected keyword argument '%s'" + " to method get_pet_by_id_with_byte_array" % key + ) + params[key] = val + del params['kwargs'] + + # verify the required parameter 'pet_id' is set + if ('pet_id' not in params) or (params['pet_id'] is None): + raise ValueError("Missing the required parameter `pet_id` when calling `get_pet_by_id_with_byte_array`") + + resource_path = '/pet/{petId}?testing_byte_array=true'.replace('{format}', 'json') + method = 'GET' + + path_params = {} + if 'pet_id' in params: + path_params['petId'] = params['pet_id'] + + query_params = {} + + header_params = {} + + form_params = {} + files = {} + + body_params = None + + # HTTP header `Accept` + header_params['Accept'] = self.api_client.\ + select_header_accept(['application/json', 'application/xml']) + if not header_params['Accept']: + del header_params['Accept'] + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.\ + select_header_content_type([]) + + # Authentication setting + auth_settings = ['api_key'] + + response = self.api_client.call_api(resource_path, method, + path_params, + query_params, + header_params, + body=body_params, + post_params=form_params, + files=files, + response_type='Binary', + auth_settings=auth_settings, + callback=params.get('callback')) + return response + + def add_pet_using_byte_array(self, **kwargs): + """ + Fake endpoint to test byte array in body parameter for adding a new pet to the store + + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please define a `callback` function + to be invoked when receiving the response. + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.add_pet_using_byte_array(callback=callback_function) + + :param callback function: The callback function + for asynchronous request. (optional) + :param Binary body: Pet object in the form of byte array + :return: None + If the method is called asynchronously, + returns the request thread. + """ + + all_params = ['body'] + all_params.append('callback') + + params = locals() + for key, val in iteritems(params['kwargs']): + if key not in all_params: + raise TypeError( + "Got an unexpected keyword argument '%s'" + " to method add_pet_using_byte_array" % key + ) + params[key] = val + del params['kwargs'] + + + resource_path = '/pet?testing_byte_array=true'.replace('{format}', 'json') + method = 'POST' + + path_params = {} + + query_params = {} + + header_params = {} + + form_params = {} + files = {} + + body_params = None + if 'body' in params: + body_params = params['body'] + + # HTTP header `Accept` + header_params['Accept'] = self.api_client.\ + select_header_accept(['application/json', 'application/xml']) + if not header_params['Accept']: + del header_params['Accept'] + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.\ + select_header_content_type(['application/json', 'application/xml']) + + # Authentication setting + auth_settings = ['petstore_auth'] + + response = self.api_client.call_api(resource_path, method, + path_params, + query_params, + header_params, + body=body_params, + post_params=form_params, + files=files, + response_type=None, + auth_settings=auth_settings, + callback=params.get('callback')) + return response