From 49a6d0e6c1ec54627279bf6b321f189046249592 Mon Sep 17 00:00:00 2001 From: Kirill Vlasov Date: Tue, 15 Dec 2015 14:09:31 +0500 Subject: [PATCH 001/623] Fixing squid:S1161 - @Override annotation should be used on any method overriding (since Java 5) or implementing (since Java 6) another one --- .../src/main/java/io/swagger/codegen/cmd/Meta.java | 1 + .../src/main/java/io/swagger/codegen/MetaGenerator.java | 1 + .../codegen/languages/AbstractTypeScriptClientCodegen.java | 1 + .../io/swagger/codegen/languages/AkkaScalaClientCodegen.java | 5 +++++ .../io/swagger/codegen/languages/AndroidClientCodegen.java | 4 ++++ .../swagger/codegen/languages/AsyncScalaClientCodegen.java | 5 +++++ .../io/swagger/codegen/languages/CSharpClientCodegen.java | 4 ++++ .../codegen/languages/CsharpDotNet2ClientCodegen.java | 4 ++++ .../java/io/swagger/codegen/languages/DartClientCodegen.java | 4 ++++ .../io/swagger/codegen/languages/FlashClientCodegen.java | 5 +++++ .../io/swagger/codegen/languages/FlaskConnexionCodegen.java | 4 ++++ .../java/io/swagger/codegen/languages/JMeterCodegen.java | 5 +++++ .../java/io/swagger/codegen/languages/JavaClientCodegen.java | 3 +++ .../codegen/languages/JavaInflectorServerCodegen.java | 5 +++++ .../swagger/codegen/languages/JavascriptClientCodegen.java | 2 ++ .../io/swagger/codegen/languages/JaxRSServerCodegen.java | 5 +++++ .../io/swagger/codegen/languages/NodeJSServerCodegen.java | 4 ++++ .../java/io/swagger/codegen/languages/ObjcClientCodegen.java | 5 +++++ .../java/io/swagger/codegen/languages/PerlClientCodegen.java | 5 +++++ .../java/io/swagger/codegen/languages/PhpClientCodegen.java | 4 ++++ .../io/swagger/codegen/languages/PythonClientCodegen.java | 4 ++++ .../java/io/swagger/codegen/languages/Qt5CPPGenerator.java | 4 ++++ .../java/io/swagger/codegen/languages/RubyClientCodegen.java | 4 ++++ .../io/swagger/codegen/languages/ScalaClientCodegen.java | 5 +++++ .../io/swagger/codegen/languages/ScalatraServerCodegen.java | 4 ++++ .../io/swagger/codegen/languages/SilexServerCodegen.java | 5 +++++ .../io/swagger/codegen/languages/SinatraServerCodegen.java | 4 ++++ .../codegen/languages/SlimFrameworkServerCodegen.java | 5 +++++ .../io/swagger/codegen/languages/SpringMVCServerCodegen.java | 4 ++++ .../java/io/swagger/codegen/languages/StaticDocCodegen.java | 4 ++++ .../io/swagger/codegen/languages/StaticHtmlGenerator.java | 3 +++ .../java/io/swagger/codegen/languages/SwaggerGenerator.java | 3 +++ .../io/swagger/codegen/languages/SwaggerYamlGenerator.java | 3 +++ .../main/java/io/swagger/codegen/languages/SwiftCodegen.java | 3 +++ .../io/swagger/codegen/languages/TizenClientCodegen.java | 5 +++++ .../codegen/languages/TypeScriptAngularClientCodegen.java | 1 + .../test/java/io/swagger/codegen/AbstractOptionsTest.java | 1 + .../src/test/java/io/swagger/codegen/CodegenTest.java | 1 + .../src/main/java/io/swagger/generator/Bootstrap.java | 1 + .../java/io/swagger/generator/resource/ExceptionWriter.java | 1 + .../java/io/swagger/generator/util/ValidationException.java | 1 + .../swagger/generator/online/OnlineGeneratorOptionsTest.java | 1 + 42 files changed, 143 insertions(+) diff --git a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Meta.java b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Meta.java index ca06652b942..9843024b104 100644 --- a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Meta.java +++ b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Meta.java @@ -135,6 +135,7 @@ public class Meta implements Runnable { */ private Mustache.TemplateLoader loader(final DefaultGenerator generator) { return new Mustache.TemplateLoader() { + @Override public Reader getTemplate(String name) { return generator.getTemplateReader(TEMPLATE_DIR_CLASSPATH + File.separator + name.concat(MUSTACHE_EXTENSION)); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/MetaGenerator.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/MetaGenerator.java index 8c8308471ff..818edab0214 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/MetaGenerator.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/MetaGenerator.java @@ -157,6 +157,7 @@ public class MetaGenerator extends AbstractGenerator { String template = readTemplate(templateDir + File.separator + support.templateFile); Template tmpl = Mustache.compiler() .withLoader(new Mustache.TemplateLoader() { + @Override public Reader getTemplate(String name) { return getTemplateReader(templateDir + File.separator + name + ".mustache"); } 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 a8d66491851..0147b47cca3 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 @@ -60,6 +60,7 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp return outputFolder + "/" + apiPackage().replace('.', File.separatorChar); } + @Override public String modelFileFolder() { return outputFolder + "/" + modelPackage().replace('.', File.separatorChar); } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AkkaScalaClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AkkaScalaClientCodegen.java index 29732f1d45a..aa5d314184b 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AkkaScalaClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AkkaScalaClientCodegen.java @@ -154,14 +154,17 @@ public class AkkaScalaClientCodegen extends DefaultCodegen implements CodegenCon cliOptions.add(new CliOption(CodegenConstants.API_PACKAGE, CodegenConstants.API_PACKAGE_DESC)); } + @Override public CodegenType getTag() { return CodegenType.CLIENT; } + @Override public String getName() { return "akka-scala"; } + @Override public String getHelp() { return "Generates a Scala client library base on Akka/Spray."; } @@ -176,6 +179,7 @@ public class AkkaScalaClientCodegen extends DefaultCodegen implements CodegenCon return outputFolder + "/" + sourceFolder + "/" + apiPackage().replace('.', File.separatorChar); } + @Override public String modelFileFolder() { return outputFolder + "/" + sourceFolder + "/" + modelPackage().replace('.', File.separatorChar); } @@ -321,6 +325,7 @@ public class AkkaScalaClientCodegen extends DefaultCodegen implements CodegenCon } } + @Override public String toDefaultValue(Property p) { if (!p.getRequired()) { return "None"; diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidClientCodegen.java index 7983d83cea1..704b38f7f46 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidClientCodegen.java @@ -71,14 +71,17 @@ public class AndroidClientCodegen extends DefaultCodegen implements CodegenConfi .defaultValue("true")); } + @Override public CodegenType getTag() { return CodegenType.CLIENT; } + @Override public String getName() { return "android"; } + @Override public String getHelp() { return "Generates an Android client library."; } @@ -93,6 +96,7 @@ public class AndroidClientCodegen extends DefaultCodegen implements CodegenConfi return outputFolder + "/" + sourceFolder + "/" + apiPackage().replace('.', File.separatorChar); } + @Override public String modelFileFolder() { return outputFolder + "/" + sourceFolder + "/" + modelPackage().replace('.', File.separatorChar); } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AsyncScalaClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AsyncScalaClientCodegen.java index 5e85712ffcd..36309c9ee52 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AsyncScalaClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AsyncScalaClientCodegen.java @@ -111,14 +111,17 @@ public class AsyncScalaClientCodegen extends DefaultCodegen implements CodegenCo cliOptions.add(new CliOption(CodegenConstants.API_PACKAGE, CodegenConstants.API_PACKAGE_DESC)); } + @Override public CodegenType getTag() { return CodegenType.CLIENT; } + @Override public String getName() { return "async-scala"; } + @Override public String getHelp() { return "Generates an Asynchronous Scala client library."; } @@ -133,6 +136,7 @@ public class AsyncScalaClientCodegen extends DefaultCodegen implements CodegenCo return outputFolder + "/" + sourceFolder + "/" + apiPackage().replace('.', File.separatorChar); } + @Override public String modelFileFolder() { return outputFolder + "/" + sourceFolder + "/" + modelPackage().replace('.', File.separatorChar); } @@ -182,6 +186,7 @@ public class AsyncScalaClientCodegen extends DefaultCodegen implements CodegenCo } } + @Override public String toDefaultValue(Property p) { if (p instanceof StringProperty) { return "null"; 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 f69ddd16d35..acf0b1b1262 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 @@ -135,14 +135,17 @@ public class CSharpClientCodegen extends DefaultCodegen implements CodegenConfig } + @Override public CodegenType getTag() { return CodegenType.CLIENT; } + @Override public String getName() { return "csharp"; } + @Override public String getHelp() { return "Generates a CSharp client library."; } @@ -157,6 +160,7 @@ public class CSharpClientCodegen extends DefaultCodegen implements CodegenConfig return outputFolder + File.separator + sourceFolder + File.separator + apiPackage().replace('.', File.separatorChar); } + @Override public String modelFileFolder() { return outputFolder + File.separator + sourceFolder + File.separator + modelPackage().replace('.', File.separatorChar); } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CsharpDotNet2ClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CsharpDotNet2ClientCodegen.java index 7b6bf5e7844..f3ae3b6a4d8 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CsharpDotNet2ClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CsharpDotNet2ClientCodegen.java @@ -135,14 +135,17 @@ public class CsharpDotNet2ClientCodegen extends DefaultCodegen implements Codege this.packageVersion = packageVersion; } + @Override public CodegenType getTag() { return CodegenType.CLIENT; } + @Override public String getName() { return "CsharpDotNet2"; } + @Override public String getHelp() { return "Generates a C# .Net 2.0 client library."; } @@ -157,6 +160,7 @@ public class CsharpDotNet2ClientCodegen extends DefaultCodegen implements Codege return outputFolder + File.separator + sourceFolder + File.separator + apiPackage().replace('.', File.separatorChar); } + @Override public String modelFileFolder() { return outputFolder + File.separator + sourceFolder + File.separator + modelPackage().replace('.', File.separatorChar); } 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 e18b9eac0a2..7d11f2a8183 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 @@ -84,14 +84,17 @@ public class DartClientCodegen extends DefaultCodegen implements CodegenConfig { cliOptions.add(new CliOption(CodegenConstants.SOURCE_FOLDER, "source folder for generated code")); } + @Override public CodegenType getTag() { return CodegenType.CLIENT; } + @Override public String getName() { return "dart"; } + @Override public String getHelp() { return "Generates a Dart client library."; } @@ -157,6 +160,7 @@ public class DartClientCodegen extends DefaultCodegen implements CodegenConfig { return outputFolder + "/" + sourceFolder + "/" + apiPackage().replace('.', File.separatorChar); } + @Override public String modelFileFolder() { return outputFolder + "/" + sourceFolder + "/" + modelPackage().replace('.', File.separatorChar); } 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 8608cbe8924..44c2b9cb09e 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 @@ -156,14 +156,17 @@ public class FlashClientCodegen extends DefaultCodegen implements CodegenConfig return str.replaceAll("\\.", "_"); } + @Override public CodegenType getTag() { return CodegenType.CLIENT; } + @Override public String getName() { return "flash"; } + @Override public String getHelp() { return "Generates a Flash client library."; } @@ -179,6 +182,7 @@ public class FlashClientCodegen extends DefaultCodegen implements CodegenConfig + apiPackage().replace('.', File.separatorChar)).replace('/', File.separatorChar); } + @Override public String modelFileFolder() { return (outputFolder + File.separatorChar + sourceFolder + File.separatorChar + modelPackage().replace('.', File.separatorChar)).replace('/', File.separatorChar); @@ -214,6 +218,7 @@ public class FlashClientCodegen extends DefaultCodegen implements CodegenConfig return type; } + @Override public String toDefaultValue(Property p) { if (p instanceof StringProperty) { return "null"; diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/FlaskConnexionCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/FlaskConnexionCodegen.java index 7a06ee8b845..483e841d735 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/FlaskConnexionCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/FlaskConnexionCodegen.java @@ -132,6 +132,7 @@ public class FlaskConnexionCodegen extends DefaultCodegen implements CodegenConf } } + @Override public String apiPackage() { return controllerPackage; } @@ -142,6 +143,7 @@ public class FlaskConnexionCodegen extends DefaultCodegen implements CodegenConf * @return the CodegenType for this generator * @see io.swagger.codegen.CodegenType */ + @Override public CodegenType getTag() { return CodegenType.SERVER; } @@ -152,6 +154,7 @@ public class FlaskConnexionCodegen extends DefaultCodegen implements CodegenConf * * @return the friendly name for the generator */ + @Override public String getName() { return "python-flask"; } @@ -162,6 +165,7 @@ public class FlaskConnexionCodegen extends DefaultCodegen implements CodegenConf * * @return A string value for the help message */ + @Override public String getHelp() { return "Generates a python server library using the connexion project. By default, " + "it will also generate service classes--which you can disable with the `-Dnoservice` environment variable."; diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JMeterCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JMeterCodegen.java index fb167477214..429d992b7ef 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JMeterCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JMeterCodegen.java @@ -22,6 +22,7 @@ public class JMeterCodegen extends DefaultCodegen implements CodegenConfig { * @return the CodegenType for this generator * @see io.swagger.codegen.CodegenType */ + @Override public CodegenType getTag() { return CodegenType.CLIENT; } @@ -32,6 +33,7 @@ public class JMeterCodegen extends DefaultCodegen implements CodegenConfig { * * @return the friendly name for the generator */ + @Override public String getName() { return "jmeter"; } @@ -42,6 +44,7 @@ public class JMeterCodegen extends DefaultCodegen implements CodegenConfig { * * @return A string value for the help message */ + @Override public String getHelp() { return "Generates a JMeter .jmx file."; } @@ -97,6 +100,7 @@ public class JMeterCodegen extends DefaultCodegen implements CodegenConfig { // supportingFiles.add(new SupportingFile("testdata-localhost.mustache", "input", "testdata-localhost.csv")); } + @Override public void preprocessSwagger(Swagger swagger) { if (swagger != null && swagger.getPaths() != null) { for (String pathname : swagger.getPaths().keySet()) { @@ -126,6 +130,7 @@ public class JMeterCodegen extends DefaultCodegen implements CodegenConfig { * Location to write model files. You can use the modelPackage() as defined when the class is * instantiated */ + @Override public String modelFileFolder() { return outputFolder + "/" + sourceFolder + "/" + modelPackage().replace('.', File.separatorChar); } 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 2f77a417837..b48ab800836 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 @@ -530,6 +530,7 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { return objs; } + @Override public Map postProcessOperations(Map objs) { if("retrofit".equals(getLibrary()) || "retrofit2".equals(getLibrary())) { Map operations = (Map) objs.get("operations"); @@ -555,6 +556,7 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { return objs; } + @Override public void preprocessSwagger(Swagger swagger) { if (swagger != null && swagger.getPaths() != null) { for (String pathname : swagger.getPaths().keySet()) { @@ -606,6 +608,7 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { return accepts; } + @Override protected boolean needToImport(String type) { return super.needToImport(type) && type.indexOf(".") < 0; } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaInflectorServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaInflectorServerCodegen.java index a7a0420d984..a7612638255 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaInflectorServerCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaInflectorServerCodegen.java @@ -45,14 +45,17 @@ public class JavaInflectorServerCodegen extends JavaClientCodegen implements Cod ); } + @Override public CodegenType getTag() { return CodegenType.SERVER; } + @Override public String getName() { return "inflector"; } + @Override public String getHelp() { return "Generates a Java Inflector Server application."; } @@ -131,6 +134,7 @@ public class JavaInflectorServerCodegen extends JavaClientCodegen implements Cod return objs; } + @Override public Map postProcessOperations(Map objs) { Map operations = (Map) objs.get("operations"); if (operations != null) { @@ -188,6 +192,7 @@ public class JavaInflectorServerCodegen extends JavaClientCodegen implements Cod return camelize(name)+ "Controller"; } + @Override public boolean shouldOverwrite(String filename) { return super.shouldOverwrite(filename); } 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 51ef135ae0d..b1796c9d4fd 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 @@ -373,6 +373,7 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo return objs; } + @Override public Map postProcessOperations(Map objs) { if("retrofit".equals(getLibrary())) { Map operations = (Map) objs.get("operations"); @@ -396,6 +397,7 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo return objs; } + @Override protected boolean needToImport(String type) { return super.needToImport(type) && type.indexOf(".") < 0; } 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 6bc1a392414..a91b405d36b 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 @@ -35,14 +35,17 @@ public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConf additionalProperties.put("title", title); } + @Override public CodegenType getTag() { return CodegenType.SERVER; } + @Override public String getName() { return "jaxrs"; } + @Override public String getHelp() { return "Generates a Java JAXRS Server application."; } @@ -144,6 +147,7 @@ public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConf return objs; } + @Override public Map postProcessOperations(Map objs) { Map operations = (Map) objs.get("operations"); if (operations != null) { @@ -229,6 +233,7 @@ public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConf return outputFolder + "/" + output + "/" + apiPackage().replace('.', '/'); } + @Override public boolean shouldOverwrite(String filename) { return super.shouldOverwrite(filename) && !filename.endsWith("ServiceImpl.java") && !filename.endsWith("ServiceFactory.java"); } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/NodeJSServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/NodeJSServerCodegen.java index 4dee5f6f2df..914c602f86b 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/NodeJSServerCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/NodeJSServerCodegen.java @@ -97,6 +97,7 @@ public class NodeJSServerCodegen extends DefaultCodegen implements CodegenConfig } } + @Override public String apiPackage() { return "controllers"; } @@ -107,6 +108,7 @@ public class NodeJSServerCodegen extends DefaultCodegen implements CodegenConfig * @return the CodegenType for this generator * @see io.swagger.codegen.CodegenType */ + @Override public CodegenType getTag() { return CodegenType.SERVER; } @@ -117,6 +119,7 @@ public class NodeJSServerCodegen extends DefaultCodegen implements CodegenConfig * * @return the friendly name for the generator */ + @Override public String getName() { return "nodejs"; } @@ -127,6 +130,7 @@ public class NodeJSServerCodegen extends DefaultCodegen implements CodegenConfig * * @return A string value for the help message */ + @Override public String getHelp() { return "Generates a nodejs server library using the swagger-tools project. By default, " + "it will also generate service classes--which you can disable with the `-Dnoservice` environment variable."; 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 9c488db1254..78a60089cf7 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 @@ -133,14 +133,17 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { cliOptions.add(new CliOption(LICENSE, "License to use in the podspec file.").defaultValue("MIT")); } + @Override public CodegenType getTag() { return CodegenType.CLIENT; } + @Override public String getName() { return "objc"; } + @Override public String getHelp() { return "Generates an Objective-C client library."; } @@ -356,6 +359,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { return classPrefix + camelize(name) + "Api"; } + @Override public String toApiFilename(String name) { return classPrefix + camelize(name) + "Api"; } @@ -395,6 +399,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { return toVarName(name); } + @Override public String escapeReservedWord(String name) { return "_" + name; } 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 27f39f11ed0..8190d996355 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 @@ -104,14 +104,17 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig { supportingFiles.add(new SupportingFile("autodoc.script.mustache", ("bin/").replace('/', File.separatorChar), "autodoc")); } + @Override public CodegenType getTag() { return CodegenType.CLIENT; } + @Override public String getName() { return "perl"; } + @Override public String getHelp() { return "Generates a Perl client library."; } @@ -126,6 +129,7 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig { return (outputFolder + "/lib/WWW/" + moduleName + apiPackage()).replace('/', File.separatorChar); } + @Override public String modelFileFolder() { return (outputFolder + "/lib/WWW/" + moduleName + modelPackage()).replace('/', File.separatorChar); } @@ -162,6 +166,7 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig { return type; } + @Override public String toDefaultValue(Property p) { return "null"; } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java index c712374f424..0b59e6f4320 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java @@ -139,14 +139,17 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig { .replaceAll(regLastPathSeparator+ "$", ""); } + @Override public CodegenType getTag() { return CodegenType.CLIENT; } + @Override public String getName() { return "php"; } + @Override public String getHelp() { return "Generates a PHP client library."; } @@ -223,6 +226,7 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig { return (outputFolder + "/" + toPackagePath(apiPackage, srcBasePath)); } + @Override public String modelFileFolder() { return (outputFolder + "/" + toPackagePath(modelPackage, srcBasePath)); } 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 b5aa56aa2c4..d7fdd39239a 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 @@ -108,14 +108,17 @@ public class PythonClientCodegen extends DefaultCodegen implements CodegenConfig return str.replaceAll("\\.", "_"); } + @Override public CodegenType getTag() { return CodegenType.CLIENT; } + @Override public String getName() { return "python"; } + @Override public String getHelp() { return "Generates a Python client library."; } @@ -130,6 +133,7 @@ public class PythonClientCodegen extends DefaultCodegen implements CodegenConfig return outputFolder + File.separatorChar + apiPackage().replace('.', File.separatorChar); } + @Override public String modelFileFolder() { return outputFolder + File.separatorChar + modelPackage().replace('.', File.separatorChar); } 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 2abff5515b0..18ba3718068 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 @@ -140,6 +140,7 @@ public class Qt5CPPGenerator extends DefaultCodegen implements CodegenConfig { * @return the CodegenType for this generator * @see io.swagger.codegen.CodegenType */ + @Override public CodegenType getTag() { return CodegenType.CLIENT; } @@ -150,6 +151,7 @@ public class Qt5CPPGenerator extends DefaultCodegen implements CodegenConfig { * * @return the friendly name for the generator */ + @Override public String getName() { return "qt5cpp"; } @@ -160,6 +162,7 @@ public class Qt5CPPGenerator extends DefaultCodegen implements CodegenConfig { * * @return A string value for the help message */ + @Override public String getHelp() { return "Generates a qt5 C++ client library."; } @@ -189,6 +192,7 @@ public class Qt5CPPGenerator extends DefaultCodegen implements CodegenConfig { * Location to write model files. You can use the modelPackage() as defined when the class is * instantiated */ + @Override public String modelFileFolder() { return outputFolder + "/" + sourceFolder + "/" + modelPackage().replace('.', File.separatorChar); } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RubyClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RubyClientCodegen.java index 2fd6d8d8bc0..25f0521c5f8 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RubyClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RubyClientCodegen.java @@ -130,14 +130,17 @@ public class RubyClientCodegen extends DefaultCodegen implements CodegenConfig { supportingFiles.add(new SupportingFile("base_object.mustache", modelFolder, "base_object.rb")); } + @Override public CodegenType getTag() { return CodegenType.CLIENT; } + @Override public String getName() { return "ruby"; } + @Override public String getHelp() { return "Generates a Ruby client library."; } @@ -166,6 +169,7 @@ public class RubyClientCodegen extends DefaultCodegen implements CodegenConfig { return outputFolder + File.separator + libFolder + File.separator + gemName + File.separator + apiPackage.replace("/", File.separator); } + @Override public String modelFileFolder() { return outputFolder + File.separator + libFolder + File.separator + gemName + File.separator + modelPackage.replace("/", File.separator); } 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 b2f5b9571dd..8d917430d3c 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 @@ -112,14 +112,17 @@ public class ScalaClientCodegen extends DefaultCodegen implements CodegenConfig cliOptions.add(new CliOption(CodegenConstants.API_PACKAGE, CodegenConstants.API_PACKAGE_DESC)); } + @Override public CodegenType getTag() { return CodegenType.CLIENT; } + @Override public String getName() { return "scala"; } + @Override public String getHelp() { return "Generates a Scala client library."; } @@ -134,6 +137,7 @@ public class ScalaClientCodegen extends DefaultCodegen implements CodegenConfig return outputFolder + "/" + sourceFolder + "/" + apiPackage().replace('.', File.separatorChar); } + @Override public String modelFileFolder() { return outputFolder + "/" + sourceFolder + "/" + modelPackage().replace('.', File.separatorChar); } @@ -183,6 +187,7 @@ public class ScalaClientCodegen extends DefaultCodegen implements CodegenConfig } } + @Override public String toDefaultValue(Property p) { if (p instanceof StringProperty) { return "null"; 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 d50fa867887..5d6da580130 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 @@ -123,14 +123,17 @@ public class ScalatraServerCodegen extends DefaultCodegen implements CodegenConf cliOptions.add(new CliOption(CodegenConstants.API_PACKAGE, CodegenConstants.API_PACKAGE_DESC)); } + @Override public CodegenType getTag() { return CodegenType.SERVER; } + @Override public String getName() { return "scalatra"; } + @Override public String getHelp() { return "Generates a Scala server application with Scalatra."; } @@ -145,6 +148,7 @@ public class ScalatraServerCodegen extends DefaultCodegen implements CodegenConf return outputFolder + "/" + sourceFolder + "/" + apiPackage().replace('.', File.separatorChar); } + @Override public String modelFileFolder() { return outputFolder + "/" + sourceFolder + "/" + modelPackage().replace('.', File.separatorChar); } 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 2e35f412bbf..3984d0ac85f 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 @@ -88,14 +88,17 @@ public class SilexServerCodegen extends DefaultCodegen implements CodegenConfig supportingFiles.add(new SupportingFile(".htaccess", packagePath.replace('/', File.separatorChar), ".htaccess")); } + @Override public CodegenType getTag() { return CodegenType.SERVER; } + @Override public String getName() { return "silex-PHP"; } + @Override public String getHelp() { return "Generates a Silex server library."; } @@ -110,6 +113,7 @@ public class SilexServerCodegen extends DefaultCodegen implements CodegenConfig return (outputFolder + "/" + apiPackage()).replace('/', File.separatorChar); } + @Override public String modelFileFolder() { return (outputFolder + "/" + modelPackage()).replace('/', File.separatorChar); } @@ -148,6 +152,7 @@ public class SilexServerCodegen extends DefaultCodegen implements CodegenConfig return toModelName(type); } + @Override public String toDefaultValue(Property p) { return "null"; } 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 1c31b45664e..44f97009371 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 @@ -81,14 +81,17 @@ public class SinatraServerCodegen extends DefaultCodegen implements CodegenConfi supportingFiles.add(new SupportingFile("swagger.mustache","","swagger.yaml")); } + @Override public CodegenType getTag() { return CodegenType.SERVER; } + @Override public String getName() { return "sinatra"; } + @Override public String getHelp() { return "Generates a Sinatra server library."; } @@ -135,6 +138,7 @@ public class SinatraServerCodegen extends DefaultCodegen implements CodegenConfi return type; } + @Override public String toDefaultValue(Property p) { return "null"; } 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 ef318cb6bdd..58d8c9e53e5 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 @@ -90,14 +90,17 @@ public class SlimFrameworkServerCodegen extends DefaultCodegen implements Codege supportingFiles.add(new SupportingFile(".htaccess", packagePath.replace('/', File.separatorChar), ".htaccess")); } + @Override public CodegenType getTag() { return CodegenType.SERVER; } + @Override public String getName() { return "slim"; } + @Override public String getHelp() { return "Generates a Slim Framework server library."; } @@ -112,6 +115,7 @@ public class SlimFrameworkServerCodegen extends DefaultCodegen implements Codege return (outputFolder + "/" + apiPackage()).replace('/', File.separatorChar); } + @Override public String modelFileFolder() { return (outputFolder + "/" + modelPackage()).replace('/', File.separatorChar); } @@ -162,6 +166,7 @@ public class SlimFrameworkServerCodegen extends DefaultCodegen implements Codege return super.getTypeDeclaration(name); } + @Override public String toDefaultValue(Property p) { return "null"; } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SpringMVCServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SpringMVCServerCodegen.java index 446185bcd47..62c9a2a1348 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SpringMVCServerCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SpringMVCServerCodegen.java @@ -53,14 +53,17 @@ public class SpringMVCServerCodegen extends JavaClientCodegen implements Codegen cliOptions.add(new CliOption(CONFIG_PACKAGE, "configuration package for generated code")); } + @Override public CodegenType getTag() { return CodegenType.SERVER; } + @Override public String getName() { return "spring-mvc"; } + @Override public String getHelp() { return "Generates a Java Spring-MVC Server application using the SpringFox integration."; } @@ -126,6 +129,7 @@ public class SpringMVCServerCodegen extends JavaClientCodegen implements Codegen co.baseName = basePath; } + @Override public Map postProcessOperations(Map objs) { Map operations = (Map) objs.get("operations"); if (operations != null) { diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/StaticDocCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/StaticDocCodegen.java index b27ba23a4cd..99ba292915a 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/StaticDocCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/StaticDocCodegen.java @@ -50,14 +50,17 @@ public class StaticDocCodegen extends DefaultCodegen implements CodegenConfig { instantiationTypes.put("map", "HashMap"); } + @Override public CodegenType getTag() { return CodegenType.DOCUMENTATION; } + @Override public String getName() { return "dynamic-html"; } + @Override public String getHelp() { return "Generates a dynamic HTML site."; } @@ -72,6 +75,7 @@ public class StaticDocCodegen extends DefaultCodegen implements CodegenConfig { return outputFolder + File.separator + sourceFolder + File.separator + "operations"; } + @Override public String modelFileFolder() { return outputFolder + File.separator + sourceFolder + File.separator + "models"; } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/StaticHtmlGenerator.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/StaticHtmlGenerator.java index a86c2244995..cb598f8fbd8 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/StaticHtmlGenerator.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/StaticHtmlGenerator.java @@ -50,14 +50,17 @@ public class StaticHtmlGenerator extends DefaultCodegen implements CodegenConfig importMapping = new HashMap(); } + @Override public CodegenType getTag() { return CodegenType.DOCUMENTATION; } + @Override public String getName() { return "html"; } + @Override public String getHelp() { return "Generates a static HTML file."; } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwaggerGenerator.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwaggerGenerator.java index 3241dde7b92..a98d5fc5b13 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwaggerGenerator.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwaggerGenerator.java @@ -19,14 +19,17 @@ public class SwaggerGenerator extends DefaultCodegen implements CodegenConfig { supportingFiles.add(new SupportingFile("README.md", "", "README.md")); } + @Override public CodegenType getTag() { return CodegenType.DOCUMENTATION; } + @Override public String getName() { return "swagger"; } + @Override public String getHelp() { return "Creates a static swagger.json file."; } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwaggerYamlGenerator.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwaggerYamlGenerator.java index 8ee1440b17e..9c4680112e9 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwaggerYamlGenerator.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwaggerYamlGenerator.java @@ -19,14 +19,17 @@ public class SwaggerYamlGenerator extends DefaultCodegen implements CodegenConfi supportingFiles.add(new SupportingFile("README.md", "", "README.md")); } + @Override public CodegenType getTag() { return CodegenType.DOCUMENTATION; } + @Override public String getName() { return "swagger-yaml"; } + @Override public String getHelp() { return "Creates a static swagger.yaml file."; } 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 fffd3aa2aae..e951cfb76d3 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 @@ -45,14 +45,17 @@ public class SwiftCodegen extends DefaultCodegen implements CodegenConfig { protected String sourceFolder = "Classes" + File.separator + "Swaggers"; private static final Pattern PATH_PARAM_PATTERN = Pattern.compile("\\{[a-zA-Z_]+\\}"); + @Override public CodegenType getTag() { return CodegenType.CLIENT; } + @Override public String getName() { return "swift"; } + @Override public String getHelp() { return "Generates a swift client library."; } 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 8efb5276cff..83241ddc5e7 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 @@ -110,14 +110,17 @@ public class TizenClientCodegen extends DefaultCodegen implements CodegenConfig supportingFiles.add(new SupportingFile("error-body.mustache", sourceFolder, PREFIX + "Error.cpp")); } + @Override public CodegenType getTag() { return CodegenType.CLIENT; } + @Override public String getName() { return "tizen"; } + @Override public String getHelp() { return "Generates a Samsung Tizen C++ client library."; } @@ -250,6 +253,7 @@ public class TizenClientCodegen extends DefaultCodegen implements CodegenConfig return PREFIX + initialCaps(name) + "Api"; } + @Override public String toApiFilename(String name) { return PREFIX + initialCaps(name) + "Api"; } @@ -261,6 +265,7 @@ public class TizenClientCodegen extends DefaultCodegen implements CodegenConfig return "p" + paramName; } + @Override public String escapeReservedWord(String name) { return "_" + name; } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/TypeScriptAngularClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/TypeScriptAngularClientCodegen.java index 6c9b615476d..60b6f2b34c6 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/TypeScriptAngularClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/TypeScriptAngularClientCodegen.java @@ -10,6 +10,7 @@ public class TypeScriptAngularClientCodegen extends AbstractTypeScriptClientCode return "typescript-angular"; } + @Override public String getHelp() { return "Generates a TypeScript AngularJS client library."; } diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/AbstractOptionsTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/AbstractOptionsTest.java index 7bc2a86bc6b..002e4ba8f29 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/AbstractOptionsTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/AbstractOptionsTest.java @@ -51,6 +51,7 @@ public abstract class AbstractOptionsTest { private Function getCliOptionTransformer() { return new Function() { + @Override public String apply(CliOption option) { return option.getOpt(); } diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/CodegenTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/CodegenTest.java index 3adc19e6db9..68c2b4b170b 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/CodegenTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/CodegenTest.java @@ -86,6 +86,7 @@ public class CodegenTest { final Swagger model = parseAndPrepareSwagger("src/test/resources/2_0/requiredTest.json"); final DefaultCodegen codegen = new DefaultCodegen() { + @Override public String getSwaggerType(Property p) { if (p != null && !p.getRequired()) { return "Optional<" + super.getSwaggerType(p) + ">"; diff --git a/modules/swagger-generator/src/main/java/io/swagger/generator/Bootstrap.java b/modules/swagger-generator/src/main/java/io/swagger/generator/Bootstrap.java index 018d3416149..53e67dc099f 100644 --- a/modules/swagger-generator/src/main/java/io/swagger/generator/Bootstrap.java +++ b/modules/swagger-generator/src/main/java/io/swagger/generator/Bootstrap.java @@ -26,6 +26,7 @@ import java.io.IOException; import java.io.InputStream; public class Bootstrap extends HttpServlet { + @Override public void init(ServletConfig config) throws ServletException { ServletContext context = config.getServletContext(); diff --git a/modules/swagger-generator/src/main/java/io/swagger/generator/resource/ExceptionWriter.java b/modules/swagger-generator/src/main/java/io/swagger/generator/resource/ExceptionWriter.java index fea969d7273..122561ddd94 100644 --- a/modules/swagger-generator/src/main/java/io/swagger/generator/resource/ExceptionWriter.java +++ b/modules/swagger-generator/src/main/java/io/swagger/generator/resource/ExceptionWriter.java @@ -13,6 +13,7 @@ import javax.ws.rs.ext.Provider; @Provider public class ExceptionWriter implements ExceptionMapper { + @Override public Response toResponse(Exception exception) { if (exception instanceof javax.ws.rs.WebApplicationException) { javax.ws.rs.WebApplicationException e = (javax.ws.rs.WebApplicationException) exception; diff --git a/modules/swagger-generator/src/main/java/io/swagger/generator/util/ValidationException.java b/modules/swagger-generator/src/main/java/io/swagger/generator/util/ValidationException.java index ed58675e12b..fc772a79308 100644 --- a/modules/swagger-generator/src/main/java/io/swagger/generator/util/ValidationException.java +++ b/modules/swagger-generator/src/main/java/io/swagger/generator/util/ValidationException.java @@ -19,6 +19,7 @@ public class ValidationException extends Exception { this.code = code; } + @Override public String getMessage() { return msg; } diff --git a/modules/swagger-generator/src/test/java/io/swagger/generator/online/OnlineGeneratorOptionsTest.java b/modules/swagger-generator/src/test/java/io/swagger/generator/online/OnlineGeneratorOptionsTest.java index 8ec4d1760e8..55161327b1c 100644 --- a/modules/swagger-generator/src/test/java/io/swagger/generator/online/OnlineGeneratorOptionsTest.java +++ b/modules/swagger-generator/src/test/java/io/swagger/generator/online/OnlineGeneratorOptionsTest.java @@ -94,6 +94,7 @@ public class OnlineGeneratorOptionsTest { final Maps.EntryTransformer transformer = new Maps.EntryTransformer() { + @Override public String transformEntry(String key, InvocationCounter value) { return value.getValue(); } From b1869c1caeae2815c0d46079075eef1bf137b221 Mon Sep 17 00:00:00 2001 From: Artyom Date: Tue, 15 Dec 2015 11:21:20 +0200 Subject: [PATCH 002/623] Escape \r in XML comments Workaround for #1336 --- .../src/main/java/io/swagger/codegen/DefaultCodegen.java | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java index 53c0e6350b0..d411a1c32a3 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java @@ -148,6 +148,7 @@ public class DefaultCodegen { if (input != null) { input = input.trim(); String output = input.replaceAll("\n", "\\\\n"); + output = output.replace("\r", "\\r"); output = output.replace("\"", "\\\""); return output; } From 4ed0173a21c4c64dc691a359cb9c58cf17ad0bc1 Mon Sep 17 00:00:00 2001 From: Kirill Vlasov Date: Tue, 15 Dec 2015 15:03:33 +0500 Subject: [PATCH 003/623] Fixing squid:S2057 - Serializable classes should have a version id --- .../src/main/java/io/swagger/generator/Bootstrap.java | 2 ++ .../main/java/io/swagger/generator/exception/ApiException.java | 1 + .../io/swagger/generator/exception/BadRequestException.java | 1 + .../java/io/swagger/generator/exception/NotFoundException.java | 1 + .../java/io/swagger/generator/util/ValidationException.java | 1 + 5 files changed, 6 insertions(+) diff --git a/modules/swagger-generator/src/main/java/io/swagger/generator/Bootstrap.java b/modules/swagger-generator/src/main/java/io/swagger/generator/Bootstrap.java index 018d3416149..49613764e08 100644 --- a/modules/swagger-generator/src/main/java/io/swagger/generator/Bootstrap.java +++ b/modules/swagger-generator/src/main/java/io/swagger/generator/Bootstrap.java @@ -26,6 +26,8 @@ import java.io.IOException; import java.io.InputStream; public class Bootstrap extends HttpServlet { + private static final long serialVersionUID = 1400930071893332856L; + public void init(ServletConfig config) throws ServletException { ServletContext context = config.getServletContext(); diff --git a/modules/swagger-generator/src/main/java/io/swagger/generator/exception/ApiException.java b/modules/swagger-generator/src/main/java/io/swagger/generator/exception/ApiException.java index 50019486ec3..fe8b455ecb0 100644 --- a/modules/swagger-generator/src/main/java/io/swagger/generator/exception/ApiException.java +++ b/modules/swagger-generator/src/main/java/io/swagger/generator/exception/ApiException.java @@ -17,6 +17,7 @@ package io.swagger.generator.exception; public class ApiException extends Exception { + private static final long serialVersionUID = -5085112752305370687L; private int code; public ApiException(int code, String msg) { diff --git a/modules/swagger-generator/src/main/java/io/swagger/generator/exception/BadRequestException.java b/modules/swagger-generator/src/main/java/io/swagger/generator/exception/BadRequestException.java index b90c6ee319d..7cab512b58c 100644 --- a/modules/swagger-generator/src/main/java/io/swagger/generator/exception/BadRequestException.java +++ b/modules/swagger-generator/src/main/java/io/swagger/generator/exception/BadRequestException.java @@ -17,6 +17,7 @@ package io.swagger.generator.exception; public class BadRequestException extends ApiException { + private static final long serialVersionUID = -5540416398447252055L; private int code; public BadRequestException(int code, String msg) { diff --git a/modules/swagger-generator/src/main/java/io/swagger/generator/exception/NotFoundException.java b/modules/swagger-generator/src/main/java/io/swagger/generator/exception/NotFoundException.java index 339cac259c1..b84985d51e1 100644 --- a/modules/swagger-generator/src/main/java/io/swagger/generator/exception/NotFoundException.java +++ b/modules/swagger-generator/src/main/java/io/swagger/generator/exception/NotFoundException.java @@ -17,6 +17,7 @@ package io.swagger.generator.exception; public class NotFoundException extends ApiException { + private static final long serialVersionUID = -1223255119112336573L; private int code; public NotFoundException(int code, String msg) { diff --git a/modules/swagger-generator/src/main/java/io/swagger/generator/util/ValidationException.java b/modules/swagger-generator/src/main/java/io/swagger/generator/util/ValidationException.java index ed58675e12b..bb74164e0f0 100644 --- a/modules/swagger-generator/src/main/java/io/swagger/generator/util/ValidationException.java +++ b/modules/swagger-generator/src/main/java/io/swagger/generator/util/ValidationException.java @@ -3,6 +3,7 @@ package io.swagger.generator.util; import java.util.List; public class ValidationException extends Exception { + private static final long serialVersionUID = 6861195361018260380L; private int code; private String msg; private List errors; From 89be4231dbe085ae7bf42358d7205b580fcc708b Mon Sep 17 00:00:00 2001 From: Ben McCann Date: Wed, 16 Dec 2015 16:09:25 -0800 Subject: [PATCH 004/623] Remove bin directory --- .../java/bin/io/swagger/client/ApiClient.class | Bin 9392 -> 0 bytes .../bin/io/swagger/client/ApiClientTest.class | Bin 5340 -> 0 bytes .../bin/io/swagger/client/ApiException.class | Bin 1603 -> 0 bytes .../bin/io/swagger/client/Configuration.class | Bin 715 -> 0 bytes .../io/swagger/client/ConfigurationTest.class | Bin 1220 -> 0 bytes .../java/bin/io/swagger/client/JsonUtil.class | Bin 1391 -> 0 bytes .../java/bin/io/swagger/client/StringUtil.class | Bin 1207 -> 0 bytes .../bin/io/swagger/client/StringUtilTest.class | Bin 3248 -> 0 bytes .../java/bin/io/swagger/client/api/PetApi.class | Bin 3683 -> 0 bytes .../bin/io/swagger/client/api/StoreApi.class | Bin 2053 -> 0 bytes .../java/bin/io/swagger/client/api/UserApi.class | Bin 2902 -> 0 bytes .../bin/io/swagger/client/auth/ApiKeyAuth.class | Bin 2036 -> 0 bytes .../io/swagger/client/auth/ApiKeyAuthTest.class | Bin 1901 -> 0 bytes .../io/swagger/client/auth/Authentication.class | Bin 324 -> 0 bytes .../io/swagger/client/auth/HttpBasicAuth.class | Bin 2154 -> 0 bytes .../swagger/client/auth/HttpBasicAuthTest.class | Bin 1833 -> 0 bytes .../java/bin/io/swagger/client/auth/OAuth.class | Bin 748 -> 0 bytes .../bin/io/swagger/client/model/Category.class | Bin 1385 -> 0 bytes .../swagger/client/model/Order$StatusEnum.class | Bin 1313 -> 0 bytes .../java/bin/io/swagger/client/model/Order.class | Bin 2862 -> 0 bytes .../io/swagger/client/model/Pet$StatusEnum.class | Bin 1300 -> 0 bytes .../java/bin/io/swagger/client/model/Pet.class | Bin 3168 -> 0 bytes .../java/bin/io/swagger/client/model/Tag.class | Bin 1370 -> 0 bytes .../java/bin/io/swagger/client/model/User.class | Bin 3061 -> 0 bytes .../io/swagger/petstore/test/PetApiTest.class | Bin 5776 -> 0 bytes .../io/swagger/petstore/test/StoreApiTest.class | Bin 2384 -> 0 bytes .../io/swagger/petstore/test/UserApiTest.class | Bin 2346 -> 0 bytes 27 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/ApiClient.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/ApiClientTest.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/ApiException.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/Configuration.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/ConfigurationTest.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/JsonUtil.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/StringUtil.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/StringUtilTest.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/api/PetApi.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/api/StoreApi.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/api/UserApi.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/auth/ApiKeyAuth.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/auth/ApiKeyAuthTest.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/auth/Authentication.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/auth/HttpBasicAuth.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/auth/HttpBasicAuthTest.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/auth/OAuth.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/model/Category.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/model/Order$StatusEnum.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/model/Order.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/model/Pet$StatusEnum.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/model/Pet.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/model/Tag.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/client/model/User.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/petstore/test/PetApiTest.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/petstore/test/StoreApiTest.class delete mode 100644 samples/client/petstore/java/bin/io/swagger/petstore/test/UserApiTest.class diff --git a/samples/client/petstore/java/bin/io/swagger/client/ApiClient.class b/samples/client/petstore/java/bin/io/swagger/client/ApiClient.class deleted file mode 100644 index db57f1ecc879169f70db478bf74992883659e6c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9392 zcmeHM&2Jk;6n_&!V>{_b(ob4iwoqCJN=%{Uqe(;4q#sF>HZ)1orW7>xPMj_4U9-DR zQ-lzA{sHbiB5^=SNPysggan+paN`f*f_SsD-rabg?KSeDNIrP&oq6+{H}Ac9^M2#s z{`u}l05}UD3_u@)BZggYAM$cpIE9jF2+J!>RgG!?*8uc0*zFW4Grenq>%v*!RR+7~eX*Knm<4PYXOLYo$`h#t$X&6>y$uE<$q}dpuX!7|1f#?~!?s)obM0qN8bG2HrnW(iOLcNO z_rw+3sc|Ew3;WwxiUJ3BxkHNd`~lM{hIepSE=|0Q*t9$dZ>G$96JskmbH! zu^i#r=BCiKl3l49rmwnIb?l-kD(-nLmtEcvno+6RjweON*178mXRBgrC2m=^rxk@( z$9NKj<+8WN9=h$+?a9$@Olue0DUX#+?z-!SyFnUz4n48_s49p~&9gPGdDy8!s3N=# zTi43Mn{#aow{%rF`B81%u`3$xF<(-XT`RcdQSWu(xDrG5RSeg~J*#9?(og_BXte!y zgQ!f~#vw}RQq3?i-x9L9?5Zd(a|gXe^u}GgVY|&mHo0SP%sRQO;m*j++Y~I4oVWe_ ze8n&^CpDEP1Q4{igO+&m1Fv${5M*MNF{ zl*zeg&aPUaYvx??u-K(*oTgnWGe^l(?$I`>u{$D|$z(GAkWAURZ0qhE?1N{9U>FWF z*q=|<;j-%8J#SdzMy*m5&aymGWWkQP-@F|hF+pR$w_#wFesn%rgonu%OX@*9*e->o z|GxZaa?%Vu&)|6LVj62{#B$?UXDI#KXfuM^Y-b0!gyFhUF$y%_*hUebO=y;M+h`kG4+fQp;(*AgkOj)Q{qjULYWcNxC_B+|5l3TisP32~dpj4X z-PqG^ifolTu8@;3I6*8u2w6Wmq?DwS>$u&yuUIrD5+H&c!wjcEXJM_iY^y4T!O8e^ zs=6E}2amYIL;|m9`&6kUs_42?`FoUGBk*ah-DIJtjp3huQ;V|3lr|3P8uWlAaP&Z7Jfp^)CLhA_gcXN+? z*RLL9w?8R~X-cskX_IuNN518~puAYn!n*$dc!|R6ep>p~KWjg%qjRyt!&Itp1X)kB+fJ$Ny9|C!arnyFp8U%Wq!LSZ%_#}I;YNI`4LeBp^2t)q&&RG90?B5N0u>CNO8HN#j?!~vW zh{o_c_dV>pJ96M#IP{Z0_6R;DI$-~^_#9GFa1@T=8-wRS!)FrVIDv4LM0f#C#1Q%r zRp~$>TqhA;gp;@`wf<8nby*^j@-UiOm-{5bOTJy}_GrBtokV!K1B8!Agwq`$d`cp` z(gDKfB*It+Uj2eZD8Q>RU&vT*9v6>EgfsA33?YhcDzd&L5njiA5k+@vZ+=4}oP#%F z2(5Map$Wp9F@)AS{7fRe1#hQD_?<*J596s3{v;75;6iGIzet2hcqcW&-z37t^aw0N zB22-hv^ub15@8x#6D!dkVq?VJ49Lyk)n0pA$0nKL|Vgj N^uaxNKk&eN{{rZm&&L1& diff --git a/samples/client/petstore/java/bin/io/swagger/client/ApiClientTest.class b/samples/client/petstore/java/bin/io/swagger/client/ApiClientTest.class deleted file mode 100644 index 99c30aef01236b0339ca51cf2d36da9415b60073..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5340 zcmeI0-A)rh6vxjLXqSqBp!k8vfTBf_-k6w(F{uR9*Z{GG=;d@flp))hIy(#U0=|+) z6TSD!YhS>(FrM8ONpVt3DM`Uz?C$LD>~GG_nK|b_^X=ECF97fW?k6BdU{a{GzspJ` zuG6k3xHRcZMJz_8JoilkdI=0~vmKW9m@K7N3)|c^1p3*2EdmqS29N~;@y9|6^MpW8 zYIcJ_@1iR51e_x zj%=HMH<>u`XmVEC=*%3Jgd_|NKmvvdTuNmRR75qqE`%y$D2u6eB`6oT&NCDa1V*yT zW!?tUBD}9X>@{1$Cot7W!h~rbWlW#XO;8~){wlx-Q|2$^j_?JdGNJB>0uGX#Y*k7u zIB=D~a$_+QYMEw~2Z1qzM&!7M;_EqQMXoch%PT0v;@QYN2PO#l-ng}@bZQ~Gc76=& zd<$FBFgVx_`+ZSKgBdQ5soeoe$d9hi&#JPn&H88D)MruOftw`u@q`@Tl~S#*&AL*m zi6t%O=4wzg>$pIcs2Ux(P2hdo$8$>}?7+G;6hFI47yl$*gG=+5d@m!5YZ_PX?;N;G z;Ah*-?o7=^AemEvcKNc1#8llj#e68iUYr!a7#5CDL#n7=cP>6F=e;e-KsqJk9^QX zH1WY7;EytXXSyv*yF%j2?97>S&Ucx!zyJLFMMOJPHz*@$N%?m8!Es#~*sZpbUSvP& zsHY!WvJ)xaGbksh{LXpr*lovi?ZJhhT+2U|g2aI!<4lI3ePkAcZ7nH4S9YetrC@4~vrcIil$pQ(QF)2@DysMaG&^YhrO)5~4cMB%nrg5gP zJo&PFb|Qn<&PiMA_FGQ-*a;M$<6tg&s~~ozdA-NrS*ab2ie!op(=HO~*}U{h|K`dR z+Y+s>F*Y5s(!Aoqd8hA#;mU}u*1lt0iZ~zkCuXL$HQEk?gq&ByV^iwqCI;tVIQHMF z@U98a-ozA-{BF>a&lEp$DfwqKc+hDTQ<25*l%os}4t5zH8~w%5;P#f@n}}m{us0CH zuwk9T=?&rn->UV4N>=uQ%9gmGSzhLNseaYvi&z(QdlOIw=5ZWN3RDKfJehO{_hzpV z-K8a*7-TsH`2-Lqx&AK@YmtGs0elI!rrA!Uz)b>Tiq@#4VOM&sV_1M_A6V16c7pXy z&CcOUN*!>WV-E3CJOd6homYU2!#dXbb{du^(>Oxp(hQ_B(>NnoNx5TAX<3yw#g;#+J z84#yiWaJIGKz|8jkfx7_C^|%pRv`Nc{cecdI|{E9#;`(bii$!&QDs6B@^%a~X%A16 z2SXVDA#nxCjS5i0Divy2!}=J!uTF^i4TTp)K5dtsw9~MG%`xJb_EEctLS4x>NMk9| Na!ZX$&qa~%`~r_BmAC)^ diff --git a/samples/client/petstore/java/bin/io/swagger/client/ConfigurationTest.class b/samples/client/petstore/java/bin/io/swagger/client/ConfigurationTest.class deleted file mode 100644 index f3f80dbccd8dc1a89cf28e887abbb5166cc89155..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1220 zcmeH{&u`N(6vv;tuFXQBTiM31ixHZXNocw3fG9$m$|fO2MPg+VM>l;@3VjY`uZIJj^SY&8VsID6T6Qh%h1NDlBj(= zFnTJp(h4t)9-;GXXfoKIi-m}l&{_OuJjc{CXuXhH`j-qgqQeUY&4HO<8@3p9ue7Ju z8XLeZ#y-E(7M)QGobc4-g;ezicwx<0VeX#uaBDO}F7v`z&yCHF<|XlYDzrA9kCFe$ zzlo6QUqj&DaKZhj0+*~D{me|ba1N~>8b2(RicShSsJG;hOUFw+!Ku_#{nS|QsnRN) zuk6+u;OU1_C>Nc3D|PmiFUNm{o)HqGu`vpTz8Nfp0B(0+6YenBi;^q1mX-A@H@gY_ z>#)qnXh(t!V$e%WD%6FrvRYq0Z2FmW3=WcO^iiL|t|vcU;Z&5$|J_~&kKUHr%N$?p zg>;hWCza)Oe-ONtR9)B);2vYouG2;TJzwog2I09WZHi~IGIM`Laa6SdJO(<>bUy$z zXtoJ0itYNo*q|9e_zi;hz3>Zke$<*S#YzK|wN0_JRKX7PXvN?zy=}nmrD~7HRoea< NTCkROpYj{<;5U-Ja<~8h diff --git a/samples/client/petstore/java/bin/io/swagger/client/JsonUtil.class b/samples/client/petstore/java/bin/io/swagger/client/JsonUtil.class deleted file mode 100644 index fd6b69381357fb2cac26c4911d75ca37f113b6bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1391 zcmdT^O>Yx15PeQUHd&IUgqDv|kb6rxbT6DJ;sW$gC2&YuiKDX_wywPEmF7FxGd;6yhwHJCq0d6vM zE?Hg~qfG;CR{3#~8M0cl!wjH8F88B+PDI8@J?7q<|0)* z7Fnhp9}{14{GZ^f3SM(5?lc$NeaIMHAM5l!Sn+)5%{-rO5&d4k|EPT`H%Zy%6(=nM*As|DyuVbN3 z7lJN|HFqX0!)|}Ig}o=+3Aw`2bCY^Q_x69cZ3FihF8;uaYx(~e!l9m;n2uy|(e`rq z92Cj~*kx#4J=doLX{}dkLVchg79s(^$8o_ zO3W?4*2|qLx;}2rQMipQpEa?KI}3)#CI6D)?llZsB}1j;yp%fFg<-0s=#Zov*!>m5T1< z%ch}QZhqBu46E|gHB1evK=+p1mU&ZJmHgw4Exqgtgzg)b;m!*vsq~tFx?peWQ7DMS z5JX6zYss+mmHO)q-FYH6OkE(pWS6D6CLP0zTS?V@Y19OUm;S|}#OAVXxzey|ixtau z^aWYt#8m3V(jR6`&ZYKD`gs&R=+zLvprlzJLmv{%>u>7Pyf8hHx@?p{P&$r$C(wHd zIB&P5S@+epG2^akt|QQ~>dNw~Wm)xipkaXP+p-Ny;O>74Y9|)Pr~ovK3k>`X{IG7A zo4OOl7$V*=6~hfo^ApNyRkt<;a+fJ>!)T2uc_Y#>WRMjIyLNMp0)44;TMIv2q^4J; zBVC)q6;r23u}IIZ^9>EQHJo9v$`FXI+I6R_KQg@M)71p>-sG&OkSsWd&lo(pcZ7Iq zjPkVH1%jC)gg?>=Aj;Fb_DZktj5P~rI~YaKi7sZm<`Y(jXp5Qkd%@#5Rhi$z#9%O4 zSk9gzGINTcx}QBkM|S2A-S53ztmZUqH8yJ?fJ# zq8|gS@&3ZA7$kZR?KOGVWM{ zY2ygfA7L~~spE)ag0v?YO(91+hiPACu?cxDvxFI6rh+@Ho2AS+*OJFgPD=9T7IUgE Wy%Wk0M8!`eG>i%F!xV@Z!0q1x-~ikJ diff --git a/samples/client/petstore/java/bin/io/swagger/client/StringUtilTest.class b/samples/client/petstore/java/bin/io/swagger/client/StringUtilTest.class deleted file mode 100644 index 339bbbf3810b2ac6d3445e9664b66a649478e195..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3248 zcmeH}-)j>=5XWcFG`XJ9)M)CDDy%-GAkB+UMg$2hR1O837JS@Xrk4$OyK#3f;jxYRBCR-`GKR+33n zu65vyROz9USr@IVK#9S|P>e+@6Dn=J>;g2BnVfV+Gb3)J|e| zjnO8A%WSQ4s0>=2jj_)YosVQDoYabsjP7Na+s8aw?+%d5e58%z+N3+fg7`cUN@>S? z$bX*ylR(OU0f9Ts1$Xa8IA!JN2D;CMwP;+|6xi%(ouN?MTv}eJJ|0U&i63jj9VO{c z^7$&QKugtVPh|G*RQo)TmQdU7n}SNvoQmn;OjKu*-HMoA&^ksC!j&ql!Bqy0W_)6^ zQ}wjH4cB6FsuxAxL(>)HtPJY0PDFMjjP(22&5|2P%iux$JNIuh*mR`pj#f@cW%pC1 z4R(Yj^46)qT#Mg;kj(zuNhj5bxA5P=`OZ+`6ul|p1=sY+qHQ%{r zy=+blLa*xQTB;E4u;Bea66nf|FRB?&rqwwup7mQZhz@jN65NyCx3A9+m^F2g b{z}_iKnoYrZk>X5djYMnkhVqH1aS8U^o}@D diff --git a/samples/client/petstore/java/bin/io/swagger/client/api/PetApi.class b/samples/client/petstore/java/bin/io/swagger/client/api/PetApi.class deleted file mode 100644 index dd70c18fdbe9451be731a2b07195fb256fd01d36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3683 zcmeHJTTc@~6h2cbZI?TWS1t<*wqCj_Xrd4jK}bxBlC)raoOZ`DWV^fBodufsWTJn` zL=%m##$VuXF~&37!d7=^sD>C4UbfTOGv9u5&Ue0Z8ZB`KkG8nQP1``-7#1U|5E5?J?i6c9^MGoSMrmD!60ouIH33R`Va} zTBfwcbY62EPsotGAK3YA=J~9ySEy|}LN7CYALJjRCB41;uCGL0b-daWD(G5Z3BFDx zmDsm+;pkKsb(d+G)A-Z;wCZ7vnVgnT8i(p;hkBf%=Cw>Gu_s+;9qpA{O!nZCW7dz* zf*n9>pus>dq+pQ1NVX6eRZ)1{uFgv%8z^v_Jqv1O=9Off2n-jT3bi(yb!$#0#TNGo zj4NC+@>#S=J*$X_d{ln1w;G!AzVS|Eb8VNT;Szz#_I`?Xin#u7xS7B;sbF{l9Kx!G z4sOX4BFuxfvR7fQG-*Et6S!05ac~fnhDic%+OrB>{+N}F2NN~TaFc_txGhKiQoSgs z2(VmJ&7uc_TSkHVxYdRVq6s_&i@a)Myoa^l_;bNRTs4a^kOf5nqwFrCEczpEC0a#h z8j1k9F4do!1dLW~796R}wul6V4vPDNi!GUB0uNhJnhKAzkI&>b({P)>_y1qajx4eR zAHW);)LF9`rrYPKk$>z{EpRP|nyY9}1ZGghN zF{4E%@G7j4(H@jP8e?9%GE4$qEb%%^AOUBf8%Mo3PC*)v$8r@$!C5$mzY<{tpZf?2`L08R^KhXBA>wdR!C^|t;qoCIR0uOl zgex$LdmTgeN#ruF*pIGYv!=wF`YWt=O027J4XYOMnns2Rm^mW9FG|eo|AhHNiJ665 z=lLV^N~{}jQ;C&4(AKSZEy!ynRvru`mh6OvP8D?}-;`K);I0xY;&m_1E77OKnhWcA F{})Rz>l6S0 diff --git a/samples/client/petstore/java/bin/io/swagger/client/api/StoreApi.class b/samples/client/petstore/java/bin/io/swagger/client/api/StoreApi.class deleted file mode 100644 index 491a30d46caa617257ab9bf45c98fb5110153d7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2053 zcmeH{TTc@~6vzKlDs7i?RlEZWDi%$;5Bgv%Au2*bQoy80;^TBXDMPk9o7pMQR}(*z zi6;8ulOM`>cCl=ckpwSqzD(wF=6C*c=A85O+lNm89^+vFIfhxOy!eo}+d_MOAVp|A z9!alZlorn;SwNm)VxJ#yFW_O@+iva)-!PQOXf-uwn5my-(ADGP8pH6i45e9N7^*Do zGUQiPOB67|FrIPOv{t%^QI=bL9cmG);6SuoUv(lGa3fXdMp`uk(TShBPHAUPxUv%| zZ4#4e+zqSyLdT-#`aBGkaht;JL;k=zk#|%*jIGplr8_UV;hWvS$X7g(a>lo7l*?Vy zi-c49Z~s^0is@xabT zXaseT+Dfg6I}C5ne^6S(|F|CL{ZYVuv8`J|Gd#2XT!$J_;H4Hd+cyoKAOCD>`=Yne zVt8arI?G?5hK!I$Vfw0^hU#ixtji=fNBcdun*1c@K@F1{HA4=UFif)|%?s&RN*nkP ztpVpFoHtYD_Za(3s~je298OQhFh%q7u@x@k3at{tG>v^ij`l7}xQc57giOPAi-rZO zhMT|8U?VJA3Ab>YqBBG4^Q2`KF3oZjv;Mm>RSOnXbu05O?hzwn_E}ksY^--y)*|lz V2J4HJRl&r?S!~G4T1w;e;5!2_2*m&Z diff --git a/samples/client/petstore/java/bin/io/swagger/client/api/UserApi.class b/samples/client/petstore/java/bin/io/swagger/client/api/UserApi.class deleted file mode 100644 index 1c71a2e89fa51dab85cc2cf1ae7e9be9bfe2eb71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2902 zcmeH|TTc@~6vxk$O53$u1W{0d1r>{zuGho}Awh)1q@W2G1;+qErv1&Sq6iaK7#g964ZCDBNzoJ8Qz=I=QMz4OwS zdVxVtX?BZ2b}85vIXKH;AmuJA6{tM)v7UFEz7kR3?TKyM4eFuvxR!x$hbpLgq8>f5 zt-{8Ruw^|Alr|ydDE7;{LPersyWIB!ZC8cehWtgek#|tuk4WlDpz6=K=Bu%%YjftL4^*Tt*5Z0qs11&X zm%&gaaJjd|l{D|Ik6FDVBLnq7}5>MRy0Ya(Ue*gdg diff --git a/samples/client/petstore/java/bin/io/swagger/client/auth/ApiKeyAuth.class b/samples/client/petstore/java/bin/io/swagger/client/auth/ApiKeyAuth.class deleted file mode 100644 index c829299e9f775e3f98667834c317a9e023539b35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2036 zcma)7TXWM!6#mwB;!6}vRX5?%hJ=t{I~NrQm)2?8gqB_~PG-WSL-Vw8gd?iht|9^X zL+}bS1$vp`kq3TKr_<@TE7@^uWrhc9&mNuc?03F%R(}8AUvB{{VIz%%z?9Rn4xY$H z!}hGY>)1`-l7YWxt+t)J_TehcG*SYmAIZnka%Hn&t?xXt>wX%;0y8Ip31cRwE`6uf z6v()(j%ikpGHv>v(`-}(vTfRCrf4RyESFeU&8CpinFgvSgJE+Bm8{%WWvVVt2tnPO-}#bi8C7 zQ@$!T-$jOsDf}e^Bf7dSzN6--Y`5LR`z?JmE1HV32EOB3_hh>ga_w%_3E54j(UgAR zQJww1_~pUc20bf%Sw9d|+Dc6`SW9D7U{n{{k>0>wBYVC?vnIBa*W#r5MEKCrK>bkmphUpa2k^~!Cw0iTj`sEeXk4m{Tk;|z@Qd5XISe4pf+FTde$ z?iI}P{3{e*YQPwuCR2id6d_qcP9cwRdL}~{&fqL}OrVby+ENE6c)&TFkB+gps&_-> z-(kL>k$_4*tevJ#XoLY#LV-_X!G(VCSSv))|#u5FUAs??k93FmdH#zk?DRSvm|o)1R|>GipVS@5-4ivOS<*{ zu!E|%+w95oJ6!r3=X?B$Xi9f_mcs+gb4V62gGCatXkEb#T*Vr$p~k=6U$|4FwZw8rtE=WV zzQ+%GI=1m6tpqb9@e>P6GRI^2A_S>e3|eih__(>7<~H2zUU&DR`4j#f zK|$aBQQ}-uDa9+q!-x7Zd$Y`aJAB`KyFY$@`33+F;Z7YY4DL(q+Ye$iLgNRqMCE*u zxybLO@&!(N^f^H5>QH5{Iu;Y*$3l(#SHm#|jzR6QRMI_Ru+-T)WKeyoL#)FxgVt&7 zt})tpu)->z-YSDu#}f>Bpp#U_!bz=oYVBP7nQ}70JvEV5(iy#c_-9U`BWnHJk6jOLGUhMhr;8zYX_00ZLXqqxMu@?^0@|OW z2+_QgF4{L_@Q)sB{8!YLAmUt7OUuNdaiB93;4_(<-0-#5Vr6!j!GVmrA6y#Kfc}U8@w4Ahn^;suXDXs6ch*k!-`(WH)Yh`S2g= zuXaYE+8O=P8UHBpyv-8w#n>Sv`|jR*?s@l~d;j_Ok3RuS;s*^8fnm!r$_Fx^H(euJ zuuR)Cr0?w+4?VAxk!34;k0%W=flDvszBCHb&KoPcFU+i`pD;vF3cbP9AY zS+=?C7k5o}UG5eFL?th_Bf-{t*_4gRyuWST8=4XAG!G`6YXn!uID9%g*2kTcylh6UKC5sYg1xK1^d zUh5dcxPZ1V3%ZCc?}tXK~=j$V?p3@ ziNoPBtvNNBv25ucDe#?4^M%r#cz~}pJS6j=F=tZI@eRJ^B$a$mV7iuASm_#Fw5WY( z((p(ib>8tOJ}0|qE*xgfk{a&>maw9FvntSEn`C{@bq>@_rj=}-aNPtToX8Ek?3YRo zZ<|}Nvrdj%pbE#a`N=okqqA}7Zjir#zGq5`?aU!s_FPJWlQ2?o{htKvVBb>R%3$@w zwQ;9D*;`Hp>%Qj6?2jDQ5GS$b_-@u*w1Ndyw`^{yB2aql3;){?;U9Mjw{k>n2mZFx z&RxfEohO6894fSppP=hi;MN^Ff$o?1tXCXx8A+Z5-bD|;>w|wq?=KC(T`hyJpg#JGtd!9N$JD9AE=~Vi@;M^XjSNzp|6zhSOL{g1JdRr2CzcrCmBas0TNnJoh z6;u)V09Q%!!=M0zsxo4OQEfcu-(YBKoYnao@#IG@p{eKBxPF2g$%$haJf>=1rD!_F zXUjK}Qz|eyO}~lc%rRzPsCN|+jJv|`mT!m%A{cp0IIZ%#3eSQUr{h51-%_8Bup G@cn;gf9M?m diff --git a/samples/client/petstore/java/bin/io/swagger/client/auth/HttpBasicAuthTest.class b/samples/client/petstore/java/bin/io/swagger/client/auth/HttpBasicAuthTest.class deleted file mode 100644 index b591b7732d82a49377340c84b60c95cec3734392..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1833 zcmeH|-*3|}5XaA5*LIRoz|0HkrfGTMi6W#9Z2~C*#LA>Sx~Z4CO6<(O6zwlV z0tw#vGx$Rgmu6@}jYcOSv98?ekONAIprwAT7#~QgS|@`2a=z{{VM@R_SP)7vo>5@ybCx@SxR%I;=3b z)d|kUS5(@~#n}qzyS&blfwX-=dSlQIOeo?*VO8#*-K^qBIR;yEwLmT#YJ){5F-sY& zzsoeLM847!G>uRD=B=~VC?(F3l&}WU;dY9(JLo^2Ht_mY$*3tuIsg#z3k*20gr%w)O1`hx)z~Ec7f(~ zXpmi+9wWIA;C%+~sNMVs*T0fifmO1#>603?Y2GZN;0D|zk2;PB6<9lqx=rIO?M?}8 Yxs-PAH`;nB?S2WZT}pdM`4!ms2{yznh;zI&dYb`53($aTs z`KZ2-8cn&5^a8FUMTZX;<{R<6{riqqGVrDhe=E%e)_;P`*{jcyP?MS3;(|JcLSOJF zp=JZ+`Q1!Lv;ADoBmb#@A>Roj<%%0=HlMd!JU0tN6?A3vrRl9C$kSz!%~9r%XXMjo z@5sN|c7bdrE@F-1!Zcn-kurKh*d&sYo!zn|j}#|O&k!UDFeAuWg5$V}n7~kMW5<#* YlqpJJmk?$0aj){*t5~&rR8L_42Z`9Vi~s-t diff --git a/samples/client/petstore/java/bin/io/swagger/client/model/Category.class b/samples/client/petstore/java/bin/io/swagger/client/model/Category.class deleted file mode 100644 index 304329daf7c4c97ec5e9cfeddbd22dfe7d99aa9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1385 zcmcJOTW`}a7=~YW-O`4RZry?7z%3xPH_Z)KfRNAx5~vKMjY{0%rY7^0*pcH6D)GON zK!SUI6v9bcnhCS*W{Q;9{@y(Pj=z3?`vKq~9(bq_P@#hC6N@6QgD@6cnjleQ9tXS3 z@JQ*2hbqC^5j$Z)%w!b286EM^5LCq2o(~p=fs)Z+sVV)8! zb$dfA-L*G)SS4sKFweDCx`rkpAKppLGZmlkF%4CcikKOpBu%v%#XQL#QNMn0$f-zD zrHu`wKMSPKq*SI5XEZD}bj0Z#cIqz+?tf&N;reqDJH^jZ@jB0l!$^&yjG9Tx{rX(? zR;!e2GdV~8DpT@;(n}-zXkfj8I$8u<-G2*~*QhxVlJ6ZSBd!maO?zHh6|#89w8;0f z!>TzH89`@oUOU+iS&q1QX`83j?Un8<+NXw_1Ya&t_e;x(buXK`w^7bW;azW7!ySV5 z+5XwKB=BsEd&MAZo{IACD0udksi0=m^pwEgSI0W!FGQZ_)%gVW^Wi`nc5Lk6R_wEk zm15h}e)vs9lS!g$AN}!5OyKYQX*uu8m5nRJ{C*g*J zu!tD~FVyROfb{vFlC*dw=iLi*m<-?AX&_=67INOJglhFB(53VSBPQpDKc?I|X E046g|%K!iX diff --git a/samples/client/petstore/java/bin/io/swagger/client/model/Order$StatusEnum.class b/samples/client/petstore/java/bin/io/swagger/client/model/Order$StatusEnum.class deleted file mode 100644 index d40e6a0d0a07a5c48d7f15a8179803135d30d78d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1313 zcmeHHU5gVj6g_Ecryc87tGiltB@aHVK6DU#a?4U#R#>SY&~?GbbQ)(PGs%#o)%|6H zg1(ABO1v4mu0qki3clnd_nw@agq-{B`^V1!9^y`f8pDnZwaDTk6&@Mwul%+L`u&+(E)I!=Y zZw{4Keve^mXMA30;;quz?%};-hQ>afEy5*+?m6MWT4P)2vf9^I+Dd0~Qs${CN|g(* zjOJ8qn#;mH;&J=vL~>P>#(J*IV0ra{(Av;diR^e&~Ip((dQNIq4$YX4w8?R|v=Y*iXbMCDwtvuXNy(dV{k)zI0^WCor3jv^P}`akB*CuW>4nqV6!i{VR!9@Z_NbLJ7Pf(w`$MnEbWac`O zanGs=UUF&GU$#=o{X=T8YK;qNF`jG2G3R(5M`I}Vt#UB1O4Mq>I#wY#_txeUhz`wkv&0_i+2J8sbtOpTi_yW}Cmw48`eOH8%yN}~{@voqQU zgDR1LNdg~Fkz9Z6;GsRgVK1YHBXBoUOu#gO$!LF=`&e&qk9*B}hrH%vFTQ=*u71NE z`w#11FD?jGBf5>2Nc}AeR%lnsb};o?sYs!uwV_aETas@mrw1jBQUa(+yYfxv!yut1yNm0^=}&?e7H3Ko~U= zuEBMU5JPIi!<2zAZY10|gNJD&;pQ1U%o+(+$10e>>m6a9ccXADv3BiqcrmmFds#+!tCKx+RGnpHvASOMYSY+bJ^cp9trreOKfQ#ZOE1 zB0S!LP3{dB+@F^+ZePd_ttqAT=YNqucSbKM{qOvbzjKTPs|niZGOR6tA+XRHDlK2m zim|juKiKOI%|ztK!m5zZiw%FO978-ZGdq#bRDiTaRQCfw#O_FCn(($%-ui{QK=#hE zEbkJ{$${3=?&ZQc=_1@?xci4m5E}Y9RR)j2P^W2BAM|hqO@LxFkF5}CzecYSQ@mPD zt$L-8KO%YEU3rh|pQ&2I4O*L|0iC`{Yf^p3SgSnhSg%yKaJz~<+@TmesaM<|^u7a^ CmXjR- diff --git a/samples/client/petstore/java/bin/io/swagger/client/model/Pet.class b/samples/client/petstore/java/bin/io/swagger/client/model/Pet.class deleted file mode 100644 index b7f0e5088c765c59553b14e59d24122b283ac986..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3168 zcmeH}-A@xi5Wr_E&=0C0;3uGmq7>Ag;1^N^v0{Q&B>{;(_^_1qSaZE?_O>dC|Cfm- z`fB{6jI-C?aoD|+7avS~=Du~cRBNv z-4Hv>wbz--LJxt#xAYygUFtdZ^X<2+t_WoK4t}rgFVuwRR0!niR53@$JpvbMN!)5j z2IYG^+F%5RVx$cvdBDmycZCu!r0YkfT8g`Njr$5!^BdgpsA@^npKR+#%ZuH-C2dVn z2Vr)Xbdsl=)TwC2K3}0FR4pZL3WGJd5lF3it%lZFqwq?TKh?Q6ELuuf)KYs*R>+59>rynCRC|9A zf9wnIkfQ&||9G4Wa1us~Fbrb^PL#UqP}jmhjeG1_tFg`GCdK2e8-S=&cZ*7{=beu| zYL{cpji=Qd7Fw^v)Ec&(LfkA5-!2z7$KwSfe%v#f@LI3!%U2@zYCKOQ%1rSxEdp*`*77rxCZ4I zA>D@?MuH7vF+#cz^G3pTn8ob2^FDXToGcqjH}E`!q+1aw-KU2}((RZ}cOp`He4ZFd z^D&?9Mx=C~){UeEsKg?j?#oLfVG-`d2xJC~b{LA{F{E!Ah?` zHqxi&5(k$F+6&AxrKEDvCglCwRPkKK$9zgdnPehnTF8`UN={;)TpJ1!^cfpDpwTB|*dq>HHs}VD4FDffT7LS<{#eRNR z*9Rge=nR*1l4*|Bi0c=oZ~R`ra$VUuE^ZKfK1azfEFH$ZeCFOpH5sLM{jrN%1l{HS znT{lIOpJTw3~Zi>^3N1F=9Zbj)pB-9;O)yJ74qkzNU>|?ZcvN_x-i3HCbedsRW!<# z1J`^T#?pjm-j~WrUNI}c`-av#|H>Dv{V25?b0tv6rdhXUDr{lf>Mb*nH?%30?RV!g3#Wt%Tiw_+X2oZzbF@k=JndH>M~^ ARsaA1 diff --git a/samples/client/petstore/java/bin/io/swagger/client/model/User.class b/samples/client/petstore/java/bin/io/swagger/client/model/User.class deleted file mode 100644 index cf0fe383280280eab91400d3fd2143e3a957329e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3061 zcmeH|TW`}a6vvOdc1^pEjdm9X12V>?<8fd7DN!=!RLTT%Do{~5??k*DF z3kf86=R+Zm+jPl$Zt@!UBKfinffCX60LW;mF<5sX|x7$=$O@~oW zS}t!<$Jz*}$U>UH_>R46TaN9ut+$OG+LQ!RtcCAuQKH7Z_7VZ3gH4|8QUb+Twk`$h z=5t$21ah@oU^sSvnxU@E9BlXPAlTyq;TeCMdx*&^VqMy@6A&oHm@A&7s2M*x{DgT- zJ|!?zu51!Wzd-p}m>@6~>01_p3j?Oe(5DSg(11I;v}HEA>odoejC-apc*CJ?uxRFU z>)X_1uFr)u8Lx)BQ?)&hqYx|(%w{(*8`SK>j&vcox`oT5V&8SN#m{~AMs2euX-aO| zrabUzKG!c>6Wpgl9{i>Jb-=x2mY$GL_BsCl{+HdzLkZ3lU>s%$OqOG(Idlkhe#dIe zqpKaaLB+a_M^ae{Z`#hLEtrbKmub1p&=M}x2Kg7dL#9pT3K~kWT#0?J>sJQM5jc(? z{Ij!y@`9ecQhYbM>MENCTp=(w*ssv82#nwwm0kCocjCxO550E;zZ4Y}u;pcB#sy5q zLItcH+Oz76A_H^Fp)QOlt|3U_M4jA+@LBvW76LC0vDTF+#KoorZZWp$s!I!e9+$EuoS?gQX>0 zPoQBzOSq9h!;+S8Gl7O@TEeXa8eVA$)dU)9T7s28LtRU_oj}7oE#XcA4Ii|Gy9qS3 ow1j(js*ig%9WCKLJctnnpNo%L!oxr8gYII}@3dwRI_K!$2}Bi7^Ds!@@G4tlC6CEQ>0WJ>*A0OI76<}o zDjN`WPjG2U_#l0Mn!wOaA%(ex?TZsj1O{i7%kyx6z(@xr6^zXpPg>`#m(g&6jcD76vtn zGHTWXjx_W|wdM6c0O2h_10LKmkUEArFTM94l5j>ZfV&bgYg>Dkui# zBfrLVm7(AvFj`S{<}EQT;_LM0pji#JYJ*WpOv5>+}z9Iuxx9_B>_PRPY z5rms0QX0c{uY0oVV-=N|%Ia1X-dg9|`LN?jy_M8oE!#@VBD)BT#S>~)a}+Hz(!I+K zu3H2ObHCMj5PvI$c^Jo5o%+&#;=p-AR(EO6wVb>s?OGqsg|zrB1}?@biPF(Hc4Z-5 zyb5oxFJSSFLI=Jf@OqcS@<9|1E?=7mTxAVhX^zD=+g|xan3b~9z60M8c)Ck&=x5@l zVZ6gVo`lhXDFT1Lb3;Fzcp-4884*u0w=6vFz!d^_wjW`#6Vr8VMoCjoO4S1DEvA){3jfGiFb2w1dl_>lTjGO^WkPI7=xpDh1rXQ z92`$uoxuOMX(uhTlUCXnn`o!4v@b0*YNee)+5ntI${<=w+g94S=PcZ5EB8X*+`Crp z#h$odTkKu5a*KU)A6mH+J#oLa*!#rFo$QHw$-;eR<(7KlUbb+5w{UZC6~4#(dOPp0 RSqOhv2n2q_9L>Q`{{nOz(0>2` diff --git a/samples/client/petstore/java/bin/io/swagger/petstore/test/StoreApiTest.class b/samples/client/petstore/java/bin/io/swagger/petstore/test/StoreApiTest.class deleted file mode 100644 index 0d4d9014bdcd38af2b8bfd686355f2583e2a84bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2384 zcmd6o-%k@k5XWarp`}!Q6n}z078Pj)xfh>AO;Ev*T);>r@o{?{%96X?b8ipj$$!8X z{~8lb^xZ$oI9m!-Ing#D@uAz@+quuq%*}W9`;X6G0pLE|D?pCHtkhoeRLDdG$Ux0(xX_hTd)W#exqn}h z5;V4MQmi(#4pFEYmkCc*6St+J=;%al$=<lh znzBfRw!k}+9=z)#?fnN(f)b3Cp#b9yE>!*F65X^$s@9S#;W3{+;CdQ0(9{K0C4-8u z0}*ZsBi*|5FmHEc!eFjjB7fEyDP=H0o5l>LU#7~+2-nn}Oe6u9U1_&rf62A`*)Lt=3|M{ZkILO;@fn6_57T&u z!N>nDjSNNtgQDXkgPCfrTX~(!DWcma^xEY>C3~05P7j0xL_*lqsR?jZI;~H1_v%F_ z377%8-RNdz^c#dB8i#0JfFg~>eXh34f0E0~1y zw4w$?gdAM#SY4w3leEhjv`Qvzif98cO_V&buO4x)XL4_3aHlf4Gd*!{W^j2X_jXU* e*$nP{1~&(DP^I`!X0nz+c$7h4Fi#oF!NO03w3>wg diff --git a/samples/client/petstore/java/bin/io/swagger/petstore/test/UserApiTest.class b/samples/client/petstore/java/bin/io/swagger/petstore/test/UserApiTest.class deleted file mode 100644 index 80864303843c31d945c2aeed8d2a880c2ea1c244..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2346 zcmeH|-BJ@V6vt0Wp``*vP(e{i6|q(9-gsplXONE>W_EN&3XYfQHf+OelQqerJcBpB zjWar<_db;4*)1PcB8aG0Tx>SGC;25g=loB;e*5?t03L!@fEPy$!?lVl0~2FF>Ba_%_>NUc_YRJ#TIEz!Df>u^=$(_c4M>;oDEh8_zk z>=T?&t!)y>FR3;!zy$*3L*|OsN*7_2ZsJ5iJcj zJDiGcthA*{hxP3Q`7~fsDob0O?$1BPz^8l*kM3Ylt0<#(H|9t~XPh(ych=>$quP`i zbfH~&ov_GMeI>&Mnzl763{7O4ZwZM<#AT_)N$Co-&*|r@{p`u6PI$GYRK%J5i%u*- z3Cbf-fN=tstNvk1u3If+*ho{h>|?B+CEXU+O@>)WV8T}ci#C}S>G$5xyzK}>V7^}w zzf=_pW6*G$!~|wuB+`m5Uz0n+2;?oMnVh9P;);GRIU7Z|N?`SPd8F$2om?g`mdbod zb7py(b_7Z*Zv!5uS~CT>L16OG6$cg+v!AK}_d*H0KYlMgss2yR5Sae)ROY3yokgwL zE`ceB$rlC-*=TCzLldb`CAPP_DuLzWcbApO6a9|ZpfCKi zTI+T*P)Lvkb!o_D6c7U=l9j7m61NIk>VnY6{;+Y10l` z*-5*Gv;mkwN*>wQ54bm-+*t>A%E_&qnOkvkZ=IQ2cXDr^iaY1 Date: Wed, 16 Dec 2015 21:35:54 -0500 Subject: [PATCH 005/623] Updated jaxrs generator to use additional properties instead of java properties which are very difficult to set from maven --- bin/jaxrs-petstore-server.sh | 2 +- .../io/swagger/codegen/CodegenConstants.java | 3 ++ .../codegen/languages/JaxRSServerCodegen.java | 31 ++++++++----------- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/bin/jaxrs-petstore-server.sh b/bin/jaxrs-petstore-server.sh index 91a418d6f9a..2dd4fc03b38 100755 --- a/bin/jaxrs-petstore-server.sh +++ b/bin/jaxrs-petstore-server.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 -t modules/swagger-codegen/src/main/resources/JavaJaxRS -i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l jaxrs -o samples/server/petstore/jaxrs -Dswagger.codegen.jaxrs.impl.source=src/main/java" +ags="$@ generate -t modules/swagger-codegen/src/main/resources/JavaJaxRS -i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l jaxrs -o samples/server/petstore/jaxrs" java $JAVA_OPTS -jar $executable $ags diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java index 9c2711f8cad..4d0e64e19a4 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java @@ -28,6 +28,9 @@ public class CodegenConstants { public static final String SOURCE_FOLDER = "sourceFolder"; public static final String SOURCE_FOLDER_DESC = "source folder for generated code"; + public static final String IMPL_FOLDER = "implFolder"; + public static final String IMPL_FOLDER_DESC = "folder for generated implementation code"; + public static final String LOCAL_VARIABLE_PREFIX = "localVariablePrefix"; public static final String LOCAL_VARIABLE_PREFIX_DESC = "prefix for generated code members and local variables"; 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 6bc1a392414..532abab4596 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 @@ -5,34 +5,32 @@ import io.swagger.models.Operation; import io.swagger.models.Path; import io.swagger.models.Swagger; -import java.io.File; import java.util.*; public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConfig { protected String title = "Swagger Server"; + protected String implFolder = "src/main/java"; public JaxRSServerCodegen() { - super.processOpts(); + super(); sourceFolder = "src/gen/java"; invokerPackage = "io.swagger.api"; artifactId = "swagger-jaxrs-server"; - outputFolder = System.getProperty("swagger.codegen.jaxrs.genfolder", "generated-code/javaJaxRS"); + outputFolder = "generated-code/javaJaxRS"; modelTemplateFiles.put("model.mustache", ".java"); apiTemplateFiles.put("api.mustache", ".java"); apiTemplateFiles.put("apiService.mustache", ".java"); apiTemplateFiles.put("apiServiceImpl.mustache", ".java"); apiTemplateFiles.put("apiServiceFactory.mustache", ".java"); embeddedTemplateDir = templateDir = "JavaJaxRS"; - apiPackage = System.getProperty("swagger.codegen.jaxrs.apipackage", "io.swagger.api"); - modelPackage = System.getProperty("swagger.codegen.jaxrs.modelpackage", "io.swagger.model"); + apiPackage = "io.swagger.api"; + modelPackage = "io.swagger.model"; - additionalProperties.put(CodegenConstants.INVOKER_PACKAGE, invokerPackage); - additionalProperties.put(CodegenConstants.GROUP_ID, groupId); - additionalProperties.put(CodegenConstants.ARTIFACT_ID, artifactId); - additionalProperties.put(CodegenConstants.ARTIFACT_VERSION, artifactVersion); additionalProperties.put("title", title); + + cliOptions.add(new CliOption(CodegenConstants.IMPL_FOLDER, CodegenConstants.IMPL_FOLDER_DESC)); } public CodegenType getTag() { @@ -50,6 +48,10 @@ public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConf @Override public void processOpts() { super.processOpts(); + + if(additionalProperties.containsKey(CodegenConstants.IMPL_FOLDER)) { + implFolder = (String) additionalProperties.get(CodegenConstants.IMPL_FOLDER); + } supportingFiles.clear(); supportingFiles.add(new SupportingFile("pom.mustache", "", "pom.xml")); @@ -204,19 +206,12 @@ public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConf int ix = result.lastIndexOf('/'); result = result.substring(0, ix) + "/impl" + result.substring(ix, result.length() - 5) + "ServiceImpl.java"; - String output = System.getProperty("swagger.codegen.jaxrs.impl.source"); - if(output == null) { - output = "src" + File.separator + "main" + File.separator + "java"; - } - result = result.replace(apiFileFolder(), implFileFolder(output)); + result = result.replace(apiFileFolder(), implFileFolder(implFolder)); } else if (templateName.endsWith("Factory.mustache")) { int ix = result.lastIndexOf('/'); result = result.substring(0, ix) + "/factories" + result.substring(ix, result.length() - 5) + "ServiceFactory.java"; - String output = System.getProperty("swagger.codegen.jaxrs.impl.source"); - if (output != null) { - result = result.replace(apiFileFolder(), implFileFolder(output)); - } + result = result.replace(apiFileFolder(), implFileFolder(implFolder)); } else if (templateName.endsWith("Service.mustache")) { int ix = result.lastIndexOf('.'); result = result.substring(0, ix) + "Service.java"; From e19d4228e952108f384a7c15bcc5d818c207c885 Mon Sep 17 00:00:00 2001 From: evigeant Date: Wed, 16 Dec 2015 22:22:01 -0500 Subject: [PATCH 006/623] Fixed CodeGen tests following addition of implFolder additional property in jaxrs --- .../options/JaxRSServerOptionsProvider.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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 0b735363b77..7326eade0bf 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,23 @@ package io.swagger.codegen.options; +import java.util.Map; + +import com.google.common.collect.ImmutableMap; + +import io.swagger.codegen.CodegenConstants; + public class JaxRSServerOptionsProvider extends JavaOptionsProvider { + public static final String IMPL_FOLDER_VALUE = "src/main/java/impl"; + @Override + public Map createOptions() { + ImmutableMap.Builder builder = new ImmutableMap.Builder(); + return builder.putAll(super.createOptions()) + .put(CodegenConstants.IMPL_FOLDER, IMPL_FOLDER_VALUE) + .build(); + } + + @Override public boolean isServer() { return true; } From c5c17123744891fdac673ee37e05b4a310938e6c Mon Sep 17 00:00:00 2001 From: wing328 Date: Thu, 17 Dec 2015 15:44:22 +0800 Subject: [PATCH 007/623] fix array of inline model body parameter --- .../io/swagger/codegen/InlineModelResolver.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java index f727560210a..8235797d8e7 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java @@ -13,9 +13,13 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class InlineModelResolver { private Swagger swagger = null; private boolean skipMatches = false; + static Logger LOGGER = LoggerFactory.getLogger(InlineModelResolver.class); Map addedModels = new HashMap(); Map generatedSignature = new HashMap(); @@ -60,8 +64,19 @@ public class InlineModelResolver { Property inner = am.getItems(); if(inner instanceof ObjectProperty) { + String modelName = uniqueName(bp.getName()); ObjectProperty op = (ObjectProperty) inner; flattenProperties(op.getProperties(), pathname); + + Model inner_model = modelFromProperty(op, modelName); + String existing = matchGenerated(inner_model); + if (existing != null) { + am.setItems(new RefProperty(existing)); + } else { + am.setItems(new RefProperty(modelName)); + addGenerated(modelName, inner_model); + swagger.addDefinition(modelName, inner_model); + } } } } @@ -222,6 +237,7 @@ public class InlineModelResolver { addGenerated(modelName, model); swagger.addDefinition(modelName, model); } + } else { } } if (propsToUpdate.size() > 0) { From c8a10aee338da551892aba9c6fed6262fc7283cb Mon Sep 17 00:00:00 2001 From: wing328 Date: Thu, 17 Dec 2015 16:44:35 +0800 Subject: [PATCH 008/623] add support for inline array model defined in inline model --- .../swagger/codegen/InlineModelResolver.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java index 8235797d8e7..a52cc2125db 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java @@ -157,6 +157,7 @@ public class InlineModelResolver { flattenProperties(properties, modelName); } else if (model instanceof ArrayModel) { + LOGGER.info("arry model of " + modelName); ArrayModel m = (ArrayModel) model; Property inner = m.getItems(); if (inner instanceof ObjectProperty) { @@ -223,6 +224,7 @@ public class InlineModelResolver { Property property = properties.get(key); if (property instanceof ObjectProperty && ((ObjectProperty)property).getProperties().size() > 0) { String modelName = uniqueName(path + "_" + key); + LOGGER.info("flattening: " + modelName); ObjectProperty op = (ObjectProperty) property; Model model = modelFromProperty(op, modelName); @@ -237,7 +239,31 @@ public class InlineModelResolver { addGenerated(modelName, model); swagger.addDefinition(modelName, model); } + } else if (property instanceof ArrayProperty) { + ArrayProperty ap = (ArrayProperty) property; + Property inner = ap.getItems(); + + if (inner instanceof ObjectProperty) { + String modelName = uniqueName(path + "_" + key); + LOGGER.info("flattening(array inner): " + modelName); + + ObjectProperty op = (ObjectProperty) inner; + flattenProperties(op.getProperties(), path); + + Model inner_model = modelFromProperty(op, modelName); + String existing = matchGenerated(inner_model); + + if (existing != null) { + ap.setItems(new RefProperty(existing)); + } else { + ap.setItems(new RefProperty(modelName)); + addGenerated(modelName, inner_model); + LOGGER.info("flattening(array inner): " + modelName); + swagger.addDefinition(modelName, inner_model); + } + } } else { + LOGGER.info("not flattening " + key); } } if (propsToUpdate.size() > 0) { From 13b03d92d429bd9f0f41d92d35d9259d910dd7e1 Mon Sep 17 00:00:00 2001 From: wing328 Date: Thu, 17 Dec 2015 17:01:14 +0800 Subject: [PATCH 009/623] update response to support array of inline model --- .../swagger/codegen/InlineModelResolver.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java index a52cc2125db..62ce6eec8fd 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java @@ -103,11 +103,23 @@ public class InlineModelResolver { } } else if (property instanceof ArrayProperty) { ArrayProperty ap = (ArrayProperty) property; - if(ap.getItems() instanceof ObjectProperty) { - ObjectProperty op = (ObjectProperty) ap.getItems(); - Map props = op.getProperties(); - flattenProperties(props, "path"); - } + Property inner = ap.getItems(); + + if(inner instanceof ObjectProperty) { + String modelName = uniqueName("inline_response_" + key); + ObjectProperty op = (ObjectProperty) inner; + flattenProperties(op.getProperties(), pathname); + + Model inner_model = modelFromProperty(op, modelName); + String existing = matchGenerated(inner_model); + if (existing != null) { + ap.setItems(new RefProperty(existing)); + } else { + ap.setItems(new RefProperty(modelName)); + addGenerated(modelName, inner_model); + swagger.addDefinition(modelName, inner_model); + } + } } else if (property instanceof MapProperty) { MapProperty op = (MapProperty) property; @@ -367,4 +379,5 @@ public class InlineModelResolver { public void setSkipMatches(boolean skipMatches) { this.skipMatches = skipMatches; } + } From 2e143ec054978a3b882837d759e4a6df6c05b3c2 Mon Sep 17 00:00:00 2001 From: wing328 Date: Thu, 17 Dec 2015 17:39:55 +0800 Subject: [PATCH 010/623] fix map of inline response --- .../swagger/codegen/InlineModelResolver.java | 36 +++++++------------ 1 file changed, 13 insertions(+), 23 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java index 62ce6eec8fd..2b407c4b1c9 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java @@ -110,41 +110,31 @@ public class InlineModelResolver { ObjectProperty op = (ObjectProperty) inner; flattenProperties(op.getProperties(), pathname); - Model inner_model = modelFromProperty(op, modelName); - String existing = matchGenerated(inner_model); + Model innerModel = modelFromProperty(op, modelName); + String existing = matchGenerated(innerModel); if (existing != null) { ap.setItems(new RefProperty(existing)); } else { ap.setItems(new RefProperty(modelName)); - addGenerated(modelName, inner_model); - swagger.addDefinition(modelName, inner_model); + addGenerated(modelName, innerModel); + swagger.addDefinition(modelName, innerModel); } } } else if (property instanceof MapProperty) { - MapProperty op = (MapProperty) property; + MapProperty mp = (MapProperty) property; - Property innerProperty = op.getAdditionalProperties(); + Property innerProperty = mp.getAdditionalProperties(); if(innerProperty instanceof ObjectProperty) { - ModelImpl innerModel = new ModelImpl(); - // TODO: model props - innerModel.setTitle(property.getTitle()); - property.getVendorExtensions(); - property.getRequired(); - property.getReadOnly(); - property.getAccess(); - innerModel.setDescription(property.getDescription()); - innerModel.setExample(property.getExample()); - innerModel.setName(property.getName()); - innerModel.setXml(property.getXml()); - - innerModel.setAdditionalProperties(innerProperty); - String modelName = uniqueName("inline_response_" + key); - String existing = matchGenerated(innerModel); + ObjectProperty op = (ObjectProperty) innerProperty; + flattenProperties(op.getProperties(), pathname); + + Model innerModel = modelFromProperty(op, modelName); + String existing = matchGenerated(innerModel); if (existing != null) { - response.setSchema(new RefProperty(existing)); + mp.setAdditionalProperties(new RefProperty(existing)); } else { - response.setSchema(new RefProperty(modelName)); + mp.setAdditionalProperties(new RefProperty(modelName)); addGenerated(modelName, innerModel); swagger.addDefinition(modelName, innerModel); } From c8c047a2bccfa6651d96d9e3cae400c4467f5fb7 Mon Sep 17 00:00:00 2001 From: wing328 Date: Thu, 17 Dec 2015 17:55:47 +0800 Subject: [PATCH 011/623] fix map in inline model --- .../swagger/codegen/InlineModelResolver.java | 40 +++++++++++++++---- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java index 2b407c4b1c9..4b79ded2651 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java @@ -68,14 +68,14 @@ public class InlineModelResolver { ObjectProperty op = (ObjectProperty) inner; flattenProperties(op.getProperties(), pathname); - Model inner_model = modelFromProperty(op, modelName); - String existing = matchGenerated(inner_model); + Model innerModel = modelFromProperty(op, modelName); + String existing = matchGenerated(innerModel); if (existing != null) { am.setItems(new RefProperty(existing)); } else { am.setItems(new RefProperty(modelName)); - addGenerated(modelName, inner_model); - swagger.addDefinition(modelName, inner_model); + addGenerated(modelName, innerModel); + swagger.addDefinition(modelName, innerModel); } } } @@ -252,18 +252,42 @@ public class InlineModelResolver { ObjectProperty op = (ObjectProperty) inner; flattenProperties(op.getProperties(), path); - Model inner_model = modelFromProperty(op, modelName); - String existing = matchGenerated(inner_model); + Model innerModel = modelFromProperty(op, modelName); + String existing = matchGenerated(innerModel); if (existing != null) { ap.setItems(new RefProperty(existing)); } else { ap.setItems(new RefProperty(modelName)); - addGenerated(modelName, inner_model); + addGenerated(modelName, innerModel); LOGGER.info("flattening(array inner): " + modelName); - swagger.addDefinition(modelName, inner_model); + swagger.addDefinition(modelName, innerModel); } } + } else if (property instanceof MapProperty) { + MapProperty mp = (MapProperty) property; + Property inner = mp.getAdditionalProperties(); + + if (inner instanceof ObjectProperty) { + String modelName = uniqueName(path + "_" + key); + LOGGER.info("flattening(map inner): " + modelName); + + ObjectProperty op = (ObjectProperty) inner; + flattenProperties(op.getProperties(), path); + + Model innerModel = modelFromProperty(op, modelName); + String existing = matchGenerated(innerModel); + + if (existing != null) { + mp.setAdditionalProperties(new RefProperty(existing)); + } else { + mp.setAdditionalProperties(new RefProperty(modelName)); + addGenerated(modelName, innerModel); + LOGGER.info("flattening(array inner): " + modelName); + swagger.addDefinition(modelName, innerModel); + } + } + } else { LOGGER.info("not flattening " + key); } From 03e3a2d0ddaff17b78a78c6f552cb8d9265df686 Mon Sep 17 00:00:00 2001 From: wing328 Date: Thu, 17 Dec 2015 18:05:39 +0800 Subject: [PATCH 012/623] remove logger, replace tab with space --- .../swagger/codegen/InlineModelResolver.java | 72 +++++++++---------- 1 file changed, 32 insertions(+), 40 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java index 4b79ded2651..6471a0688a8 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java @@ -106,20 +106,20 @@ public class InlineModelResolver { Property inner = ap.getItems(); if(inner instanceof ObjectProperty) { - String modelName = uniqueName("inline_response_" + key); - ObjectProperty op = (ObjectProperty) inner; - flattenProperties(op.getProperties(), pathname); + String modelName = uniqueName("inline_response_" + key); + ObjectProperty op = (ObjectProperty) inner; + flattenProperties(op.getProperties(), pathname); - Model innerModel = modelFromProperty(op, modelName); - String existing = matchGenerated(innerModel); - if (existing != null) { - ap.setItems(new RefProperty(existing)); - } else { - ap.setItems(new RefProperty(modelName)); - addGenerated(modelName, innerModel); - swagger.addDefinition(modelName, innerModel); - } - } + Model innerModel = modelFromProperty(op, modelName); + String existing = matchGenerated(innerModel); + if (existing != null) { + ap.setItems(new RefProperty(existing)); + } else { + ap.setItems(new RefProperty(modelName)); + addGenerated(modelName, innerModel); + swagger.addDefinition(modelName, innerModel); + } + } } else if (property instanceof MapProperty) { MapProperty mp = (MapProperty) property; @@ -127,10 +127,10 @@ public class InlineModelResolver { if(innerProperty instanceof ObjectProperty) { String modelName = uniqueName("inline_response_" + key); ObjectProperty op = (ObjectProperty) innerProperty; - flattenProperties(op.getProperties(), pathname); + flattenProperties(op.getProperties(), pathname); - Model innerModel = modelFromProperty(op, modelName); - String existing = matchGenerated(innerModel); + Model innerModel = modelFromProperty(op, modelName); + String existing = matchGenerated(innerModel); if (existing != null) { mp.setAdditionalProperties(new RefProperty(existing)); } else { @@ -159,7 +159,6 @@ public class InlineModelResolver { flattenProperties(properties, modelName); } else if (model instanceof ArrayModel) { - LOGGER.info("arry model of " + modelName); ArrayModel m = (ArrayModel) model; Property inner = m.getItems(); if (inner instanceof ObjectProperty) { @@ -226,7 +225,6 @@ public class InlineModelResolver { Property property = properties.get(key); if (property instanceof ObjectProperty && ((ObjectProperty)property).getProperties().size() > 0) { String modelName = uniqueName(path + "_" + key); - LOGGER.info("flattening: " + modelName); ObjectProperty op = (ObjectProperty) property; Model model = modelFromProperty(op, modelName); @@ -247,22 +245,20 @@ public class InlineModelResolver { if (inner instanceof ObjectProperty) { String modelName = uniqueName(path + "_" + key); - LOGGER.info("flattening(array inner): " + modelName); ObjectProperty op = (ObjectProperty) inner; - flattenProperties(op.getProperties(), path); + flattenProperties(op.getProperties(), path); Model innerModel = modelFromProperty(op, modelName); String existing = matchGenerated(innerModel); - if (existing != null) { - ap.setItems(new RefProperty(existing)); - } else { - ap.setItems(new RefProperty(modelName)); - addGenerated(modelName, innerModel); - LOGGER.info("flattening(array inner): " + modelName); - swagger.addDefinition(modelName, innerModel); - } + if (existing != null) { + ap.setItems(new RefProperty(existing)); + } else { + ap.setItems(new RefProperty(modelName)); + addGenerated(modelName, innerModel); + swagger.addDefinition(modelName, innerModel); + } } } else if (property instanceof MapProperty) { MapProperty mp = (MapProperty) property; @@ -270,26 +266,22 @@ public class InlineModelResolver { if (inner instanceof ObjectProperty) { String modelName = uniqueName(path + "_" + key); - LOGGER.info("flattening(map inner): " + modelName); ObjectProperty op = (ObjectProperty) inner; - flattenProperties(op.getProperties(), path); + flattenProperties(op.getProperties(), path); Model innerModel = modelFromProperty(op, modelName); String existing = matchGenerated(innerModel); - if (existing != null) { - mp.setAdditionalProperties(new RefProperty(existing)); - } else { - mp.setAdditionalProperties(new RefProperty(modelName)); - addGenerated(modelName, innerModel); - LOGGER.info("flattening(array inner): " + modelName); - swagger.addDefinition(modelName, innerModel); - } + if (existing != null) { + mp.setAdditionalProperties(new RefProperty(existing)); + } else { + mp.setAdditionalProperties(new RefProperty(modelName)); + addGenerated(modelName, innerModel); + swagger.addDefinition(modelName, innerModel); + } } - } else { - LOGGER.info("not flattening " + key); } } if (propsToUpdate.size() > 0) { From c1dda0ca1768528c98ce3299888b60c1a09b1050 Mon Sep 17 00:00:00 2001 From: wing328 Date: Fri, 18 Dec 2015 16:50:55 +0800 Subject: [PATCH 013/623] update test case for inline model --- .../codegen/InlineModelResolverTest.java | 70 +++++++++++++------ 1 file changed, 49 insertions(+), 21 deletions(-) diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/InlineModelResolverTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/InlineModelResolverTest.java index 68d64562eba..f972711138b 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/InlineModelResolverTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/InlineModelResolverTest.java @@ -73,6 +73,7 @@ public class InlineModelResolverTest { ModelImpl model = (ModelImpl)swagger.getDefinitions().get("inline_response_200"); assertTrue(model.getProperties().size() == 1); assertNotNull(model.getProperties().get("name")); + assertTrue(model.getProperties().get("name") instanceof StringProperty); } @Test @@ -174,13 +175,30 @@ public class InlineModelResolverTest { ArrayModel am = (ArrayModel) schema; Property inner = am.getItems(); + assertTrue(inner instanceof RefProperty); - ObjectProperty op = (ObjectProperty) inner; - Property name = op.getProperties().get("address"); - assertTrue(name instanceof RefProperty); + RefProperty rp = (RefProperty) inner; + + assertEquals(rp.getType(), "ref"); + assertEquals(rp.get$ref(), "#/definitions/body"); + assertEquals(rp.getSimpleRef(), "body"); - Model model = swagger.getDefinitions().get("hello_address"); - assertNotNull(model); + Model inline = swagger.getDefinitions().get("body"); + assertNotNull(inline); + assertTrue(inline instanceof ModelImpl); + ModelImpl impl = (ModelImpl) inline; + RefProperty rpAddress = (RefProperty) impl.getProperties().get("address"); + assertNotNull(rpAddress); + assertEquals(rpAddress.getType(), "ref"); + assertEquals(rpAddress.get$ref(), "#/definitions/hello_address"); + assertEquals(rpAddress.getSimpleRef(), "hello_address"); + + Model inlineProp = swagger.getDefinitions().get("hello_address"); + assertNotNull(inlineProp); + assertTrue(inlineProp instanceof ModelImpl); + ModelImpl implProp = (ModelImpl) inlineProp; + assertNotNull(implProp.getProperties().get("street")); + assertTrue(implProp.getProperties().get("street") instanceof StringProperty); } @Test @@ -213,9 +231,17 @@ public class InlineModelResolverTest { assertNotNull(p); - ObjectProperty innerModel = (ObjectProperty) p; - assertTrue(innerModel.getProperties().size() == 1); - assertNotNull(innerModel.getProperties().get("name")); + RefProperty rp = (RefProperty) p; + assertEquals(rp.getType(), "ref"); + assertEquals(rp.get$ref(), "#/definitions/inline_response_200"); + assertEquals(rp.getSimpleRef(), "inline_response_200"); + + Model inline = swagger.getDefinitions().get("inline_response_200"); + assertNotNull(inline); + assertTrue(inline instanceof ModelImpl); + ModelImpl impl = (ModelImpl) inline; + assertNotNull(impl.getProperties().get("name")); + assertTrue(impl.getProperties().get("name") instanceof StringProperty); } @Test @@ -258,20 +284,15 @@ public class InlineModelResolverTest { new InlineModelResolver().flatten(swagger); Response response = swagger.getPaths().get("/foo/baz").getGet().getResponses().get("200"); - Property property = response.getSchema(); - assertTrue(property instanceof RefProperty); + assertTrue(property instanceof MapProperty); + assertTrue(swagger.getDefinitions().size() == 1); Model inline = swagger.getDefinitions().get("inline_response_200"); assertTrue(inline instanceof ModelImpl); ModelImpl impl = (ModelImpl) inline; - - Property innerProperty = impl.getAdditionalProperties(); - assertTrue(innerProperty instanceof ObjectProperty); - - ObjectProperty obj = (ObjectProperty) innerProperty; - Property name = obj.getProperties().get("name"); - assertTrue(name instanceof StringProperty); + assertNotNull(impl.getProperties().get("name")); + assertTrue(impl.getProperties().get("name") instanceof StringProperty); } @Test @@ -295,10 +316,17 @@ public class InlineModelResolverTest { ArrayProperty am = (ArrayProperty) response.getSchema(); Property items = am.getItems(); - assertTrue(items instanceof ObjectProperty); - ObjectProperty op = (ObjectProperty) items; - Property name = op.getProperties().get("name"); - assertTrue(name instanceof StringProperty); + assertTrue(items instanceof RefProperty); + RefProperty rp = (RefProperty) items; + assertEquals(rp.getType(), "ref"); + assertEquals(rp.get$ref(), "#/definitions/inline_response_200"); + assertEquals(rp.getSimpleRef(), "inline_response_200"); + + Model inline = swagger.getDefinitions().get("inline_response_200"); + assertTrue(inline instanceof ModelImpl); + ModelImpl impl = (ModelImpl) inline; + assertNotNull(impl.getProperties().get("name")); + assertTrue(impl.getProperties().get("name") instanceof StringProperty); } @Test From 29b4098a8d24fa64a18437bfe314da88ee661391 Mon Sep 17 00:00:00 2001 From: Ian Chan Date: Sat, 19 Dec 2015 23:03:59 +1300 Subject: [PATCH 014/623] Spring-MVC config "j8-async": Uses async servlet & Java 8 interface default This template is mainly for Maven code-gen plugin use-case - when Swagger spec on existing project changes there is no need to manually copy/paste the new functions from the generated client. This will provide a default (empty) implementation to existing impl and user just need to override the stub implementation. Because it generates an interface instead of a concrete stub, an implementation will be needed to actuate a service end-point. And don't forget to put @Controller on the implementation! --- .../languages/SpringMVCServerCodegen.java | 14 +++- .../JavaSpringMVC/api-j8-async.mustache | 64 +++++++++++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-) create mode 100755 modules/swagger-codegen/src/main/resources/JavaSpringMVC/api-j8-async.mustache diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SpringMVCServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SpringMVCServerCodegen.java index 446185bcd47..23ffe6c0fc4 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SpringMVCServerCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SpringMVCServerCodegen.java @@ -18,12 +18,13 @@ public class SpringMVCServerCodegen extends JavaClientCodegen implements Codegen public static final String CONFIG_PACKAGE = "configPackage"; protected String title = "Petstore Server"; protected String configPackage = ""; + protected String templateFileName = "api.mustache"; public SpringMVCServerCodegen() { super(); outputFolder = "generated-code/javaSpringMVC"; modelTemplateFiles.put("model.mustache", ".java"); - apiTemplateFiles.put("api.mustache", ".java"); + apiTemplateFiles.put(templateFileName, ".java"); embeddedTemplateDir = templateDir = "JavaSpringMVC"; apiPackage = "io.swagger.api"; modelPackage = "io.swagger.model"; @@ -51,6 +52,11 @@ public class SpringMVCServerCodegen extends JavaClientCodegen implements Codegen ); cliOptions.add(new CliOption(CONFIG_PACKAGE, "configuration package for generated code")); + + supportedLibraries.clear(); + supportedLibraries.put(DEFAULT_LIBRARY, "Default Spring MVC server stub."); + supportedLibraries.put("j8-async", "Use async servlet feature and Java 8's default interface. Generating interface with service " + + "declaration is useful when using Maven plugin. Just provide a implementation with @Controller to instantiate service."); } public CodegenType getTag() { @@ -168,6 +174,12 @@ public class SpringMVCServerCodegen extends JavaClientCodegen implements Codegen } } } + if("j8-async".equals(getLibrary())) { + apiTemplateFiles.remove(this.templateFileName); + this.templateFileName = "api-j8-async.mustache"; + apiTemplateFiles.put(this.templateFileName, ".java"); + } + return objs; } diff --git a/modules/swagger-codegen/src/main/resources/JavaSpringMVC/api-j8-async.mustache b/modules/swagger-codegen/src/main/resources/JavaSpringMVC/api-j8-async.mustache new file mode 100755 index 00000000000..b11e5c2db20 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/JavaSpringMVC/api-j8-async.mustache @@ -0,0 +1,64 @@ +package {{apiPackage}}; + +import {{modelPackage}}.*; + +{{#imports}}import {{import}}; +{{/imports}} + +import java.util.concurrent.Callable; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import io.swagger.annotations.Authorization; +import io.swagger.annotations.AuthorizationScope; + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +import static org.springframework.http.MediaType.*; + +@Controller +@RequestMapping(value = "/{{baseName}}", produces = {APPLICATION_JSON_VALUE}) +@Api(value = "/{{baseName}}", description = "the {{baseName}} API") +{{>generatedAnnotation}} +{{#operations}} +public interface {{classname}} { + {{#operation}} + + @ApiOperation(value = "{{{summary}}}", notes = "{{{notes}}}", response = {{{returnType}}}.class{{#returnContainer}}, responseContainer = "{{{returnContainer}}}"{{/returnContainer}}{{#hasAuthMethods}}, authorizations = { + {{#authMethods}}@Authorization(value = "{{name}}"{{#isOAuth}}, scopes = { + {{#scopes}}@AuthorizationScope(scope = "{{scope}}", description = "{{description}}"){{#hasMore}}, + {{/hasMore}}{{/scopes}} + }{{/isOAuth}}){{#hasMore}}, + {{/hasMore}}{{/authMethods}} + }{{/hasAuthMethods}}) + @ApiResponses(value = { {{#responses}} + @ApiResponse(code = {{{code}}}, message = "{{{message}}}"){{#hasMore}},{{/hasMore}}{{/responses}} }) + @RequestMapping(value = "{{path}}", + {{#hasProduces}}produces = { {{#produces}}"{{mediaType}}"{{#hasMore}}, {{/hasMore}}{{/produces}} }, {{/hasProduces}} + {{#hasConsumes}}consumes = { {{#consumes}}"{{mediaType}}"{{#hasMore}}, {{/hasMore}}{{/consumes}} },{{/hasConsumes}} + method = RequestMethod.{{httpMethod}}) + default CallablereturnTypes}}>> {{operationId}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{#hasMore}}, + {{/hasMore}}{{/allParams}}) + throws NotFoundException { + // do some magic! + return () -> new ResponseEntity<{{>returnTypes}}>(HttpStatus.OK); + } + + {{/operation}} +} +{{/operations}} From 33b8e8aa5b1368a8db409326419ab3509ea668d6 Mon Sep 17 00:00:00 2001 From: wing328 Date: Mon, 16 Nov 2015 10:53:45 +0800 Subject: [PATCH 015/623] add golang --- .../resources/META-INF/services/io.swagger.codegen.CodegenConfig | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/swagger-codegen/src/main/resources/META-INF/services/io.swagger.codegen.CodegenConfig b/modules/swagger-codegen/src/main/resources/META-INF/services/io.swagger.codegen.CodegenConfig index 5d8a4f0fc6b..87d61229936 100644 --- a/modules/swagger-codegen/src/main/resources/META-INF/services/io.swagger.codegen.CodegenConfig +++ b/modules/swagger-codegen/src/main/resources/META-INF/services/io.swagger.codegen.CodegenConfig @@ -4,6 +4,7 @@ io.swagger.codegen.languages.CSharpClientCodegen io.swagger.codegen.languages.DartClientCodegen io.swagger.codegen.languages.FlashClientCodegen io.swagger.codegen.languages.FlaskConnexionCodegen +io.swagger.codegen.languages.GoClientCodegen io.swagger.codegen.languages.JavaClientCodegen io.swagger.codegen.languages.JavascriptClientCodegen io.swagger.codegen.languages.JaxRSServerCodegen From a05076ed09d545cc555b682579bd47c7816f2706 Mon Sep 17 00:00:00 2001 From: wing328 Date: Mon, 21 Dec 2015 00:18:00 +0800 Subject: [PATCH 016/623] first commit of golang generator before fixing return --- .../io/swagger/codegen/DefaultCodegen.java | 2 + .../io/swagger/codegen/DefaultGenerator.java | 4 + .../codegen/languages/GoClientCodegen.java | 252 +++++++++++ .../src/main/resources/go/api.mustache | 98 +++++ .../src/main/resources/go/model.mustache | 15 + .../client/petstore/go/swagger/ApiClient.go | 33 ++ .../client/petstore/go/swagger/Category.go | 10 + samples/client/petstore/go/swagger/Order.go | 15 + samples/client/petstore/go/swagger/Pet.go | 14 + samples/client/petstore/go/swagger/PetApi.go | 407 ++++++++++++++++++ .../client/petstore/go/swagger/StoreApi.go | 198 +++++++++ samples/client/petstore/go/swagger/Tag.go | 10 + samples/client/petstore/go/swagger/User.go | 16 + samples/client/petstore/go/swagger/UserApi.go | 380 ++++++++++++++++ samples/client/petstore/go/test.go | 14 + 15 files changed, 1468 insertions(+) create mode 100644 modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/GoClientCodegen.java create mode 100644 modules/swagger-codegen/src/main/resources/go/api.mustache create mode 100644 modules/swagger-codegen/src/main/resources/go/model.mustache create mode 100644 samples/client/petstore/go/swagger/ApiClient.go create mode 100644 samples/client/petstore/go/swagger/Category.go create mode 100644 samples/client/petstore/go/swagger/Order.go create mode 100644 samples/client/petstore/go/swagger/Pet.go create mode 100644 samples/client/petstore/go/swagger/PetApi.go create mode 100644 samples/client/petstore/go/swagger/StoreApi.go create mode 100644 samples/client/petstore/go/swagger/Tag.go create mode 100644 samples/client/petstore/go/swagger/User.go create mode 100644 samples/client/petstore/go/swagger/UserApi.go create mode 100644 samples/client/petstore/go/test.go diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java index 11472fec4ff..ac91c60fa0f 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java @@ -1045,6 +1045,8 @@ public class DefaultCodegen { } property.baseType = getSwaggerType(p); + LOGGER.info("property.baseType=" + property.baseType); + LOGGER.info("property.datatype=" + property.datatype); if (p instanceof ArrayProperty) { property.isContainer = true; diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java index 3623361387e..24c17615f2d 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java @@ -657,6 +657,7 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { for (String nextImport : allImports) { Map im = new LinkedHashMap(); String mapping = config.importMapping().get(nextImport); + LOGGER.info("mapping = " + mapping); if (mapping == null) { mapping = config.toModelImport(nextImport); } @@ -703,6 +704,7 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { List> imports = new ArrayList>(); for (String nextImport : allImports) { + LOGGER.info("nextImport=" + nextImport); Map im = new LinkedHashMap(); String mapping = config.importMapping().get(nextImport); if (mapping == null) { @@ -711,12 +713,14 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { if (mapping != null && !config.defaultIncludes().contains(mapping)) { im.put("import", mapping); imports.add(im); + LOGGER.info("config.importMaping added " + mapping); } // add instantiation types mapping = config.instantiationTypes().get(nextImport); if (mapping != null && !config.defaultIncludes().contains(mapping)) { im.put("import", mapping); imports.add(im); + LOGGER.info("config.instantiationTypes added " + mapping); } } 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 new file mode 100644 index 00000000000..04401b044e5 --- /dev/null +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/GoClientCodegen.java @@ -0,0 +1,252 @@ +package io.swagger.codegen.languages; + +import io.swagger.codegen.*; +import io.swagger.models.properties.ArrayProperty; +import io.swagger.models.properties.MapProperty; +import io.swagger.models.properties.Property; + +import java.io.File; +import java.util.*; + +import org.apache.commons.lang.StringUtils; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class GoClientCodegen extends DefaultCodegen implements CodegenConfig { + static Logger LOGGER = LoggerFactory.getLogger(GoClientCodegen.class); + + protected String invokerPackage = "swagger"; + protected String groupId = "io.swagger"; + protected String artifactId = "swagger-go-client"; + protected String artifactVersion = "1.0.0"; + + public CodegenType getTag() { + return CodegenType.CLIENT; + } + + public String getName() { + return "go"; + } + + public String getHelp() { + return "Generates a Go client library."; + } + + public GoClientCodegen() { + super(); + outputFolder = "generated-code/go"; + modelTemplateFiles.put("model.mustache", ".go"); + apiTemplateFiles.put("api.mustache", ".go"); + templateDir = "go"; + apiPackage = invokerPackage; + modelPackage = invokerPackage; + + reservedWords = new HashSet ( + Arrays.asList( + "break", "default", "func", "interface", "select", + "case", "defer", "go", "map", "struct", + "chan", "else", "goto", "package", "switch", + "const", "fallthrough", "if", "range", "type", + "continue", "for", "import", "return", "var") + ); + + additionalProperties.put("invokerPackage", invokerPackage); + /*additionalProperties.put("groupId", groupId); + additionalProperties.put("artifactId", artifactId); + additionalProperties.put("artifactVersion", artifactVersion);*/ + + defaultIncludes = new HashSet( + Arrays.asList( + "map", + "array") + ); + + languageSpecificPrimitives = new HashSet( + Arrays.asList( + "string", + "bool", + "uint", + "uint32", + "uint64", + "int", + "int32", + "int64", + "float32", + "float64", + "complex64", + "complex128", + "rune", + "byte") + ); + + instantiationTypes.clear(); + /*instantiationTypes.put("array", "GoArray"); + instantiationTypes.put("map", "GoMap");*/ + + typeMapping.clear(); + typeMapping.put("integer", "int32"); + typeMapping.put("long", "int64"); + typeMapping.put("float", "float32"); + typeMapping.put("double", "float64"); + typeMapping.put("boolean", "bool"); + typeMapping.put("string", "string"); + typeMapping.put("Date", "time.Time"); + typeMapping.put("DateTime", "time.Time"); + typeMapping.put("password", "string"); + typeMapping.put("file", "*os.File"); + //typeMapping.put("array", "array"); + //typeMapping.put("map", "map"); + + importMapping = new HashMap(); + importMapping.put("time.Time", "time"); + importMapping.put("*os.File", "os"); + + } + + @Override + public String escapeReservedWord(String name) { + return "_" + name; + } + + @Override + public String apiFileFolder() { + return outputFolder + File.separator + invokerPackage; + } + + public String modelFileFolder() { + return outputFolder + File.separator + invokerPackage; + } + + @Override + public String toVarName(String name) { + // replace - with _ e.g. created-at => created_at + name = name.replaceAll("-", "_"); + + // if it's all uppper case, do nothing + if (name.matches("^[A-Z_]*$")) + return name; + + // camelize (lower first character) the variable name + // pet_id => petId + name = camelize(name, true); + + // for reserved word or word starting with number, append _ + if(reservedWords.contains(name) || name.matches("^\\d.*")) + name = escapeReservedWord(name); + + return name; + } + + @Override + public String toParamName(String name) { + // should be the same as variable name + return toVarName(name); + } + + @Override + public String toModelName(String name) { + // model name cannot use reserved keyword, e.g. return + if(reservedWords.contains(name)) + throw new RuntimeException(name + " (reserved word) cannot be used as a model name"); + + // camelize the model name + // phone_number => PhoneNumber + return camelize(name); + } + + @Override + public String toModelFilename(String name) { + // should be the same as the model name + return toModelName(name); + } + + @Override + public String getTypeDeclaration(Property p) { + LOGGER.info("getTypeDeclaration=" + p.getName()); + if(p instanceof ArrayProperty) { + ArrayProperty ap = (ArrayProperty) p; + Property inner = ap.getItems(); + return "[]" + getTypeDeclaration(inner); + } + else if (p instanceof MapProperty) { + MapProperty mp = (MapProperty) p; + Property inner = mp.getAdditionalProperties(); + + return getSwaggerType(p) + "[string]" + getTypeDeclaration(inner); + } + LOGGER.info("super.getTypeDeclaration=" + super.getTypeDeclaration(p)); + return super.getTypeDeclaration(p); + } + + @Override + public String getSwaggerType(Property p) { + String swaggerType = super.getSwaggerType(p); + LOGGER.info("swaggerType=" + swaggerType); + String type = null; + if(typeMapping.containsKey(swaggerType)) { + type = typeMapping.get(swaggerType); + if(languageSpecificPrimitives.contains(type)) + return (type); + } + else + type = swaggerType; + return type; + } + + @Override + public String toOperationId(String operationId) { + // method name cannot use reserved keyword, e.g. return + if(reservedWords.contains(operationId)) + throw new RuntimeException(operationId + " (reserved word) cannot be used as method name"); + + return camelize(operationId, true); + } + + @Override + public Map postProcessOperations(Map objs) { + @SuppressWarnings("unchecked") + Map objectMap = (Map) objs.get("operations"); + @SuppressWarnings("unchecked") + List operations = (List) objectMap.get("operation"); + for (CodegenOperation operation : operations) { + // http method verb conversion (e.g. PUT => Put) + operation.httpMethod = camelize(operation.httpMethod.toLowerCase()); + } + + // remove model imports to avoid error + List> imports = (List>) objs.get("imports"); + if (imports == null) + return objs; + + Iterator> iterator = imports.iterator(); + while (iterator.hasNext()) { + String _import = iterator.next().get("import"); + if (_import.startsWith(apiPackage())) + iterator.remove(); + } + + return objs; + } + + @Override + public Map postProcessModels(Map objs) { + // remove model imports to avoid error + List> imports = (List>) objs.get("imports"); + final String prefix = modelPackage(); + Iterator> iterator = imports.iterator(); + while (iterator.hasNext()) { + String _import = iterator.next().get("import"); + if (_import.startsWith(prefix)) + iterator.remove(); + } + return objs; + } + + @Override + protected boolean needToImport(String type) { + return !defaultIncludes.contains(type) + && !languageSpecificPrimitives.contains(type); + } + +} diff --git a/modules/swagger-codegen/src/main/resources/go/api.mustache b/modules/swagger-codegen/src/main/resources/go/api.mustache new file mode 100644 index 00000000000..1e18bde85ca --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/go/api.mustache @@ -0,0 +1,98 @@ +package {{invokerPackage}} + +{{#operations}} +import ( + "strings" + "fmt" +// "log" + "github.com/dghubble/sling" +{{#imports}} "{{import}}" +{{/imports}} +) + +type {{classname}} struct { + basePath string + apiClient ApiClient + sling *sling.Sling +} + +func New{{classname}}() *{{classname}}{ + return &{{classname}} { + basePath: "{{basePath}}", + } +} + +func New{{classname}}WithBasePath(basePath string) *{{classname}}{ + return &{{classname}} { + basePath: basePath, + } +} + +{{#operation}} +/** + * {{summary}} + * {{notes}} +{{#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}}error) { + {{#allParams}}{{#required}} + // verify the required parameter '{{paramName}}' is set + //if {{paramName}} == nil { + // return 0, fmt.Error("Missing the required parameter '{{paramName}}' when calling {{nickname}}") + //} + {{/required}}{{/allParams}} + + _sling := a.sling.{{httpMethod}}(a.basePath) + + // create path and map variables + path := "{{path}}" + {{#pathParams}}//path = regexp.MustCompile("{" + "{{paramName}}" + "}").ReplaceAllString(path, "$1") + //path = path.Replace("\\{" + "{{paramName}}" + "\\}", ApiClient.EscapeString({{{paramName}}})) + path = strings.Replace(path, "{" + "{{baseName}}" + "}", fmt.Sprintf("%b", {{paramName}}), -1) + {{/pathParams}} + + _sling = _sling.Path(path) + + {{#hasQueryParams}} + type QueryParams struct { + {{#queryParams}}{{paramName}} {{dataType}} `url:"{{baseName}},omitempty"` + {{/queryParams}} + } + + _sling = _sling.QueryStruct(&QueryParams{ {{#queryParams}}{{paramName}}: {{baseName}}{{#hasMore}},{{/hasMore}}{{/queryParams}} }) + {{/hasQueryParams}} + + {{#headerParams}}// header params "{{baseName}}" + _sling = _sling.Set("{{baseName}}", {{paramName}}) + {{/headerParams}} + + //contentTypes := []string { {{#consumes}}"{{mediaType}}"{{#hasMore}},{{/hasMore}}{{/consumes}} } + + {{#hasFormParams}} + type FormParams struct { + {{#formParams}}{{paramName}} {{dataType}} `url:"{{baseName}},omitempty"` + {{/formParams}} + } + _sling = _sling.BodyForm(&FormParams{ {{#formParams}}{{paramName}}: {{baseName}}{{#hasMore}},{{/hasMore}}{{/formParams}} }) + {{/hasFormParams}} + + {{#bodyParams}}// body params + _sling = _sling.BodyJSON({{paramName}}) + //b, _ := json.Marshal(body) + //bodyParams["{{baseName}}"] = string(b) + {{/bodyParams}} + + req, err := _sling.Request() + + /*response, err := a.apiClient.CallApi(a.basePath, path, "{{httpMethod}}", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + //if err != nil { + // log.Fatal(err) + //} */ + + //{{#returnType}}ApiClient.Deserialize(response, "{{returnContainer}}", "{{returnBaseType}}"){{/returnType}} + {{#returnType}}return req, err{{/returnType}} + {{^returnType}}return err{{/returnType}} +} +{{/operation}} +{{/operations}} diff --git a/modules/swagger-codegen/src/main/resources/go/model.mustache b/modules/swagger-codegen/src/main/resources/go/model.mustache new file mode 100644 index 00000000000..bbd7e772d0e --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/go/model.mustache @@ -0,0 +1,15 @@ +package {{invokerPackage}} + +{{#models}} +import ( +{{#imports}} "{{import}}" +{{/imports}} +) + +{{#model}} +type {{classname}} struct { + {{#vars}}{{name}} {{{datatype}}} `json:"{{baseName}},omitempty"` + {{/vars}} +} +{{/model}} +{{/models}} diff --git a/samples/client/petstore/go/swagger/ApiClient.go b/samples/client/petstore/go/swagger/ApiClient.go new file mode 100644 index 00000000000..420a7df21ed --- /dev/null +++ b/samples/client/petstore/go/swagger/ApiClient.go @@ -0,0 +1,33 @@ +package swagger + +import ( +// "encoding/json" + "os" +// "fmt" + "log" +// "net/url" +// napping "github.com/jmcvetta/napping" +) + +type ApiClient struct { + basePath string + logger *log.Logger +} + +func NewApiClient() *ApiClient { + return &ApiClient { + basePath: "http://petstore.swagger.io/v2", + logger: log.New(os.Stderr, "", log.LstdFlags)} +} + +func NewApiClientWithBasePath(basePath string) *ApiClient { + return &ApiClient { + basePath: basePath, + logger: log.New(os.Stderr, "", log.LstdFlags)} +} + + +func (a *ApiClient) CallApi(basePath string, path string, httpMethod string, queryParams map[string]string, headerParams map[string]string, formParams map[string]string, fileParams map[string]string, bodyParams map[string]string, contentType []string) { + a.logger.Printf("Requesting %v\n%v\n%v\n%v\n%v\n%v\n%v\n%v\n%v\n", basePath, path, httpMethod, queryParams, headerParams, formParams, fileParams, bodyParams, contentType) + +} diff --git a/samples/client/petstore/go/swagger/Category.go b/samples/client/petstore/go/swagger/Category.go new file mode 100644 index 00000000000..7681d4c5e6f --- /dev/null +++ b/samples/client/petstore/go/swagger/Category.go @@ -0,0 +1,10 @@ +package swagger + +import ( +) + +type Category struct { + id int64 `json:"id,omitempty"` + name string `json:"name,omitempty"` + +} diff --git a/samples/client/petstore/go/swagger/Order.go b/samples/client/petstore/go/swagger/Order.go new file mode 100644 index 00000000000..187f3ed5795 --- /dev/null +++ b/samples/client/petstore/go/swagger/Order.go @@ -0,0 +1,15 @@ +package swagger + +import ( + "time" +) + +type Order struct { + id int64 `json:"id,omitempty"` + petId int64 `json:"petId,omitempty"` + quantity int32 `json:"quantity,omitempty"` + shipDate time.Time `json:"shipDate,omitempty"` + status string `json:"status,omitempty"` + complete bool `json:"complete,omitempty"` + +} diff --git a/samples/client/petstore/go/swagger/Pet.go b/samples/client/petstore/go/swagger/Pet.go new file mode 100644 index 00000000000..cbc962df530 --- /dev/null +++ b/samples/client/petstore/go/swagger/Pet.go @@ -0,0 +1,14 @@ +package swagger + +import ( +) + +type Pet struct { + id int64 `json:"id,omitempty"` + category Category `json:"category,omitempty"` + name string `json:"name,omitempty"` + photoUrls []string `json:"photoUrls,omitempty"` + tags []Tag `json:"tags,omitempty"` + status string `json:"status,omitempty"` + +} diff --git a/samples/client/petstore/go/swagger/PetApi.go b/samples/client/petstore/go/swagger/PetApi.go new file mode 100644 index 00000000000..5170797cc80 --- /dev/null +++ b/samples/client/petstore/go/swagger/PetApi.go @@ -0,0 +1,407 @@ +package swagger + +import ( + "strings" + "fmt" +// "log" + "github.com/dghubble/sling" + "os" +) + +type PetApi struct { + basePath string + apiClient ApiClient + sling *sling.Sling +} + +func NewPetApi() *PetApi{ + return &PetApi { + basePath: "http://petstore.swagger.io/v2", + } +} + +func NewPetApiWithBasePath(basePath string) *PetApi{ + return &PetApi { + basePath: basePath, + } +} + +/** + * Update an existing pet + * + * @param body Pet object that needs to be added to the store + * @return void + */ +func (a PetApi) updatePet (body Pet) (error) { + + + _sling := a.sling.Put(a.basePath) + + // create path and map variables + path := "/pet" + + + _sling = _sling.Path(path) + + + + + + //contentTypes := []string { "application/json","application/xml" } + + + + // body params + _sling = _sling.BodyJSON(body) + //b, _ := json.Marshal(body) + //bodyParams["body"] = string(b) + + + req, err := _sling.Request() + + /*response, err := a.apiClient.CallApi(a.basePath, path, "Put", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + //if err != nil { + // log.Fatal(err) + //} */ + + // + + return err +} +/** + * Add a new pet to the store + * + * @param body Pet object that needs to be added to the store + * @return void + */ +func (a PetApi) addPet (body Pet) (error) { + + + _sling := a.sling.Post(a.basePath) + + // create path and map variables + path := "/pet" + + + _sling = _sling.Path(path) + + + + + + //contentTypes := []string { "application/json","application/xml" } + + + + // body params + _sling = _sling.BodyJSON(body) + //b, _ := json.Marshal(body) + //bodyParams["body"] = string(b) + + + req, err := _sling.Request() + + /*response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + //if err != nil { + // log.Fatal(err) + //} */ + + // + + return err +} +/** + * Finds Pets by status + * Multiple status values can be provided with comma seperated strings + * @param status Status values that need to be considered for filter + * @return []Pet + */ +func (a PetApi) findPetsByStatus (status []string) ([]Pet, error) { + + + _sling := a.sling.Get(a.basePath) + + // create path and map variables + path := "/pet/findByStatus" + + + _sling = _sling.Path(path) + + + type QueryParams struct { + status []string `url:"status,omitempty"` + + } + + _sling = _sling.QueryStruct(&QueryParams{ status: status }) + + + + + //contentTypes := []string { } + + + + + + req, err := _sling.Request() + + /*response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + //if err != nil { + // log.Fatal(err) + //} */ + + //ApiClient.Deserialize(response, "array", "Pet") + return req, err + +} +/** + * Finds Pets by tags + * Muliple tags can be provided with comma seperated strings. Use tag1, tag2, tag3 for testing. + * @param tags Tags to filter by + * @return []Pet + */ +func (a PetApi) findPetsByTags (tags []string) ([]Pet, error) { + + + _sling := a.sling.Get(a.basePath) + + // create path and map variables + path := "/pet/findByTags" + + + _sling = _sling.Path(path) + + + type QueryParams struct { + tags []string `url:"tags,omitempty"` + + } + + _sling = _sling.QueryStruct(&QueryParams{ tags: tags }) + + + + + //contentTypes := []string { } + + + + + + req, err := _sling.Request() + + /*response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + //if err != nil { + // log.Fatal(err) + //} */ + + //ApiClient.Deserialize(response, "array", "Pet") + return req, err + +} +/** + * Find pet by ID + * Returns a pet when ID < 10. ID > 10 or nonintegers will simulate API error conditions + * @param petId ID of pet that needs to be fetched + * @return Pet + */ +func (a PetApi) getPetById (petId int64) (Pet, error) { + + // verify the required parameter 'petId' is set + //if petId == nil { + // return 0, fmt.Error("Missing the required parameter 'petId' when calling getPetById") + //} + + + _sling := a.sling.Get(a.basePath) + + // create path and map variables + path := "/pet/{petId}" + //path = regexp.MustCompile("{" + "petId" + "}").ReplaceAllString(path, "$1") + //path = path.Replace("\\{" + "petId" + "\\}", ApiClient.EscapeString(petId)) + path = strings.Replace(path, "{" + "petId" + "}", fmt.Sprintf("%b", petId), -1) + + + _sling = _sling.Path(path) + + + + + + //contentTypes := []string { } + + + + + + req, err := _sling.Request() + + /*response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + //if err != nil { + // log.Fatal(err) + //} */ + + //ApiClient.Deserialize(response, "", "Pet") + return req, err + +} +/** + * Updates a pet in the store with form data + * + * @param petId ID of pet that needs to be updated + * @param name Updated name of the pet + * @param status Updated status of the pet + * @return void + */ +func (a PetApi) updatePetWithForm (petId string, name string, status string) (error) { + + // verify the required parameter 'petId' is set + //if petId == nil { + // return 0, fmt.Error("Missing the required parameter 'petId' when calling updatePetWithForm") + //} + + + _sling := a.sling.Post(a.basePath) + + // create path and map variables + path := "/pet/{petId}" + //path = regexp.MustCompile("{" + "petId" + "}").ReplaceAllString(path, "$1") + //path = path.Replace("\\{" + "petId" + "\\}", ApiClient.EscapeString(petId)) + path = strings.Replace(path, "{" + "petId" + "}", fmt.Sprintf("%b", petId), -1) + + + _sling = _sling.Path(path) + + + + + + //contentTypes := []string { "application/x-www-form-urlencoded" } + + + type FormParams struct { + name string `url:"name,omitempty"` + status string `url:"status,omitempty"` + + } + _sling = _sling.BodyForm(&FormParams{ name: name,status: status }) + + + + + req, err := _sling.Request() + + /*response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + //if err != nil { + // log.Fatal(err) + //} */ + + // + + return err +} +/** + * Deletes a pet + * + * @param petId Pet id to delete + * @param apiKey + * @return void + */ +func (a PetApi) deletePet (petId int64, apiKey string) (error) { + + // verify the required parameter 'petId' is set + //if petId == nil { + // return 0, fmt.Error("Missing the required parameter 'petId' when calling deletePet") + //} + + + _sling := a.sling.Delete(a.basePath) + + // create path and map variables + path := "/pet/{petId}" + //path = regexp.MustCompile("{" + "petId" + "}").ReplaceAllString(path, "$1") + //path = path.Replace("\\{" + "petId" + "\\}", ApiClient.EscapeString(petId)) + path = strings.Replace(path, "{" + "petId" + "}", fmt.Sprintf("%b", petId), -1) + + + _sling = _sling.Path(path) + + + + // header params "api_key" + _sling = _sling.Set("api_key", apiKey) + + + //contentTypes := []string { } + + + + + + req, err := _sling.Request() + + /*response, err := a.apiClient.CallApi(a.basePath, path, "Delete", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + //if err != nil { + // log.Fatal(err) + //} */ + + // + + return err +} +/** + * uploads an image + * + * @param petId ID of pet to update + * @param additionalMetadata Additional data to pass to server + * @param file file to upload + * @return void + */ +func (a PetApi) uploadFile (petId int64, additionalMetadata string, file *os.File) (error) { + + // verify the required parameter 'petId' is set + //if petId == nil { + // return 0, fmt.Error("Missing the required parameter 'petId' when calling uploadFile") + //} + + + _sling := a.sling.Post(a.basePath) + + // create path and map variables + path := "/pet/{petId}/uploadImage" + //path = regexp.MustCompile("{" + "petId" + "}").ReplaceAllString(path, "$1") + //path = path.Replace("\\{" + "petId" + "\\}", ApiClient.EscapeString(petId)) + path = strings.Replace(path, "{" + "petId" + "}", fmt.Sprintf("%b", petId), -1) + + + _sling = _sling.Path(path) + + + + + + //contentTypes := []string { "multipart/form-data" } + + + type FormParams struct { + additionalMetadata string `url:"additionalMetadata,omitempty"` + file *os.File `url:"file,omitempty"` + + } + _sling = _sling.BodyForm(&FormParams{ additionalMetadata: additionalMetadata,file: file }) + + + + + req, err := _sling.Request() + + /*response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + //if err != nil { + // log.Fatal(err) + //} */ + + // + + return err +} diff --git a/samples/client/petstore/go/swagger/StoreApi.go b/samples/client/petstore/go/swagger/StoreApi.go new file mode 100644 index 00000000000..987c39a7216 --- /dev/null +++ b/samples/client/petstore/go/swagger/StoreApi.go @@ -0,0 +1,198 @@ +package swagger + +import ( + "strings" + "fmt" +// "log" + "github.com/dghubble/sling" +) + +type StoreApi struct { + basePath string + apiClient ApiClient + sling *sling.Sling +} + +func NewStoreApi() *StoreApi{ + return &StoreApi { + basePath: "http://petstore.swagger.io/v2", + } +} + +func NewStoreApiWithBasePath(basePath string) *StoreApi{ + return &StoreApi { + basePath: basePath, + } +} + +/** + * Returns pet inventories by status + * Returns a map of status codes to quantities + * @return map[string]int32 + */ +func (a StoreApi) getInventory () (map[string]int32, error) { + + + _sling := a.sling.Get(a.basePath) + + // create path and map variables + path := "/store/inventory" + + + _sling = _sling.Path(path) + + + + + + //contentTypes := []string { } + + + + + + req, err := _sling.Request() + + /*response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + //if err != nil { + // log.Fatal(err) + //} */ + + //ApiClient.Deserialize(response, "map", "map") + return req, err + +} +/** + * Place an order for a pet + * + * @param body order placed for purchasing the pet + * @return Order + */ +func (a StoreApi) placeOrder (body Order) (Order, error) { + + + _sling := a.sling.Post(a.basePath) + + // create path and map variables + path := "/store/order" + + + _sling = _sling.Path(path) + + + + + + //contentTypes := []string { } + + + + // body params + _sling = _sling.BodyJSON(body) + //b, _ := json.Marshal(body) + //bodyParams["body"] = string(b) + + + req, err := _sling.Request() + + /*response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + //if err != nil { + // log.Fatal(err) + //} */ + + //ApiClient.Deserialize(response, "", "Order") + return req, err + +} +/** + * Find purchase order by ID + * 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 + */ +func (a StoreApi) getOrderById (orderId string) (Order, error) { + + // verify the required parameter 'orderId' is set + //if orderId == nil { + // return 0, fmt.Error("Missing the required parameter 'orderId' when calling getOrderById") + //} + + + _sling := a.sling.Get(a.basePath) + + // create path and map variables + path := "/store/order/{orderId}" + //path = regexp.MustCompile("{" + "orderId" + "}").ReplaceAllString(path, "$1") + //path = path.Replace("\\{" + "orderId" + "\\}", ApiClient.EscapeString(orderId)) + path = strings.Replace(path, "{" + "orderId" + "}", fmt.Sprintf("%b", orderId), -1) + + + _sling = _sling.Path(path) + + + + + + //contentTypes := []string { } + + + + + + req, err := _sling.Request() + + /*response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + //if err != nil { + // log.Fatal(err) + //} */ + + //ApiClient.Deserialize(response, "", "Order") + return req, err + +} +/** + * Delete purchase order by ID + * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + * @param orderId ID of the order that needs to be deleted + * @return void + */ +func (a StoreApi) deleteOrder (orderId string) (error) { + + // verify the required parameter 'orderId' is set + //if orderId == nil { + // return 0, fmt.Error("Missing the required parameter 'orderId' when calling deleteOrder") + //} + + + _sling := a.sling.Delete(a.basePath) + + // create path and map variables + path := "/store/order/{orderId}" + //path = regexp.MustCompile("{" + "orderId" + "}").ReplaceAllString(path, "$1") + //path = path.Replace("\\{" + "orderId" + "\\}", ApiClient.EscapeString(orderId)) + path = strings.Replace(path, "{" + "orderId" + "}", fmt.Sprintf("%b", orderId), -1) + + + _sling = _sling.Path(path) + + + + + + //contentTypes := []string { } + + + + + + req, err := _sling.Request() + + /*response, err := a.apiClient.CallApi(a.basePath, path, "Delete", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + //if err != nil { + // log.Fatal(err) + //} */ + + // + + return err +} diff --git a/samples/client/petstore/go/swagger/Tag.go b/samples/client/petstore/go/swagger/Tag.go new file mode 100644 index 00000000000..7fd20f55ef4 --- /dev/null +++ b/samples/client/petstore/go/swagger/Tag.go @@ -0,0 +1,10 @@ +package swagger + +import ( +) + +type Tag struct { + id int64 `json:"id,omitempty"` + name string `json:"name,omitempty"` + +} diff --git a/samples/client/petstore/go/swagger/User.go b/samples/client/petstore/go/swagger/User.go new file mode 100644 index 00000000000..608ac360618 --- /dev/null +++ b/samples/client/petstore/go/swagger/User.go @@ -0,0 +1,16 @@ +package swagger + +import ( +) + +type User struct { + id int64 `json:"id,omitempty"` + username string `json:"username,omitempty"` + firstName string `json:"firstName,omitempty"` + lastName string `json:"lastName,omitempty"` + email string `json:"email,omitempty"` + password string `json:"password,omitempty"` + phone string `json:"phone,omitempty"` + userStatus int32 `json:"userStatus,omitempty"` + +} diff --git a/samples/client/petstore/go/swagger/UserApi.go b/samples/client/petstore/go/swagger/UserApi.go new file mode 100644 index 00000000000..4c2c73cb9dc --- /dev/null +++ b/samples/client/petstore/go/swagger/UserApi.go @@ -0,0 +1,380 @@ +package swagger + +import ( + "strings" + "fmt" +// "log" + "github.com/dghubble/sling" +) + +type UserApi struct { + basePath string + apiClient ApiClient + sling *sling.Sling +} + +func NewUserApi() *UserApi{ + return &UserApi { + basePath: "http://petstore.swagger.io/v2", + } +} + +func NewUserApiWithBasePath(basePath string) *UserApi{ + return &UserApi { + basePath: basePath, + } +} + +/** + * Create user + * This can only be done by the logged in user. + * @param body Created user object + * @return void + */ +func (a UserApi) createUser (body User) (error) { + + + _sling := a.sling.Post(a.basePath) + + // create path and map variables + path := "/user" + + + _sling = _sling.Path(path) + + + + + + //contentTypes := []string { } + + + + // body params + _sling = _sling.BodyJSON(body) + //b, _ := json.Marshal(body) + //bodyParams["body"] = string(b) + + + req, err := _sling.Request() + + /*response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + //if err != nil { + // log.Fatal(err) + //} */ + + // + + return err +} +/** + * Creates list of users with given input array + * + * @param body List of user object + * @return void + */ +func (a UserApi) createUsersWithArrayInput (body []User) (error) { + + + _sling := a.sling.Post(a.basePath) + + // create path and map variables + path := "/user/createWithArray" + + + _sling = _sling.Path(path) + + + + + + //contentTypes := []string { } + + + + // body params + _sling = _sling.BodyJSON(body) + //b, _ := json.Marshal(body) + //bodyParams["body"] = string(b) + + + req, err := _sling.Request() + + /*response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + //if err != nil { + // log.Fatal(err) + //} */ + + // + + return err +} +/** + * Creates list of users with given input array + * + * @param body List of user object + * @return void + */ +func (a UserApi) createUsersWithListInput (body []User) (error) { + + + _sling := a.sling.Post(a.basePath) + + // create path and map variables + path := "/user/createWithList" + + + _sling = _sling.Path(path) + + + + + + //contentTypes := []string { } + + + + // body params + _sling = _sling.BodyJSON(body) + //b, _ := json.Marshal(body) + //bodyParams["body"] = string(b) + + + req, err := _sling.Request() + + /*response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + //if err != nil { + // log.Fatal(err) + //} */ + + // + + return err +} +/** + * Logs user into the system + * + * @param username The user name for login + * @param password The password for login in clear text + * @return string + */ +func (a UserApi) loginUser (username string, password string) (string, error) { + + + _sling := a.sling.Get(a.basePath) + + // create path and map variables + path := "/user/login" + + + _sling = _sling.Path(path) + + + type QueryParams struct { + username string `url:"username,omitempty"` + password string `url:"password,omitempty"` + + } + + _sling = _sling.QueryStruct(&QueryParams{ username: username,password: password }) + + + + + //contentTypes := []string { } + + + + + + req, err := _sling.Request() + + /*response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + //if err != nil { + // log.Fatal(err) + //} */ + + //ApiClient.Deserialize(response, "", "string") + return req, err + +} +/** + * Logs out current logged in user session + * + * @return void + */ +func (a UserApi) logoutUser () (error) { + + + _sling := a.sling.Get(a.basePath) + + // create path and map variables + path := "/user/logout" + + + _sling = _sling.Path(path) + + + + + + //contentTypes := []string { } + + + + + + req, err := _sling.Request() + + /*response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + //if err != nil { + // log.Fatal(err) + //} */ + + // + + return err +} +/** + * Get user by user name + * + * @param username The name that needs to be fetched. Use user1 for testing. + * @return User + */ +func (a UserApi) getUserByName (username string) (User, error) { + + // verify the required parameter 'username' is set + //if username == nil { + // return 0, fmt.Error("Missing the required parameter 'username' when calling getUserByName") + //} + + + _sling := a.sling.Get(a.basePath) + + // create path and map variables + path := "/user/{username}" + //path = regexp.MustCompile("{" + "username" + "}").ReplaceAllString(path, "$1") + //path = path.Replace("\\{" + "username" + "\\}", ApiClient.EscapeString(username)) + path = strings.Replace(path, "{" + "username" + "}", fmt.Sprintf("%b", username), -1) + + + _sling = _sling.Path(path) + + + + + + //contentTypes := []string { } + + + + + + req, err := _sling.Request() + + /*response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + //if err != nil { + // log.Fatal(err) + //} */ + + //ApiClient.Deserialize(response, "", "User") + return req, err + +} +/** + * Updated user + * This can only be done by the logged in user. + * @param username name that need to be deleted + * @param body Updated user object + * @return void + */ +func (a UserApi) updateUser (username string, body User) (error) { + + // verify the required parameter 'username' is set + //if username == nil { + // return 0, fmt.Error("Missing the required parameter 'username' when calling updateUser") + //} + + + _sling := a.sling.Put(a.basePath) + + // create path and map variables + path := "/user/{username}" + //path = regexp.MustCompile("{" + "username" + "}").ReplaceAllString(path, "$1") + //path = path.Replace("\\{" + "username" + "\\}", ApiClient.EscapeString(username)) + path = strings.Replace(path, "{" + "username" + "}", fmt.Sprintf("%b", username), -1) + + + _sling = _sling.Path(path) + + + + + + //contentTypes := []string { } + + + + // body params + _sling = _sling.BodyJSON(body) + //b, _ := json.Marshal(body) + //bodyParams["body"] = string(b) + + + req, err := _sling.Request() + + /*response, err := a.apiClient.CallApi(a.basePath, path, "Put", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + //if err != nil { + // log.Fatal(err) + //} */ + + // + + return err +} +/** + * Delete user + * This can only be done by the logged in user. + * @param username The name that needs to be deleted + * @return void + */ +func (a UserApi) deleteUser (username string) (error) { + + // verify the required parameter 'username' is set + //if username == nil { + // return 0, fmt.Error("Missing the required parameter 'username' when calling deleteUser") + //} + + + _sling := a.sling.Delete(a.basePath) + + // create path and map variables + path := "/user/{username}" + //path = regexp.MustCompile("{" + "username" + "}").ReplaceAllString(path, "$1") + //path = path.Replace("\\{" + "username" + "\\}", ApiClient.EscapeString(username)) + path = strings.Replace(path, "{" + "username" + "}", fmt.Sprintf("%b", username), -1) + + + _sling = _sling.Path(path) + + + + + + //contentTypes := []string { } + + + + + + req, err := _sling.Request() + + /*response, err := a.apiClient.CallApi(a.basePath, path, "Delete", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + //if err != nil { + // log.Fatal(err) + //} */ + + // + + return err +} diff --git a/samples/client/petstore/go/test.go b/samples/client/petstore/go/test.go new file mode 100644 index 00000000000..b20f0347354 --- /dev/null +++ b/samples/client/petstore/go/test.go @@ -0,0 +1,14 @@ +package main + + +import ( + "fmt" + "log" + "./swagger" +) + +func main() { + + + fmt.Println("hello world") +} From 3ebefba6784f6cfd5b5d242e9fed7aac3191c0a6 Mon Sep 17 00:00:00 2001 From: wing328 Date: Mon, 21 Dec 2015 16:07:58 +0800 Subject: [PATCH 017/623] better return for golang method --- .../src/main/resources/go/api.mustache | 38 ++-- samples/client/petstore/go/swagger/PetApi.go | 186 +++++++++++------- .../client/petstore/go/swagger/StoreApi.go | 96 +++++---- samples/client/petstore/go/swagger/UserApi.go | 175 ++++++++++------ samples/client/petstore/go/test.go | 11 +- 5 files changed, 316 insertions(+), 190 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/go/api.mustache b/modules/swagger-codegen/src/main/resources/go/api.mustache index 1e18bde85ca..9e0679538fa 100644 --- a/modules/swagger-codegen/src/main/resources/go/api.mustache +++ b/modules/swagger-codegen/src/main/resources/go/api.mustache @@ -2,6 +2,7 @@ package {{invokerPackage}} {{#operations}} import ( +// "encoding/json" "strings" "fmt" // "log" @@ -35,13 +36,8 @@ 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}}error) { func (a {{classname}}) {{nickname}} ({{#allParams}}{{paramName}} {{{dataType}}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) ({{#returnType}}{{{returnType}}}, {{/returnType}}error) { - {{#allParams}}{{#required}} - // verify the required parameter '{{paramName}}' is set - //if {{paramName}} == nil { - // return 0, fmt.Error("Missing the required parameter '{{paramName}}' when calling {{nickname}}") - //} - {{/required}}{{/allParams}} _sling := a.sling.{{httpMethod}}(a.basePath) @@ -54,8 +50,7 @@ func (a {{classname}}) {{nickname}} ({{#allParams}}{{paramName}} {{{dataType}}}{ _sling = _sling.Path(path) - {{#hasQueryParams}} - type QueryParams struct { + {{#hasQueryParams}}type QueryParams struct { {{#queryParams}}{{paramName}} {{dataType}} `url:"{{baseName}},omitempty"` {{/queryParams}} } @@ -69,8 +64,7 @@ func (a {{classname}}) {{nickname}} ({{#allParams}}{{paramName}} {{{dataType}}}{ //contentTypes := []string { {{#consumes}}"{{mediaType}}"{{#hasMore}},{{/hasMore}}{{/consumes}} } - {{#hasFormParams}} - type FormParams struct { + {{#hasFormParams}}type FormParams struct { {{#formParams}}{{paramName}} {{dataType}} `url:"{{baseName}},omitempty"` {{/formParams}} } @@ -83,16 +77,30 @@ func (a {{classname}}) {{nickname}} ({{#allParams}}{{paramName}} {{{dataType}}}{ //bodyParams["{{baseName}}"] = string(b) {{/bodyParams}} - req, err := _sling.Request() + {{#returnType}} + var response {{returnType}} + resp, err := _sling.ReceiveSuccess(response) + fmt.Println("{{operationId}} response: ", response, resp, err) + return response, err + {{/returnType}}{{^returnType}} + resp, err := _sling.Request() + fmt.Println("{{operationId}} response: void, ", resp, err) + return err + {{/returnType}} - /*response, err := a.apiClient.CallApi(a.basePath, path, "{{httpMethod}}", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + + + //response, err := a.apiClient.CallApi(a.basePath, path, "{{httpMethod}}", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) //if err != nil { // log.Fatal(err) - //} */ + //} //{{#returnType}}ApiClient.Deserialize(response, "{{returnContainer}}", "{{returnBaseType}}"){{/returnType}} - {{#returnType}}return req, err{{/returnType}} - {{^returnType}}return err{{/returnType}} + + //{{#returnType}}var response {{returnType}} + //err = json.Unmarshal([]byte(req), &response) + //return response, err{{/returnType}} + //{{^returnType}}return err{{/returnType}} } {{/operation}} {{/operations}} diff --git a/samples/client/petstore/go/swagger/PetApi.go b/samples/client/petstore/go/swagger/PetApi.go index 5170797cc80..cf6f793805f 100644 --- a/samples/client/petstore/go/swagger/PetApi.go +++ b/samples/client/petstore/go/swagger/PetApi.go @@ -1,6 +1,7 @@ package swagger import ( +// "encoding/json" "strings" "fmt" // "log" @@ -32,8 +33,8 @@ func NewPetApiWithBasePath(basePath string) *PetApi{ * @param body Pet object that needs to be added to the store * @return void */ +//func (a PetApi) updatePet (body Pet) (error) { func (a PetApi) updatePet (body Pet) (error) { - _sling := a.sling.Put(a.basePath) @@ -57,16 +58,23 @@ func (a PetApi) updatePet (body Pet) (error) { //bodyParams["body"] = string(b) - req, err := _sling.Request() + + resp, err := _sling.Request() + fmt.Println("updatePet response: void, ", resp, err) + return err + - /*response, err := a.apiClient.CallApi(a.basePath, path, "Put", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + + + //response, err := a.apiClient.CallApi(a.basePath, path, "Put", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) //if err != nil { // log.Fatal(err) - //} */ + //} // - - return err + + // + //return err } /** * Add a new pet to the store @@ -74,8 +82,8 @@ func (a PetApi) updatePet (body Pet) (error) { * @param body Pet object that needs to be added to the store * @return void */ +//func (a PetApi) addPet (body Pet) (error) { func (a PetApi) addPet (body Pet) (error) { - _sling := a.sling.Post(a.basePath) @@ -99,16 +107,23 @@ func (a PetApi) addPet (body Pet) (error) { //bodyParams["body"] = string(b) - req, err := _sling.Request() + + resp, err := _sling.Request() + fmt.Println("addPet response: void, ", resp, err) + return err + - /*response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + + + //response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) //if err != nil { // log.Fatal(err) - //} */ + //} // - - return err + + // + //return err } /** * Finds Pets by status @@ -116,8 +131,8 @@ func (a PetApi) addPet (body Pet) (error) { * @param status Status values that need to be considered for filter * @return []Pet */ +//func (a PetApi) findPetsByStatus (status []string) ([]Pet, error) { func (a PetApi) findPetsByStatus (status []string) ([]Pet, error) { - _sling := a.sling.Get(a.basePath) @@ -127,7 +142,6 @@ func (a PetApi) findPetsByStatus (status []string) ([]Pet, error) { _sling = _sling.Path(path) - type QueryParams struct { status []string `url:"status,omitempty"` @@ -144,16 +158,26 @@ func (a PetApi) findPetsByStatus (status []string) ([]Pet, error) { - req, err := _sling.Request() + + var response []Pet + resp, err := _sling.ReceiveSuccess(response) + fmt.Println("findPetsByStatus response: ", response, resp, err) + return response, err + - /*response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + + + //response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) //if err != nil { // log.Fatal(err) - //} */ + //} //ApiClient.Deserialize(response, "array", "Pet") - return req, err - + + //var response []Pet + //err = json.Unmarshal([]byte(req), &response) + //return response, err + // } /** * Finds Pets by tags @@ -161,8 +185,8 @@ func (a PetApi) findPetsByStatus (status []string) ([]Pet, error) { * @param tags Tags to filter by * @return []Pet */ +//func (a PetApi) findPetsByTags (tags []string) ([]Pet, error) { func (a PetApi) findPetsByTags (tags []string) ([]Pet, error) { - _sling := a.sling.Get(a.basePath) @@ -172,7 +196,6 @@ func (a PetApi) findPetsByTags (tags []string) ([]Pet, error) { _sling = _sling.Path(path) - type QueryParams struct { tags []string `url:"tags,omitempty"` @@ -189,16 +212,26 @@ func (a PetApi) findPetsByTags (tags []string) ([]Pet, error) { - req, err := _sling.Request() + + var response []Pet + resp, err := _sling.ReceiveSuccess(response) + fmt.Println("findPetsByTags response: ", response, resp, err) + return response, err + - /*response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + + + //response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) //if err != nil { // log.Fatal(err) - //} */ + //} //ApiClient.Deserialize(response, "array", "Pet") - return req, err - + + //var response []Pet + //err = json.Unmarshal([]byte(req), &response) + //return response, err + // } /** * Find pet by ID @@ -206,13 +239,8 @@ func (a PetApi) findPetsByTags (tags []string) ([]Pet, error) { * @param petId ID of pet that needs to be fetched * @return Pet */ +//func (a PetApi) getPetById (petId int64) (Pet, error) { func (a PetApi) getPetById (petId int64) (Pet, error) { - - // verify the required parameter 'petId' is set - //if petId == nil { - // return 0, fmt.Error("Missing the required parameter 'petId' when calling getPetById") - //} - _sling := a.sling.Get(a.basePath) @@ -235,16 +263,26 @@ func (a PetApi) getPetById (petId int64) (Pet, error) { - req, err := _sling.Request() + + var response Pet + resp, err := _sling.ReceiveSuccess(response) + fmt.Println("getPetById response: ", response, resp, err) + return response, err + - /*response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + + + //response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) //if err != nil { // log.Fatal(err) - //} */ + //} //ApiClient.Deserialize(response, "", "Pet") - return req, err - + + //var response Pet + //err = json.Unmarshal([]byte(req), &response) + //return response, err + // } /** * Updates a pet in the store with form data @@ -254,13 +292,8 @@ func (a PetApi) getPetById (petId int64) (Pet, error) { * @param status Updated status of the pet * @return void */ +//func (a PetApi) updatePetWithForm (petId string, name string, status string) (error) { func (a PetApi) updatePetWithForm (petId string, name string, status string) (error) { - - // verify the required parameter 'petId' is set - //if petId == nil { - // return 0, fmt.Error("Missing the required parameter 'petId' when calling updatePetWithForm") - //} - _sling := a.sling.Post(a.basePath) @@ -279,7 +312,6 @@ func (a PetApi) updatePetWithForm (petId string, name string, status string) (er //contentTypes := []string { "application/x-www-form-urlencoded" } - type FormParams struct { name string `url:"name,omitempty"` status string `url:"status,omitempty"` @@ -290,16 +322,23 @@ func (a PetApi) updatePetWithForm (petId string, name string, status string) (er - req, err := _sling.Request() + + resp, err := _sling.Request() + fmt.Println("updatePetWithForm response: void, ", resp, err) + return err + - /*response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + + + //response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) //if err != nil { // log.Fatal(err) - //} */ + //} // - - return err + + // + //return err } /** * Deletes a pet @@ -308,13 +347,8 @@ func (a PetApi) updatePetWithForm (petId string, name string, status string) (er * @param apiKey * @return void */ +//func (a PetApi) deletePet (petId int64, apiKey string) (error) { func (a PetApi) deletePet (petId int64, apiKey string) (error) { - - // verify the required parameter 'petId' is set - //if petId == nil { - // return 0, fmt.Error("Missing the required parameter 'petId' when calling deletePet") - //} - _sling := a.sling.Delete(a.basePath) @@ -339,16 +373,23 @@ func (a PetApi) deletePet (petId int64, apiKey string) (error) { - req, err := _sling.Request() + + resp, err := _sling.Request() + fmt.Println("deletePet response: void, ", resp, err) + return err + - /*response, err := a.apiClient.CallApi(a.basePath, path, "Delete", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + + + //response, err := a.apiClient.CallApi(a.basePath, path, "Delete", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) //if err != nil { // log.Fatal(err) - //} */ + //} // - - return err + + // + //return err } /** * uploads an image @@ -358,13 +399,8 @@ func (a PetApi) deletePet (petId int64, apiKey string) (error) { * @param file file to upload * @return void */ +//func (a PetApi) uploadFile (petId int64, additionalMetadata string, file *os.File) (error) { func (a PetApi) uploadFile (petId int64, additionalMetadata string, file *os.File) (error) { - - // verify the required parameter 'petId' is set - //if petId == nil { - // return 0, fmt.Error("Missing the required parameter 'petId' when calling uploadFile") - //} - _sling := a.sling.Post(a.basePath) @@ -383,7 +419,6 @@ func (a PetApi) uploadFile (petId int64, additionalMetadata string, file *os.Fil //contentTypes := []string { "multipart/form-data" } - type FormParams struct { additionalMetadata string `url:"additionalMetadata,omitempty"` file *os.File `url:"file,omitempty"` @@ -394,14 +429,21 @@ func (a PetApi) uploadFile (petId int64, additionalMetadata string, file *os.Fil - req, err := _sling.Request() + + resp, err := _sling.Request() + fmt.Println("uploadFile response: void, ", resp, err) + return err + - /*response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + + + //response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) //if err != nil { // log.Fatal(err) - //} */ + //} // - - return err + + // + //return err } diff --git a/samples/client/petstore/go/swagger/StoreApi.go b/samples/client/petstore/go/swagger/StoreApi.go index 987c39a7216..17adb00933b 100644 --- a/samples/client/petstore/go/swagger/StoreApi.go +++ b/samples/client/petstore/go/swagger/StoreApi.go @@ -1,6 +1,7 @@ package swagger import ( +// "encoding/json" "strings" "fmt" // "log" @@ -30,8 +31,8 @@ func NewStoreApiWithBasePath(basePath string) *StoreApi{ * Returns a map of status codes to quantities * @return map[string]int32 */ +//func (a StoreApi) getInventory () (map[string]int32, error) { func (a StoreApi) getInventory () (map[string]int32, error) { - _sling := a.sling.Get(a.basePath) @@ -51,16 +52,26 @@ func (a StoreApi) getInventory () (map[string]int32, error) { - req, err := _sling.Request() + + var response map[string]int32 + resp, err := _sling.ReceiveSuccess(response) + fmt.Println("getInventory response: ", response, resp, err) + return response, err + - /*response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + + + //response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) //if err != nil { // log.Fatal(err) - //} */ + //} //ApiClient.Deserialize(response, "map", "map") - return req, err - + + //var response map[string]int32 + //err = json.Unmarshal([]byte(req), &response) + //return response, err + // } /** * Place an order for a pet @@ -68,8 +79,8 @@ func (a StoreApi) getInventory () (map[string]int32, error) { * @param body order placed for purchasing the pet * @return Order */ +//func (a StoreApi) placeOrder (body Order) (Order, error) { func (a StoreApi) placeOrder (body Order) (Order, error) { - _sling := a.sling.Post(a.basePath) @@ -93,16 +104,26 @@ func (a StoreApi) placeOrder (body Order) (Order, error) { //bodyParams["body"] = string(b) - req, err := _sling.Request() + + var response Order + resp, err := _sling.ReceiveSuccess(response) + fmt.Println("placeOrder response: ", response, resp, err) + return response, err + - /*response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + + + //response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) //if err != nil { // log.Fatal(err) - //} */ + //} //ApiClient.Deserialize(response, "", "Order") - return req, err - + + //var response Order + //err = json.Unmarshal([]byte(req), &response) + //return response, err + // } /** * Find purchase order by ID @@ -110,13 +131,8 @@ func (a StoreApi) placeOrder (body Order) (Order, error) { * @param orderId ID of pet that needs to be fetched * @return Order */ +//func (a StoreApi) getOrderById (orderId string) (Order, error) { func (a StoreApi) getOrderById (orderId string) (Order, error) { - - // verify the required parameter 'orderId' is set - //if orderId == nil { - // return 0, fmt.Error("Missing the required parameter 'orderId' when calling getOrderById") - //} - _sling := a.sling.Get(a.basePath) @@ -139,16 +155,26 @@ func (a StoreApi) getOrderById (orderId string) (Order, error) { - req, err := _sling.Request() + + var response Order + resp, err := _sling.ReceiveSuccess(response) + fmt.Println("getOrderById response: ", response, resp, err) + return response, err + - /*response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + + + //response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) //if err != nil { // log.Fatal(err) - //} */ + //} //ApiClient.Deserialize(response, "", "Order") - return req, err - + + //var response Order + //err = json.Unmarshal([]byte(req), &response) + //return response, err + // } /** * Delete purchase order by ID @@ -156,13 +182,8 @@ func (a StoreApi) getOrderById (orderId string) (Order, error) { * @param orderId ID of the order that needs to be deleted * @return void */ +//func (a StoreApi) deleteOrder (orderId string) (error) { func (a StoreApi) deleteOrder (orderId string) (error) { - - // verify the required parameter 'orderId' is set - //if orderId == nil { - // return 0, fmt.Error("Missing the required parameter 'orderId' when calling deleteOrder") - //} - _sling := a.sling.Delete(a.basePath) @@ -185,14 +206,21 @@ func (a StoreApi) deleteOrder (orderId string) (error) { - req, err := _sling.Request() + + resp, err := _sling.Request() + fmt.Println("deleteOrder response: void, ", resp, err) + return err + - /*response, err := a.apiClient.CallApi(a.basePath, path, "Delete", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + + + //response, err := a.apiClient.CallApi(a.basePath, path, "Delete", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) //if err != nil { // log.Fatal(err) - //} */ + //} // - - return err + + // + //return err } diff --git a/samples/client/petstore/go/swagger/UserApi.go b/samples/client/petstore/go/swagger/UserApi.go index 4c2c73cb9dc..0a1abeb7827 100644 --- a/samples/client/petstore/go/swagger/UserApi.go +++ b/samples/client/petstore/go/swagger/UserApi.go @@ -1,6 +1,7 @@ package swagger import ( +// "encoding/json" "strings" "fmt" // "log" @@ -31,8 +32,8 @@ func NewUserApiWithBasePath(basePath string) *UserApi{ * @param body Created user object * @return void */ +//func (a UserApi) createUser (body User) (error) { func (a UserApi) createUser (body User) (error) { - _sling := a.sling.Post(a.basePath) @@ -56,16 +57,23 @@ func (a UserApi) createUser (body User) (error) { //bodyParams["body"] = string(b) - req, err := _sling.Request() + + resp, err := _sling.Request() + fmt.Println("createUser response: void, ", resp, err) + return err + - /*response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + + + //response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) //if err != nil { // log.Fatal(err) - //} */ + //} // - - return err + + // + //return err } /** * Creates list of users with given input array @@ -73,8 +81,8 @@ func (a UserApi) createUser (body User) (error) { * @param body List of user object * @return void */ +//func (a UserApi) createUsersWithArrayInput (body []User) (error) { func (a UserApi) createUsersWithArrayInput (body []User) (error) { - _sling := a.sling.Post(a.basePath) @@ -98,16 +106,23 @@ func (a UserApi) createUsersWithArrayInput (body []User) (error) { //bodyParams["body"] = string(b) - req, err := _sling.Request() + + resp, err := _sling.Request() + fmt.Println("createUsersWithArrayInput response: void, ", resp, err) + return err + - /*response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + + + //response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) //if err != nil { // log.Fatal(err) - //} */ + //} // - - return err + + // + //return err } /** * Creates list of users with given input array @@ -115,8 +130,8 @@ func (a UserApi) createUsersWithArrayInput (body []User) (error) { * @param body List of user object * @return void */ +//func (a UserApi) createUsersWithListInput (body []User) (error) { func (a UserApi) createUsersWithListInput (body []User) (error) { - _sling := a.sling.Post(a.basePath) @@ -140,16 +155,23 @@ func (a UserApi) createUsersWithListInput (body []User) (error) { //bodyParams["body"] = string(b) - req, err := _sling.Request() + + resp, err := _sling.Request() + fmt.Println("createUsersWithListInput response: void, ", resp, err) + return err + - /*response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + + + //response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) //if err != nil { // log.Fatal(err) - //} */ + //} // - - return err + + // + //return err } /** * Logs user into the system @@ -158,8 +180,8 @@ func (a UserApi) createUsersWithListInput (body []User) (error) { * @param password The password for login in clear text * @return string */ +//func (a UserApi) loginUser (username string, password string) (string, error) { func (a UserApi) loginUser (username string, password string) (string, error) { - _sling := a.sling.Get(a.basePath) @@ -169,7 +191,6 @@ func (a UserApi) loginUser (username string, password string) (string, error) { _sling = _sling.Path(path) - type QueryParams struct { username string `url:"username,omitempty"` password string `url:"password,omitempty"` @@ -187,24 +208,34 @@ func (a UserApi) loginUser (username string, password string) (string, error) { - req, err := _sling.Request() + + var response string + resp, err := _sling.ReceiveSuccess(response) + fmt.Println("loginUser response: ", response, resp, err) + return response, err + - /*response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + + + //response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) //if err != nil { // log.Fatal(err) - //} */ + //} //ApiClient.Deserialize(response, "", "string") - return req, err - + + //var response string + //err = json.Unmarshal([]byte(req), &response) + //return response, err + // } /** * Logs out current logged in user session * * @return void */ +//func (a UserApi) logoutUser () (error) { func (a UserApi) logoutUser () (error) { - _sling := a.sling.Get(a.basePath) @@ -224,16 +255,23 @@ func (a UserApi) logoutUser () (error) { - req, err := _sling.Request() + + resp, err := _sling.Request() + fmt.Println("logoutUser response: void, ", resp, err) + return err + - /*response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + + + //response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) //if err != nil { // log.Fatal(err) - //} */ + //} // - - return err + + // + //return err } /** * Get user by user name @@ -241,13 +279,8 @@ func (a UserApi) logoutUser () (error) { * @param username The name that needs to be fetched. Use user1 for testing. * @return User */ +//func (a UserApi) getUserByName (username string) (User, error) { func (a UserApi) getUserByName (username string) (User, error) { - - // verify the required parameter 'username' is set - //if username == nil { - // return 0, fmt.Error("Missing the required parameter 'username' when calling getUserByName") - //} - _sling := a.sling.Get(a.basePath) @@ -270,16 +303,26 @@ func (a UserApi) getUserByName (username string) (User, error) { - req, err := _sling.Request() + + var response User + resp, err := _sling.ReceiveSuccess(response) + fmt.Println("getUserByName response: ", response, resp, err) + return response, err + - /*response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + + + //response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) //if err != nil { // log.Fatal(err) - //} */ + //} //ApiClient.Deserialize(response, "", "User") - return req, err - + + //var response User + //err = json.Unmarshal([]byte(req), &response) + //return response, err + // } /** * Updated user @@ -288,13 +331,8 @@ func (a UserApi) getUserByName (username string) (User, error) { * @param body Updated user object * @return void */ +//func (a UserApi) updateUser (username string, body User) (error) { func (a UserApi) updateUser (username string, body User) (error) { - - // verify the required parameter 'username' is set - //if username == nil { - // return 0, fmt.Error("Missing the required parameter 'username' when calling updateUser") - //} - _sling := a.sling.Put(a.basePath) @@ -321,16 +359,23 @@ func (a UserApi) updateUser (username string, body User) (error) { //bodyParams["body"] = string(b) - req, err := _sling.Request() + + resp, err := _sling.Request() + fmt.Println("updateUser response: void, ", resp, err) + return err + - /*response, err := a.apiClient.CallApi(a.basePath, path, "Put", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + + + //response, err := a.apiClient.CallApi(a.basePath, path, "Put", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) //if err != nil { // log.Fatal(err) - //} */ + //} // - - return err + + // + //return err } /** * Delete user @@ -338,13 +383,8 @@ func (a UserApi) updateUser (username string, body User) (error) { * @param username The name that needs to be deleted * @return void */ +//func (a UserApi) deleteUser (username string) (error) { func (a UserApi) deleteUser (username string) (error) { - - // verify the required parameter 'username' is set - //if username == nil { - // return 0, fmt.Error("Missing the required parameter 'username' when calling deleteUser") - //} - _sling := a.sling.Delete(a.basePath) @@ -367,14 +407,21 @@ func (a UserApi) deleteUser (username string) (error) { - req, err := _sling.Request() + + resp, err := _sling.Request() + fmt.Println("deleteUser response: void, ", resp, err) + return err + - /*response, err := a.apiClient.CallApi(a.basePath, path, "Delete", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) + + + //response, err := a.apiClient.CallApi(a.basePath, path, "Delete", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) //if err != nil { // log.Fatal(err) - //} */ + //} // - - return err + + // + //return err } diff --git a/samples/client/petstore/go/test.go b/samples/client/petstore/go/test.go index b20f0347354..d1dbf4272a2 100644 --- a/samples/client/petstore/go/test.go +++ b/samples/client/petstore/go/test.go @@ -1,14 +1,15 @@ package main - import ( - "fmt" - "log" - "./swagger" + "fmt" + // "log" + swagger "./swagger" ) func main() { + fmt.Println("hello world") + s := swagger.NewPetApi() + &s.updatePetWithForm("2", "golang", "available") - fmt.Println("hello world") } From 4062deed92f203457766b5df5367bf48ee86788a Mon Sep 17 00:00:00 2001 From: wing328 Date: Mon, 21 Dec 2015 21:19:12 +0800 Subject: [PATCH 018/623] remove logger, fix deserialization of json response --- .../io/swagger/codegen/DefaultCodegen.java | 2 - .../io/swagger/codegen/DefaultGenerator.java | 4 - .../codegen/languages/GoClientCodegen.java | 16 +- .../src/main/resources/go/api.mustache | 73 ++-- .../client/petstore/go/swagger/Category.go | 4 +- samples/client/petstore/go/swagger/Order.go | 13 +- samples/client/petstore/go/swagger/Pet.go | 12 +- samples/client/petstore/go/swagger/PetApi.go | 400 ++++++------------ .../client/petstore/go/swagger/StoreApi.go | 189 +++------ samples/client/petstore/go/swagger/Tag.go | 4 +- samples/client/petstore/go/swagger/User.go | 16 +- samples/client/petstore/go/swagger/UserApi.go | 365 +++++----------- samples/client/petstore/go/test.go | 11 +- 13 files changed, 351 insertions(+), 758 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java index ac91c60fa0f..11472fec4ff 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java @@ -1045,8 +1045,6 @@ public class DefaultCodegen { } property.baseType = getSwaggerType(p); - LOGGER.info("property.baseType=" + property.baseType); - LOGGER.info("property.datatype=" + property.datatype); if (p instanceof ArrayProperty) { property.isContainer = true; diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java index 24c17615f2d..3623361387e 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java @@ -657,7 +657,6 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { for (String nextImport : allImports) { Map im = new LinkedHashMap(); String mapping = config.importMapping().get(nextImport); - LOGGER.info("mapping = " + mapping); if (mapping == null) { mapping = config.toModelImport(nextImport); } @@ -704,7 +703,6 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { List> imports = new ArrayList>(); for (String nextImport : allImports) { - LOGGER.info("nextImport=" + nextImport); Map im = new LinkedHashMap(); String mapping = config.importMapping().get(nextImport); if (mapping == null) { @@ -713,14 +711,12 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { if (mapping != null && !config.defaultIncludes().contains(mapping)) { im.put("import", mapping); imports.add(im); - LOGGER.info("config.importMaping added " + mapping); } // add instantiation types mapping = config.instantiationTypes().get(nextImport); if (mapping != null && !config.defaultIncludes().contains(mapping)) { im.put("import", mapping); imports.add(im); - LOGGER.info("config.instantiationTypes added " + mapping); } } 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 04401b044e5..c9ec24de6b2 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 @@ -128,8 +128,8 @@ public class GoClientCodegen extends DefaultCodegen implements CodegenConfig { return name; // camelize (lower first character) the variable name - // pet_id => petId - name = camelize(name, true); + // pet_id => PetId + name = camelize(name); // for reserved word or word starting with number, append _ if(reservedWords.contains(name) || name.matches("^\\d.*")) @@ -163,7 +163,7 @@ public class GoClientCodegen extends DefaultCodegen implements CodegenConfig { @Override public String getTypeDeclaration(Property p) { - LOGGER.info("getTypeDeclaration=" + p.getName()); + String swaggerType = getSwaggerType(p); if(p instanceof ArrayProperty) { ArrayProperty ap = (ArrayProperty) p; Property inner = ap.getItems(); @@ -175,14 +175,6 @@ public class GoClientCodegen extends DefaultCodegen implements CodegenConfig { return getSwaggerType(p) + "[string]" + getTypeDeclaration(inner); } - LOGGER.info("super.getTypeDeclaration=" + super.getTypeDeclaration(p)); - return super.getTypeDeclaration(p); - } - - @Override - public String getSwaggerType(Property p) { - String swaggerType = super.getSwaggerType(p); - LOGGER.info("swaggerType=" + swaggerType); String type = null; if(typeMapping.containsKey(swaggerType)) { type = typeMapping.get(swaggerType); @@ -200,7 +192,7 @@ public class GoClientCodegen extends DefaultCodegen implements CodegenConfig { if(reservedWords.contains(operationId)) throw new RuntimeException(operationId + " (reserved word) cannot be used as method name"); - return camelize(operationId, true); + return camelize(operationId); } @Override diff --git a/modules/swagger-codegen/src/main/resources/go/api.mustache b/modules/swagger-codegen/src/main/resources/go/api.mustache index 9e0679538fa..16512786abc 100644 --- a/modules/swagger-codegen/src/main/resources/go/api.mustache +++ b/modules/swagger-codegen/src/main/resources/go/api.mustache @@ -14,7 +14,7 @@ import ( type {{classname}} struct { basePath string apiClient ApiClient - sling *sling.Sling + //sling *sling.Sling } func New{{classname}}() *{{classname}}{ @@ -39,68 +39,49 @@ func New{{classname}}WithBasePath(basePath string) *{{classname}}{ //func (a {{classname}}) {{nickname}} ({{#allParams}}{{paramName}} {{{dataType}}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) ({{#returnType}}{{{returnType}}}, {{/returnType}}error) { func (a {{classname}}) {{nickname}} ({{#allParams}}{{paramName}} {{{dataType}}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) ({{#returnType}}{{{returnType}}}, {{/returnType}}error) { - _sling := a.sling.{{httpMethod}}(a.basePath) + _sling := sling.New().{{httpMethod}}(a.basePath) // create path and map variables - path := "{{path}}" - {{#pathParams}}//path = regexp.MustCompile("{" + "{{paramName}}" + "}").ReplaceAllString(path, "$1") - //path = path.Replace("\\{" + "{{paramName}}" + "\\}", ApiClient.EscapeString({{{paramName}}})) - path = strings.Replace(path, "{" + "{{baseName}}" + "}", fmt.Sprintf("%b", {{paramName}}), -1) - {{/pathParams}} + path := "{{basePathWithoutHost}}{{path}}" +{{#pathParams}} path = strings.Replace(path, "{" + "{{baseName}}" + "}", fmt.Sprintf("%v", {{paramName}}), -1) +{{/pathParams}} _sling = _sling.Path(path) - {{#hasQueryParams}}type QueryParams struct { +{{#hasQueryParams}} type QueryParams struct { {{#queryParams}}{{paramName}} {{dataType}} `url:"{{baseName}},omitempty"` {{/queryParams}} +} + _sling = _sling.QueryStruct(&QueryParams{ {{#queryParams}}{{paramName}}: {{paramName}}{{#hasMore}},{{/hasMore}}{{/queryParams}} }) +{{/hasQueryParams}} + // accept header + accepts := []string { {{#produces}}"{{mediaType}}"{{#hasMore}}, {{/hasMore}}{{/produces}} } + for key := range accepts { + _sling = _sling.Set("Accept", accepts[key]) + break // only use the first Accept } - - _sling = _sling.QueryStruct(&QueryParams{ {{#queryParams}}{{paramName}}: {{baseName}}{{#hasMore}},{{/hasMore}}{{/queryParams}} }) - {{/hasQueryParams}} - - {{#headerParams}}// header params "{{baseName}}" +{{#hasHeaderParams}}{{#headerParams}} // header params "{{baseName}}" _sling = _sling.Set("{{baseName}}", {{paramName}}) - {{/headerParams}} - - //contentTypes := []string { {{#consumes}}"{{mediaType}}"{{#hasMore}},{{/hasMore}}{{/consumes}} } - - {{#hasFormParams}}type FormParams struct { - {{#formParams}}{{paramName}} {{dataType}} `url:"{{baseName}},omitempty"` - {{/formParams}} +{{/headerParams}}{{/hasHeaderParams}} +{{#hasFormParams}} type FormParams struct { +{{#formParams}} {{paramName}} {{dataType}} `url:"{{baseName}},omitempty"` +{{/formParams}} } - _sling = _sling.BodyForm(&FormParams{ {{#formParams}}{{paramName}}: {{baseName}}{{#hasMore}},{{/hasMore}}{{/formParams}} }) - {{/hasFormParams}} - - {{#bodyParams}}// body params + _sling = _sling.BodyForm(&FormParams{ {{#formParams}}{{paramName}}: {{paramName}}{{#hasMore}},{{/hasMore}}{{/formParams}} }) +{{/hasFormParams}} +{{#hasBodyParams}}{{#bodyParams}}// body params _sling = _sling.BodyJSON({{paramName}}) - //b, _ := json.Marshal(body) - //bodyParams["{{baseName}}"] = string(b) - {{/bodyParams}} +{{/bodyParams}}{{/hasBodyParams}} - {{#returnType}} - var response {{returnType}} +{{#returnType}} response := new({{returnType}}) resp, err := _sling.ReceiveSuccess(response) fmt.Println("{{operationId}} response: ", response, resp, err) - return response, err - {{/returnType}}{{^returnType}} + return *response, err +{{/returnType}}{{^returnType}} resp, err := _sling.Request() fmt.Println("{{operationId}} response: void, ", resp, err) return err - {{/returnType}} - - - - //response, err := a.apiClient.CallApi(a.basePath, path, "{{httpMethod}}", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) - //if err != nil { - // log.Fatal(err) - //} - - //{{#returnType}}ApiClient.Deserialize(response, "{{returnContainer}}", "{{returnBaseType}}"){{/returnType}} - - //{{#returnType}}var response {{returnType}} - //err = json.Unmarshal([]byte(req), &response) - //return response, err{{/returnType}} - //{{^returnType}}return err{{/returnType}} +{{/returnType}} } {{/operation}} {{/operations}} diff --git a/samples/client/petstore/go/swagger/Category.go b/samples/client/petstore/go/swagger/Category.go index 7681d4c5e6f..0268f62488a 100644 --- a/samples/client/petstore/go/swagger/Category.go +++ b/samples/client/petstore/go/swagger/Category.go @@ -4,7 +4,7 @@ import ( ) type Category struct { - id int64 `json:"id,omitempty"` - name string `json:"name,omitempty"` + Id int64 `json:"id,omitempty"` + Name string `json:"name,omitempty"` } diff --git a/samples/client/petstore/go/swagger/Order.go b/samples/client/petstore/go/swagger/Order.go index 187f3ed5795..254b962de2f 100644 --- a/samples/client/petstore/go/swagger/Order.go +++ b/samples/client/petstore/go/swagger/Order.go @@ -1,15 +1,14 @@ package swagger import ( - "time" ) type Order struct { - id int64 `json:"id,omitempty"` - petId int64 `json:"petId,omitempty"` - quantity int32 `json:"quantity,omitempty"` - shipDate time.Time `json:"shipDate,omitempty"` - status string `json:"status,omitempty"` - complete bool `json:"complete,omitempty"` + Id int64 `json:"id,omitempty"` + PetId int64 `json:"petId,omitempty"` + Quantity int32 `json:"quantity,omitempty"` + ShipDate time.Time `json:"shipDate,omitempty"` + Status string `json:"status,omitempty"` + Complete bool `json:"complete,omitempty"` } diff --git a/samples/client/petstore/go/swagger/Pet.go b/samples/client/petstore/go/swagger/Pet.go index cbc962df530..7544eed6384 100644 --- a/samples/client/petstore/go/swagger/Pet.go +++ b/samples/client/petstore/go/swagger/Pet.go @@ -4,11 +4,11 @@ import ( ) type Pet struct { - id int64 `json:"id,omitempty"` - category Category `json:"category,omitempty"` - name string `json:"name,omitempty"` - photoUrls []string `json:"photoUrls,omitempty"` - tags []Tag `json:"tags,omitempty"` - status string `json:"status,omitempty"` + Id int64 `json:"id,omitempty"` + Category Category `json:"category,omitempty"` + Name string `json:"name,omitempty"` + PhotoUrls []string `json:"photoUrls,omitempty"` + Tags []Tag `json:"tags,omitempty"` + Status string `json:"status,omitempty"` } diff --git a/samples/client/petstore/go/swagger/PetApi.go b/samples/client/petstore/go/swagger/PetApi.go index cf6f793805f..a83f426471d 100644 --- a/samples/client/petstore/go/swagger/PetApi.go +++ b/samples/client/petstore/go/swagger/PetApi.go @@ -6,13 +6,12 @@ import ( "fmt" // "log" "github.com/dghubble/sling" - "os" ) type PetApi struct { basePath string apiClient ApiClient - sling *sling.Sling + //sling *sling.Sling } func NewPetApi() *PetApi{ @@ -30,420 +29,271 @@ func NewPetApiWithBasePath(basePath string) *PetApi{ /** * Update an existing pet * - * @param body Pet object that needs to be added to the store + * @param Body Pet object that needs to be added to the store * @return void */ -//func (a PetApi) updatePet (body Pet) (error) { -func (a PetApi) updatePet (body Pet) (error) { +//func (a PetApi) UpdatePet (Body Pet) (error) { +func (a PetApi) UpdatePet (Body Pet) (error) { - _sling := a.sling.Put(a.basePath) + _sling := sling.New().Put(a.basePath) // create path and map variables - path := "/pet" - + path := "/v2/pet" _sling = _sling.Path(path) - + // accept header + accepts := []string { "application/json", "application/xml" } + for key := range accepts { + _sling = _sling.Set("Accept", accepts[key]) + break // only use the first Accept + } - - //contentTypes := []string { "application/json","application/xml" } - - // body params - _sling = _sling.BodyJSON(body) - //b, _ := json.Marshal(body) - //bodyParams["body"] = string(b) - - - resp, err := _sling.Request() - fmt.Println("updatePet response: void, ", resp, err) + fmt.Println("UpdatePet response: void, ", resp, err) return err - - - - - //response, err := a.apiClient.CallApi(a.basePath, path, "Put", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) - //if err != nil { - // log.Fatal(err) - //} - - // - - // - //return err } /** * Add a new pet to the store * - * @param body Pet object that needs to be added to the store + * @param Body Pet object that needs to be added to the store * @return void */ -//func (a PetApi) addPet (body Pet) (error) { -func (a PetApi) addPet (body Pet) (error) { +//func (a PetApi) AddPet (Body Pet) (error) { +func (a PetApi) AddPet (Body Pet) (error) { - _sling := a.sling.Post(a.basePath) + _sling := sling.New().Post(a.basePath) // create path and map variables - path := "/pet" - + path := "/v2/pet" _sling = _sling.Path(path) - + // accept header + accepts := []string { "application/json", "application/xml" } + for key := range accepts { + _sling = _sling.Set("Accept", accepts[key]) + break // only use the first Accept + } - - //contentTypes := []string { "application/json","application/xml" } - - // body params - _sling = _sling.BodyJSON(body) - //b, _ := json.Marshal(body) - //bodyParams["body"] = string(b) - - - resp, err := _sling.Request() - fmt.Println("addPet response: void, ", resp, err) + fmt.Println("AddPet response: void, ", resp, err) return err - - - - - //response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) - //if err != nil { - // log.Fatal(err) - //} - - // - - // - //return err } /** * Finds Pets by status * Multiple status values can be provided with comma seperated strings - * @param status Status values that need to be considered for filter + * @param Status Status values that need to be considered for filter * @return []Pet */ -//func (a PetApi) findPetsByStatus (status []string) ([]Pet, error) { -func (a PetApi) findPetsByStatus (status []string) ([]Pet, error) { +//func (a PetApi) FindPetsByStatus (Status []string) ([]Pet, error) { +func (a PetApi) FindPetsByStatus (Status []string) ([]Pet, error) { - _sling := a.sling.Get(a.basePath) + _sling := sling.New().Get(a.basePath) // create path and map variables - path := "/pet/findByStatus" - + path := "/v2/pet/findByStatus" _sling = _sling.Path(path) type QueryParams struct { - status []string `url:"status,omitempty"` + Status []string `url:"status,omitempty"` +} + _sling = _sling.QueryStruct(&QueryParams{ Status: Status }) + // accept header + accepts := []string { "application/json", "application/xml" } + for key := range accepts { + _sling = _sling.Set("Accept", accepts[key]) + break // only use the first Accept } - _sling = _sling.QueryStruct(&QueryParams{ status: status }) - - - //contentTypes := []string { } - - - - - - - var response []Pet + response := new([]Pet) resp, err := _sling.ReceiveSuccess(response) - fmt.Println("findPetsByStatus response: ", response, resp, err) - return response, err - - - - - //response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) - //if err != nil { - // log.Fatal(err) - //} - - //ApiClient.Deserialize(response, "array", "Pet") - - //var response []Pet - //err = json.Unmarshal([]byte(req), &response) - //return response, err - // + fmt.Println("FindPetsByStatus response: ", response, resp, err) + return *response, err } /** * Finds Pets by tags * Muliple tags can be provided with comma seperated strings. Use tag1, tag2, tag3 for testing. - * @param tags Tags to filter by + * @param Tags Tags to filter by * @return []Pet */ -//func (a PetApi) findPetsByTags (tags []string) ([]Pet, error) { -func (a PetApi) findPetsByTags (tags []string) ([]Pet, error) { +//func (a PetApi) FindPetsByTags (Tags []string) ([]Pet, error) { +func (a PetApi) FindPetsByTags (Tags []string) ([]Pet, error) { - _sling := a.sling.Get(a.basePath) + _sling := sling.New().Get(a.basePath) // create path and map variables - path := "/pet/findByTags" - + path := "/v2/pet/findByTags" _sling = _sling.Path(path) type QueryParams struct { - tags []string `url:"tags,omitempty"` + Tags []string `url:"tags,omitempty"` +} + _sling = _sling.QueryStruct(&QueryParams{ Tags: Tags }) + // accept header + accepts := []string { "application/json", "application/xml" } + for key := range accepts { + _sling = _sling.Set("Accept", accepts[key]) + break // only use the first Accept } - _sling = _sling.QueryStruct(&QueryParams{ tags: tags }) - - - //contentTypes := []string { } - - - - - - - var response []Pet + response := new([]Pet) resp, err := _sling.ReceiveSuccess(response) - fmt.Println("findPetsByTags response: ", response, resp, err) - return response, err - - - - - //response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) - //if err != nil { - // log.Fatal(err) - //} - - //ApiClient.Deserialize(response, "array", "Pet") - - //var response []Pet - //err = json.Unmarshal([]byte(req), &response) - //return response, err - // + fmt.Println("FindPetsByTags response: ", response, resp, err) + return *response, err } /** * Find pet by ID * Returns a pet when ID < 10. ID > 10 or nonintegers will simulate API error conditions - * @param petId ID of pet that needs to be fetched + * @param PetId ID of pet that needs to be fetched * @return Pet */ -//func (a PetApi) getPetById (petId int64) (Pet, error) { -func (a PetApi) getPetById (petId int64) (Pet, error) { +//func (a PetApi) GetPetById (PetId int64) (Pet, error) { +func (a PetApi) GetPetById (PetId int64) (Pet, error) { - _sling := a.sling.Get(a.basePath) + _sling := sling.New().Get(a.basePath) // create path and map variables - path := "/pet/{petId}" - //path = regexp.MustCompile("{" + "petId" + "}").ReplaceAllString(path, "$1") - //path = path.Replace("\\{" + "petId" + "\\}", ApiClient.EscapeString(petId)) - path = strings.Replace(path, "{" + "petId" + "}", fmt.Sprintf("%b", petId), -1) - + path := "/v2/pet/{petId}" + path = strings.Replace(path, "{" + "petId" + "}", fmt.Sprintf("%v", PetId), -1) _sling = _sling.Path(path) - + // accept header + accepts := []string { "application/json", "application/xml" } + for key := range accepts { + _sling = _sling.Set("Accept", accepts[key]) + break // only use the first Accept + } - - //contentTypes := []string { } - - - - - - var response Pet + response := new(Pet) resp, err := _sling.ReceiveSuccess(response) - fmt.Println("getPetById response: ", response, resp, err) - return response, err - - - - - //response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) - //if err != nil { - // log.Fatal(err) - //} - - //ApiClient.Deserialize(response, "", "Pet") - - //var response Pet - //err = json.Unmarshal([]byte(req), &response) - //return response, err - // + fmt.Println("GetPetById response: ", response, resp, err) + return *response, err } /** * Updates a pet in the store with form data * - * @param petId ID of pet that needs to be updated - * @param name Updated name of the pet - * @param status Updated status of the pet + * @param PetId ID of pet that needs to be updated + * @param Name Updated name of the pet + * @param Status Updated status of the pet * @return void */ -//func (a PetApi) updatePetWithForm (petId string, name string, status string) (error) { -func (a PetApi) updatePetWithForm (petId string, name string, status string) (error) { +//func (a PetApi) UpdatePetWithForm (PetId string, Name string, Status string) (error) { +func (a PetApi) UpdatePetWithForm (PetId string, Name string, Status string) (error) { - _sling := a.sling.Post(a.basePath) + _sling := sling.New().Post(a.basePath) // create path and map variables - path := "/pet/{petId}" - //path = regexp.MustCompile("{" + "petId" + "}").ReplaceAllString(path, "$1") - //path = path.Replace("\\{" + "petId" + "\\}", ApiClient.EscapeString(petId)) - path = strings.Replace(path, "{" + "petId" + "}", fmt.Sprintf("%b", petId), -1) - + path := "/v2/pet/{petId}" + path = strings.Replace(path, "{" + "petId" + "}", fmt.Sprintf("%v", PetId), -1) _sling = _sling.Path(path) - - - - - //contentTypes := []string { "application/x-www-form-urlencoded" } + // accept header + accepts := []string { "application/json", "application/xml" } + for key := range accepts { + _sling = _sling.Set("Accept", accepts[key]) + break // only use the first Accept + } type FormParams struct { - name string `url:"name,omitempty"` - status string `url:"status,omitempty"` - + Name string `url:"name,omitempty"` + Status string `url:"status,omitempty"` } - _sling = _sling.BodyForm(&FormParams{ name: name,status: status }) - + _sling = _sling.BodyForm(&FormParams{ Name: Name,Status: Status }) + - - resp, err := _sling.Request() - fmt.Println("updatePetWithForm response: void, ", resp, err) + fmt.Println("UpdatePetWithForm response: void, ", resp, err) return err - - - - - //response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) - //if err != nil { - // log.Fatal(err) - //} - - // - - // - //return err } /** * Deletes a pet * - * @param petId Pet id to delete - * @param apiKey + * @param PetId Pet id to delete + * @param ApiKey * @return void */ -//func (a PetApi) deletePet (petId int64, apiKey string) (error) { -func (a PetApi) deletePet (petId int64, apiKey string) (error) { +//func (a PetApi) DeletePet (PetId int64, ApiKey string) (error) { +func (a PetApi) DeletePet (PetId int64, ApiKey string) (error) { - _sling := a.sling.Delete(a.basePath) + _sling := sling.New().Delete(a.basePath) // create path and map variables - path := "/pet/{petId}" - //path = regexp.MustCompile("{" + "petId" + "}").ReplaceAllString(path, "$1") - //path = path.Replace("\\{" + "petId" + "\\}", ApiClient.EscapeString(petId)) - path = strings.Replace(path, "{" + "petId" + "}", fmt.Sprintf("%b", petId), -1) - + path := "/v2/pet/{petId}" + path = strings.Replace(path, "{" + "petId" + "}", fmt.Sprintf("%v", PetId), -1) _sling = _sling.Path(path) - - + // accept header + accepts := []string { "application/json", "application/xml" } + for key := range accepts { + _sling = _sling.Set("Accept", accepts[key]) + break // only use the first Accept + } // header params "api_key" - _sling = _sling.Set("api_key", apiKey) - + _sling = _sling.Set("api_key", ApiKey) - //contentTypes := []string { } - - - resp, err := _sling.Request() - fmt.Println("deletePet response: void, ", resp, err) + fmt.Println("DeletePet response: void, ", resp, err) return err - - - - - //response, err := a.apiClient.CallApi(a.basePath, path, "Delete", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) - //if err != nil { - // log.Fatal(err) - //} - - // - - // - //return err } /** * uploads an image * - * @param petId ID of pet to update - * @param additionalMetadata Additional data to pass to server - * @param file file to upload + * @param PetId ID of pet to update + * @param AdditionalMetadata Additional data to pass to server + * @param File file to upload * @return void */ -//func (a PetApi) uploadFile (petId int64, additionalMetadata string, file *os.File) (error) { -func (a PetApi) uploadFile (petId int64, additionalMetadata string, file *os.File) (error) { +//func (a PetApi) UploadFile (PetId int64, AdditionalMetadata string, File *os.File) (error) { +func (a PetApi) UploadFile (PetId int64, AdditionalMetadata string, File *os.File) (error) { - _sling := a.sling.Post(a.basePath) + _sling := sling.New().Post(a.basePath) // create path and map variables - path := "/pet/{petId}/uploadImage" - //path = regexp.MustCompile("{" + "petId" + "}").ReplaceAllString(path, "$1") - //path = path.Replace("\\{" + "petId" + "\\}", ApiClient.EscapeString(petId)) - path = strings.Replace(path, "{" + "petId" + "}", fmt.Sprintf("%b", petId), -1) - + path := "/v2/pet/{petId}/uploadImage" + path = strings.Replace(path, "{" + "petId" + "}", fmt.Sprintf("%v", PetId), -1) _sling = _sling.Path(path) - - - - - //contentTypes := []string { "multipart/form-data" } + // accept header + accepts := []string { "application/json", "application/xml" } + for key := range accepts { + _sling = _sling.Set("Accept", accepts[key]) + break // only use the first Accept + } type FormParams struct { - additionalMetadata string `url:"additionalMetadata,omitempty"` - file *os.File `url:"file,omitempty"` - + AdditionalMetadata string `url:"additionalMetadata,omitempty"` + File *os.File `url:"file,omitempty"` } - _sling = _sling.BodyForm(&FormParams{ additionalMetadata: additionalMetadata,file: file }) - + _sling = _sling.BodyForm(&FormParams{ AdditionalMetadata: AdditionalMetadata,File: File }) + - - resp, err := _sling.Request() - fmt.Println("uploadFile response: void, ", resp, err) + fmt.Println("UploadFile response: void, ", resp, err) return err - - - - - //response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) - //if err != nil { - // log.Fatal(err) - //} - - // - - // - //return err } diff --git a/samples/client/petstore/go/swagger/StoreApi.go b/samples/client/petstore/go/swagger/StoreApi.go index 17adb00933b..1682b6ce16a 100644 --- a/samples/client/petstore/go/swagger/StoreApi.go +++ b/samples/client/petstore/go/swagger/StoreApi.go @@ -11,7 +11,7 @@ import ( type StoreApi struct { basePath string apiClient ApiClient - sling *sling.Sling + //sling *sling.Sling } func NewStoreApi() *StoreApi{ @@ -31,196 +31,119 @@ func NewStoreApiWithBasePath(basePath string) *StoreApi{ * Returns a map of status codes to quantities * @return map[string]int32 */ -//func (a StoreApi) getInventory () (map[string]int32, error) { -func (a StoreApi) getInventory () (map[string]int32, error) { +//func (a StoreApi) GetInventory () (map[string]int32, error) { +func (a StoreApi) GetInventory () (map[string]int32, error) { - _sling := a.sling.Get(a.basePath) + _sling := sling.New().Get(a.basePath) // create path and map variables - path := "/store/inventory" - + path := "/v2/store/inventory" _sling = _sling.Path(path) - + // accept header + accepts := []string { "application/json", "application/xml" } + for key := range accepts { + _sling = _sling.Set("Accept", accepts[key]) + break // only use the first Accept + } - - //contentTypes := []string { } - - - - - - var response map[string]int32 + response := new(map[string]int32) resp, err := _sling.ReceiveSuccess(response) - fmt.Println("getInventory response: ", response, resp, err) - return response, err - - - - - //response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) - //if err != nil { - // log.Fatal(err) - //} - - //ApiClient.Deserialize(response, "map", "map") - - //var response map[string]int32 - //err = json.Unmarshal([]byte(req), &response) - //return response, err - // + fmt.Println("GetInventory response: ", response, resp, err) + return *response, err } /** * Place an order for a pet * - * @param body order placed for purchasing the pet + * @param Body order placed for purchasing the pet * @return Order */ -//func (a StoreApi) placeOrder (body Order) (Order, error) { -func (a StoreApi) placeOrder (body Order) (Order, error) { +//func (a StoreApi) PlaceOrder (Body Order) (Order, error) { +func (a StoreApi) PlaceOrder (Body Order) (Order, error) { - _sling := a.sling.Post(a.basePath) + _sling := sling.New().Post(a.basePath) // create path and map variables - path := "/store/order" - + path := "/v2/store/order" _sling = _sling.Path(path) - + // accept header + accepts := []string { "application/json", "application/xml" } + for key := range accepts { + _sling = _sling.Set("Accept", accepts[key]) + break // only use the first Accept + } - - //contentTypes := []string { } - - - // body params - _sling = _sling.BodyJSON(body) - //b, _ := json.Marshal(body) - //bodyParams["body"] = string(b) - - - - var response Order + response := new(Order) resp, err := _sling.ReceiveSuccess(response) - fmt.Println("placeOrder response: ", response, resp, err) - return response, err - - - - - //response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) - //if err != nil { - // log.Fatal(err) - //} - - //ApiClient.Deserialize(response, "", "Order") - - //var response Order - //err = json.Unmarshal([]byte(req), &response) - //return response, err - // + fmt.Println("PlaceOrder response: ", response, resp, err) + return *response, err } /** * Find purchase order by ID * 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 + * @param OrderId ID of pet that needs to be fetched * @return Order */ -//func (a StoreApi) getOrderById (orderId string) (Order, error) { -func (a StoreApi) getOrderById (orderId string) (Order, error) { +//func (a StoreApi) GetOrderById (OrderId string) (Order, error) { +func (a StoreApi) GetOrderById (OrderId string) (Order, error) { - _sling := a.sling.Get(a.basePath) + _sling := sling.New().Get(a.basePath) // create path and map variables - path := "/store/order/{orderId}" - //path = regexp.MustCompile("{" + "orderId" + "}").ReplaceAllString(path, "$1") - //path = path.Replace("\\{" + "orderId" + "\\}", ApiClient.EscapeString(orderId)) - path = strings.Replace(path, "{" + "orderId" + "}", fmt.Sprintf("%b", orderId), -1) - + path := "/v2/store/order/{orderId}" + path = strings.Replace(path, "{" + "orderId" + "}", fmt.Sprintf("%v", OrderId), -1) _sling = _sling.Path(path) - + // accept header + accepts := []string { "application/json", "application/xml" } + for key := range accepts { + _sling = _sling.Set("Accept", accepts[key]) + break // only use the first Accept + } - - //contentTypes := []string { } - - - - - - var response Order + response := new(Order) resp, err := _sling.ReceiveSuccess(response) - fmt.Println("getOrderById response: ", response, resp, err) - return response, err - - - - - //response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) - //if err != nil { - // log.Fatal(err) - //} - - //ApiClient.Deserialize(response, "", "Order") - - //var response Order - //err = json.Unmarshal([]byte(req), &response) - //return response, err - // + fmt.Println("GetOrderById response: ", response, resp, err) + return *response, err } /** * Delete purchase order by ID * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors - * @param orderId ID of the order that needs to be deleted + * @param OrderId ID of the order that needs to be deleted * @return void */ -//func (a StoreApi) deleteOrder (orderId string) (error) { -func (a StoreApi) deleteOrder (orderId string) (error) { +//func (a StoreApi) DeleteOrder (OrderId string) (error) { +func (a StoreApi) DeleteOrder (OrderId string) (error) { - _sling := a.sling.Delete(a.basePath) + _sling := sling.New().Delete(a.basePath) // create path and map variables - path := "/store/order/{orderId}" - //path = regexp.MustCompile("{" + "orderId" + "}").ReplaceAllString(path, "$1") - //path = path.Replace("\\{" + "orderId" + "\\}", ApiClient.EscapeString(orderId)) - path = strings.Replace(path, "{" + "orderId" + "}", fmt.Sprintf("%b", orderId), -1) - + path := "/v2/store/order/{orderId}" + path = strings.Replace(path, "{" + "orderId" + "}", fmt.Sprintf("%v", OrderId), -1) _sling = _sling.Path(path) - + // accept header + accepts := []string { "application/json", "application/xml" } + for key := range accepts { + _sling = _sling.Set("Accept", accepts[key]) + break // only use the first Accept + } - - //contentTypes := []string { } - - - - resp, err := _sling.Request() - fmt.Println("deleteOrder response: void, ", resp, err) + fmt.Println("DeleteOrder response: void, ", resp, err) return err - - - - - //response, err := a.apiClient.CallApi(a.basePath, path, "Delete", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) - //if err != nil { - // log.Fatal(err) - //} - - // - - // - //return err } diff --git a/samples/client/petstore/go/swagger/Tag.go b/samples/client/petstore/go/swagger/Tag.go index 7fd20f55ef4..6b505272a15 100644 --- a/samples/client/petstore/go/swagger/Tag.go +++ b/samples/client/petstore/go/swagger/Tag.go @@ -4,7 +4,7 @@ import ( ) type Tag struct { - id int64 `json:"id,omitempty"` - name string `json:"name,omitempty"` + Id int64 `json:"id,omitempty"` + Name string `json:"name,omitempty"` } diff --git a/samples/client/petstore/go/swagger/User.go b/samples/client/petstore/go/swagger/User.go index 608ac360618..e7f26d1d10c 100644 --- a/samples/client/petstore/go/swagger/User.go +++ b/samples/client/petstore/go/swagger/User.go @@ -4,13 +4,13 @@ import ( ) type User struct { - id int64 `json:"id,omitempty"` - username string `json:"username,omitempty"` - firstName string `json:"firstName,omitempty"` - lastName string `json:"lastName,omitempty"` - email string `json:"email,omitempty"` - password string `json:"password,omitempty"` - phone string `json:"phone,omitempty"` - userStatus int32 `json:"userStatus,omitempty"` + Id int64 `json:"id,omitempty"` + Username string `json:"username,omitempty"` + FirstName string `json:"firstName,omitempty"` + LastName string `json:"lastName,omitempty"` + Email string `json:"email,omitempty"` + Password string `json:"password,omitempty"` + Phone string `json:"phone,omitempty"` + UserStatus int32 `json:"userStatus,omitempty"` } diff --git a/samples/client/petstore/go/swagger/UserApi.go b/samples/client/petstore/go/swagger/UserApi.go index 0a1abeb7827..31c26c7b6e7 100644 --- a/samples/client/petstore/go/swagger/UserApi.go +++ b/samples/client/petstore/go/swagger/UserApi.go @@ -11,7 +11,7 @@ import ( type UserApi struct { basePath string apiClient ApiClient - sling *sling.Sling + //sling *sling.Sling } func NewUserApi() *UserApi{ @@ -29,399 +29,250 @@ func NewUserApiWithBasePath(basePath string) *UserApi{ /** * Create user * This can only be done by the logged in user. - * @param body Created user object + * @param Body Created user object * @return void */ -//func (a UserApi) createUser (body User) (error) { -func (a UserApi) createUser (body User) (error) { +//func (a UserApi) CreateUser (Body User) (error) { +func (a UserApi) CreateUser (Body User) (error) { - _sling := a.sling.Post(a.basePath) + _sling := sling.New().Post(a.basePath) // create path and map variables - path := "/user" - + path := "/v2/user" _sling = _sling.Path(path) - + // accept header + accepts := []string { "application/json", "application/xml" } + for key := range accepts { + _sling = _sling.Set("Accept", accepts[key]) + break // only use the first Accept + } - - //contentTypes := []string { } - - // body params - _sling = _sling.BodyJSON(body) - //b, _ := json.Marshal(body) - //bodyParams["body"] = string(b) - - - resp, err := _sling.Request() - fmt.Println("createUser response: void, ", resp, err) + fmt.Println("CreateUser response: void, ", resp, err) return err - - - - - //response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) - //if err != nil { - // log.Fatal(err) - //} - - // - - // - //return err } /** * Creates list of users with given input array * - * @param body List of user object + * @param Body List of user object * @return void */ -//func (a UserApi) createUsersWithArrayInput (body []User) (error) { -func (a UserApi) createUsersWithArrayInput (body []User) (error) { +//func (a UserApi) CreateUsersWithArrayInput (Body []User) (error) { +func (a UserApi) CreateUsersWithArrayInput (Body []User) (error) { - _sling := a.sling.Post(a.basePath) + _sling := sling.New().Post(a.basePath) // create path and map variables - path := "/user/createWithArray" - + path := "/v2/user/createWithArray" _sling = _sling.Path(path) - + // accept header + accepts := []string { "application/json", "application/xml" } + for key := range accepts { + _sling = _sling.Set("Accept", accepts[key]) + break // only use the first Accept + } - - //contentTypes := []string { } - - // body params - _sling = _sling.BodyJSON(body) - //b, _ := json.Marshal(body) - //bodyParams["body"] = string(b) - - - resp, err := _sling.Request() - fmt.Println("createUsersWithArrayInput response: void, ", resp, err) + fmt.Println("CreateUsersWithArrayInput response: void, ", resp, err) return err - - - - - //response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) - //if err != nil { - // log.Fatal(err) - //} - - // - - // - //return err } /** * Creates list of users with given input array * - * @param body List of user object + * @param Body List of user object * @return void */ -//func (a UserApi) createUsersWithListInput (body []User) (error) { -func (a UserApi) createUsersWithListInput (body []User) (error) { +//func (a UserApi) CreateUsersWithListInput (Body []User) (error) { +func (a UserApi) CreateUsersWithListInput (Body []User) (error) { - _sling := a.sling.Post(a.basePath) + _sling := sling.New().Post(a.basePath) // create path and map variables - path := "/user/createWithList" - + path := "/v2/user/createWithList" _sling = _sling.Path(path) - + // accept header + accepts := []string { "application/json", "application/xml" } + for key := range accepts { + _sling = _sling.Set("Accept", accepts[key]) + break // only use the first Accept + } - - //contentTypes := []string { } - - // body params - _sling = _sling.BodyJSON(body) - //b, _ := json.Marshal(body) - //bodyParams["body"] = string(b) - - - resp, err := _sling.Request() - fmt.Println("createUsersWithListInput response: void, ", resp, err) + fmt.Println("CreateUsersWithListInput response: void, ", resp, err) return err - - - - - //response, err := a.apiClient.CallApi(a.basePath, path, "Post", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) - //if err != nil { - // log.Fatal(err) - //} - - // - - // - //return err } /** * Logs user into the system * - * @param username The user name for login - * @param password The password for login in clear text + * @param Username The user name for login + * @param Password The password for login in clear text * @return string */ -//func (a UserApi) loginUser (username string, password string) (string, error) { -func (a UserApi) loginUser (username string, password string) (string, error) { +//func (a UserApi) LoginUser (Username string, Password string) (string, error) { +func (a UserApi) LoginUser (Username string, Password string) (string, error) { - _sling := a.sling.Get(a.basePath) + _sling := sling.New().Get(a.basePath) // create path and map variables - path := "/user/login" - + path := "/v2/user/login" _sling = _sling.Path(path) type QueryParams struct { - username string `url:"username,omitempty"` - password string `url:"password,omitempty"` + Username string `url:"username,omitempty"` + Password string `url:"password,omitempty"` +} + _sling = _sling.QueryStruct(&QueryParams{ Username: Username,Password: Password }) + // accept header + accepts := []string { "application/json", "application/xml" } + for key := range accepts { + _sling = _sling.Set("Accept", accepts[key]) + break // only use the first Accept } - _sling = _sling.QueryStruct(&QueryParams{ username: username,password: password }) - - - //contentTypes := []string { } - - - - - - - var response string + response := new(string) resp, err := _sling.ReceiveSuccess(response) - fmt.Println("loginUser response: ", response, resp, err) - return response, err - - - - - //response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) - //if err != nil { - // log.Fatal(err) - //} - - //ApiClient.Deserialize(response, "", "string") - - //var response string - //err = json.Unmarshal([]byte(req), &response) - //return response, err - // + fmt.Println("LoginUser response: ", response, resp, err) + return *response, err } /** * Logs out current logged in user session * * @return void */ -//func (a UserApi) logoutUser () (error) { -func (a UserApi) logoutUser () (error) { +//func (a UserApi) LogoutUser () (error) { +func (a UserApi) LogoutUser () (error) { - _sling := a.sling.Get(a.basePath) + _sling := sling.New().Get(a.basePath) // create path and map variables - path := "/user/logout" - + path := "/v2/user/logout" _sling = _sling.Path(path) - + // accept header + accepts := []string { "application/json", "application/xml" } + for key := range accepts { + _sling = _sling.Set("Accept", accepts[key]) + break // only use the first Accept + } - - //contentTypes := []string { } - - - - resp, err := _sling.Request() - fmt.Println("logoutUser response: void, ", resp, err) + fmt.Println("LogoutUser response: void, ", resp, err) return err - - - - - //response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) - //if err != nil { - // log.Fatal(err) - //} - - // - - // - //return err } /** * Get user by user name * - * @param username The name that needs to be fetched. Use user1 for testing. + * @param Username The name that needs to be fetched. Use user1 for testing. * @return User */ -//func (a UserApi) getUserByName (username string) (User, error) { -func (a UserApi) getUserByName (username string) (User, error) { +//func (a UserApi) GetUserByName (Username string) (User, error) { +func (a UserApi) GetUserByName (Username string) (User, error) { - _sling := a.sling.Get(a.basePath) + _sling := sling.New().Get(a.basePath) // create path and map variables - path := "/user/{username}" - //path = regexp.MustCompile("{" + "username" + "}").ReplaceAllString(path, "$1") - //path = path.Replace("\\{" + "username" + "\\}", ApiClient.EscapeString(username)) - path = strings.Replace(path, "{" + "username" + "}", fmt.Sprintf("%b", username), -1) - + path := "/v2/user/{username}" + path = strings.Replace(path, "{" + "username" + "}", fmt.Sprintf("%v", Username), -1) _sling = _sling.Path(path) - + // accept header + accepts := []string { "application/json", "application/xml" } + for key := range accepts { + _sling = _sling.Set("Accept", accepts[key]) + break // only use the first Accept + } - - //contentTypes := []string { } - - - - - - var response User + response := new(User) resp, err := _sling.ReceiveSuccess(response) - fmt.Println("getUserByName response: ", response, resp, err) - return response, err - - - - - //response, err := a.apiClient.CallApi(a.basePath, path, "Get", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) - //if err != nil { - // log.Fatal(err) - //} - - //ApiClient.Deserialize(response, "", "User") - - //var response User - //err = json.Unmarshal([]byte(req), &response) - //return response, err - // + fmt.Println("GetUserByName response: ", response, resp, err) + return *response, err } /** * Updated user * This can only be done by the logged in user. - * @param username name that need to be deleted - * @param body Updated user object + * @param Username name that need to be deleted + * @param Body Updated user object * @return void */ -//func (a UserApi) updateUser (username string, body User) (error) { -func (a UserApi) updateUser (username string, body User) (error) { +//func (a UserApi) UpdateUser (Username string, Body User) (error) { +func (a UserApi) UpdateUser (Username string, Body User) (error) { - _sling := a.sling.Put(a.basePath) + _sling := sling.New().Put(a.basePath) // create path and map variables - path := "/user/{username}" - //path = regexp.MustCompile("{" + "username" + "}").ReplaceAllString(path, "$1") - //path = path.Replace("\\{" + "username" + "\\}", ApiClient.EscapeString(username)) - path = strings.Replace(path, "{" + "username" + "}", fmt.Sprintf("%b", username), -1) - + path := "/v2/user/{username}" + path = strings.Replace(path, "{" + "username" + "}", fmt.Sprintf("%v", Username), -1) _sling = _sling.Path(path) - + // accept header + accepts := []string { "application/json", "application/xml" } + for key := range accepts { + _sling = _sling.Set("Accept", accepts[key]) + break // only use the first Accept + } - - //contentTypes := []string { } - - // body params - _sling = _sling.BodyJSON(body) - //b, _ := json.Marshal(body) - //bodyParams["body"] = string(b) - - - resp, err := _sling.Request() - fmt.Println("updateUser response: void, ", resp, err) + fmt.Println("UpdateUser response: void, ", resp, err) return err - - - - - //response, err := a.apiClient.CallApi(a.basePath, path, "Put", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) - //if err != nil { - // log.Fatal(err) - //} - - // - - // - //return err } /** * Delete user * This can only be done by the logged in user. - * @param username The name that needs to be deleted + * @param Username The name that needs to be deleted * @return void */ -//func (a UserApi) deleteUser (username string) (error) { -func (a UserApi) deleteUser (username string) (error) { +//func (a UserApi) DeleteUser (Username string) (error) { +func (a UserApi) DeleteUser (Username string) (error) { - _sling := a.sling.Delete(a.basePath) + _sling := sling.New().Delete(a.basePath) // create path and map variables - path := "/user/{username}" - //path = regexp.MustCompile("{" + "username" + "}").ReplaceAllString(path, "$1") - //path = path.Replace("\\{" + "username" + "\\}", ApiClient.EscapeString(username)) - path = strings.Replace(path, "{" + "username" + "}", fmt.Sprintf("%b", username), -1) - + path := "/v2/user/{username}" + path = strings.Replace(path, "{" + "username" + "}", fmt.Sprintf("%v", Username), -1) _sling = _sling.Path(path) - + // accept header + accepts := []string { "application/json", "application/xml" } + for key := range accepts { + _sling = _sling.Set("Accept", accepts[key]) + break // only use the first Accept + } - - //contentTypes := []string { } - - - - resp, err := _sling.Request() - fmt.Println("deleteUser response: void, ", resp, err) + fmt.Println("DeleteUser response: void, ", resp, err) return err - - - - - //response, err := a.apiClient.CallApi(a.basePath, path, "Delete", queryParams, headerParams, formParams, fileParams, bodyParams, contentTypes) - //if err != nil { - // log.Fatal(err) - //} - - // - - // - //return err } diff --git a/samples/client/petstore/go/test.go b/samples/client/petstore/go/test.go index d1dbf4272a2..f28a510f3cc 100644 --- a/samples/client/petstore/go/test.go +++ b/samples/client/petstore/go/test.go @@ -1,15 +1,18 @@ package main import ( + sw "./swagger" "fmt" - // "log" - swagger "./swagger" ) func main() { fmt.Println("hello world") - s := swagger.NewPetApi() - &s.updatePetWithForm("2", "golang", "available") + s := sw.NewPetApi() + //s.UpdatePetWithForm("2", "golang", "available") + + // test Get + resp, err := s.GetPetById(3) + fmt.Println("GetPetById: ", resp, err) } From 0d377507b4bce9b89e0cfe85498c5e6a43bd00fa Mon Sep 17 00:00:00 2001 From: wing328 Date: Mon, 21 Dec 2015 22:32:54 +0800 Subject: [PATCH 019/623] fix post model and update test --- .../codegen/languages/GoClientCodegen.java | 7 +++- .../src/main/resources/go/api.mustache | 12 +++--- samples/client/petstore/go/swagger/Order.go | 1 + samples/client/petstore/go/swagger/PetApi.go | 37 +++++++++-------- .../client/petstore/go/swagger/StoreApi.go | 18 +++++---- samples/client/petstore/go/swagger/UserApi.go | 40 +++++++++++-------- samples/client/petstore/go/test.go | 16 ++++++-- 7 files changed, 81 insertions(+), 50 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 c9ec24de6b2..81008d552cb 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 @@ -163,7 +163,6 @@ public class GoClientCodegen extends DefaultCodegen implements CodegenConfig { @Override public String getTypeDeclaration(Property p) { - String swaggerType = getSwaggerType(p); if(p instanceof ArrayProperty) { ArrayProperty ap = (ArrayProperty) p; Property inner = ap.getItems(); @@ -175,6 +174,12 @@ public class GoClientCodegen extends DefaultCodegen implements CodegenConfig { return getSwaggerType(p) + "[string]" + getTypeDeclaration(inner); } + return super.getTypeDeclaration(p); + } + + @Override + public String getSwaggerType(Property p) { + String swaggerType = super.getSwaggerType(p); String type = null; if(typeMapping.containsKey(swaggerType)) { type = typeMapping.get(swaggerType); diff --git a/modules/swagger-codegen/src/main/resources/go/api.mustache b/modules/swagger-codegen/src/main/resources/go/api.mustache index 16512786abc..d009ad10ef2 100644 --- a/modules/swagger-codegen/src/main/resources/go/api.mustache +++ b/modules/swagger-codegen/src/main/resources/go/api.mustache @@ -69,17 +69,17 @@ func (a {{classname}}) {{nickname}} ({{#allParams}}{{paramName}} {{{dataType}}}{ } _sling = _sling.BodyForm(&FormParams{ {{#formParams}}{{paramName}}: {{paramName}}{{#hasMore}},{{/hasMore}}{{/formParams}} }) {{/hasFormParams}} -{{#hasBodyParams}}{{#bodyParams}}// body params +{{#hasBodyParam}}{{#bodyParams}}// body params _sling = _sling.BodyJSON({{paramName}}) -{{/bodyParams}}{{/hasBodyParams}} +{{/bodyParams}}{{/hasBodyParam}} {{#returnType}} response := new({{returnType}}) - resp, err := _sling.ReceiveSuccess(response) - fmt.Println("{{operationId}} response: ", response, resp, err) + _, err := _sling.ReceiveSuccess(response) + //fmt.Println("{{operationId}} response: ", response, resp, err) return *response, err {{/returnType}}{{^returnType}} - resp, err := _sling.Request() - fmt.Println("{{operationId}} response: void, ", resp, err) + _, err := _sling.ReceiveSuccess(nil) + //fmt.Println("{{operationId}} response: void, ", resp, err) return err {{/returnType}} } diff --git a/samples/client/petstore/go/swagger/Order.go b/samples/client/petstore/go/swagger/Order.go index 254b962de2f..9db0f945110 100644 --- a/samples/client/petstore/go/swagger/Order.go +++ b/samples/client/petstore/go/swagger/Order.go @@ -1,6 +1,7 @@ package swagger import ( + "time" ) type Order struct { diff --git a/samples/client/petstore/go/swagger/PetApi.go b/samples/client/petstore/go/swagger/PetApi.go index a83f426471d..a4ed5033d57 100644 --- a/samples/client/petstore/go/swagger/PetApi.go +++ b/samples/client/petstore/go/swagger/PetApi.go @@ -6,6 +6,7 @@ import ( "fmt" // "log" "github.com/dghubble/sling" + "os" ) type PetApi struct { @@ -49,11 +50,13 @@ func (a PetApi) UpdatePet (Body Pet) (error) { break // only use the first Accept } +// body params + _sling = _sling.BodyJSON(Body) - resp, err := _sling.Request() - fmt.Println("UpdatePet response: void, ", resp, err) + _, err := _sling.ReceiveSuccess(nil) + //fmt.Println("UpdatePet response: void, ", resp, err) return err } /** @@ -79,11 +82,13 @@ func (a PetApi) AddPet (Body Pet) (error) { break // only use the first Accept } +// body params + _sling = _sling.BodyJSON(Body) - resp, err := _sling.Request() - fmt.Println("AddPet response: void, ", resp, err) + _, err := _sling.ReceiveSuccess(nil) + //fmt.Println("AddPet response: void, ", resp, err) return err } /** @@ -117,8 +122,8 @@ func (a PetApi) FindPetsByStatus (Status []string) ([]Pet, error) { response := new([]Pet) - resp, err := _sling.ReceiveSuccess(response) - fmt.Println("FindPetsByStatus response: ", response, resp, err) + _, err := _sling.ReceiveSuccess(response) + //fmt.Println("FindPetsByStatus response: ", response, resp, err) return *response, err } /** @@ -152,8 +157,8 @@ func (a PetApi) FindPetsByTags (Tags []string) ([]Pet, error) { response := new([]Pet) - resp, err := _sling.ReceiveSuccess(response) - fmt.Println("FindPetsByTags response: ", response, resp, err) + _, err := _sling.ReceiveSuccess(response) + //fmt.Println("FindPetsByTags response: ", response, resp, err) return *response, err } /** @@ -183,8 +188,8 @@ func (a PetApi) GetPetById (PetId int64) (Pet, error) { response := new(Pet) - resp, err := _sling.ReceiveSuccess(response) - fmt.Println("GetPetById response: ", response, resp, err) + _, err := _sling.ReceiveSuccess(response) + //fmt.Println("GetPetById response: ", response, resp, err) return *response, err } /** @@ -221,8 +226,8 @@ func (a PetApi) UpdatePetWithForm (PetId string, Name string, Status string) (er - resp, err := _sling.Request() - fmt.Println("UpdatePetWithForm response: void, ", resp, err) + _, err := _sling.ReceiveSuccess(nil) + //fmt.Println("UpdatePetWithForm response: void, ", resp, err) return err } /** @@ -255,8 +260,8 @@ func (a PetApi) DeletePet (PetId int64, ApiKey string) (error) { - resp, err := _sling.Request() - fmt.Println("DeletePet response: void, ", resp, err) + _, err := _sling.ReceiveSuccess(nil) + //fmt.Println("DeletePet response: void, ", resp, err) return err } /** @@ -293,7 +298,7 @@ func (a PetApi) UploadFile (PetId int64, AdditionalMetadata string, File *os.Fil - resp, err := _sling.Request() - fmt.Println("UploadFile response: void, ", resp, err) + _, err := _sling.ReceiveSuccess(nil) + //fmt.Println("UploadFile response: void, ", resp, err) return err } diff --git a/samples/client/petstore/go/swagger/StoreApi.go b/samples/client/petstore/go/swagger/StoreApi.go index 1682b6ce16a..4af27d02b7a 100644 --- a/samples/client/petstore/go/swagger/StoreApi.go +++ b/samples/client/petstore/go/swagger/StoreApi.go @@ -51,8 +51,8 @@ func (a StoreApi) GetInventory () (map[string]int32, error) { response := new(map[string]int32) - resp, err := _sling.ReceiveSuccess(response) - fmt.Println("GetInventory response: ", response, resp, err) + _, err := _sling.ReceiveSuccess(response) + //fmt.Println("GetInventory response: ", response, resp, err) return *response, err } /** @@ -78,11 +78,13 @@ func (a StoreApi) PlaceOrder (Body Order) (Order, error) { break // only use the first Accept } +// body params + _sling = _sling.BodyJSON(Body) response := new(Order) - resp, err := _sling.ReceiveSuccess(response) - fmt.Println("PlaceOrder response: ", response, resp, err) + _, err := _sling.ReceiveSuccess(response) + //fmt.Println("PlaceOrder response: ", response, resp, err) return *response, err } /** @@ -112,8 +114,8 @@ func (a StoreApi) GetOrderById (OrderId string) (Order, error) { response := new(Order) - resp, err := _sling.ReceiveSuccess(response) - fmt.Println("GetOrderById response: ", response, resp, err) + _, err := _sling.ReceiveSuccess(response) + //fmt.Println("GetOrderById response: ", response, resp, err) return *response, err } /** @@ -143,7 +145,7 @@ func (a StoreApi) DeleteOrder (OrderId string) (error) { - resp, err := _sling.Request() - fmt.Println("DeleteOrder response: void, ", resp, err) + _, err := _sling.ReceiveSuccess(nil) + //fmt.Println("DeleteOrder response: void, ", resp, err) return err } diff --git a/samples/client/petstore/go/swagger/UserApi.go b/samples/client/petstore/go/swagger/UserApi.go index 31c26c7b6e7..c5da3c81b6d 100644 --- a/samples/client/petstore/go/swagger/UserApi.go +++ b/samples/client/petstore/go/swagger/UserApi.go @@ -49,11 +49,13 @@ func (a UserApi) CreateUser (Body User) (error) { break // only use the first Accept } +// body params + _sling = _sling.BodyJSON(Body) - resp, err := _sling.Request() - fmt.Println("CreateUser response: void, ", resp, err) + _, err := _sling.ReceiveSuccess(nil) + //fmt.Println("CreateUser response: void, ", resp, err) return err } /** @@ -79,11 +81,13 @@ func (a UserApi) CreateUsersWithArrayInput (Body []User) (error) { break // only use the first Accept } +// body params + _sling = _sling.BodyJSON(Body) - resp, err := _sling.Request() - fmt.Println("CreateUsersWithArrayInput response: void, ", resp, err) + _, err := _sling.ReceiveSuccess(nil) + //fmt.Println("CreateUsersWithArrayInput response: void, ", resp, err) return err } /** @@ -109,11 +113,13 @@ func (a UserApi) CreateUsersWithListInput (Body []User) (error) { break // only use the first Accept } +// body params + _sling = _sling.BodyJSON(Body) - resp, err := _sling.Request() - fmt.Println("CreateUsersWithListInput response: void, ", resp, err) + _, err := _sling.ReceiveSuccess(nil) + //fmt.Println("CreateUsersWithListInput response: void, ", resp, err) return err } /** @@ -149,8 +155,8 @@ func (a UserApi) LoginUser (Username string, Password string) (string, error) { response := new(string) - resp, err := _sling.ReceiveSuccess(response) - fmt.Println("LoginUser response: ", response, resp, err) + _, err := _sling.ReceiveSuccess(response) + //fmt.Println("LoginUser response: ", response, resp, err) return *response, err } /** @@ -178,8 +184,8 @@ func (a UserApi) LogoutUser () (error) { - resp, err := _sling.Request() - fmt.Println("LogoutUser response: void, ", resp, err) + _, err := _sling.ReceiveSuccess(nil) + //fmt.Println("LogoutUser response: void, ", resp, err) return err } /** @@ -209,8 +215,8 @@ func (a UserApi) GetUserByName (Username string) (User, error) { response := new(User) - resp, err := _sling.ReceiveSuccess(response) - fmt.Println("GetUserByName response: ", response, resp, err) + _, err := _sling.ReceiveSuccess(response) + //fmt.Println("GetUserByName response: ", response, resp, err) return *response, err } /** @@ -238,11 +244,13 @@ func (a UserApi) UpdateUser (Username string, Body User) (error) { break // only use the first Accept } +// body params + _sling = _sling.BodyJSON(Body) - resp, err := _sling.Request() - fmt.Println("UpdateUser response: void, ", resp, err) + _, err := _sling.ReceiveSuccess(nil) + //fmt.Println("UpdateUser response: void, ", resp, err) return err } /** @@ -272,7 +280,7 @@ func (a UserApi) DeleteUser (Username string) (error) { - resp, err := _sling.Request() - fmt.Println("DeleteUser response: void, ", resp, err) + _, err := _sling.ReceiveSuccess(nil) + //fmt.Println("DeleteUser response: void, ", resp, err) return err } diff --git a/samples/client/petstore/go/test.go b/samples/client/petstore/go/test.go index f28a510f3cc..a2f72ca9ef3 100644 --- a/samples/client/petstore/go/test.go +++ b/samples/client/petstore/go/test.go @@ -2,16 +2,26 @@ package main import ( sw "./swagger" + "encoding/json" "fmt" ) func main() { - fmt.Println("hello world") s := sw.NewPetApi() - //s.UpdatePetWithForm("2", "golang", "available") - // test Get + // test POST(body) + newPet := (sw.Pet{Id: 12830, Name: "gopher", + PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "pending"}) + + jsonNewPet, _ := json.Marshal(newPet) + fmt.Println("newPet:", string(jsonNewPet)) + s.AddPet(newPet) + + // test POST(form) + s.UpdatePetWithForm("12830", "golang", "available") + + // test GET resp, err := s.GetPetById(3) fmt.Println("GetPetById: ", resp, err) From 6b2f15b2cf342377bba4679ef2f7a094a7c29231 Mon Sep 17 00:00:00 2001 From: wing328 Date: Tue, 22 Dec 2015 00:12:18 +0800 Subject: [PATCH 020/623] add packageName support to golang --- .../codegen/languages/GoClientCodegen.java | 61 ++++++++++++++----- .../src/main/resources/go/README.mustache | 12 ++++ .../src/main/resources/go/api.mustache | 6 +- .../src/main/resources/go/model.mustache | 2 +- .../client/petstore/go/swagger/ApiClient.go | 33 ---------- samples/client/petstore/go/swagger/PetApi.go | 33 ++++++++-- .../client/petstore/go/swagger/StoreApi.go | 4 -- samples/client/petstore/go/swagger/UserApi.go | 4 -- 8 files changed, 89 insertions(+), 66 deletions(-) create mode 100644 modules/swagger-codegen/src/main/resources/go/README.mustache delete mode 100644 samples/client/petstore/go/swagger/ApiClient.go 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 81008d552cb..a7488983d40 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 @@ -16,10 +16,8 @@ import org.slf4j.LoggerFactory; public class GoClientCodegen extends DefaultCodegen implements CodegenConfig { static Logger LOGGER = LoggerFactory.getLogger(GoClientCodegen.class); - protected String invokerPackage = "swagger"; - protected String groupId = "io.swagger"; - protected String artifactId = "swagger-go-client"; - protected String artifactVersion = "1.0.0"; + protected String packageName = "swagger"; + protected String packageVersion = "1.0.0"; public CodegenType getTag() { return CodegenType.CLIENT; @@ -39,8 +37,6 @@ public class GoClientCodegen extends DefaultCodegen implements CodegenConfig { modelTemplateFiles.put("model.mustache", ".go"); apiTemplateFiles.put("api.mustache", ".go"); templateDir = "go"; - apiPackage = invokerPackage; - modelPackage = invokerPackage; reservedWords = new HashSet ( Arrays.asList( @@ -51,11 +47,6 @@ public class GoClientCodegen extends DefaultCodegen implements CodegenConfig { "continue", "for", "import", "return", "var") ); - additionalProperties.put("invokerPackage", invokerPackage); - /*additionalProperties.put("groupId", groupId); - additionalProperties.put("artifactId", artifactId); - additionalProperties.put("artifactVersion", artifactVersion);*/ - defaultIncludes = new HashSet( Arrays.asList( "map", @@ -94,16 +85,48 @@ public class GoClientCodegen extends DefaultCodegen implements CodegenConfig { typeMapping.put("Date", "time.Time"); typeMapping.put("DateTime", "time.Time"); typeMapping.put("password", "string"); + typeMapping.put("File", "*os.File"); typeMapping.put("file", "*os.File"); - //typeMapping.put("array", "array"); - //typeMapping.put("map", "map"); importMapping = new HashMap(); importMapping.put("time.Time", "time"); importMapping.put("*os.File", "os"); + cliOptions.clear(); + cliOptions.add(new CliOption(CodegenConstants.PACKAGE_NAME, "Go package name (convention: lowercase).") + .defaultValue("swagger")); + cliOptions.add(new CliOption(CodegenConstants.PACKAGE_VERSION, "Go package version.") + .defaultValue("1.0.0")); + } + @Override + public void processOpts() { + //super.processOpts(); + + if (additionalProperties.containsKey(CodegenConstants.PACKAGE_NAME)) { + setPackageName((String) additionalProperties.get(CodegenConstants.PACKAGE_NAME)); + } + else { + setPackageName("swagger"); + } + + if (additionalProperties.containsKey(CodegenConstants.PACKAGE_VERSION)) { + setPackageVersion((String) additionalProperties.get(CodegenConstants.PACKAGE_VERSION)); + } + else { + setPackageVersion("1.0.0"); + } + + additionalProperties.put(CodegenConstants.PACKAGE_NAME, packageName); + additionalProperties.put(CodegenConstants.PACKAGE_VERSION, packageVersion); + + modelPackage = packageName; + apiPackage = packageName; + + supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); + } + @Override public String escapeReservedWord(String name) { return "_" + name; @@ -111,11 +134,11 @@ public class GoClientCodegen extends DefaultCodegen implements CodegenConfig { @Override public String apiFileFolder() { - return outputFolder + File.separator + invokerPackage; + return outputFolder + File.separator + packageName; } public String modelFileFolder() { - return outputFolder + File.separator + invokerPackage; + return outputFolder + File.separator + packageName; } @Override @@ -246,4 +269,12 @@ public class GoClientCodegen extends DefaultCodegen implements CodegenConfig { && !languageSpecificPrimitives.contains(type); } + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + public void setPackageVersion(String packageVersion) { + this.packageVersion = packageVersion; + } + } diff --git a/modules/swagger-codegen/src/main/resources/go/README.mustache b/modules/swagger-codegen/src/main/resources/go/README.mustache new file mode 100644 index 00000000000..586b35ed3f5 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/go/README.mustache @@ -0,0 +1,12 @@ +# Go API client for {{packageName}} + +## Overview +This API client was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the [swagger-spec](https://github.com/swagger-api/swagger-spec) from a remote server, you can easily generate an API client. + + +## Installation +Put the package under your project folder and add the following in import: +``` + "./{{packageName}}" +``` + diff --git a/modules/swagger-codegen/src/main/resources/go/api.mustache b/modules/swagger-codegen/src/main/resources/go/api.mustache index d009ad10ef2..ae7fb8412b0 100644 --- a/modules/swagger-codegen/src/main/resources/go/api.mustache +++ b/modules/swagger-codegen/src/main/resources/go/api.mustache @@ -1,11 +1,9 @@ -package {{invokerPackage}} +package {{packageName}} {{#operations}} import ( -// "encoding/json" "strings" "fmt" -// "log" "github.com/dghubble/sling" {{#imports}} "{{import}}" {{/imports}} @@ -13,8 +11,6 @@ import ( type {{classname}} struct { basePath string - apiClient ApiClient - //sling *sling.Sling } func New{{classname}}() *{{classname}}{ diff --git a/modules/swagger-codegen/src/main/resources/go/model.mustache b/modules/swagger-codegen/src/main/resources/go/model.mustache index bbd7e772d0e..83ba416883d 100644 --- a/modules/swagger-codegen/src/main/resources/go/model.mustache +++ b/modules/swagger-codegen/src/main/resources/go/model.mustache @@ -1,4 +1,4 @@ -package {{invokerPackage}} +package {{packageName}} {{#models}} import ( diff --git a/samples/client/petstore/go/swagger/ApiClient.go b/samples/client/petstore/go/swagger/ApiClient.go deleted file mode 100644 index 420a7df21ed..00000000000 --- a/samples/client/petstore/go/swagger/ApiClient.go +++ /dev/null @@ -1,33 +0,0 @@ -package swagger - -import ( -// "encoding/json" - "os" -// "fmt" - "log" -// "net/url" -// napping "github.com/jmcvetta/napping" -) - -type ApiClient struct { - basePath string - logger *log.Logger -} - -func NewApiClient() *ApiClient { - return &ApiClient { - basePath: "http://petstore.swagger.io/v2", - logger: log.New(os.Stderr, "", log.LstdFlags)} -} - -func NewApiClientWithBasePath(basePath string) *ApiClient { - return &ApiClient { - basePath: basePath, - logger: log.New(os.Stderr, "", log.LstdFlags)} -} - - -func (a *ApiClient) CallApi(basePath string, path string, httpMethod string, queryParams map[string]string, headerParams map[string]string, formParams map[string]string, fileParams map[string]string, bodyParams map[string]string, contentType []string) { - a.logger.Printf("Requesting %v\n%v\n%v\n%v\n%v\n%v\n%v\n%v\n%v\n", basePath, path, httpMethod, queryParams, headerParams, formParams, fileParams, bodyParams, contentType) - -} diff --git a/samples/client/petstore/go/swagger/PetApi.go b/samples/client/petstore/go/swagger/PetApi.go index a4ed5033d57..51b32061e0f 100644 --- a/samples/client/petstore/go/swagger/PetApi.go +++ b/samples/client/petstore/go/swagger/PetApi.go @@ -1,18 +1,14 @@ package swagger import ( -// "encoding/json" "strings" "fmt" -// "log" "github.com/dghubble/sling" "os" ) type PetApi struct { basePath string - apiClient ApiClient - //sling *sling.Sling } func NewPetApi() *PetApi{ @@ -264,6 +260,35 @@ func (a PetApi) DeletePet (PetId int64, ApiKey string) (error) { //fmt.Println("DeletePet response: void, ", resp, err) return err } +/** + * downloads an image + * + * @return *os.File + */ +//func (a PetApi) DownloadFile () (*os.File, error) { +func (a PetApi) DownloadFile () (*os.File, error) { + + _sling := sling.New().Get(a.basePath) + + // create path and map variables + path := "/v2/pet/{petId}/downloadImage" + + _sling = _sling.Path(path) + + // accept header + accepts := []string { "application/octet-stream" } + for key := range accepts { + _sling = _sling.Set("Accept", accepts[key]) + break // only use the first Accept + } + + + + response := new(*os.File) + _, err := _sling.ReceiveSuccess(response) + //fmt.Println("DownloadFile response: ", response, resp, err) + return *response, err +} /** * uploads an image * diff --git a/samples/client/petstore/go/swagger/StoreApi.go b/samples/client/petstore/go/swagger/StoreApi.go index 4af27d02b7a..c43d320077c 100644 --- a/samples/client/petstore/go/swagger/StoreApi.go +++ b/samples/client/petstore/go/swagger/StoreApi.go @@ -1,17 +1,13 @@ package swagger import ( -// "encoding/json" "strings" "fmt" -// "log" "github.com/dghubble/sling" ) type StoreApi struct { basePath string - apiClient ApiClient - //sling *sling.Sling } func NewStoreApi() *StoreApi{ diff --git a/samples/client/petstore/go/swagger/UserApi.go b/samples/client/petstore/go/swagger/UserApi.go index c5da3c81b6d..9907453bd39 100644 --- a/samples/client/petstore/go/swagger/UserApi.go +++ b/samples/client/petstore/go/swagger/UserApi.go @@ -1,17 +1,13 @@ package swagger import ( -// "encoding/json" "strings" "fmt" -// "log" "github.com/dghubble/sling" ) type UserApi struct { basePath string - apiClient ApiClient - //sling *sling.Sling } func NewUserApi() *UserApi{ From b46e3ad400b1447c7c5697b517e581ad34f5bbf4 Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Mon, 21 Dec 2015 22:16:11 -0800 Subject: [PATCH 021/623] updated for #1749 --- .../io/swagger/codegen/plugin/AdditionalParams.java | 6 +++--- .../java/io/swagger/codegen/plugin/CodeGenMojo.java | 10 +++++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/modules/swagger-codegen-maven-plugin/src/main/java/io/swagger/codegen/plugin/AdditionalParams.java b/modules/swagger-codegen-maven-plugin/src/main/java/io/swagger/codegen/plugin/AdditionalParams.java index f3678e783e0..7db012f439c 100644 --- a/modules/swagger-codegen-maven-plugin/src/main/java/io/swagger/codegen/plugin/AdditionalParams.java +++ b/modules/swagger-codegen-maven-plugin/src/main/java/io/swagger/codegen/plugin/AdditionalParams.java @@ -10,7 +10,7 @@ public final class AdditionalParams { public static final String MODEL_PACKAGE_PARAM = "modelPackage"; public static final String API_PACKAGE_PARAM = "apiPackage"; public static final String INVOKER_PACKAGE_PARAM = "invokerPackage"; + public static final String LIBRARY_PARAM = "library"; - private AdditionalParams() { - } -} + private AdditionalParams() {} +} \ No newline at end of file diff --git a/modules/swagger-codegen-maven-plugin/src/main/java/io/swagger/codegen/plugin/CodeGenMojo.java b/modules/swagger-codegen-maven-plugin/src/main/java/io/swagger/codegen/plugin/CodeGenMojo.java index 22726c84c04..50c9ce48f38 100644 --- a/modules/swagger-codegen-maven-plugin/src/main/java/io/swagger/codegen/plugin/CodeGenMojo.java +++ b/modules/swagger-codegen-maven-plugin/src/main/java/io/swagger/codegen/plugin/CodeGenMojo.java @@ -100,6 +100,12 @@ public class CodeGenMojo extends AbstractMojo { @Parameter(name = "configurationFile", required = false) private String configurationFile; + /** + * Sets the library + */ + @Parameter(name = "library", required = false) + private String library; + /** * A map of language-specific parameters as passed with the -c option to the command line */ @@ -139,7 +145,9 @@ public class CodeGenMojo extends AbstractMojo { System.setProperty(key, value); } } - + if (null != library) { + config.setLibrary(library); + } if (null != templateDirectory) { config.additionalProperties().put(TEMPLATE_DIR_PARAM, templateDirectory.getAbsolutePath()); } From 638ee8883048b6348ec23fbaf3035b36c42e6a9d Mon Sep 17 00:00:00 2001 From: Ian Chan Date: Wed, 23 Dec 2015 10:29:47 +1300 Subject: [PATCH 022/623] Removed Jersey2 test from spring-mvc codegen The previous patch to allow sub options to spring-mvc had removed the invalid Jersey2 option from spring-mvc codegen, this patch also fixes the associated test. --- .../codegen/options/SpringMVCServerOptionsProvider.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/SpringMVCServerOptionsProvider.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/SpringMVCServerOptionsProvider.java index 13a3600918d..e52373c3c08 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/SpringMVCServerOptionsProvider.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/SpringMVCServerOptionsProvider.java @@ -1,5 +1,6 @@ package io.swagger.codegen.options; +import io.swagger.codegen.CodegenConstants; import io.swagger.codegen.languages.SpringMVCServerCodegen; import java.util.HashMap; @@ -7,6 +8,7 @@ import java.util.Map; public class SpringMVCServerOptionsProvider extends JavaOptionsProvider { public static final String CONFIG_PACKAGE_VALUE = "configPackage"; + public static final String LIBRARY_VALUE = "j8-async"; @Override public String getLanguage() { @@ -17,6 +19,7 @@ public class SpringMVCServerOptionsProvider extends JavaOptionsProvider { public Map createOptions() { Map options = new HashMap(super.createOptions()); options.put(SpringMVCServerCodegen.CONFIG_PACKAGE, CONFIG_PACKAGE_VALUE); + options.put(CodegenConstants.LIBRARY, LIBRARY_VALUE); return options; } From a58901f375022eae80c73c61efa7bc0ba9e2670a Mon Sep 17 00:00:00 2001 From: xhh Date: Wed, 23 Dec 2015 18:58:16 +0800 Subject: [PATCH 023/623] Java okhttp-gson client: get/set connect timeout --- .../libraries/okhttp-gson/ApiClient.mustache | 18 ++++++++++++++++++ .../main/java/io/swagger/client/ApiClient.java | 18 ++++++++++++++++++ .../java/io/swagger/client/ApiClientTest.java | 12 ++++++++++++ 3 files changed, 48 insertions(+) diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache index 99dcdb51780..664e0e45a58 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache @@ -23,6 +23,7 @@ import java.util.List; import java.util.ArrayList; import java.util.Date; import java.util.TimeZone; +import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -471,6 +472,23 @@ public class ApiClient { return this; } + /** + * Connect timeout (in milliseconds). + */ + public int getConnectTimeout() { + return httpClient.getConnectTimeout(); + } + + /** + * Sets the connect timeout. + * A value of 0 means no timeout, otherwise values must be between 1 and + * {@link Integer#MAX_VALUE}. + */ + public ApiClient setConnectTimeout(int connectionTimeout) { + httpClient.setConnectTimeout(connectionTimeout, TimeUnit.MILLISECONDS); + return this; + } + /** * Format the given parameter object into string. */ diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/ApiClient.java index 19cb83d620c..0314969b99e 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/ApiClient.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.ArrayList; import java.util.Date; import java.util.TimeZone; +import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -470,6 +471,23 @@ public class ApiClient { return this; } + /** + * Connect timeout (in milliseconds). + */ + public int getConnectTimeout() { + return httpClient.getConnectTimeout(); + } + + /** + * Sets the connect timeout. + * A value of 0 means no timeout, otherwise values must be between 1 and + * {@link Integer#MAX_VALUE}. + */ + public ApiClient setConnectTimeout(int connectionTimeout) { + httpClient.setConnectTimeout(connectionTimeout, TimeUnit.MILLISECONDS); + return this; + } + /** * Format the given parameter object into string. */ diff --git a/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/ApiClientTest.java b/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/ApiClientTest.java index 9b5c6805744..ba143470c9a 100644 --- a/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/ApiClientTest.java +++ b/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/ApiClientTest.java @@ -184,6 +184,18 @@ public class ApiClientTest { auth.setApiKeyPrefix(null); } + @Test + public void testGetAndSetConnectTimeout() { + assertEquals(0, apiClient.getConnectTimeout()); + assertEquals(0, apiClient.getHttpClient().getConnectTimeout()); + + apiClient.setConnectTimeout(10000); + assertEquals(10000, apiClient.getConnectTimeout()); + assertEquals(10000, apiClient.getHttpClient().getConnectTimeout()); + + apiClient.setConnectTimeout(0); + } + @Test public void testParameterToPairsWhenNameIsInvalid() throws Exception { List pairs_a = apiClient.parameterToPairs("csv", null, new Integer(1)); From 7381b816ff6e48aed71a169d3c8f8a6b70a18408 Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Wed, 23 Dec 2015 05:50:46 -0800 Subject: [PATCH 024/623] fixes #1756 --- .../io/swagger/codegen/DefaultCodegen.java | 20 ++++--------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java index 8d84f065284..dd8d9aefa90 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java @@ -25,23 +25,8 @@ import io.swagger.models.parameters.Parameter; import io.swagger.models.parameters.PathParameter; import io.swagger.models.parameters.QueryParameter; import io.swagger.models.parameters.SerializableParameter; -import io.swagger.models.properties.AbstractNumericProperty; -import io.swagger.models.properties.ArrayProperty; -import io.swagger.models.properties.BooleanProperty; -import io.swagger.models.properties.ByteArrayProperty; -import io.swagger.models.properties.DateProperty; -import io.swagger.models.properties.DateTimeProperty; -import io.swagger.models.properties.DecimalProperty; -import io.swagger.models.properties.DoubleProperty; -import io.swagger.models.properties.FloatProperty; -import io.swagger.models.properties.IntegerProperty; -import io.swagger.models.properties.LongProperty; -import io.swagger.models.properties.MapProperty; -import io.swagger.models.properties.Property; -import io.swagger.models.properties.PropertyBuilder; +import io.swagger.models.properties.*; import io.swagger.models.properties.PropertyBuilder.PropertyId; -import io.swagger.models.properties.RefProperty; -import io.swagger.models.properties.StringProperty; import io.swagger.util.Json; import org.apache.commons.lang.StringUtils; @@ -423,6 +408,7 @@ public class DefaultCodegen { typeMapping.put("object", "Object"); typeMapping.put("integer", "Integer"); typeMapping.put("ByteArray", "byte[]"); + typeMapping.put("binary", "byte[]"); instantiationTypes = new HashMap(); @@ -636,6 +622,8 @@ public class DefaultCodegen { datatype = "string"; } else if (p instanceof ByteArrayProperty) { datatype = "ByteArray"; + } else if (p instanceof BinaryProperty) { + datatype = "binary"; } else if (p instanceof BooleanProperty) { datatype = "boolean"; } else if (p instanceof DateProperty) { From f2a510912bd3d0cc36a9e0cd37e54321cf42b523 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pa=C5=ADlo=20Ebermann?= Date: Wed, 23 Dec 2015 19:12:03 +0100 Subject: [PATCH 025/623] Fix #1743 by removing `*/` from the .settings ignore line. `*/.settings` applies to just the directory below the current one, where there is no such file. `.settings` applies to all files/directories named such in the whole project. --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index db34c76636c..02ecb7220cd 100644 --- a/.gitignore +++ b/.gitignore @@ -58,7 +58,7 @@ samples/client/petstore/silex/SwaggerServer/venodr/ samples/client/petstore/python/.projectile samples/client/petstore/python/.venv/ -*/.settings +.settings *.mustache~ *.java~ From 9181b6b0a7b6098a14f127ebede543c140444138 Mon Sep 17 00:00:00 2001 From: wing328 Date: Thu, 24 Dec 2015 14:13:18 +0800 Subject: [PATCH 026/623] update pom to use latest core and parser --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index cd1dd28b9d9..64f3b7eb5ce 100644 --- a/pom.xml +++ b/pom.xml @@ -568,10 +568,10 @@ - 1.0.14-SNAPSHOT + 1.0.15-SNAPSHOT 2.11.1 2.3.4 - 1.5.5-SNAPSHOT + 1.5.5 2.1.5-SNAPSHOT 2.3 1.2 From 43c0d20743acc210e283d8bad030588c4bcafee4 Mon Sep 17 00:00:00 2001 From: xhh Date: Thu, 24 Dec 2015 11:26:15 +0800 Subject: [PATCH 027/623] Ruby client: add "timeout" to configuration --- .../main/resources/ruby/api_client.mustache | 1 + .../resources/ruby/configuration.mustache | 5 ++++ .../petstore/ruby/lib/petstore/api_client.rb | 1 + .../ruby/lib/petstore/configuration.rb | 5 ++++ .../petstore/ruby/spec/api_client_spec.rb | 23 +++++++++++++++++-- 5 files changed, 33 insertions(+), 2 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/ruby/api_client.mustache b/modules/swagger-codegen/src/main/resources/ruby/api_client.mustache index 837b1234fd0..54854efe332 100644 --- a/modules/swagger-codegen/src/main/resources/ruby/api_client.mustache +++ b/modules/swagger-codegen/src/main/resources/ruby/api_client.mustache @@ -71,6 +71,7 @@ module {{moduleName}} :method => http_method, :headers => header_params, :params => query_params, + :timeout => @config.timeout, :ssl_verifypeer => @config.verify_ssl, :sslcert => @config.cert_file, :sslkey => @config.key_file, diff --git a/modules/swagger-codegen/src/main/resources/ruby/configuration.mustache b/modules/swagger-codegen/src/main/resources/ruby/configuration.mustache index 4c05f2560fa..160fa85a57d 100644 --- a/modules/swagger-codegen/src/main/resources/ruby/configuration.mustache +++ b/modules/swagger-codegen/src/main/resources/ruby/configuration.mustache @@ -60,6 +60,10 @@ module {{moduleName}} # @return [String] attr_accessor :temp_folder_path + # The time limit for HTTP request in seconds. + # Default to 0 (never times out). + attr_accessor :timeout + ### TLS/SSL # Set this to false to skip verifying SSL certificate when calling API from https server. # Default to true. @@ -93,6 +97,7 @@ module {{moduleName}} @base_path = '{{contextPath}}' @api_key = {} @api_key_prefix = {} + @timeout = 0 @verify_ssl = true @cert_file = nil @key_file = nil diff --git a/samples/client/petstore/ruby/lib/petstore/api_client.rb b/samples/client/petstore/ruby/lib/petstore/api_client.rb index 52a3eb43855..53be21db3b0 100644 --- a/samples/client/petstore/ruby/lib/petstore/api_client.rb +++ b/samples/client/petstore/ruby/lib/petstore/api_client.rb @@ -71,6 +71,7 @@ module Petstore :method => http_method, :headers => header_params, :params => query_params, + :timeout => @config.timeout, :ssl_verifypeer => @config.verify_ssl, :sslcert => @config.cert_file, :sslkey => @config.key_file, diff --git a/samples/client/petstore/ruby/lib/petstore/configuration.rb b/samples/client/petstore/ruby/lib/petstore/configuration.rb index 7173a4450c6..0a67bae014f 100644 --- a/samples/client/petstore/ruby/lib/petstore/configuration.rb +++ b/samples/client/petstore/ruby/lib/petstore/configuration.rb @@ -60,6 +60,10 @@ module Petstore # @return [String] attr_accessor :temp_folder_path + # The time limit for HTTP request in seconds. + # Default to 0 (never times out). + attr_accessor :timeout + ### TLS/SSL # Set this to false to skip verifying SSL certificate when calling API from https server. # Default to true. @@ -93,6 +97,7 @@ module Petstore @base_path = '/v2' @api_key = {} @api_key_prefix = {} + @timeout = 0 @verify_ssl = true @cert_file = nil @key_file = nil diff --git a/samples/client/petstore/ruby/spec/api_client_spec.rb b/samples/client/petstore/ruby/spec/api_client_spec.rb index c2bfef4e8e4..aeb4eefad51 100644 --- a/samples/client/petstore/ruby/spec/api_client_spec.rb +++ b/samples/client/petstore/ruby/spec/api_client_spec.rb @@ -59,7 +59,7 @@ describe Petstore::ApiClient do c.api_key['api_key'] = 'special-key2' end api_client2 = Petstore::ApiClient.new(config2) - + auth_names = ['api_key', 'unknown'] header_params = {} @@ -82,7 +82,7 @@ describe Petstore::ApiClient do end api_client = Petstore::ApiClient.new - + header_params = {} query_params = {} auth_names = ['api_key', 'unknown'] @@ -92,6 +92,25 @@ describe Petstore::ApiClient do end end + describe "timeout in #build_request" do + let(:config) { Petstore::Configuration.new } + let(:api_client) { Petstore::ApiClient.new(config) } + + it "defaults to 0" do + Petstore::Configuration.default.timeout.should == 0 + config.timeout.should == 0 + + request = api_client.build_request(:get, '/test') + request.options[:timeout].should == 0 + end + + it "can be customized" do + config.timeout = 100 + request = api_client.build_request(:get, '/test') + request.options[:timeout].should == 100 + end + end + describe "#deserialize" do it "handles Hash" do api_client = Petstore::ApiClient.new From 8fa14446e3c898ca72141cee2579c5087c17ad84 Mon Sep 17 00:00:00 2001 From: xhh Date: Thu, 24 Dec 2015 17:56:19 +0800 Subject: [PATCH 028/623] Add milliseconds hint to comment of getConnectTimeout --- .../resources/Java/libraries/okhttp-gson/ApiClient.mustache | 2 +- .../okhttp-gson/src/main/java/io/swagger/client/ApiClient.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache index 664e0e45a58..8c0880bf217 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache @@ -480,7 +480,7 @@ public class ApiClient { } /** - * Sets the connect timeout. + * Sets the connect timeout (in milliseconds). * A value of 0 means no timeout, otherwise values must be between 1 and * {@link Integer#MAX_VALUE}. */ diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/ApiClient.java index 0314969b99e..10be2206a42 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/ApiClient.java @@ -479,7 +479,7 @@ public class ApiClient { } /** - * Sets the connect timeout. + * Sets the connect timeout (in milliseconds). * A value of 0 means no timeout, otherwise values must be between 1 and * {@link Integer#MAX_VALUE}. */ From 916793b820e80849bf91aab54345ec1229b42759 Mon Sep 17 00:00:00 2001 From: Ian Chan Date: Fri, 25 Dec 2015 16:33:04 +1300 Subject: [PATCH 029/623] Added spring-mvc-petstore-j8-aysnc-server.sh executable. Added the executable and config file for spring-mvc's j8-async target. --- bin/all-petstore.sh | 1 + bin/spring-mvc-petstore-j8-async-server.sh | 31 ++++++++++++++++++++++ bin/spring-mvc-petstore-j8-async.json | 3 +++ 3 files changed, 35 insertions(+) create mode 100755 bin/spring-mvc-petstore-j8-async-server.sh create mode 100644 bin/spring-mvc-petstore-j8-async.json diff --git a/bin/all-petstore.sh b/bin/all-petstore.sh index f6156dbcee9..7db8c7ec916 100755 --- a/bin/all-petstore.sh +++ b/bin/all-petstore.sh @@ -43,6 +43,7 @@ cd $APP_DIR ./bin/silex-petstore-server.sh ./bin/slim-petstore-server.sh ./bin/spring-mvc-petstore-server.sh +./bin/spring-mvc-petstore-j8-async-server.sh ./bin/swift-petstore.sh ./bin/tizen-petstore.sh ./bin/typescript-angular-petstore.sh diff --git a/bin/spring-mvc-petstore-j8-async-server.sh b/bin/spring-mvc-petstore-j8-async-server.sh new file mode 100755 index 00000000000..435c29ac070 --- /dev/null +++ b/bin/spring-mvc-petstore-j8-async-server.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +SCRIPT="$0" + +while [ -h "$SCRIPT" ] ; do + ls=`ls -ld "$SCRIPT"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + SCRIPT="$link" + else + SCRIPT=`dirname "$SCRIPT"`/"$link" + fi +done + +if [ ! -d "${APP_DIR}" ]; then + APP_DIR=`dirname "$SCRIPT"`/.. + APP_DIR=`cd "${APP_DIR}"; pwd` +fi + +executable="./modules/swagger-codegen-cli/target/swagger-codegen-cli.jar" + +if [ ! -f "$executable" ] +then + mvn clean package +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/JavaSpringMVC -i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l spring-mvc -o samples/server/petstore/spring-mvc -c bin/spring-mvc-petstore-j8-async.json" + +java $JAVA_OPTS -jar $executable $ags diff --git a/bin/spring-mvc-petstore-j8-async.json b/bin/spring-mvc-petstore-j8-async.json new file mode 100644 index 00000000000..c19430ec9ab --- /dev/null +++ b/bin/spring-mvc-petstore-j8-async.json @@ -0,0 +1,3 @@ +{ + "library": "j8-async" +} From 6124062a70065d872148f56629955aa946336914 Mon Sep 17 00:00:00 2001 From: wing328 Date: Sat, 26 Dec 2015 16:12:56 +0800 Subject: [PATCH 030/623] update promisekit and alamofire to the latest version --- .../main/resources/swift/Extensions.mustache | 4 +- .../src/main/resources/swift/Podspec.mustache | 4 +- .../petstore/swift/PetstoreClient.podspec | 4 +- .../Classes/Swaggers/APIs/PetAPI.swift | 166 ++++++++++-------- .../Classes/Swaggers/APIs/StoreAPI.swift | 72 ++++---- .../Classes/Swaggers/APIs/UserAPI.swift | 8 +- .../Classes/Swaggers/Extensions.swift | 4 +- 7 files changed, 142 insertions(+), 120 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/swift/Extensions.mustache b/modules/swagger-codegen/src/main/resources/swift/Extensions.mustache index 0d367cb8be3..ed5786d3faa 100644 --- a/modules/swagger-codegen/src/main/resources/swift/Extensions.mustache +++ b/modules/swagger-codegen/src/main/resources/swift/Extensions.mustache @@ -66,8 +66,8 @@ extension NSDate: JSONEncodable { {{#usePromiseKit}}extension RequestBuilder { public func execute() -> Promise> { - let deferred = Promise>.defer() - self.execute { (response: Response?, error: NSError?) in + let deferred = Promise>.pendingPromise() + self.execute { (response: Response?, error: ErrorType?) in if let response = response { deferred.fulfill(response) } else { diff --git a/modules/swagger-codegen/src/main/resources/swift/Podspec.mustache b/modules/swagger-codegen/src/main/resources/swift/Podspec.mustache index d156ef14417..85b227ece87 100644 --- a/modules/swagger-codegen/src/main/resources/swift/Podspec.mustache +++ b/modules/swagger-codegen/src/main/resources/swift/Podspec.mustache @@ -15,6 +15,6 @@ Pod::Spec.new do |s| s.screenshots = {{& podScreenshots}}{{/podScreenshots}}{{#podDocumentationURL}} s.documentation_url = '{{podDocumentationURL}}'{{/podDocumentationURL}} s.source_files = '{{projectName}}/Classes/Swaggers/**/*.swift'{{#usePromiseKit}} - s.dependency 'PromiseKit', '~> 2.1'{{/usePromiseKit}} - s.dependency 'Alamofire', '~> 3.1.0' + s.dependency 'PromiseKit', '~> 3.0.0'{{/usePromiseKit}} + s.dependency 'Alamofire', '~> 3.1.4' end diff --git a/samples/client/petstore/swift/PetstoreClient.podspec b/samples/client/petstore/swift/PetstoreClient.podspec index ed41db4bfb1..1c95cf1afe5 100644 --- a/samples/client/petstore/swift/PetstoreClient.podspec +++ b/samples/client/petstore/swift/PetstoreClient.podspec @@ -6,6 +6,6 @@ Pod::Spec.new do |s| s.source = { :git => 'git@github.com:swagger-api/swagger-mustache.git', :tag => 'v1.0.0' } s.license = 'Apache License, Version 2.0' s.source_files = 'PetstoreClient/Classes/Swaggers/**/*.swift' - s.dependency 'PromiseKit', '~> 2.1' - s.dependency 'Alamofire', '~> 3.1.0' + s.dependency 'PromiseKit', '~> 3.0.0' + s.dependency 'Alamofire', '~> 3.1.4' end diff --git a/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/APIs/PetAPI.swift b/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/APIs/PetAPI.swift index ea6c50e2549..57e586dc029 100644 --- a/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/APIs/PetAPI.swift +++ b/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/APIs/PetAPI.swift @@ -71,20 +71,20 @@ extension PetstoreClientAPI { - OAuth: - type: oauth2 - name: petstore_auth - - examples: [{contentType=application/json, example=[ { - "photoUrls" : [ "aeiou" ], - "name" : "doggie", + - examples: [{example=[ { + "tags" : [ { + "id" : 123456789, + "name" : "aeiou" + } ], "id" : 123456789, "category" : { - "name" : "aeiou", - "id" : 123456789 + "id" : 123456789, + "name" : "aeiou" }, - "tags" : [ { - "name" : "aeiou", - "id" : 123456789 - } ], - "status" : "aeiou" -} ]}, {contentType=application/xml, example= + "status" : "aeiou", + "name" : "doggie", + "photoUrls" : [ "aeiou" ] +} ], contentType=application/json}, {example= 123456 doggie @@ -93,21 +93,21 @@ extension PetstoreClientAPI { string -}] - - examples: [{contentType=application/json, example=[ { - "photoUrls" : [ "aeiou" ], - "name" : "doggie", +, contentType=application/xml}] + - examples: [{example=[ { + "tags" : [ { + "id" : 123456789, + "name" : "aeiou" + } ], "id" : 123456789, "category" : { - "name" : "aeiou", - "id" : 123456789 + "id" : 123456789, + "name" : "aeiou" }, - "tags" : [ { - "name" : "aeiou", - "id" : 123456789 - } ], - "status" : "aeiou" -} ]}, {contentType=application/xml, example= + "status" : "aeiou", + "name" : "doggie", + "photoUrls" : [ "aeiou" ] +} ], contentType=application/json}, {example= 123456 doggie @@ -116,7 +116,7 @@ extension PetstoreClientAPI { string -}] +, contentType=application/xml}] - parameter status: (query) Status values that need to be considered for filter @@ -145,20 +145,20 @@ extension PetstoreClientAPI { - OAuth: - type: oauth2 - name: petstore_auth - - examples: [{contentType=application/json, example=[ { - "photoUrls" : [ "aeiou" ], - "name" : "doggie", + - examples: [{example=[ { + "tags" : [ { + "id" : 123456789, + "name" : "aeiou" + } ], "id" : 123456789, "category" : { - "name" : "aeiou", - "id" : 123456789 + "id" : 123456789, + "name" : "aeiou" }, - "tags" : [ { - "name" : "aeiou", - "id" : 123456789 - } ], - "status" : "aeiou" -} ]}, {contentType=application/xml, example= + "status" : "aeiou", + "name" : "doggie", + "photoUrls" : [ "aeiou" ] +} ], contentType=application/json}, {example= 123456 doggie @@ -167,21 +167,21 @@ extension PetstoreClientAPI { string -}] - - examples: [{contentType=application/json, example=[ { - "photoUrls" : [ "aeiou" ], - "name" : "doggie", +, contentType=application/xml}] + - examples: [{example=[ { + "tags" : [ { + "id" : 123456789, + "name" : "aeiou" + } ], "id" : 123456789, "category" : { - "name" : "aeiou", - "id" : 123456789 + "id" : 123456789, + "name" : "aeiou" }, - "tags" : [ { - "name" : "aeiou", - "id" : 123456789 - } ], - "status" : "aeiou" -} ]}, {contentType=application/xml, example= + "status" : "aeiou", + "name" : "doggie", + "photoUrls" : [ "aeiou" ] +} ], contentType=application/json}, {example= 123456 doggie @@ -190,7 +190,7 @@ extension PetstoreClientAPI { string -}] +, contentType=application/xml}] - parameter tags: (query) Tags to filter by @@ -219,20 +219,20 @@ extension PetstoreClientAPI { - API Key: - type: apiKey api_key - name: api_key - - examples: [{contentType=application/json, example={ - "photoUrls" : [ "aeiou" ], - "name" : "doggie", + - examples: [{example={ + "tags" : [ { + "id" : 123456789, + "name" : "aeiou" + } ], "id" : 123456789, "category" : { - "name" : "aeiou", - "id" : 123456789 + "id" : 123456789, + "name" : "aeiou" }, - "tags" : [ { - "name" : "aeiou", - "id" : 123456789 - } ], - "status" : "aeiou" -}}, {contentType=application/xml, example= + "status" : "aeiou", + "name" : "doggie", + "photoUrls" : [ "aeiou" ] +}, contentType=application/json}, {example= 123456 doggie @@ -241,21 +241,21 @@ extension PetstoreClientAPI { string -}] - - examples: [{contentType=application/json, example={ - "photoUrls" : [ "aeiou" ], - "name" : "doggie", +, contentType=application/xml}] + - examples: [{example={ + "tags" : [ { + "id" : 123456789, + "name" : "aeiou" + } ], "id" : 123456789, "category" : { - "name" : "aeiou", - "id" : 123456789 + "id" : 123456789, + "name" : "aeiou" }, - "tags" : [ { - "name" : "aeiou", - "id" : 123456789 - } ], - "status" : "aeiou" -}}, {contentType=application/xml, example= + "status" : "aeiou", + "name" : "doggie", + "photoUrls" : [ "aeiou" ] +}, contentType=application/json}, {example= 123456 doggie @@ -264,7 +264,7 @@ extension PetstoreClientAPI { string -}] +, contentType=application/xml}] - parameter petId: (path) ID of pet that needs to be fetched @@ -342,6 +342,28 @@ extension PetstoreClientAPI { return requestBuilder.init(method: "DELETE", URLString: URLString, parameters: parameters, isBody: true) } + /** + + downloads an image + + - GET /pet/{petId}/downloadImage + - + - examples: [{output=none}] + + - returns: RequestBuilder + */ + public class func downloadFile() -> RequestBuilder { + let path = "/pet/{petId}/downloadImage" + let URLString = PetstoreClientAPI.basePath + path + + let nillableParameters: [String:AnyObject?] = [:] + let parameters = APIHelper.rejectNil(nillableParameters) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: URLString, parameters: parameters, isBody: true) + } + /** uploads an image diff --git a/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/APIs/StoreAPI.swift b/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/APIs/StoreAPI.swift index c3865cb3ccc..f1a2ad59f37 100644 --- a/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/APIs/StoreAPI.swift @@ -21,12 +21,12 @@ extension PetstoreClientAPI { - API Key: - type: apiKey api_key - name: api_key - - examples: [{contentType=application/json, example={ + - examples: [{example={ "key" : 123 -}}, {contentType=application/xml, example=not implemented io.swagger.models.properties.MapProperty@d1e580af}] - - examples: [{contentType=application/json, example={ +}, contentType=application/json}, {example=not implemented io.swagger.models.properties.MapProperty@d1e580af, contentType=application/xml}] + - examples: [{example={ "key" : 123 -}}, {contentType=application/xml, example=not implemented io.swagger.models.properties.MapProperty@d1e580af}] +}, contentType=application/json}, {example=not implemented io.swagger.models.properties.MapProperty@d1e580af, contentType=application/xml}] - returns: RequestBuilder<[String:Int]> */ @@ -48,36 +48,36 @@ extension PetstoreClientAPI { - POST /store/order - - - examples: [{contentType=application/json, example={ - "petId" : 123456789, - "quantity" : 123, + - examples: [{example={ "id" : 123456789, - "shipDate" : "2015-11-11T12:31:12.079+0000", + "petId" : 123456789, "complete" : true, - "status" : "aeiou" -}}, {contentType=application/xml, example= + "status" : "aeiou", + "quantity" : 123, + "shipDate" : "2015-12-26T03:35:39.893+0000" +}, contentType=application/json}, {example= 123456 123456 0 - 2015-11-11T14:31:12.082Z + 2015-12-26T11:35:39.898Z string true -}] - - examples: [{contentType=application/json, example={ - "petId" : 123456789, - "quantity" : 123, +, contentType=application/xml}] + - examples: [{example={ "id" : 123456789, - "shipDate" : "2015-11-11T12:31:12.079+0000", + "petId" : 123456789, "complete" : true, - "status" : "aeiou" -}}, {contentType=application/xml, example= + "status" : "aeiou", + "quantity" : 123, + "shipDate" : "2015-12-26T03:35:39.893+0000" +}, contentType=application/json}, {example= 123456 123456 0 - 2015-11-11T14:31:12.082Z + 2015-12-26T11:35:39.898Z string true -}] +, contentType=application/xml}] - parameter body: (body) order placed for purchasing the pet @@ -100,36 +100,36 @@ extension PetstoreClientAPI { - GET /store/order/{orderId} - For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions - - examples: [{contentType=application/json, example={ - "petId" : 123456789, - "quantity" : 123, + - examples: [{example={ "id" : 123456789, - "shipDate" : "2015-11-11T12:31:12.083+0000", + "petId" : 123456789, "complete" : true, - "status" : "aeiou" -}}, {contentType=application/xml, example= + "status" : "aeiou", + "quantity" : 123, + "shipDate" : "2015-12-26T03:35:39.900+0000" +}, contentType=application/json}, {example= 123456 123456 0 - 2015-11-11T14:31:12.083Z + 2015-12-26T11:35:39.900Z string true -}] - - examples: [{contentType=application/json, example={ - "petId" : 123456789, - "quantity" : 123, +, contentType=application/xml}] + - examples: [{example={ "id" : 123456789, - "shipDate" : "2015-11-11T12:31:12.083+0000", + "petId" : 123456789, "complete" : true, - "status" : "aeiou" -}}, {contentType=application/xml, example= + "status" : "aeiou", + "quantity" : 123, + "shipDate" : "2015-12-26T03:35:39.900+0000" +}, contentType=application/json}, {example= 123456 123456 0 - 2015-11-11T14:31:12.083Z + 2015-12-26T11:35:39.900Z string true -}] +, contentType=application/xml}] - parameter orderId: (path) ID of pet that needs to be fetched diff --git a/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/APIs/UserAPI.swift b/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/APIs/UserAPI.swift index 231e7f59228..19cf534cea8 100644 --- a/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/APIs/UserAPI.swift +++ b/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/APIs/UserAPI.swift @@ -84,8 +84,8 @@ extension PetstoreClientAPI { - GET /user/login - - - examples: [{contentType=application/json, example="aeiou"}, {contentType=application/xml, example=string}] - - examples: [{contentType=application/json, example="aeiou"}, {contentType=application/xml, example=string}] + - examples: [{example="aeiou", contentType=application/json}, {example=string, contentType=application/xml}] + - examples: [{example="aeiou", contentType=application/json}, {example=string, contentType=application/xml}] - parameter username: (query) The user name for login - parameter password: (query) The password for login in clear text @@ -134,7 +134,7 @@ extension PetstoreClientAPI { - GET /user/{username} - - - examples: [{contentType=application/json, example={ + - examples: [{example={ "id" : 1, "username" : "johnp", "firstName" : "John", @@ -143,7 +143,7 @@ extension PetstoreClientAPI { "password" : "-secret-", "phone" : "0123456789", "userStatus" : 0 -}}] +}, contentType=application/json}] - parameter username: (path) The name that needs to be fetched. Use user1 for testing. diff --git a/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/Extensions.swift b/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/Extensions.swift index 0a9f74b3e76..8015d1bd3a2 100644 --- a/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/Extensions.swift +++ b/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/Extensions.swift @@ -66,8 +66,8 @@ extension NSDate: JSONEncodable { extension RequestBuilder { public func execute() -> Promise> { - let deferred = Promise>.defer() - self.execute { (response: Response?, error: NSError?) in + let deferred = Promise>.pendingPromise() + self.execute { (response: Response?, error: ErrorType?) in if let response = response { deferred.fulfill(response) } else { From 56380271790bfcc4c06ede1728a0541ed57e8a2d Mon Sep 17 00:00:00 2001 From: wing328 Date: Sat, 26 Dec 2015 16:15:58 +0800 Subject: [PATCH 031/623] remove downloadImage from petstore.json --- .../src/test/resources/2_0/petstore.json | 76 ------------------- .../Classes/Swaggers/APIs/PetAPI.swift | 22 ------ .../Classes/Swaggers/APIs/StoreAPI.swift | 16 ++-- 3 files changed, 8 insertions(+), 106 deletions(-) diff --git a/modules/swagger-codegen/src/test/resources/2_0/petstore.json b/modules/swagger-codegen/src/test/resources/2_0/petstore.json index ad9cbead5e9..66762d74b2b 100644 --- a/modules/swagger-codegen/src/test/resources/2_0/petstore.json +++ b/modules/swagger-codegen/src/test/resources/2_0/petstore.json @@ -402,23 +402,6 @@ ] } }, - "/pet/{petId}/downloadImage" : { - "get" : { - "tags" : [ "pet" ], - "summary" : "downloads an image", - "description" : "", - "operationId" : "downloadFile", - "produces" : [ "application/octet-stream" ], - "responses" : { - "200" : { - "description" : "successful operation", - "schema" : { - "$ref" : "#/definitions/File" - } - } - } - } - }, "/store/inventory": { "get": { "tags": [ @@ -989,65 +972,6 @@ "xml": { "name": "Order" } - }, - "definitions" : { - "File": { - "type": "object", - "properties": { - "path": { - "type": "string" - }, - "name": { - "type": "string" - }, - "canonicalPath": { - "type": "string" - }, - "parent": { - "type": "string" - }, - "absolute": { - "type": "boolean", - "default": false - }, - "absoluteFile": { - "$ref": "#/definitions/File" - }, - "absolutePath": { - "type": "string" - }, - "canonicalFile": { - "$ref": "#/definitions/File" - }, - "freeSpace": { - "type": "integer", - "format": "int64" - }, - "parentFile": { - "$ref": "#/definitions/File" - }, - "totalSpace": { - "type": "integer", - "format": "int64" - }, - "usableSpace": { - "type": "integer", - "format": "int64" - }, - "directory": { - "type": "boolean", - "default": false - }, - "file": { - "type": "boolean", - "default": false - }, - "hidden": { - "type": "boolean", - "default": false - } - } - } } } } diff --git a/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/APIs/PetAPI.swift b/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/APIs/PetAPI.swift index 57e586dc029..5fc929a20a2 100644 --- a/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/APIs/PetAPI.swift +++ b/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/APIs/PetAPI.swift @@ -342,28 +342,6 @@ extension PetstoreClientAPI { return requestBuilder.init(method: "DELETE", URLString: URLString, parameters: parameters, isBody: true) } - /** - - downloads an image - - - GET /pet/{petId}/downloadImage - - - - examples: [{output=none}] - - - returns: RequestBuilder - */ - public class func downloadFile() -> RequestBuilder { - let path = "/pet/{petId}/downloadImage" - let URLString = PetstoreClientAPI.basePath + path - - let nillableParameters: [String:AnyObject?] = [:] - let parameters = APIHelper.rejectNil(nillableParameters) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() - - return requestBuilder.init(method: "GET", URLString: URLString, parameters: parameters, isBody: true) - } - /** uploads an image diff --git a/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/APIs/StoreAPI.swift b/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/APIs/StoreAPI.swift index f1a2ad59f37..301bc80285d 100644 --- a/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift/PetstoreClient/Classes/Swaggers/APIs/StoreAPI.swift @@ -54,12 +54,12 @@ extension PetstoreClientAPI { "complete" : true, "status" : "aeiou", "quantity" : 123, - "shipDate" : "2015-12-26T03:35:39.893+0000" + "shipDate" : "2015-12-26T08:15:52.206+0000" }, contentType=application/json}, {example= 123456 123456 0 - 2015-12-26T11:35:39.898Z + 2015-12-26T16:15:52.210Z string true , contentType=application/xml}] @@ -69,12 +69,12 @@ extension PetstoreClientAPI { "complete" : true, "status" : "aeiou", "quantity" : 123, - "shipDate" : "2015-12-26T03:35:39.893+0000" + "shipDate" : "2015-12-26T08:15:52.206+0000" }, contentType=application/json}, {example= 123456 123456 0 - 2015-12-26T11:35:39.898Z + 2015-12-26T16:15:52.210Z string true , contentType=application/xml}] @@ -106,12 +106,12 @@ extension PetstoreClientAPI { "complete" : true, "status" : "aeiou", "quantity" : 123, - "shipDate" : "2015-12-26T03:35:39.900+0000" + "shipDate" : "2015-12-26T08:15:52.211+0000" }, contentType=application/json}, {example= 123456 123456 0 - 2015-12-26T11:35:39.900Z + 2015-12-26T16:15:52.212Z string true , contentType=application/xml}] @@ -121,12 +121,12 @@ extension PetstoreClientAPI { "complete" : true, "status" : "aeiou", "quantity" : 123, - "shipDate" : "2015-12-26T03:35:39.900+0000" + "shipDate" : "2015-12-26T08:15:52.211+0000" }, contentType=application/json}, {example= 123456 123456 0 - 2015-12-26T11:35:39.900Z + 2015-12-26T16:15:52.212Z string true , contentType=application/xml}] From a2c020f9e87b2ce22d2c36e7a3172e2476930734 Mon Sep 17 00:00:00 2001 From: xhh Date: Sat, 26 Dec 2015 16:48:49 +0800 Subject: [PATCH 032/623] Add simple profiling for Java Petstore sample --- .../java/default/petstore_profiling.output | 23 ++++ .../java/io/swagger/PetstoreProfiling.java | 106 ++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 samples/client/petstore/java/default/petstore_profiling.output create mode 100644 samples/client/petstore/java/default/src/test/java/io/swagger/PetstoreProfiling.java diff --git a/samples/client/petstore/java/default/petstore_profiling.output b/samples/client/petstore/java/default/petstore_profiling.output new file mode 100644 index 00000000000..21562548765 --- /dev/null +++ b/samples/client/petstore/java/default/petstore_profiling.output @@ -0,0 +1,23 @@ +# To run the profiling: +# mvn compile test-compile exec:java -Dexec.classpathScope=test -Dexec.mainClass="io.swagger.PetstoreProfiling" + +0: ADD PET => 0.987609128 +0: GET PET => 0.450873167 +0: UPDATE PET => 0.447611998 +0: DELETE PET => 0.397707664 +1: ADD PET => 0.395333121 +1: GET PET => 0.381760136 +1: UPDATE PET => 0.395245221 +1: DELETE PET => 0.384854324 +2: ADD PET => 0.400336227 +2: GET PET => 0.378959921 +2: UPDATE PET => 0.397619284 +2: DELETE PET => 0.383307393 +3: ADD PET => 0.385764805 +3: GET PET => 0.40218304 +3: UPDATE PET => 0.387887511 +3: DELETE PET => 0.398063489 +4: ADD PET => 0.384757488 +4: GET PET => 0.398719713 +4: UPDATE PET => 0.383319052 +4: DELETE PET => 0.408516644 diff --git a/samples/client/petstore/java/default/src/test/java/io/swagger/PetstoreProfiling.java b/samples/client/petstore/java/default/src/test/java/io/swagger/PetstoreProfiling.java new file mode 100644 index 00000000000..ab2ba5d71bf --- /dev/null +++ b/samples/client/petstore/java/default/src/test/java/io/swagger/PetstoreProfiling.java @@ -0,0 +1,106 @@ +package io.swagger; + +import java.io.*; +import java.util.*; + +import io.swagger.client.*; +import io.swagger.client.api.*; +import io.swagger.client.model.*; + +public class PetstoreProfiling { + public int total = 5; + public Long newPetId = 50003L; + public String outputFile = "./petstore_profiling.output"; + + public void callApis(int index, List> results) { + long start; + + try { + PetApi petApi = new PetApi(); + + /* ADD PET */ + Pet pet = new Pet(); + pet.setId(newPetId); + pet.setName("profiler"); + pet.setStatus(Pet.StatusEnum.AVAILABLE); + pet.setPhotoUrls(Arrays.asList("http://profiler.com")); + // new tag + Tag tag = new Tag(); + tag.setId(newPetId); // use the same id as pet + tag.setName("profile tag 1"); + // new category + Category category = new Category(); + category.setId(newPetId); // use the same id as pet + category.setName("profile category 1"); + + pet.setTags(Arrays.asList(tag)); + pet.setCategory(category); + + /* ADD PET */ + start = System.nanoTime(); + petApi.addPet(pet); + results.add(buildResult(index, "ADD PET", System.nanoTime() - start)); + + /* GET PET */ + start = System.nanoTime(); + pet = petApi.getPetById(newPetId); + results.add(buildResult(index, "GET PET", System.nanoTime() - start)); + + /* UPDATE PET WITH FORM */ + start = System.nanoTime(); + petApi.updatePetWithForm(String.valueOf(newPetId), "new profiler", "sold"); + results.add(buildResult(index, "UPDATE PET", System.nanoTime() - start)); + + /* DELETE PET */ + start = System.nanoTime(); + petApi.deletePet(newPetId, "special-key"); + results.add(buildResult(index, "DELETE PET", System.nanoTime() - start)); + } catch (ApiException e) { + System.out.println("Caught error: " + e.getMessage()); + System.out.println("HTTP response headers: " + e.getResponseHeaders()); + System.out.println("HTTP response body: " + e.getResponseBody()); + System.out.println("HTTP status code: " + e.getCode()); + } + } + + public void run() { + System.out.printf("Running profiling... (total: %s)\n", total); + + List> results = new ArrayList>(); + for (int i = 0; i < total; i++) { + callApis(i, results); + } + writeResultsToFile(results); + + System.out.printf("Profiling results written to %s\n", outputFile); + } + + private Map buildResult(int index, String name, long time) { + Map result = new HashMap(); + result.put("index", String.valueOf(index)); + result.put("name", name); + result.put("time", String.valueOf(time / 1000000000.0)); + return result; + } + + private void writeResultsToFile(List> results) { + try { + File file = new File(outputFile); + PrintWriter writer = new PrintWriter(file); + String command = "mvn compile test-compile exec:java -Dexec.classpathScope=test -Dexec.mainClass=\"io.swagger.PetstoreProfiling\""; + writer.println("# To run the profiling:"); + writer.printf("# %s\n\n", command); + for (Map result : results) { + writer.printf("%s: %s => %s\n", result.get("index"), result.get("name"), result.get("time")); + } + writer.close(); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } + } + + public static void main(String[] args) { + final PetstoreProfiling profiling = new PetstoreProfiling(); + profiling.run(); + } +} From ef1222f2bf88ebd369312589489ef0e43b46fbab Mon Sep 17 00:00:00 2001 From: Patrick Culligan Date: Sat, 26 Dec 2015 17:29:56 -0600 Subject: [PATCH 033/623] Added support for vendor extensions on model and property --- .../src/main/java/io/swagger/codegen/CodegenModel.java | 7 +++---- .../src/main/java/io/swagger/codegen/CodegenProperty.java | 4 ++++ .../src/main/java/io/swagger/codegen/DefaultCodegen.java | 5 ++++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenModel.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenModel.java index d5702b5c50a..b4d964647b7 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenModel.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenModel.java @@ -2,10 +2,7 @@ package io.swagger.codegen; import io.swagger.models.ExternalDocs; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; public class CodegenModel { public String parent; @@ -21,4 +18,6 @@ public class CodegenModel { public Set imports = new HashSet(); public Boolean hasVars, emptyVars, hasMoreModels, hasEnums, isEnum; public ExternalDocs externalDocs; + + public Map vendorExtensions; } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenProperty.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenProperty.java index 32e169ac878..e77258a0818 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenProperty.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenProperty.java @@ -38,6 +38,7 @@ public class CodegenProperty { public List _enum; public Map allowableValues; public CodegenProperty items; + public Map vendorExtensions; @Override public boolean equals(Object obj) { @@ -138,6 +139,9 @@ public class CodegenProperty { if (this.allowableValues != other.allowableValues && (this.allowableValues == null || !this.allowableValues.equals(other.allowableValues))) { return false; } + if (this.vendorExtensions != other.vendorExtensions && (this.vendorExtensions == null || !this.vendorExtensions.equals(other.vendorExtensions))) { + return false; + } return true; } } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java index dd8d9aefa90..5dc25b514d6 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java @@ -762,6 +762,9 @@ public class DefaultCodegen { m.classVarName = toVarName(name); m.modelJson = Json.pretty(model); m.externalDocs = model.getExternalDocs(); + m.vendorExtensions = model.getVendorExtensions(); + + if (model instanceof ArrayModel) { ArrayModel am = (ArrayModel) model; ArrayProperty arrayProperty = new ArrayProperty(am.getItems()); @@ -880,9 +883,9 @@ public class DefaultCodegen { property.example = p.getExample(); property.defaultValue = toDefaultValue(p); property.defaultValueWithParam = toDefaultValueWithParam(name, p); - property.jsonSchema = Json.pretty(p); property.isReadOnly = p.getReadOnly(); + property.vendorExtensions = p.getVendorExtensions(); String type = getSwaggerType(p); if (p instanceof AbstractNumericProperty) { From 3266fbbf81cd3faf1730edbb84e8f7c5dff8840e Mon Sep 17 00:00:00 2001 From: Patrick Culligan Date: Sat, 26 Dec 2015 18:18:14 -0600 Subject: [PATCH 034/623] corrected JavaDos issues that were UNRELATED to this PR to get the CI server moving. --- .../java/io/swagger/codegen/DefaultCodegen.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java index 5dc25b514d6..fb331918d87 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java @@ -307,7 +307,7 @@ public class DefaultCodegen { * Return the parameter name by removing invalid characters and proper escaping if * it's a reserved word. * - * @param property Codegen property object + * @param name Codegen property object * @return the sanitized parameter name */ public String toParamName(String name) { @@ -332,8 +332,9 @@ public class DefaultCodegen { * Return the escaped name of the reserved word * * @param name the name to be escaped - * @throws Runtime exception as reserved word is not allowed (default behavior) * @return the escaped reserved word + * + * throws Runtime exception as reserved word is not allowed (default behavior) */ public String escapeReservedWord(String name) { throw new RuntimeException("reserved word " + name + " not allowed"); @@ -369,9 +370,8 @@ public class DefaultCodegen { * between Swagger type and the corresponding import statement for the language. This will * also add some language specified CLI options, if any. * - * @param path the path of the operation - * @param operation Swagger operation object - * @return string presentation of the example path + * + * returns string presentation of the example path (it's a constructor) */ public DefaultCodegen() { defaultIncludes = new HashSet( @@ -1430,7 +1430,7 @@ public class DefaultCodegen { * Convert Swagger Parameter object to Codegen Parameter object * * @param param Swagger parameter object - * @param a set of imports for library/package/module + * @param imports set of imports for library/package/module * @return Codegen Parameter object */ public CodegenParameter fromParameter(Parameter param, Set imports) { @@ -2015,6 +2015,7 @@ public class DefaultCodegen { /** * All library templates supported. * (key: library name, value: library description) + * @return the supported libraries */ public Map supportedLibraries() { return supportedLibraries; From 6a45111e10b7d0684537e2365d40e46364c50bd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arne=20J=C3=B8rgensen?= Date: Sun, 27 Dec 2015 15:17:18 +0100 Subject: [PATCH 035/623] Handle wildcard response codes correct in PHP Wildcard response codes was handled like all other response codes resulting in a misleading construction like this: ``` switch ($e->getCode()) { case 0: $data = $this->apiClient->getSerializer()->deserialize($e->getResponseBody(), '\Swagger\Client\Model\Error', $e->getResponseHeaders()); $e->setResponseObject($data); break; } ``` This commit fixes it to use the default fallback of the PHP switch statement: ``` switch ($e->getCode()) { default: $data = $this->apiClient->getSerializer()->deserialize($e->getResponseBody(), '\Swagger\Client\Model\Error', $e->getResponseHeaders()); $e->setResponseObject($data); break; } ``` --- modules/swagger-codegen/src/main/resources/php/api.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/resources/php/api.mustache b/modules/swagger-codegen/src/main/resources/php/api.mustache index cce59f4d94b..23855792e6d 100644 --- a/modules/swagger-codegen/src/main/resources/php/api.mustache +++ b/modules/swagger-codegen/src/main/resources/php/api.mustache @@ -213,7 +213,7 @@ use \{{invokerPackage}}\ObjectSerializer; {{/returnType}} } catch (ApiException $e) { switch ($e->getCode()) { {{#responses}}{{#dataType}} - case {{code}}: + {{^isWildcard}}case {{code}}:{{/isWildcard}}{{#isWildcard}}default:{{/isWildcard}} $data = $this->apiClient->getSerializer()->deserialize($e->getResponseBody(), '{{dataType}}', $e->getResponseHeaders()); $e->setResponseObject($data); break;{{/dataType}}{{/responses}} From 84c35bd0cb3aebd7984c0526de8fad07bc5c5074 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arne=20J=C3=B8rgensen?= Date: Sun, 27 Dec 2015 15:29:08 +0100 Subject: [PATCH 036/623] Regenerated PHP petstore sample. --- .../php/SwaggerClient-php/lib/Api/PetApi.php | 80 +++++++++++++++++++ .../lib/ObjectSerializer.php | 2 +- 2 files changed, 81 insertions(+), 1 deletion(-) diff --git a/samples/client/petstore/php/SwaggerClient-php/lib/Api/PetApi.php b/samples/client/petstore/php/SwaggerClient-php/lib/Api/PetApi.php index bd82444f4fe..c91e54f6e57 100644 --- a/samples/client/petstore/php/SwaggerClient-php/lib/Api/PetApi.php +++ b/samples/client/petstore/php/SwaggerClient-php/lib/Api/PetApi.php @@ -738,6 +738,86 @@ class PetApi } } + /** + * downloadFile + * + * downloads an image + * + * @return \Swagger\Client\Model\File + * @throws \Swagger\Client\ApiException on non-2xx response + */ + public function downloadFile() + { + list($response, $statusCode, $httpHeader) = $this->downloadFileWithHttpInfo (); + return $response; + } + + + /** + * downloadFileWithHttpInfo + * + * downloads an image + * + * @return Array of \Swagger\Client\Model\File, HTTP status code, HTTP response headers (array of strings) + * @throws \Swagger\Client\ApiException on non-2xx response + */ + public function downloadFileWithHttpInfo() + { + + + // parse inputs + $resourcePath = "/pet/{petId}/downloadImage"; + $resourcePath = str_replace("{format}", "json", $resourcePath); + $method = "GET"; + $httpBody = ''; + $queryParams = array(); + $headerParams = array(); + $formParams = array(); + $_header_accept = ApiClient::selectHeaderAccept(array('application/octet-stream')); + if (!is_null($_header_accept)) { + $headerParams['Accept'] = $_header_accept; + } + $headerParams['Content-Type'] = ApiClient::selectHeaderContentType(array()); + + + + + + + + // for model (json/xml) + if (isset($_tempBody)) { + $httpBody = $_tempBody; // $_tempBody is the method argument, if present + } elseif (count($formParams) > 0) { + $httpBody = $formParams; // for HTTP post (form) + } + + // make the API Call + try { + list($response, $statusCode, $httpHeader) = $this->apiClient->callApi( + $resourcePath, $method, + $queryParams, $httpBody, + $headerParams, '\Swagger\Client\Model\File' + ); + + if (!$response) { + return array(null, $statusCode, $httpHeader); + } + + return array($this->apiClient->getSerializer()->deserialize($response, '\Swagger\Client\Model\File', $httpHeader), $statusCode, $httpHeader); + + } catch (ApiException $e) { + switch ($e->getCode()) { + case 200: + $data = $this->apiClient->getSerializer()->deserialize($e->getResponseBody(), '\Swagger\Client\Model\File', $e->getResponseHeaders()); + $e->setResponseObject($data); + break; + } + + throw $e; + } + } + /** * uploadFile * diff --git a/samples/client/petstore/php/SwaggerClient-php/lib/ObjectSerializer.php b/samples/client/petstore/php/SwaggerClient-php/lib/ObjectSerializer.php index cc023b61bd2..7d7a04e653c 100644 --- a/samples/client/petstore/php/SwaggerClient-php/lib/ObjectSerializer.php +++ b/samples/client/petstore/php/SwaggerClient-php/lib/ObjectSerializer.php @@ -193,7 +193,7 @@ class ObjectSerializer $deserialized = $values; } elseif ($class === '\DateTime') { $deserialized = new \DateTime($data); - } elseif (in_array($class, array('integer', 'int', 'void', 'number', 'object', 'double', 'float', 'byte', 'DateTime', 'string', 'mixed', 'boolean', 'bool'))) { + } elseif (in_array($class, array('void', 'bool', 'string', 'double', 'byte', 'mixed', 'integer', 'float', 'int', 'DateTime', 'number', 'boolean', 'object'))) { settype($data, $class); $deserialized = $data; } elseif ($class === '\SplFileObject') { From fa9844af7e7509508da787bf9faaa72d5c4965c5 Mon Sep 17 00:00:00 2001 From: wing328 Date: Mon, 28 Dec 2015 16:05:03 +0800 Subject: [PATCH 037/623] remove baseobject from perl, add README.mustache --- .../codegen/languages/PerlClientCodegen.java | 5 +- .../main/resources/perl/BaseObject.mustache | 23 - .../perl/{README.md => README.mustache} | 0 .../src/main/resources/perl/object.mustache | 7 +- samples/client/petstore/perl/README.md | 430 ++++++++---------- .../lib/WWW/SwaggerClient/Object/Category.pm | 82 +++- .../lib/WWW/SwaggerClient/Object/Order.pm | 82 +++- .../perl/lib/WWW/SwaggerClient/Object/Pet.pm | 82 +++- .../perl/lib/WWW/SwaggerClient/Object/Tag.pm | 82 +++- .../perl/lib/WWW/SwaggerClient/Object/User.pm | 82 +++- .../perl/lib/WWW/SwaggerClient/PetApi.pm | 59 +++ .../perl/lib/WWW/SwaggerClient/Role.pm | 4 +- 12 files changed, 659 insertions(+), 279 deletions(-) rename modules/swagger-codegen/src/main/resources/perl/{README.md => README.mustache} (100%) 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 8190d996355..2e220841f5d 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 @@ -97,11 +97,12 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig { supportingFiles.add(new SupportingFile("ApiClient.mustache", ("lib/WWW/" + moduleName).replace('/', File.separatorChar), "ApiClient.pm")); supportingFiles.add(new SupportingFile("Configuration.mustache", ("lib/WWW/" + moduleName).replace('/', File.separatorChar), "Configuration.pm")); - supportingFiles.add(new SupportingFile("BaseObject.mustache", ("lib/WWW/" + moduleName).replace('/', File.separatorChar), "Object/BaseObject.pm")); + //supportingFiles.add(new SupportingFile("BaseObject.mustache", ("lib/WWW/" + moduleName).replace('/', File.separatorChar), "Object/BaseObject.pm")); supportingFiles.add(new SupportingFile("ApiFactory.mustache", ("lib/WWW/" + moduleName).replace('/', File.separatorChar), "ApiFactory.pm")); supportingFiles.add(new SupportingFile("Role.mustache", ("lib/WWW/" + moduleName).replace('/', File.separatorChar), "Role.pm")); supportingFiles.add(new SupportingFile("AutoDoc.mustache", ("lib/WWW/" + moduleName + "/Role").replace('/', File.separatorChar), "AutoDoc.pm")); - supportingFiles.add(new SupportingFile("autodoc.script.mustache", ("bin/").replace('/', File.separatorChar), "autodoc")); + supportingFiles.add(new SupportingFile("autodoc.script.mustache", "bin", "autodoc")); + supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); } @Override diff --git a/modules/swagger-codegen/src/main/resources/perl/BaseObject.mustache b/modules/swagger-codegen/src/main/resources/perl/BaseObject.mustache index a41931940ba..aed1aec3118 100644 --- a/modules/swagger-codegen/src/main/resources/perl/BaseObject.mustache +++ b/modules/swagger-codegen/src/main/resources/perl/BaseObject.mustache @@ -1,25 +1,3 @@ -package WWW::{{moduleName}}::Object::BaseObject; - -require 5.6.0; -use strict; -use warnings; -use utf8; -use JSON qw(decode_json); -use Data::Dumper; -use Module::Runtime qw(use_module); -use Log::Any qw($log); -use Date::Parse; -use DateTime; - -use base ("Class::Accessor", "Class::Data::Inheritable"); - - -# -# -# -#NOTE: This class is auto generated by the swagger code generator program. Do not edit the class manually. -# - __PACKAGE__->mk_classdata('attribute_map' => {}); __PACKAGE__->mk_classdata('swagger_types' => {}); __PACKAGE__->mk_classdata('method_documentation' => {}); @@ -95,4 +73,3 @@ sub _deserialize { } } -1; diff --git a/modules/swagger-codegen/src/main/resources/perl/README.md b/modules/swagger-codegen/src/main/resources/perl/README.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/perl/README.md rename to modules/swagger-codegen/src/main/resources/perl/README.mustache diff --git a/modules/swagger-codegen/src/main/resources/perl/object.mustache b/modules/swagger-codegen/src/main/resources/perl/object.mustache index 00c572453c1..95af03e09d3 100644 --- a/modules/swagger-codegen/src/main/resources/perl/object.mustache +++ b/modules/swagger-codegen/src/main/resources/perl/object.mustache @@ -13,7 +13,9 @@ use Log::Any qw($log); use Date::Parse; use DateTime; -use base "WWW::{{moduleName}}::Object::BaseObject"; +#use base "WWW::{{moduleName}}::Object::BaseObject"; +use base ("Class::Accessor", "Class::Data::Inheritable"); + # #{{description}} @@ -21,6 +23,8 @@ use base "WWW::{{moduleName}}::Object::BaseObject"; #NOTE: This class is auto generated by the swagger code generator program. Do not edit the class manually. # +{{>BaseObject}} + __PACKAGE__->class_documentation({description => '{{description}}', class => '{{classname}}', required => [], # TODO @@ -49,6 +53,7 @@ __PACKAGE__->attribute_map( { __PACKAGE__->mk_accessors(keys %{__PACKAGE__->attribute_map}); + 1; {{/model}} {{/models}} diff --git a/samples/client/petstore/perl/README.md b/samples/client/petstore/perl/README.md index adfe2455d65..d07bf6f7121 100644 --- a/samples/client/petstore/perl/README.md +++ b/samples/client/petstore/perl/README.md @@ -1,281 +1,219 @@ # NAME -My::App - -# VERSION +WWW::SwaggerClient::Role - a Moose role for the Swagger Petstore ## Swagger Petstore version: 1.0.0 -Automatically generated by the Perl Swagger Codegen project: +# VERSION -- Build date: 2015-11-13T20:46:43.271Z +Automatically generated by the Perl Swagger Codegen project: + +- Build date: 2015-12-28T16:00:32.828+08:00 - Build package: class io.swagger.codegen.languages.PerlClientCodegen -- Codegen version: +- Codegen version: -# INHERITANCE +## A note on Moose -## Base class(es) +This role is the only component of the library that uses Moose. See +WWW::SwaggerClient::ApiFactory for non-Moosey usage. -Moose::Object +# SYNOPSIS -## Direct subclasses +The Perl Swagger Codegen project builds a library of Perl modules to interact with +a web service defined by a Swagger specification. See below for how to build the +library. -## All subclasses +This module provides an interface to the generated library. All the classes, +objects, and methods (well, not quite \*all\*, see below) are flattened into this +role. -# COMPOSITION + package MyApp; + use Moose; + with 'WWW::SwaggerClient::Role'; + + package main; + + my $api = MyApp->new({ tokens => $tokens }); + + my $pet = $api->get_pet_by_id(pet_id => $pet_id); + -My::App composes the following roles: +## Structure of the library -## `WWW::SwaggerClient::Role` +The library consists of a set of API classes, one for each endpoint. These APIs +implement the method calls available on each endpoint. -Requires: +Additionally, there is a set of "object" classes, which represent the objects +returned by and sent to the methods on the endpoints. + +An API factory class is provided, which builds instances of each endpoint API. + +This Moose role flattens all the methods from the endpoint APIs onto the consuming +class. It also provides methods to retrieve the endpoint API objects, and the API +factory object, should you need it. + +For documentation of all these methods, see AUTOMATIC DOCUMENTATION below. + +## Configuring authentication + +In the normal case, the Swagger spec will describe what parameters are +required and where to put them. You just need to supply the tokens. + + my $tokens = { + # basic + username => $username, + password => $password, + + # oauth + access_token => $oauth_token, + + # keys + $some_key => { token => $token, + prefix => $prefix, + in => $in, # 'head||query', + }, + + $another => { token => $token, + prefix => $prefix, + in => $in, # 'head||query', + }, + ..., + + }; + + my $api = MyApp->new({ tokens => $tokens }); + +Note these are all optional, as are `prefix` and `in`, and depend on the API +you are accessing. Usually `prefix` and `in` will be determined by the code generator from +the spec and you will not need to set them at run time. If not, `in` will +default to 'head' and `prefix` to the empty string. + +The tokens will be placed in the `WWW::SwaggerClient::Configuration` namespace +as follows, but you don't need to know about this. + +- `$WWW::SwaggerClient::Configuration::username` + + String. The username for basic auth. + +- `$WWW::SwaggerClient::Configuration::password` + + String. The password for basic auth. + +- `$WWW::SwaggerClient::Configuration::api_key` + + Hashref. Keyed on the name of each key (there can be multiple tokens). + + $WWW::SwaggerClient::Configuration::api_key = { + secretKey => 'aaaabbbbccccdddd', + anotherKey => '1111222233334444', + }; + +- `$WWW::SwaggerClient::Configuration::api_key_prefix` + + Hashref. Keyed on the name of each key (there can be multiple tokens). Note not + all api keys require a prefix. + + $WWW::SwaggerClient::Configuration::api_key_prefix = { + secretKey => 'string', + anotherKey => 'same or some other string', + }; + +- `$WWW::SwaggerClient::Configuration::access_token` + + String. The OAuth access token. # METHODS -## `add_pet()` +## `base_url` - Defined in: WWW::SwaggerClient::PetApi - Delegates to: add_pet() - On: WWW::SwaggerClient::PetApi - Via: pet_api() - Doc: Add a new pet to the store - Same as: $self->pet_api->add_pet() - -## `create_user()` - - Defined in: WWW::SwaggerClient::UserApi - Delegates to: create_user() - On: WWW::SwaggerClient::UserApi - Via: user_api() - Doc: Create user - Same as: $self->user_api->create_user() - -## `create_users_with_array_input()` - - Defined in: WWW::SwaggerClient::UserApi - Delegates to: create_users_with_array_input() - On: WWW::SwaggerClient::UserApi - Via: user_api() - Doc: Creates list of users with given input array - Same as: $self->user_api->create_users_with_array_input() - -## `create_users_with_list_input()` - - Defined in: WWW::SwaggerClient::UserApi - Delegates to: create_users_with_list_input() - On: WWW::SwaggerClient::UserApi - Via: user_api() - Doc: Creates list of users with given input array - Same as: $self->user_api->create_users_with_list_input() - -## `delete_order()` - - Defined in: WWW::SwaggerClient::StoreApi - Delegates to: delete_order() - On: WWW::SwaggerClient::StoreApi - Via: store_api() - Doc: Delete purchase order by ID - Same as: $self->store_api->delete_order() - -## `delete_pet()` - - Defined in: WWW::SwaggerClient::PetApi - Delegates to: delete_pet() - On: WWW::SwaggerClient::PetApi - Via: pet_api() - Doc: Deletes a pet - Same as: $self->pet_api->delete_pet() - -## `delete_user()` - - Defined in: WWW::SwaggerClient::UserApi - Delegates to: delete_user() - On: WWW::SwaggerClient::UserApi - Via: user_api() - Doc: Delete user - Same as: $self->user_api->delete_user() - -## `find_pets_by_status()` - - Defined in: WWW::SwaggerClient::PetApi - Delegates to: find_pets_by_status() - On: WWW::SwaggerClient::PetApi - Via: pet_api() - Doc: Finds Pets by status - Same as: $self->pet_api->find_pets_by_status() - -## `find_pets_by_tags()` - - Defined in: WWW::SwaggerClient::PetApi - Delegates to: find_pets_by_tags() - On: WWW::SwaggerClient::PetApi - Via: pet_api() - Doc: Finds Pets by tags - Same as: $self->pet_api->find_pets_by_tags() - -## `get_inventory()` - - Defined in: WWW::SwaggerClient::StoreApi - Delegates to: get_inventory() - On: WWW::SwaggerClient::StoreApi - Via: store_api() - Doc: Returns pet inventories by status - Same as: $self->store_api->get_inventory() - -## `get_order_by_id()` - - Defined in: WWW::SwaggerClient::StoreApi - Delegates to: get_order_by_id() - On: WWW::SwaggerClient::StoreApi - Via: store_api() - Doc: Find purchase order by ID - Same as: $self->store_api->get_order_by_id() - -## `get_pet_by_id()` - - Defined in: WWW::SwaggerClient::PetApi - Delegates to: get_pet_by_id() - On: WWW::SwaggerClient::PetApi - Via: pet_api() - Doc: Find pet by ID - Same as: $self->pet_api->get_pet_by_id() - -## `get_user_by_name()` - - Defined in: WWW::SwaggerClient::UserApi - Delegates to: get_user_by_name() - On: WWW::SwaggerClient::UserApi - Via: user_api() - Doc: Get user by user name - Same as: $self->user_api->get_user_by_name() - -## `login_user()` - - Defined in: WWW::SwaggerClient::UserApi - Delegates to: login_user() - On: WWW::SwaggerClient::UserApi - Via: user_api() - Doc: Logs user into the system - Same as: $self->user_api->login_user() - -## `logout_user()` - - Defined in: WWW::SwaggerClient::UserApi - Delegates to: logout_user() - On: WWW::SwaggerClient::UserApi - Via: user_api() - Doc: Logs out current logged in user session - Same as: $self->user_api->logout_user() - -## `place_order()` - - Defined in: WWW::SwaggerClient::StoreApi - Delegates to: place_order() - On: WWW::SwaggerClient::StoreApi - Via: store_api() - Doc: Place an order for a pet - Same as: $self->store_api->place_order() - -## `update_pet()` - - Defined in: WWW::SwaggerClient::PetApi - Delegates to: update_pet() - On: WWW::SwaggerClient::PetApi - Via: pet_api() - Doc: Update an existing pet - Same as: $self->pet_api->update_pet() - -## `update_pet_with_form()` - - Defined in: WWW::SwaggerClient::PetApi - Delegates to: update_pet_with_form() - On: WWW::SwaggerClient::PetApi - Via: pet_api() - Doc: Updates a pet in the store with form data - Same as: $self->pet_api->update_pet_with_form() - -## `update_user()` - - Defined in: WWW::SwaggerClient::UserApi - Delegates to: update_user() - On: WWW::SwaggerClient::UserApi - Via: user_api() - Doc: Updated user - Same as: $self->user_api->update_user() - -## `upload_file()` - - Defined in: WWW::SwaggerClient::PetApi - Delegates to: upload_file() - On: WWW::SwaggerClient::PetApi - Via: pet_api() - Doc: uploads an image - Same as: $self->pet_api->upload_file() - -# ATTRIBUTES +The generated code has the `base_url` already set as a default value. This method +returns (and optionally sets, but only if the API client has not been +created yet) the current value of `base_url`. ## `api_factory` - is: ro - isa: WWW::SwaggerClient::ApiFactory - reqd: no - lazy: yes - doc: Builds an instance of the endpoint API class - handles: +Returns an API factory object. You probably won't need to call this directly. -## `base_url` + $self->api_factory('Pet'); # returns a WWW::SwaggerClient::PetApi instance + + $self->pet_api; # the same - is: ro - isa: Str - reqd: no - lazy: no - doc: Root of the server that requests are sent to - handles: +# MISSING METHODS -## `pet_api` +Most of the methods on the API are delegated to individual endpoint API objects +(e.g. Pet API, Store API, User API etc). Where different endpoint APIs use the +same method name (e.g. `new()`), these methods can't be delegated. So you need +to call `$api->pet_api->new()`. - is: ro - isa: WWW::SwaggerClient::PetApi - reqd: no - lazy: yes - doc: - handles: add_pet, delete_pet, find_pets_by_status, find_pets_by_tags, - get_pet_by_id, update_pet, update_pet_with_form, upload_file +In principle, every API is susceptible to the presence of a few, random, undelegatable +method names. In practice, because of the way method names are constructed, it's +unlikely in general that any methods will be undelegatable, except for: -## `store_api` + new() + class_documentation() + method_documentation() - is: ro - isa: WWW::SwaggerClient::StoreApi - reqd: no - lazy: yes - doc: - handles: delete_order, get_inventory, get_order_by_id, place_order +To call these methods, you need to get a handle on the relevant object, either +by calling `$api->foo_api` or by retrieving an object, e.g. +`$api->get_pet_by_id(pet_id => $pet_id)`. They are class methods, so +you could also call them on class names. -## `tokens` +# BUILDING YOUR LIBRARY - is: ro - isa: HashRef - reqd: no - lazy: no - doc: The auth tokens required by the application - basic, OAuth and/or API key(s) - handles: +See the homepage `https://github.com/swagger-api/swagger-codegen` for full details. +But briefly, clone the git repository, build the codegen codebase, set up your build +config file, then run the API build script. You will need git, Java 7 and Apache +maven 3.0.3 or better already installed. -## `user_api` +The config file should specify the project name for the generated library: - is: ro - isa: WWW::SwaggerClient::UserApi - reqd: no - lazy: yes - doc: - handles: create_user, create_users_with_array_input, - create_users_with_list_input, delete_user, get_user_by_name, - login_user, logout_user, update_user + {"moduleName":"MyProjectName"} -## `version_info` +Your library files will be built under `WWW::MyProjectName`. - is: ro - isa: HashRef - reqd: no - lazy: no - doc: Information about the application version and the codegen codebase version - handles: + $ git clone https://github.com/swagger-api/swagger-codegen.git + $ cd swagger-codegen + $ mvn package + $ java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \ + -i [URL or file path to JSON swagger API spec] \ + -l perl \ + -c /path/to/config/file.json \ + -o /path/to/output/folder + +Bang, all done. Run the `autodoc` script in the `bin` directory to see the API +you just built. + +# AUTOMATIC DOCUMENTATION + +You can print out a summary of the generated API by running the included +`autodoc` script in the `bin` directory of your generated library. A few +output formats are supported: + + Usage: autodoc [OPTION] + + -w wide format (default) + -n narrow format + -p POD format + -H HTML format + -m Markdown format + -h print this help message + -c your application class + + +The `-c` option allows you to load and inspect your own application. A dummy +namespace is used if you don't supply your own class. + +# DOCUMENTATION FROM THE SWAGGER SPEC + +Additional documentation for each class and method may be provided by the Swagger +spec. If so, this is available via the `class_documentation()` and +`method_documentation()` methods on each generated object class, and the +`method_documentation()` method on the endpoint API classes: + + my $cmdoc = $api->pet_api->method_documentation->{$method_name}; + + my $odoc = $api->get_pet_by_id->(pet_id => $pet_id)->class_documentation; + my $omdoc = $api->get_pet_by_id->(pet_id => $pet_id)->method_documentation->{method_name}; + + +Each of these calls returns a hashref with various useful pieces of information. diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Category.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Category.pm index 43c12b040c7..77dd19a7caf 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Category.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Category.pm @@ -11,7 +11,9 @@ use Log::Any qw($log); use Date::Parse; use DateTime; -use base "WWW::SwaggerClient::Object::BaseObject"; +#use base "WWW::SwaggerClient::Object::BaseObject"; +use base ("Class::Accessor", "Class::Data::Inheritable"); + # # @@ -19,6 +21,83 @@ use base "WWW::SwaggerClient::Object::BaseObject"; #NOTE: This class is auto generated by the swagger code generator program. Do not edit the class manually. # +#__PACKAGE__->mk_classdata('attribute_map' => {}); +#__PACKAGE__->mk_classdata('swagger_types' => {}); +#__PACKAGE__->mk_classdata('method_documentation' => {}); +#__PACKAGE__->mk_classdata('class_documentation' => {}); + +# new object +sub new { + my ($class, %args) = @_; + + my $self = bless {}, $class; + + foreach my $attribute (keys %{$class->attribute_map}) { + my $args_key = $class->attribute_map->{$attribute}; + $self->$attribute( $args{ $args_key } ); + } + + return $self; +} + +# return perl hash +sub to_hash { + return decode_json(JSON->new->convert_blessed->encode( shift )); +} + +# used by JSON for serialization +sub TO_JSON { + my $self = shift; + my $_data = {}; + foreach my $_key (keys %{$self->attribute_map}) { + if (defined $self->{$_key}) { + $_data->{$self->attribute_map->{$_key}} = $self->{$_key}; + } + } + return $_data; +} + +# from Perl hashref +sub from_hash { + my ($self, $hash) = @_; + + # loop through attributes and use swagger_types to deserialize the data + while ( my ($_key, $_type) = each %{$self->swagger_types} ) { + my $_json_attribute = $self->attribute_map->{$_key}; + if ($_type =~ /^array\[/i) { # array + my $_subclass = substr($_type, 6, -1); + my @_array = (); + foreach my $_element (@{$hash->{$_json_attribute}}) { + push @_array, $self->_deserialize($_subclass, $_element); + } + $self->{$_key} = \@_array; + } elsif (exists $hash->{$_json_attribute}) { #hash(model), primitive, datetime + $self->{$_key} = $self->_deserialize($_type, $hash->{$_json_attribute}); + } else { + $log->debugf("Warning: %s (%s) does not exist in input hash\n", $_key, $_json_attribute); + } + } + + return $self; +} + +# deserialize non-array data +sub _deserialize { + my ($self, $type, $data) = @_; + $log->debugf("deserializing %s with %s",Dumper($data), $type); + + if ($type eq 'DateTime') { + return DateTime->from_epoch(epoch => str2time($data)); + } elsif ( grep( /^$type$/, ('int', 'double', 'string', 'boolean'))) { + return $data; + } else { # hash(model) + my $_instance = eval "WWW::SwaggerClient::Object::$type->new()"; + return $_instance->from_hash($data); + } +} + + + __PACKAGE__->class_documentation({description => '', class => 'Category', required => [], # TODO @@ -54,4 +133,5 @@ __PACKAGE__->attribute_map( { __PACKAGE__->mk_accessors(keys %{__PACKAGE__->attribute_map}); + 1; diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Order.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Order.pm index ea5f6160ee5..cbb7a21c26c 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Order.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Order.pm @@ -11,7 +11,9 @@ use Log::Any qw($log); use Date::Parse; use DateTime; -use base "WWW::SwaggerClient::Object::BaseObject"; +#use base "WWW::SwaggerClient::Object::BaseObject"; +use base ("Class::Accessor", "Class::Data::Inheritable"); + # # @@ -19,6 +21,83 @@ use base "WWW::SwaggerClient::Object::BaseObject"; #NOTE: This class is auto generated by the swagger code generator program. Do not edit the class manually. # +__PACKAGE__->mk_classdata('attribute_map' => {}); +__PACKAGE__->mk_classdata('swagger_types' => {}); +__PACKAGE__->mk_classdata('method_documentation' => {}); +__PACKAGE__->mk_classdata('class_documentation' => {}); + +# new object +sub new { + my ($class, %args) = @_; + + my $self = bless {}, $class; + + foreach my $attribute (keys %{$class->attribute_map}) { + my $args_key = $class->attribute_map->{$attribute}; + $self->$attribute( $args{ $args_key } ); + } + + return $self; +} + +# return perl hash +sub to_hash { + return decode_json(JSON->new->convert_blessed->encode( shift )); +} + +# used by JSON for serialization +sub TO_JSON { + my $self = shift; + my $_data = {}; + foreach my $_key (keys %{$self->attribute_map}) { + if (defined $self->{$_key}) { + $_data->{$self->attribute_map->{$_key}} = $self->{$_key}; + } + } + return $_data; +} + +# from Perl hashref +sub from_hash { + my ($self, $hash) = @_; + + # loop through attributes and use swagger_types to deserialize the data + while ( my ($_key, $_type) = each %{$self->swagger_types} ) { + my $_json_attribute = $self->attribute_map->{$_key}; + if ($_type =~ /^array\[/i) { # array + my $_subclass = substr($_type, 6, -1); + my @_array = (); + foreach my $_element (@{$hash->{$_json_attribute}}) { + push @_array, $self->_deserialize($_subclass, $_element); + } + $self->{$_key} = \@_array; + } elsif (exists $hash->{$_json_attribute}) { #hash(model), primitive, datetime + $self->{$_key} = $self->_deserialize($_type, $hash->{$_json_attribute}); + } else { + $log->debugf("Warning: %s (%s) does not exist in input hash\n", $_key, $_json_attribute); + } + } + + return $self; +} + +# deserialize non-array data +sub _deserialize { + my ($self, $type, $data) = @_; + $log->debugf("deserializing %s with %s",Dumper($data), $type); + + if ($type eq 'DateTime') { + return DateTime->from_epoch(epoch => str2time($data)); + } elsif ( grep( /^$type$/, ('int', 'double', 'string', 'boolean'))) { + return $data; + } else { # hash(model) + my $_instance = eval "WWW::SwaggerClient::Object::$type->new()"; + return $_instance->from_hash($data); + } +} + + + __PACKAGE__->class_documentation({description => '', class => 'Order', required => [], # TODO @@ -90,4 +169,5 @@ __PACKAGE__->attribute_map( { __PACKAGE__->mk_accessors(keys %{__PACKAGE__->attribute_map}); + 1; diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Pet.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Pet.pm index a1aeb134178..f1f49e85f5e 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Pet.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Pet.pm @@ -11,7 +11,9 @@ use Log::Any qw($log); use Date::Parse; use DateTime; -use base "WWW::SwaggerClient::Object::BaseObject"; +#use base "WWW::SwaggerClient::Object::BaseObject"; +use base ("Class::Accessor", "Class::Data::Inheritable"); + # # @@ -19,6 +21,83 @@ use base "WWW::SwaggerClient::Object::BaseObject"; #NOTE: This class is auto generated by the swagger code generator program. Do not edit the class manually. # +__PACKAGE__->mk_classdata('attribute_map' => {}); +__PACKAGE__->mk_classdata('swagger_types' => {}); +__PACKAGE__->mk_classdata('method_documentation' => {}); +__PACKAGE__->mk_classdata('class_documentation' => {}); + +# new object +sub new { + my ($class, %args) = @_; + + my $self = bless {}, $class; + + foreach my $attribute (keys %{$class->attribute_map}) { + my $args_key = $class->attribute_map->{$attribute}; + $self->$attribute( $args{ $args_key } ); + } + + return $self; +} + +# return perl hash +sub to_hash { + return decode_json(JSON->new->convert_blessed->encode( shift )); +} + +# used by JSON for serialization +sub TO_JSON { + my $self = shift; + my $_data = {}; + foreach my $_key (keys %{$self->attribute_map}) { + if (defined $self->{$_key}) { + $_data->{$self->attribute_map->{$_key}} = $self->{$_key}; + } + } + return $_data; +} + +# from Perl hashref +sub from_hash { + my ($self, $hash) = @_; + + # loop through attributes and use swagger_types to deserialize the data + while ( my ($_key, $_type) = each %{$self->swagger_types} ) { + my $_json_attribute = $self->attribute_map->{$_key}; + if ($_type =~ /^array\[/i) { # array + my $_subclass = substr($_type, 6, -1); + my @_array = (); + foreach my $_element (@{$hash->{$_json_attribute}}) { + push @_array, $self->_deserialize($_subclass, $_element); + } + $self->{$_key} = \@_array; + } elsif (exists $hash->{$_json_attribute}) { #hash(model), primitive, datetime + $self->{$_key} = $self->_deserialize($_type, $hash->{$_json_attribute}); + } else { + $log->debugf("Warning: %s (%s) does not exist in input hash\n", $_key, $_json_attribute); + } + } + + return $self; +} + +# deserialize non-array data +sub _deserialize { + my ($self, $type, $data) = @_; + $log->debugf("deserializing %s with %s",Dumper($data), $type); + + if ($type eq 'DateTime') { + return DateTime->from_epoch(epoch => str2time($data)); + } elsif ( grep( /^$type$/, ('int', 'double', 'string', 'boolean'))) { + return $data; + } else { # hash(model) + my $_instance = eval "WWW::SwaggerClient::Object::$type->new()"; + return $_instance->from_hash($data); + } +} + + + __PACKAGE__->class_documentation({description => '', class => 'Pet', required => [], # TODO @@ -90,4 +169,5 @@ __PACKAGE__->attribute_map( { __PACKAGE__->mk_accessors(keys %{__PACKAGE__->attribute_map}); + 1; diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Tag.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Tag.pm index a50eded7cde..dd84157915b 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Tag.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Tag.pm @@ -11,7 +11,9 @@ use Log::Any qw($log); use Date::Parse; use DateTime; -use base "WWW::SwaggerClient::Object::BaseObject"; +#use base "WWW::SwaggerClient::Object::BaseObject"; +use base ("Class::Accessor", "Class::Data::Inheritable"); + # # @@ -19,6 +21,83 @@ use base "WWW::SwaggerClient::Object::BaseObject"; #NOTE: This class is auto generated by the swagger code generator program. Do not edit the class manually. # +__PACKAGE__->mk_classdata('attribute_map' => {}); +__PACKAGE__->mk_classdata('swagger_types' => {}); +__PACKAGE__->mk_classdata('method_documentation' => {}); +__PACKAGE__->mk_classdata('class_documentation' => {}); + +# new object +sub new { + my ($class, %args) = @_; + + my $self = bless {}, $class; + + foreach my $attribute (keys %{$class->attribute_map}) { + my $args_key = $class->attribute_map->{$attribute}; + $self->$attribute( $args{ $args_key } ); + } + + return $self; +} + +# return perl hash +sub to_hash { + return decode_json(JSON->new->convert_blessed->encode( shift )); +} + +# used by JSON for serialization +sub TO_JSON { + my $self = shift; + my $_data = {}; + foreach my $_key (keys %{$self->attribute_map}) { + if (defined $self->{$_key}) { + $_data->{$self->attribute_map->{$_key}} = $self->{$_key}; + } + } + return $_data; +} + +# from Perl hashref +sub from_hash { + my ($self, $hash) = @_; + + # loop through attributes and use swagger_types to deserialize the data + while ( my ($_key, $_type) = each %{$self->swagger_types} ) { + my $_json_attribute = $self->attribute_map->{$_key}; + if ($_type =~ /^array\[/i) { # array + my $_subclass = substr($_type, 6, -1); + my @_array = (); + foreach my $_element (@{$hash->{$_json_attribute}}) { + push @_array, $self->_deserialize($_subclass, $_element); + } + $self->{$_key} = \@_array; + } elsif (exists $hash->{$_json_attribute}) { #hash(model), primitive, datetime + $self->{$_key} = $self->_deserialize($_type, $hash->{$_json_attribute}); + } else { + $log->debugf("Warning: %s (%s) does not exist in input hash\n", $_key, $_json_attribute); + } + } + + return $self; +} + +# deserialize non-array data +sub _deserialize { + my ($self, $type, $data) = @_; + $log->debugf("deserializing %s with %s",Dumper($data), $type); + + if ($type eq 'DateTime') { + return DateTime->from_epoch(epoch => str2time($data)); + } elsif ( grep( /^$type$/, ('int', 'double', 'string', 'boolean'))) { + return $data; + } else { # hash(model) + my $_instance = eval "WWW::SwaggerClient::Object::$type->new()"; + return $_instance->from_hash($data); + } +} + + + __PACKAGE__->class_documentation({description => '', class => 'Tag', required => [], # TODO @@ -54,4 +133,5 @@ __PACKAGE__->attribute_map( { __PACKAGE__->mk_accessors(keys %{__PACKAGE__->attribute_map}); + 1; diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/User.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/User.pm index cb431b1e059..3e7fd312141 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/User.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/User.pm @@ -11,7 +11,9 @@ use Log::Any qw($log); use Date::Parse; use DateTime; -use base "WWW::SwaggerClient::Object::BaseObject"; +#use base "WWW::SwaggerClient::Object::BaseObject"; +use base ("Class::Accessor", "Class::Data::Inheritable"); + # # @@ -19,6 +21,83 @@ use base "WWW::SwaggerClient::Object::BaseObject"; #NOTE: This class is auto generated by the swagger code generator program. Do not edit the class manually. # +__PACKAGE__->mk_classdata('attribute_map' => {}); +__PACKAGE__->mk_classdata('swagger_types' => {}); +__PACKAGE__->mk_classdata('method_documentation' => {}); +__PACKAGE__->mk_classdata('class_documentation' => {}); + +# new object +sub new { + my ($class, %args) = @_; + + my $self = bless {}, $class; + + foreach my $attribute (keys %{$class->attribute_map}) { + my $args_key = $class->attribute_map->{$attribute}; + $self->$attribute( $args{ $args_key } ); + } + + return $self; +} + +# return perl hash +sub to_hash { + return decode_json(JSON->new->convert_blessed->encode( shift )); +} + +# used by JSON for serialization +sub TO_JSON { + my $self = shift; + my $_data = {}; + foreach my $_key (keys %{$self->attribute_map}) { + if (defined $self->{$_key}) { + $_data->{$self->attribute_map->{$_key}} = $self->{$_key}; + } + } + return $_data; +} + +# from Perl hashref +sub from_hash { + my ($self, $hash) = @_; + + # loop through attributes and use swagger_types to deserialize the data + while ( my ($_key, $_type) = each %{$self->swagger_types} ) { + my $_json_attribute = $self->attribute_map->{$_key}; + if ($_type =~ /^array\[/i) { # array + my $_subclass = substr($_type, 6, -1); + my @_array = (); + foreach my $_element (@{$hash->{$_json_attribute}}) { + push @_array, $self->_deserialize($_subclass, $_element); + } + $self->{$_key} = \@_array; + } elsif (exists $hash->{$_json_attribute}) { #hash(model), primitive, datetime + $self->{$_key} = $self->_deserialize($_type, $hash->{$_json_attribute}); + } else { + $log->debugf("Warning: %s (%s) does not exist in input hash\n", $_key, $_json_attribute); + } + } + + return $self; +} + +# deserialize non-array data +sub _deserialize { + my ($self, $type, $data) = @_; + $log->debugf("deserializing %s with %s",Dumper($data), $type); + + if ($type eq 'DateTime') { + return DateTime->from_epoch(epoch => str2time($data)); + } elsif ( grep( /^$type$/, ('int', 'double', 'string', 'boolean'))) { + return $data; + } else { # hash(model) + my $_instance = eval "WWW::SwaggerClient::Object::$type->new()"; + return $_instance->from_hash($data); + } +} + + + __PACKAGE__->class_documentation({description => '', class => 'User', required => [], # TODO @@ -108,4 +187,5 @@ __PACKAGE__->attribute_map( { __PACKAGE__->mk_accessors(keys %{__PACKAGE__->attribute_map}); + 1; diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/PetApi.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/PetApi.pm index 06ccfca98e8..7cceeca62fd 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/PetApi.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/PetApi.pm @@ -567,6 +567,65 @@ sub delete_pet { } +# +# download_file +# +# downloads an image +# +{ + my $params = { + }; + __PACKAGE__->method_documentation->{ download_file } = { + summary => 'downloads an image', + params => $params, + returns => 'File', + }; +} +# @return File +# +sub download_file { + my ($self, %args) = @_; + + + + # parse inputs + my $_resource_path = '/pet/{petId}/downloadImage'; + $_resource_path =~ s/{format}/json/; # default format to json + + my $_method = 'GET'; + my $query_params = {}; + my $header_params = {}; + my $form_params = {}; + + # 'Accept' and 'Content-Type' header + my $_header_accept = $self->{api_client}->select_header_accept('application/octet-stream'); + if ($_header_accept) { + $header_params->{'Accept'} = $_header_accept; + } + $header_params->{'Content-Type'} = $self->{api_client}->select_header_content_type(); + + + + + + my $_body_data; + + + # authentication setting, if any + my $auth_settings = [qw()]; + + # make the API Call + my $response = $self->{api_client}->call_api($_resource_path, $_method, + $query_params, $form_params, + $header_params, $_body_data, $auth_settings); + if (!$response) { + return; + } + my $_response_object = $self->{api_client}->deserialize('File', $response); + return $_response_object; + +} + # # upload_file # diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm index 941d9e0ce24..cfe13ba5e21 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm @@ -37,7 +37,7 @@ has version_info => ( is => 'ro', default => sub { { app_name => 'Swagger Petstore', app_version => '1.0.0', - generated_date => '2015-11-20T17:35:18.902+08:00', + generated_date => '2015-12-28T16:00:32.828+08:00', generator_class => 'class io.swagger.codegen.languages.PerlClientCodegen', } }, documentation => 'Information about the application version and the codegen codebase version' @@ -103,7 +103,7 @@ Automatically generated by the Perl Swagger Codegen project: =over 4 -=item Build date: 2015-11-20T17:35:18.902+08:00 +=item Build date: 2015-12-28T16:00:32.828+08:00 =item Build package: class io.swagger.codegen.languages.PerlClientCodegen From 7b10023784136ff1eae9b0391e0ec52e66885308 Mon Sep 17 00:00:00 2001 From: wing328 Date: Mon, 28 Dec 2015 16:12:18 +0800 Subject: [PATCH 038/623] update perl sample --- samples/client/petstore/perl/README.md | 2 +- .../lib/WWW/SwaggerClient/Object/Category.pm | 8 +-- .../perl/lib/WWW/SwaggerClient/PetApi.pm | 59 ------------------- .../perl/lib/WWW/SwaggerClient/Role.pm | 4 +- 4 files changed, 7 insertions(+), 66 deletions(-) diff --git a/samples/client/petstore/perl/README.md b/samples/client/petstore/perl/README.md index d07bf6f7121..5468824638b 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: 2015-12-28T16:00:32.828+08:00 +- Build date: 2015-12-28T16:09:37.489+08:00 - Build package: class io.swagger.codegen.languages.PerlClientCodegen - Codegen version: diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Category.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Category.pm index 77dd19a7caf..a1b2b4af09c 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Category.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Category.pm @@ -21,10 +21,10 @@ use base ("Class::Accessor", "Class::Data::Inheritable"); #NOTE: This class is auto generated by the swagger code generator program. Do not edit the class manually. # -#__PACKAGE__->mk_classdata('attribute_map' => {}); -#__PACKAGE__->mk_classdata('swagger_types' => {}); -#__PACKAGE__->mk_classdata('method_documentation' => {}); -#__PACKAGE__->mk_classdata('class_documentation' => {}); +__PACKAGE__->mk_classdata('attribute_map' => {}); +__PACKAGE__->mk_classdata('swagger_types' => {}); +__PACKAGE__->mk_classdata('method_documentation' => {}); +__PACKAGE__->mk_classdata('class_documentation' => {}); # new object sub new { diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/PetApi.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/PetApi.pm index 7cceeca62fd..06ccfca98e8 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/PetApi.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/PetApi.pm @@ -567,65 +567,6 @@ sub delete_pet { } -# -# download_file -# -# downloads an image -# -{ - my $params = { - }; - __PACKAGE__->method_documentation->{ download_file } = { - summary => 'downloads an image', - params => $params, - returns => 'File', - }; -} -# @return File -# -sub download_file { - my ($self, %args) = @_; - - - - # parse inputs - my $_resource_path = '/pet/{petId}/downloadImage'; - $_resource_path =~ s/{format}/json/; # default format to json - - my $_method = 'GET'; - my $query_params = {}; - my $header_params = {}; - my $form_params = {}; - - # 'Accept' and 'Content-Type' header - my $_header_accept = $self->{api_client}->select_header_accept('application/octet-stream'); - if ($_header_accept) { - $header_params->{'Accept'} = $_header_accept; - } - $header_params->{'Content-Type'} = $self->{api_client}->select_header_content_type(); - - - - - - my $_body_data; - - - # authentication setting, if any - my $auth_settings = [qw()]; - - # make the API Call - my $response = $self->{api_client}->call_api($_resource_path, $_method, - $query_params, $form_params, - $header_params, $_body_data, $auth_settings); - if (!$response) { - return; - } - my $_response_object = $self->{api_client}->deserialize('File', $response); - return $_response_object; - -} - # # upload_file # diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm index cfe13ba5e21..dfc004ebc3d 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm @@ -37,7 +37,7 @@ has version_info => ( is => 'ro', default => sub { { app_name => 'Swagger Petstore', app_version => '1.0.0', - generated_date => '2015-12-28T16:00:32.828+08:00', + generated_date => '2015-12-28T16:09:37.489+08:00', generator_class => 'class io.swagger.codegen.languages.PerlClientCodegen', } }, documentation => 'Information about the application version and the codegen codebase version' @@ -103,7 +103,7 @@ Automatically generated by the Perl Swagger Codegen project: =over 4 -=item Build date: 2015-12-28T16:00:32.828+08:00 +=item Build date: 2015-12-28T16:09:37.489+08:00 =item Build package: class io.swagger.codegen.languages.PerlClientCodegen From d6125483cf92b3e2cf9695b1374dc4b6321073b1 Mon Sep 17 00:00:00 2001 From: wing328 Date: Mon, 28 Dec 2015 16:32:41 +0800 Subject: [PATCH 039/623] remove commented code in perl --- .../java/io/swagger/codegen/languages/PerlClientCodegen.java | 1 - .../swagger-codegen/src/main/resources/perl/object.mustache | 1 - samples/client/petstore/perl/README.md | 2 +- .../petstore/perl/lib/WWW/SwaggerClient/Object/Category.pm | 1 - .../petstore/perl/lib/WWW/SwaggerClient/Object/Order.pm | 1 - .../client/petstore/perl/lib/WWW/SwaggerClient/Object/Pet.pm | 1 - .../client/petstore/perl/lib/WWW/SwaggerClient/Object/Tag.pm | 1 - .../client/petstore/perl/lib/WWW/SwaggerClient/Object/User.pm | 1 - samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm | 4 ++-- 9 files changed, 3 insertions(+), 10 deletions(-) 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 2e220841f5d..51f394d5db3 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 @@ -97,7 +97,6 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig { supportingFiles.add(new SupportingFile("ApiClient.mustache", ("lib/WWW/" + moduleName).replace('/', File.separatorChar), "ApiClient.pm")); supportingFiles.add(new SupportingFile("Configuration.mustache", ("lib/WWW/" + moduleName).replace('/', File.separatorChar), "Configuration.pm")); - //supportingFiles.add(new SupportingFile("BaseObject.mustache", ("lib/WWW/" + moduleName).replace('/', File.separatorChar), "Object/BaseObject.pm")); supportingFiles.add(new SupportingFile("ApiFactory.mustache", ("lib/WWW/" + moduleName).replace('/', File.separatorChar), "ApiFactory.pm")); supportingFiles.add(new SupportingFile("Role.mustache", ("lib/WWW/" + moduleName).replace('/', File.separatorChar), "Role.pm")); supportingFiles.add(new SupportingFile("AutoDoc.mustache", ("lib/WWW/" + moduleName + "/Role").replace('/', File.separatorChar), "AutoDoc.pm")); diff --git a/modules/swagger-codegen/src/main/resources/perl/object.mustache b/modules/swagger-codegen/src/main/resources/perl/object.mustache index 95af03e09d3..d2e1b2a2a50 100644 --- a/modules/swagger-codegen/src/main/resources/perl/object.mustache +++ b/modules/swagger-codegen/src/main/resources/perl/object.mustache @@ -13,7 +13,6 @@ use Log::Any qw($log); use Date::Parse; use DateTime; -#use base "WWW::{{moduleName}}::Object::BaseObject"; use base ("Class::Accessor", "Class::Data::Inheritable"); diff --git a/samples/client/petstore/perl/README.md b/samples/client/petstore/perl/README.md index 5468824638b..4cf6dc85470 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: 2015-12-28T16:09:37.489+08:00 +- Build date: 2015-12-28T16:30:58.036+08:00 - Build package: class io.swagger.codegen.languages.PerlClientCodegen - Codegen version: diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Category.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Category.pm index a1b2b4af09c..39767d613ed 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Category.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Category.pm @@ -11,7 +11,6 @@ use Log::Any qw($log); use Date::Parse; use DateTime; -#use base "WWW::SwaggerClient::Object::BaseObject"; use base ("Class::Accessor", "Class::Data::Inheritable"); diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Order.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Order.pm index cbb7a21c26c..500218017bc 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Order.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Order.pm @@ -11,7 +11,6 @@ use Log::Any qw($log); use Date::Parse; use DateTime; -#use base "WWW::SwaggerClient::Object::BaseObject"; use base ("Class::Accessor", "Class::Data::Inheritable"); diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Pet.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Pet.pm index f1f49e85f5e..eadf72be005 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Pet.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Pet.pm @@ -11,7 +11,6 @@ use Log::Any qw($log); use Date::Parse; use DateTime; -#use base "WWW::SwaggerClient::Object::BaseObject"; use base ("Class::Accessor", "Class::Data::Inheritable"); diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Tag.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Tag.pm index dd84157915b..e114c1e1ec0 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Tag.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Tag.pm @@ -11,7 +11,6 @@ use Log::Any qw($log); use Date::Parse; use DateTime; -#use base "WWW::SwaggerClient::Object::BaseObject"; use base ("Class::Accessor", "Class::Data::Inheritable"); diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/User.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/User.pm index 3e7fd312141..463424288d8 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/User.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/User.pm @@ -11,7 +11,6 @@ use Log::Any qw($log); use Date::Parse; use DateTime; -#use base "WWW::SwaggerClient::Object::BaseObject"; use base ("Class::Accessor", "Class::Data::Inheritable"); diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm index dfc004ebc3d..4b4d5144f58 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm @@ -37,7 +37,7 @@ has version_info => ( is => 'ro', default => sub { { app_name => 'Swagger Petstore', app_version => '1.0.0', - generated_date => '2015-12-28T16:09:37.489+08:00', + generated_date => '2015-12-28T16:30:58.036+08:00', generator_class => 'class io.swagger.codegen.languages.PerlClientCodegen', } }, documentation => 'Information about the application version and the codegen codebase version' @@ -103,7 +103,7 @@ Automatically generated by the Perl Swagger Codegen project: =over 4 -=item Build date: 2015-12-28T16:09:37.489+08:00 +=item Build date: 2015-12-28T16:30:58.036+08:00 =item Build package: class io.swagger.codegen.languages.PerlClientCodegen From 670e56f692e7ba5d85884ff642f593d33b42f428 Mon Sep 17 00:00:00 2001 From: xhh Date: Mon, 28 Dec 2015 17:42:33 +0800 Subject: [PATCH 040/623] Remove base_object from Ruby model and move methods from base_object to each model so that model files will have no dependency when generating "models only" --- .../codegen/languages/RubyClientCodegen.java | 1 - .../main/resources/ruby/base_object.mustache | 9 -- .../src/main/resources/ruby/gem.mustache | 1 - .../src/main/resources/ruby/model.mustache | 6 +- samples/client/petstore/ruby/lib/petstore.rb | 1 - .../ruby/lib/petstore/models/base_object.rb | 99 ------------------- .../ruby/lib/petstore/models/category.rb | 96 +++++++++++++++++- .../ruby/lib/petstore/models/order.rb | 96 +++++++++++++++++- .../petstore/ruby/lib/petstore/models/pet.rb | 96 +++++++++++++++++- .../petstore/ruby/lib/petstore/models/tag.rb | 96 +++++++++++++++++- .../petstore/ruby/lib/petstore/models/user.rb | 96 +++++++++++++++++- .../petstore/ruby/spec/base_object_spec.rb | 6 +- 12 files changed, 483 insertions(+), 120 deletions(-) delete mode 100644 samples/client/petstore/ruby/lib/petstore/models/base_object.rb diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RubyClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RubyClientCodegen.java index 25f0521c5f8..d292362e2b9 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RubyClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RubyClientCodegen.java @@ -127,7 +127,6 @@ public class RubyClientCodegen extends DefaultCodegen implements CodegenConfig { supportingFiles.add(new SupportingFile("configuration.mustache", gemFolder, "configuration.rb")); supportingFiles.add(new SupportingFile("version.mustache", gemFolder, "version.rb")); String modelFolder = gemFolder + File.separator + modelPackage.replace("/", File.separator); - supportingFiles.add(new SupportingFile("base_object.mustache", modelFolder, "base_object.rb")); } @Override diff --git a/modules/swagger-codegen/src/main/resources/ruby/base_object.mustache b/modules/swagger-codegen/src/main/resources/ruby/base_object.mustache index ddb68998e9e..d4ea5b334a6 100644 --- a/modules/swagger-codegen/src/main/resources/ruby/base_object.mustache +++ b/modules/swagger-codegen/src/main/resources/ruby/base_object.mustache @@ -1,9 +1,3 @@ -require 'date' - -module {{moduleName}} - # base class containing fundamental method such as to_hash, build_from_hash and more - class BaseObject - # build the object from hash def build_from_hash(attributes) return nil unless attributes.is_a?(Hash) @@ -94,6 +88,3 @@ module {{moduleName}} value end end - - end -end diff --git a/modules/swagger-codegen/src/main/resources/ruby/gem.mustache b/modules/swagger-codegen/src/main/resources/ruby/gem.mustache index 2000b2be86f..ec5ee0ac17c 100644 --- a/modules/swagger-codegen/src/main/resources/ruby/gem.mustache +++ b/modules/swagger-codegen/src/main/resources/ruby/gem.mustache @@ -5,7 +5,6 @@ require '{{gemName}}/version' require '{{gemName}}/configuration' # Models -require '{{gemName}}/{{modelPackage}}/base_object' {{#models}} require '{{importPath}}' {{/models}} diff --git a/modules/swagger-codegen/src/main/resources/ruby/model.mustache b/modules/swagger-codegen/src/main/resources/ruby/model.mustache index f253a2c0e60..21de688e525 100644 --- a/modules/swagger-codegen/src/main/resources/ruby/model.mustache +++ b/modules/swagger-codegen/src/main/resources/ruby/model.mustache @@ -1,6 +1,8 @@ +require 'date' + module {{moduleName}}{{#models}}{{#model}}{{#description}} # {{{description}}}{{/description}} - class {{classname}} < BaseObject{{#vars}}{{#description}} + class {{classname}}{{#vars}}{{#description}} # {{{description}}}{{/description}} attr_accessor :{{{name}}} {{/vars}} @@ -64,6 +66,8 @@ module {{moduleName}}{{#models}}{{#model}}{{#description}} def hash [{{#vars}}{{name}}{{#hasMore}}, {{/hasMore}}{{/vars}}].hash end + +{{> base_object}} end {{/model}} {{/models}} diff --git a/samples/client/petstore/ruby/lib/petstore.rb b/samples/client/petstore/ruby/lib/petstore.rb index 4c21fb331d3..82cc9a8c4fc 100644 --- a/samples/client/petstore/ruby/lib/petstore.rb +++ b/samples/client/petstore/ruby/lib/petstore.rb @@ -5,7 +5,6 @@ require 'petstore/version' require 'petstore/configuration' # Models -require 'petstore/models/base_object' require 'petstore/models/user' require 'petstore/models/category' require 'petstore/models/pet' diff --git a/samples/client/petstore/ruby/lib/petstore/models/base_object.rb b/samples/client/petstore/ruby/lib/petstore/models/base_object.rb deleted file mode 100644 index af0ec63e79f..00000000000 --- a/samples/client/petstore/ruby/lib/petstore/models/base_object.rb +++ /dev/null @@ -1,99 +0,0 @@ -require 'date' - -module Petstore - # base class containing fundamental method such as to_hash, build_from_hash and more - class BaseObject - - # build the object from hash - def build_from_hash(attributes) - return nil unless attributes.is_a?(Hash) - self.class.swagger_types.each_pair do |key, type| - if type =~ /^Array<(.*)>/i - if attributes[self.class.attribute_map[key]].is_a?(Array) - self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } ) - else - #TODO show warning in debug mode - end - elsif !attributes[self.class.attribute_map[key]].nil? - self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]])) - else - # data not found in attributes(hash), not an issue as the data can be optional - end - end - - self - end - - def _deserialize(type, value) - case type.to_sym - when :DateTime - DateTime.parse(value) - when :Date - Date.parse(value) - when :String - value.to_s - when :Integer - value.to_i - when :Float - value.to_f - when :BOOLEAN - if value =~ /^(true|t|yes|y|1)$/i - true - else - false - end - when /\AArray<(?.+)>\z/ - inner_type = Regexp.last_match[:inner_type] - value.map { |v| _deserialize(inner_type, v) } - when /\AHash<(?.+), (?.+)>\z/ - k_type = Regexp.last_match[:k_type] - v_type = Regexp.last_match[:v_type] - {}.tap do |hash| - value.each do |k, v| - hash[_deserialize(k_type, k)] = _deserialize(v_type, v) - end - end - else # model - _model = Petstore.const_get(type).new - _model.build_from_hash(value) - end - end - - def to_s - to_hash.to_s - end - - # to_body is an alias to to_body (backward compatibility)) - def to_body - to_hash - end - - # return the object in the form of hash - def to_hash - hash = {} - self.class.attribute_map.each_pair do |attr, param| - value = self.send(attr) - next if value.nil? - hash[param] = _to_hash(value) - end - hash - end - - # Method to output non-array value in the form of hash - # For object, use to_hash. Otherwise, just return the value - def _to_hash(value) - if value.is_a?(Array) - value.compact.map{ |v| _to_hash(v) } - elsif value.is_a?(Hash) - {}.tap do |hash| - value.each { |k, v| hash[k] = _to_hash(v) } - end - elsif value.respond_to? :to_hash - value.to_hash - else - value - end - end - - end -end diff --git a/samples/client/petstore/ruby/lib/petstore/models/category.rb b/samples/client/petstore/ruby/lib/petstore/models/category.rb index e223e747e74..2e6effd24c0 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/category.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/category.rb @@ -1,5 +1,7 @@ +require 'date' + module Petstore - class Category < BaseObject + class Category attr_accessor :id attr_accessor :name @@ -58,5 +60,97 @@ module Petstore def hash [id, name].hash end + + # build the object from hash + def build_from_hash(attributes) + return nil unless attributes.is_a?(Hash) + self.class.swagger_types.each_pair do |key, type| + if type =~ /^Array<(.*)>/i + if attributes[self.class.attribute_map[key]].is_a?(Array) + self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } ) + else + #TODO show warning in debug mode + end + elsif !attributes[self.class.attribute_map[key]].nil? + self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]])) + else + # data not found in attributes(hash), not an issue as the data can be optional + end + end + + self + end + + def _deserialize(type, value) + case type.to_sym + when :DateTime + DateTime.parse(value) + when :Date + Date.parse(value) + when :String + value.to_s + when :Integer + value.to_i + when :Float + value.to_f + when :BOOLEAN + if value =~ /^(true|t|yes|y|1)$/i + true + else + false + end + when /\AArray<(?.+)>\z/ + inner_type = Regexp.last_match[:inner_type] + value.map { |v| _deserialize(inner_type, v) } + when /\AHash<(?.+), (?.+)>\z/ + k_type = Regexp.last_match[:k_type] + v_type = Regexp.last_match[:v_type] + {}.tap do |hash| + value.each do |k, v| + hash[_deserialize(k_type, k)] = _deserialize(v_type, v) + end + end + else # model + _model = Petstore.const_get(type).new + _model.build_from_hash(value) + end + end + + def to_s + to_hash.to_s + end + + # to_body is an alias to to_body (backward compatibility)) + def to_body + to_hash + end + + # return the object in the form of hash + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + next if value.nil? + hash[param] = _to_hash(value) + end + hash + end + + # Method to output non-array value in the form of hash + # For object, use to_hash. Otherwise, just return the value + def _to_hash(value) + if value.is_a?(Array) + value.compact.map{ |v| _to_hash(v) } + elsif value.is_a?(Hash) + {}.tap do |hash| + value.each { |k, v| hash[k] = _to_hash(v) } + end + elsif value.respond_to? :to_hash + value.to_hash + else + value + end + end + end end diff --git a/samples/client/petstore/ruby/lib/petstore/models/order.rb b/samples/client/petstore/ruby/lib/petstore/models/order.rb index 19a33d1cfc3..0ff43744c75 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/order.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/order.rb @@ -1,5 +1,7 @@ +require 'date' + module Petstore - class Order < BaseObject + class Order attr_accessor :id attr_accessor :pet_id @@ -108,5 +110,97 @@ module Petstore def hash [id, pet_id, quantity, ship_date, status, complete].hash end + + # build the object from hash + def build_from_hash(attributes) + return nil unless attributes.is_a?(Hash) + self.class.swagger_types.each_pair do |key, type| + if type =~ /^Array<(.*)>/i + if attributes[self.class.attribute_map[key]].is_a?(Array) + self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } ) + else + #TODO show warning in debug mode + end + elsif !attributes[self.class.attribute_map[key]].nil? + self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]])) + else + # data not found in attributes(hash), not an issue as the data can be optional + end + end + + self + end + + def _deserialize(type, value) + case type.to_sym + when :DateTime + DateTime.parse(value) + when :Date + Date.parse(value) + when :String + value.to_s + when :Integer + value.to_i + when :Float + value.to_f + when :BOOLEAN + if value =~ /^(true|t|yes|y|1)$/i + true + else + false + end + when /\AArray<(?.+)>\z/ + inner_type = Regexp.last_match[:inner_type] + value.map { |v| _deserialize(inner_type, v) } + when /\AHash<(?.+), (?.+)>\z/ + k_type = Regexp.last_match[:k_type] + v_type = Regexp.last_match[:v_type] + {}.tap do |hash| + value.each do |k, v| + hash[_deserialize(k_type, k)] = _deserialize(v_type, v) + end + end + else # model + _model = Petstore.const_get(type).new + _model.build_from_hash(value) + end + end + + def to_s + to_hash.to_s + end + + # to_body is an alias to to_body (backward compatibility)) + def to_body + to_hash + end + + # return the object in the form of hash + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + next if value.nil? + hash[param] = _to_hash(value) + end + hash + end + + # Method to output non-array value in the form of hash + # For object, use to_hash. Otherwise, just return the value + def _to_hash(value) + if value.is_a?(Array) + value.compact.map{ |v| _to_hash(v) } + elsif value.is_a?(Hash) + {}.tap do |hash| + value.each { |k, v| hash[k] = _to_hash(v) } + end + elsif value.respond_to? :to_hash + value.to_hash + else + value + end + end + end end diff --git a/samples/client/petstore/ruby/lib/petstore/models/pet.rb b/samples/client/petstore/ruby/lib/petstore/models/pet.rb index fb967cbbab4..cba403d7e28 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/pet.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/pet.rb @@ -1,5 +1,7 @@ +require 'date' + module Petstore - class Pet < BaseObject + class Pet attr_accessor :id attr_accessor :category @@ -112,5 +114,97 @@ module Petstore def hash [id, category, name, photo_urls, tags, status].hash end + + # build the object from hash + def build_from_hash(attributes) + return nil unless attributes.is_a?(Hash) + self.class.swagger_types.each_pair do |key, type| + if type =~ /^Array<(.*)>/i + if attributes[self.class.attribute_map[key]].is_a?(Array) + self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } ) + else + #TODO show warning in debug mode + end + elsif !attributes[self.class.attribute_map[key]].nil? + self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]])) + else + # data not found in attributes(hash), not an issue as the data can be optional + end + end + + self + end + + def _deserialize(type, value) + case type.to_sym + when :DateTime + DateTime.parse(value) + when :Date + Date.parse(value) + when :String + value.to_s + when :Integer + value.to_i + when :Float + value.to_f + when :BOOLEAN + if value =~ /^(true|t|yes|y|1)$/i + true + else + false + end + when /\AArray<(?.+)>\z/ + inner_type = Regexp.last_match[:inner_type] + value.map { |v| _deserialize(inner_type, v) } + when /\AHash<(?.+), (?.+)>\z/ + k_type = Regexp.last_match[:k_type] + v_type = Regexp.last_match[:v_type] + {}.tap do |hash| + value.each do |k, v| + hash[_deserialize(k_type, k)] = _deserialize(v_type, v) + end + end + else # model + _model = Petstore.const_get(type).new + _model.build_from_hash(value) + end + end + + def to_s + to_hash.to_s + end + + # to_body is an alias to to_body (backward compatibility)) + def to_body + to_hash + end + + # return the object in the form of hash + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + next if value.nil? + hash[param] = _to_hash(value) + end + hash + end + + # Method to output non-array value in the form of hash + # For object, use to_hash. Otherwise, just return the value + def _to_hash(value) + if value.is_a?(Array) + value.compact.map{ |v| _to_hash(v) } + elsif value.is_a?(Hash) + {}.tap do |hash| + value.each { |k, v| hash[k] = _to_hash(v) } + end + elsif value.respond_to? :to_hash + value.to_hash + else + value + end + end + end end diff --git a/samples/client/petstore/ruby/lib/petstore/models/tag.rb b/samples/client/petstore/ruby/lib/petstore/models/tag.rb index 681c2a2a5c9..a821b665d17 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/tag.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/tag.rb @@ -1,5 +1,7 @@ +require 'date' + module Petstore - class Tag < BaseObject + class Tag attr_accessor :id attr_accessor :name @@ -58,5 +60,97 @@ module Petstore def hash [id, name].hash end + + # build the object from hash + def build_from_hash(attributes) + return nil unless attributes.is_a?(Hash) + self.class.swagger_types.each_pair do |key, type| + if type =~ /^Array<(.*)>/i + if attributes[self.class.attribute_map[key]].is_a?(Array) + self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } ) + else + #TODO show warning in debug mode + end + elsif !attributes[self.class.attribute_map[key]].nil? + self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]])) + else + # data not found in attributes(hash), not an issue as the data can be optional + end + end + + self + end + + def _deserialize(type, value) + case type.to_sym + when :DateTime + DateTime.parse(value) + when :Date + Date.parse(value) + when :String + value.to_s + when :Integer + value.to_i + when :Float + value.to_f + when :BOOLEAN + if value =~ /^(true|t|yes|y|1)$/i + true + else + false + end + when /\AArray<(?.+)>\z/ + inner_type = Regexp.last_match[:inner_type] + value.map { |v| _deserialize(inner_type, v) } + when /\AHash<(?.+), (?.+)>\z/ + k_type = Regexp.last_match[:k_type] + v_type = Regexp.last_match[:v_type] + {}.tap do |hash| + value.each do |k, v| + hash[_deserialize(k_type, k)] = _deserialize(v_type, v) + end + end + else # model + _model = Petstore.const_get(type).new + _model.build_from_hash(value) + end + end + + def to_s + to_hash.to_s + end + + # to_body is an alias to to_body (backward compatibility)) + def to_body + to_hash + end + + # return the object in the form of hash + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + next if value.nil? + hash[param] = _to_hash(value) + end + hash + end + + # Method to output non-array value in the form of hash + # For object, use to_hash. Otherwise, just return the value + def _to_hash(value) + if value.is_a?(Array) + value.compact.map{ |v| _to_hash(v) } + elsif value.is_a?(Hash) + {}.tap do |hash| + value.each { |k, v| hash[k] = _to_hash(v) } + end + elsif value.respond_to? :to_hash + value.to_hash + else + value + end + end + end end diff --git a/samples/client/petstore/ruby/lib/petstore/models/user.rb b/samples/client/petstore/ruby/lib/petstore/models/user.rb index ca00bf34be1..1959adeaa42 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/user.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/user.rb @@ -1,5 +1,7 @@ +require 'date' + module Petstore - class User < BaseObject + class User attr_accessor :id attr_accessor :username @@ -119,5 +121,97 @@ module Petstore def hash [id, username, first_name, last_name, email, password, phone, user_status].hash end + + # build the object from hash + def build_from_hash(attributes) + return nil unless attributes.is_a?(Hash) + self.class.swagger_types.each_pair do |key, type| + if type =~ /^Array<(.*)>/i + if attributes[self.class.attribute_map[key]].is_a?(Array) + self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } ) + else + #TODO show warning in debug mode + end + elsif !attributes[self.class.attribute_map[key]].nil? + self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]])) + else + # data not found in attributes(hash), not an issue as the data can be optional + end + end + + self + end + + def _deserialize(type, value) + case type.to_sym + when :DateTime + DateTime.parse(value) + when :Date + Date.parse(value) + when :String + value.to_s + when :Integer + value.to_i + when :Float + value.to_f + when :BOOLEAN + if value =~ /^(true|t|yes|y|1)$/i + true + else + false + end + when /\AArray<(?.+)>\z/ + inner_type = Regexp.last_match[:inner_type] + value.map { |v| _deserialize(inner_type, v) } + when /\AHash<(?.+), (?.+)>\z/ + k_type = Regexp.last_match[:k_type] + v_type = Regexp.last_match[:v_type] + {}.tap do |hash| + value.each do |k, v| + hash[_deserialize(k_type, k)] = _deserialize(v_type, v) + end + end + else # model + _model = Petstore.const_get(type).new + _model.build_from_hash(value) + end + end + + def to_s + to_hash.to_s + end + + # to_body is an alias to to_body (backward compatibility)) + def to_body + to_hash + end + + # return the object in the form of hash + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + next if value.nil? + hash[param] = _to_hash(value) + end + hash + end + + # Method to output non-array value in the form of hash + # For object, use to_hash. Otherwise, just return the value + def _to_hash(value) + if value.is_a?(Array) + value.compact.map{ |v| _to_hash(v) } + elsif value.is_a?(Hash) + {}.tap do |hash| + value.each { |k, v| hash[k] = _to_hash(v) } + end + elsif value.respond_to? :to_hash + value.to_hash + else + value + end + end + end end diff --git a/samples/client/petstore/ruby/spec/base_object_spec.rb b/samples/client/petstore/ruby/spec/base_object_spec.rb index 313d47f5d54..a2614ba9c16 100644 --- a/samples/client/petstore/ruby/spec/base_object_spec.rb +++ b/samples/client/petstore/ruby/spec/base_object_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -class ArrayMapObject < Petstore::BaseObject +class ArrayMapObject < Petstore::Category attr_accessor :int_arr, :pet_arr, :int_map, :pet_map, :int_arr_map, :pet_arr_map def self.attribute_map @@ -27,7 +27,7 @@ class ArrayMapObject < Petstore::BaseObject end -describe Petstore::BaseObject do +describe 'BaseObject' do describe 'array and map properties' do let(:obj) { ArrayMapObject.new } @@ -78,4 +78,4 @@ describe Petstore::BaseObject do obj.to_hash.should == data end end -end \ No newline at end of file +end From 7a63dd141659aba513a1944d067abc8dd0be99f9 Mon Sep 17 00:00:00 2001 From: Kirill Vlasov Date: Tue, 15 Dec 2015 14:20:15 +0500 Subject: [PATCH 041/623] Fixing pmd:RedundantFieldInitializer - Redundant Field Initializer --- .../src/main/java/io/swagger/codegen/CodegenProperty.java | 2 +- .../src/main/java/io/swagger/codegen/DefaultCodegen.java | 4 ++-- .../main/java/io/swagger/codegen/DefaultGenerator.java | 4 ++-- .../main/java/io/swagger/codegen/InlineModelResolver.java | 8 ++++---- .../io/swagger/codegen/config/CodegenConfigurator.java | 4 ++-- .../codegen/languages/AsyncScalaClientCodegen.java | 2 +- .../swagger/codegen/languages/ClojureClientCodegen.java | 8 ++++---- .../io/swagger/codegen/languages/FlashClientCodegen.java | 2 +- .../io/swagger/codegen/languages/JavaClientCodegen.java | 2 +- .../codegen/languages/JavascriptClientCodegen.java | 8 ++++---- .../io/swagger/codegen/languages/PythonClientCodegen.java | 4 ++-- .../io/swagger/codegen/languages/RubyClientCodegen.java | 4 ++-- .../io/swagger/codegen/languages/ScalaClientCodegen.java | 2 +- .../swagger/codegen/languages/SinatraServerCodegen.java | 4 ++-- .../java/io/swagger/codegen/languages/SwiftCodegen.java | 2 +- 15 files changed, 30 insertions(+), 30 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenProperty.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenProperty.java index 32e169ac878..32a12cdb21b 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenProperty.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenProperty.java @@ -31,7 +31,7 @@ public class CodegenProperty { public Double maximum; public Boolean exclusiveMinimum; public Boolean exclusiveMaximum; - public Boolean hasMore = null, required = null, secondaryParam = null; + public Boolean hasMore, required, secondaryParam; public Boolean isPrimitiveType, isContainer, isNotContainer; public boolean isEnum; public Boolean isReadOnly = false; diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java index dd8d9aefa90..d9c7b4f2681 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java @@ -71,9 +71,9 @@ public class DefaultCodegen { protected List supportingFiles = new ArrayList(); protected List cliOptions = new ArrayList(); protected boolean skipOverwrite; - protected boolean supportsInheritance = false; + protected boolean supportsInheritance; protected Map supportedLibraries = new LinkedHashMap(); - protected String library = null; + protected String library; protected Boolean sortParamsByRequiredFlag = true; protected Boolean ensureUniqueParams = true; diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java index 3623361387e..2c5ca67198c 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java @@ -22,8 +22,8 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { Logger LOGGER = LoggerFactory.getLogger(DefaultGenerator.class); protected CodegenConfig config; - protected ClientOptInput opts = null; - protected Swagger swagger = null; + protected ClientOptInput opts; + protected Swagger swagger; @Override public Generator opts(ClientOptInput opts) { diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java index 6471a0688a8..2e698162182 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java @@ -17,8 +17,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class InlineModelResolver { - private Swagger swagger = null; - private boolean skipMatches = false; + private Swagger swagger; + private boolean skipMatches; static Logger LOGGER = LoggerFactory.getLogger(InlineModelResolver.class); Map addedModels = new HashMap(); @@ -118,8 +118,8 @@ public class InlineModelResolver { ap.setItems(new RefProperty(modelName)); addGenerated(modelName, innerModel); swagger.addDefinition(modelName, innerModel); - } - } + } + } } else if (property instanceof MapProperty) { MapProperty mp = (MapProperty) property; diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/config/CodegenConfigurator.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/config/CodegenConfigurator.java index ad892917c70..8771d10aebe 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/config/CodegenConfigurator.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/config/CodegenConfigurator.java @@ -41,8 +41,8 @@ public class CodegenConfigurator { private String lang; private String inputSpec; private String outputDir; - private boolean verbose = false; - private boolean skipOverwrite = false; + private boolean verbose; + private boolean skipOverwrite; private String templateDir; private String auth; private String apiPackage; diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AsyncScalaClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AsyncScalaClientCodegen.java index 36309c9ee52..310b4788dd0 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AsyncScalaClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AsyncScalaClientCodegen.java @@ -33,7 +33,7 @@ public class AsyncScalaClientCodegen extends DefaultCodegen implements CodegenCo protected String sourceFolder = "src/main/scala"; protected String clientName = "SwaggerClient"; protected String authScheme = ""; - protected boolean authPreemptive = false; + protected boolean authPreemptive; protected boolean asyncHttpClient = !authScheme.isEmpty(); public AsyncScalaClientCodegen() { diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ClojureClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ClojureClientCodegen.java index c8b581b3d3a..d4a8ada06b9 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ClojureClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ClojureClientCodegen.java @@ -26,10 +26,10 @@ public class ClojureClientCodegen extends DefaultCodegen implements CodegenConfi private static final String PROJECT_LICENSE_URL = "projectLicenseUrl"; private static final String BASE_NAMESPACE = "baseNamespace"; - protected String projectName = null; - protected String projectDescription = null; - protected String projectVersion = null; - protected String baseNamespace = null; + protected String projectName; + protected String projectDescription; + protected String projectVersion; + protected String baseNamespace; protected String sourceFolder = "src"; 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 44c2b9cb09e..dac3d23b22a 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 @@ -26,7 +26,7 @@ import java.util.HashSet; public class FlashClientCodegen extends DefaultCodegen implements CodegenConfig { protected String packageName = "io.swagger"; - protected String packageVersion = null; + protected String packageVersion; protected String invokerPackage = "io.swagger"; protected String sourceFolder = "src/main/flex"; 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 e408641c8a6..282fa7c68ce 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 @@ -52,7 +52,7 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { protected String projectFolder = "src" + File.separator + "main"; protected String sourceFolder = projectFolder + File.separator + "java"; protected String localVariablePrefix = ""; - protected boolean fullJavaUtil = false; + protected boolean fullJavaUtil; protected String javaUtilPrefix = ""; protected Boolean serializableModel = false; 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 67b99bbd282..ac680d59463 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 @@ -40,10 +40,10 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo private static final String PROJECT_VERSION = "projectVersion"; private static final String PROJECT_LICENSE_NAME = "projectLicenseName"; - protected String projectName = null; - protected String moduleName = null; - protected String projectDescription = null; - protected String projectVersion = null; + protected String projectName; + protected String moduleName; + protected String projectDescription; + protected String projectVersion; protected String sourceFolder = "src"; protected String localVariablePrefix = ""; 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 d7fdd39239a..5ac251ed02f 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 @@ -15,8 +15,8 @@ import java.util.HashSet; import org.apache.commons.lang.StringUtils; public class PythonClientCodegen extends DefaultCodegen implements CodegenConfig { - protected String packageName = null; - protected String packageVersion = null; + protected String packageName; + protected String packageVersion; public PythonClientCodegen() { super(); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RubyClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RubyClientCodegen.java index 25f0521c5f8..a85b6e152d0 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RubyClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RubyClientCodegen.java @@ -19,8 +19,8 @@ public class RubyClientCodegen extends DefaultCodegen implements CodegenConfig { public static final String GEM_NAME = "gemName"; public static final String MODULE_NAME = "moduleName"; public static final String GEM_VERSION = "gemVersion"; - protected String gemName = null; - protected String moduleName = null; + protected String gemName; + protected String moduleName; protected String gemVersion = "1.0.0"; protected String libFolder = "lib"; 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 8d917430d3c..9469cbb8e81 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 @@ -35,7 +35,7 @@ public class ScalaClientCodegen extends DefaultCodegen implements CodegenConfig protected String artifactVersion = "1.0.0"; protected String sourceFolder = "src/main/scala"; protected String authScheme = ""; - protected boolean authPreemptive = false; + protected boolean authPreemptive; protected boolean asyncHttpClient = !authScheme.isEmpty(); public ScalaClientCodegen() { 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 44f97009371..e478c00341e 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 @@ -21,8 +21,8 @@ import java.util.Map; import org.apache.commons.lang.StringUtils; public class SinatraServerCodegen extends DefaultCodegen implements CodegenConfig { - protected String gemName = null; - protected String moduleName = null; + protected String gemName; + protected String moduleName; protected String gemVersion = "1.0.0"; protected String libFolder = "lib"; 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 e951cfb76d3..ddd72e4230b 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 @@ -40,7 +40,7 @@ public class SwiftCodegen extends DefaultCodegen implements CodegenConfig { protected static final String LIBRARY_PROMISE_KIT = "PromiseKit"; protected static final String[] RESPONSE_LIBRARIES = { LIBRARY_PROMISE_KIT }; protected String projectName = "SwaggerClient"; - protected boolean unwrapRequired = false; + protected boolean unwrapRequired; protected String[] responseAs = new String[0]; protected String sourceFolder = "Classes" + File.separator + "Swaggers"; private static final Pattern PATH_PARAM_PATTERN = Pattern.compile("\\{[a-zA-Z_]+\\}"); From 861ea27db736b7fb26492ff4e84ef00792a01126 Mon Sep 17 00:00:00 2001 From: wing328 Date: Tue, 29 Dec 2015 00:01:18 +0800 Subject: [PATCH 042/623] update pom commonio to latest version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 64f3b7eb5ce..33b7e2c1f89 100644 --- a/pom.xml +++ b/pom.xml @@ -573,7 +573,7 @@ 2.3.4 1.5.5 2.1.5-SNAPSHOT - 2.3 + 2.4 1.2 4.8.1 1.0.0 From 3103846f451d7fb9fa9ac6fcfa4007ef59f15d32 Mon Sep 17 00:00:00 2001 From: Ian Chan Date: Tue, 29 Dec 2015 13:40:46 +1300 Subject: [PATCH 043/623] Enforce Java 1.8 when generating spring-mvc with j8-async option The spring-mvc j8-async code is now located in it's own sample directory with Java 8 enforced via Maven plug-in. --- bin/spring-mvc-petstore-j8-async-server.sh | 2 +- .../languages/SpringMVCServerCodegen.java | 12 ++ .../JavaSpringMVC/pom-j8-async.mustache | 172 ++++++++++++++++++ 3 files changed, 185 insertions(+), 1 deletion(-) create mode 100644 modules/swagger-codegen/src/main/resources/JavaSpringMVC/pom-j8-async.mustache diff --git a/bin/spring-mvc-petstore-j8-async-server.sh b/bin/spring-mvc-petstore-j8-async-server.sh index 435c29ac070..d43b0c43286 100755 --- a/bin/spring-mvc-petstore-j8-async-server.sh +++ b/bin/spring-mvc-petstore-j8-async-server.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 -t modules/swagger-codegen/src/main/resources/JavaSpringMVC -i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l spring-mvc -o samples/server/petstore/spring-mvc -c bin/spring-mvc-petstore-j8-async.json" +ags="$@ generate -t modules/swagger-codegen/src/main/resources/JavaSpringMVC -i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l spring-mvc -o samples/server/petstore/spring-mvc-j8-async -c bin/spring-mvc-petstore-j8-async.json" java $JAVA_OPTS -jar $executable $ags diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SpringMVCServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SpringMVCServerCodegen.java index 23ffe6c0fc4..b68c9dd9899 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SpringMVCServerCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SpringMVCServerCodegen.java @@ -178,6 +178,18 @@ public class SpringMVCServerCodegen extends JavaClientCodegen implements Codegen apiTemplateFiles.remove(this.templateFileName); this.templateFileName = "api-j8-async.mustache"; apiTemplateFiles.put(this.templateFileName, ".java"); + + int originalPomFileIdx = -1; + for (int i = 0; i < supportingFiles.size(); i++) { + if ("pom.xml".equals(supportingFiles.get(i).destinationFilename)) { + originalPomFileIdx = i; + break; + } + } + if (originalPomFileIdx > -1) { + supportingFiles.remove(originalPomFileIdx); + } + supportingFiles.add(new SupportingFile("pom-j8-async.mustache", "", "pom.xml")); } return objs; diff --git a/modules/swagger-codegen/src/main/resources/JavaSpringMVC/pom-j8-async.mustache b/modules/swagger-codegen/src/main/resources/JavaSpringMVC/pom-j8-async.mustache new file mode 100644 index 00000000000..566a4c83d8d --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/JavaSpringMVC/pom-j8-async.mustache @@ -0,0 +1,172 @@ + + 4.0.0 + {{groupId}} + {{artifactId}} + jar + {{artifactId}} + {{artifactVersion}} + + src/main/java + + + org.apache.maven.plugins + maven-war-plugin + 2.1.1 + + + maven-failsafe-plugin + 2.6 + + + + integration-test + verify + + + + + + org.eclipse.jetty + jetty-maven-plugin + ${jetty-version} + + + {{^contextPath}}/{{/contextPath}}{{#contextPath}}{{contextPath}}{{/contextPath}} + + target/${project.artifactId}-${project.version} + 8079 + stopit + + 8002 + 60000 + + + + + start-jetty + pre-integration-test + + start + + + 0 + true + + + + stop-jetty + post-integration-test + + stop + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.3 + + 1.8 + 1.8 + + + + + + + io.swagger + swagger-jersey-jaxrs + ${swagger-core-version} + + + org.slf4j + slf4j-log4j12 + ${slf4j-version} + + + com.sun.jersey + jersey-core + ${jersey-version} + + + com.sun.jersey + jersey-json + ${jersey-version} + + + com.sun.jersey + jersey-servlet + ${jersey-version} + + + com.sun.jersey.contribs + jersey-multipart + ${jersey-version} + + + com.sun.jersey + jersey-server + ${jersey-version} + + + + + org.springframework + spring-core + ${spring-version} + + + org.springframework + spring-webmvc + ${spring-version} + + + org.springframework + spring-web + ${spring-version} + + + + + io.springfox + springfox-swagger2 + ${springfox-version} + + + io.springfox + springfox-swagger-ui + ${springfox-version} + + + + junit + junit + ${junit-version} + test + + + javax.servlet + servlet-api + ${servlet-api-version} + + + + + jcenter-snapshots + jcenter + http://oss.jfrog.org/artifactory/oss-snapshot-local/ + + + + 1.5.4 + 9.2.9.v20150224 + 1.13 + 1.6.3 + 1.6.1 + 4.8.1 + 2.5 + 2.0.4-SNAPSHOT + 4.0.9.RELEASE + + \ No newline at end of file From 3d4b5ff1c74c8e5f8fb7515a5002fcc551c14ec1 Mon Sep 17 00:00:00 2001 From: xhh Date: Tue, 29 Dec 2015 12:09:54 +0800 Subject: [PATCH 044/623] Java: Move method StringUtil.toIndentedString to model Closes #1701 --- .../main/resources/Java/StringUtil.mustache | 9 -- .../Java/libraries/okhttp-gson/model.mustache | 17 +++- .../Java/libraries/retrofit/model.mustache | 17 +++- .../Java/libraries/retrofit2/model.mustache | 17 +++- .../src/main/resources/Java/pojo.mustache | 19 +++- .../java/io/swagger/client/StringUtil.java | 11 +-- .../io/swagger/client/model/Category.java | 20 +++- .../java/io/swagger/client/model/Order.java | 28 ++++-- .../java/io/swagger/client/model/Pet.java | 30 ++++-- .../java/io/swagger/client/model/Tag.java | 20 +++- .../java/io/swagger/client/model/User.java | 32 +++++-- .../java/io/swagger/client/StringUtil.java | 11 +-- .../io/swagger/client/model/ApiResponse.java | 92 ------------------- .../io/swagger/client/model/Category.java | 21 ++++- .../java/io/swagger/client/model/Order.java | 29 ++++-- .../java/io/swagger/client/model/Pet.java | 31 +++++-- .../java/io/swagger/client/model/Tag.java | 21 ++++- .../java/io/swagger/client/model/User.java | 33 +++++-- .../java/io/swagger/client/StringUtil.java | 11 +-- .../io/swagger/client/model/Category.java | 21 ++++- .../java/io/swagger/client/model/Order.java | 29 ++++-- .../java/io/swagger/client/model/Pet.java | 31 +++++-- .../java/io/swagger/client/model/Tag.java | 21 ++++- .../java/io/swagger/client/model/User.java | 33 +++++-- .../java/io/swagger/client/StringUtil.java | 11 +-- .../io/swagger/client/model/Category.java | 17 +++- .../java/io/swagger/client/model/Order.java | 25 +++-- .../java/io/swagger/client/model/Pet.java | 25 +++-- .../java/io/swagger/client/model/Tag.java | 17 +++- .../java/io/swagger/client/model/User.java | 29 ++++-- .../java/io/swagger/client/StringUtil.java | 11 +-- .../io/swagger/client/model/ApiResponse.java | 72 --------------- .../io/swagger/client/model/Category.java | 17 +++- .../java/io/swagger/client/model/Order.java | 25 +++-- .../java/io/swagger/client/model/Pet.java | 27 ++++-- .../java/io/swagger/client/model/Tag.java | 17 +++- .../java/io/swagger/client/model/User.java | 29 ++++-- .../client/petstore/java/retrofit2/README.md | 43 +++++++++ .../retrofit2/src/main/AndroidManifest.xml | 3 + .../java/io/swagger/client/StringUtil.java | 11 +-- .../io/swagger/client/model/Category.java | 17 +++- .../java/io/swagger/client/model/Order.java | 25 +++-- .../java/io/swagger/client/model/Pet.java | 27 ++++-- .../java/io/swagger/client/model/Tag.java | 17 +++- .../java/io/swagger/client/model/User.java | 29 ++++-- 45 files changed, 658 insertions(+), 440 deletions(-) delete mode 100644 samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/ApiResponse.java delete mode 100644 samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/ApiResponse.java create mode 100644 samples/client/petstore/java/retrofit2/README.md create mode 100644 samples/client/petstore/java/retrofit2/src/main/AndroidManifest.xml diff --git a/modules/swagger-codegen/src/main/resources/Java/StringUtil.mustache b/modules/swagger-codegen/src/main/resources/Java/StringUtil.mustache index c9583f1bc63..073966b0c21 100644 --- a/modules/swagger-codegen/src/main/resources/Java/StringUtil.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/StringUtil.mustache @@ -39,13 +39,4 @@ public class StringUtil { } return out.toString(); } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - public static String toIndentedString(Object o) { - if (o == null) return "null"; - return o.toString().replace("\n", "\n "); - } } diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/model.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/model.mustache index b7b4ea2cf3f..0794a94f6dc 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/model.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/model.mustache @@ -65,14 +65,25 @@ public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#seriali } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class {{classname}} {\n"); - {{#parent}}sb.append(" ").append(StringUtil.toIndentedString(super.toString())).append("\n");{{/parent}} - {{#vars}}sb.append(" {{name}}: ").append(StringUtil.toIndentedString({{name}})).append("\n"); + {{#parent}}sb.append(" ").append(toIndentedString(super.toString())).append("\n");{{/parent}} + {{#vars}}sb.append(" {{name}}: ").append(toIndentedString({{name}})).append("\n"); {{/vars}}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 "); + } } {{/model}} {{/models}} diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit/model.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit/model.mustache index b7b4ea2cf3f..0794a94f6dc 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit/model.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit/model.mustache @@ -65,14 +65,25 @@ public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#seriali } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class {{classname}} {\n"); - {{#parent}}sb.append(" ").append(StringUtil.toIndentedString(super.toString())).append("\n");{{/parent}} - {{#vars}}sb.append(" {{name}}: ").append(StringUtil.toIndentedString({{name}})).append("\n"); + {{#parent}}sb.append(" ").append(toIndentedString(super.toString())).append("\n");{{/parent}} + {{#vars}}sb.append(" {{name}}: ").append(toIndentedString({{name}})).append("\n"); {{/vars}}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 "); + } } {{/model}} {{/models}} diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit2/model.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit2/model.mustache index b7b4ea2cf3f..0794a94f6dc 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit2/model.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit2/model.mustache @@ -65,14 +65,25 @@ public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#seriali } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class {{classname}} {\n"); - {{#parent}}sb.append(" ").append(StringUtil.toIndentedString(super.toString())).append("\n");{{/parent}} - {{#vars}}sb.append(" {{name}}: ").append(StringUtil.toIndentedString({{name}})).append("\n"); + {{#parent}}sb.append(" ").append(toIndentedString(super.toString())).append("\n");{{/parent}} + {{#vars}}sb.append(" {{name}}: ").append(toIndentedString({{name}})).append("\n"); {{/vars}}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 "); + } } {{/model}} {{/models}} diff --git a/modules/swagger-codegen/src/main/resources/Java/pojo.mustache b/modules/swagger-codegen/src/main/resources/Java/pojo.mustache index 2e9facfb14d..8d92141fa7f 100644 --- a/modules/swagger-codegen/src/main/resources/Java/pojo.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/pojo.mustache @@ -45,12 +45,23 @@ public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#seriali } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class {{classname}} {\n"); - {{#parent}}sb.append(" ").append(StringUtil.toIndentedString(super.toString())).append("\n");{{/parent}} - {{#vars}}sb.append(" {{name}}: ").append(StringUtil.toIndentedString({{name}})).append("\n"); + {{#parent}}sb.append(" ").append(toIndentedString(super.toString())).append("\n");{{/parent}} + {{#vars}}sb.append(" {{name}}: ").append(toIndentedString({{name}})).append("\n"); {{/vars}}sb.append("}"); return sb.toString(); } -} \ No newline at end of file + + /** + * 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/default/src/main/java/io/swagger/client/StringUtil.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/StringUtil.java index 4ba4ee3a2f3..cd6112efeb9 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/StringUtil.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/StringUtil.java @@ -1,6 +1,6 @@ package io.swagger.client; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-21T14:12:11.520+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-29T11:32:50.163+08:00") public class StringUtil { /** * Check if the given array contains the given value (with case-insensitive comparison). @@ -39,13 +39,4 @@ public class StringUtil { } return out.toString(); } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - public static String toIndentedString(Object o) { - if (o == null) return "null"; - return o.toString().replace("\n", "\n "); - } } diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Category.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Category.java index abcb97e84ee..03efe0d240c 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Category.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Category.java @@ -11,7 +11,7 @@ import com.fasterxml.jackson.annotation.*; @ApiModel(description = "") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-21T14:12:11.520+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-29T11:32:50.163+08:00") public class Category { private Long id = null; @@ -62,13 +62,25 @@ public class Category { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Category {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" name: ").append(StringUtil.toIndentedString(name)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).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/default/src/main/java/io/swagger/client/model/Order.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Order.java index b488fab6c3f..fc1cb16b320 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Order.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Order.java @@ -12,7 +12,7 @@ import com.fasterxml.jackson.annotation.*; @ApiModel(description = "") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-21T14:12:11.520+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-29T11:32:50.163+08:00") public class Order { private Long id = null; @@ -140,17 +140,29 @@ public enum StatusEnum { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Order {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" petId: ").append(StringUtil.toIndentedString(petId)).append("\n"); - sb.append(" quantity: ").append(StringUtil.toIndentedString(quantity)).append("\n"); - sb.append(" shipDate: ").append(StringUtil.toIndentedString(shipDate)).append("\n"); - sb.append(" status: ").append(StringUtil.toIndentedString(status)).append("\n"); - sb.append(" complete: ").append(StringUtil.toIndentedString(complete)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" petId: ").append(toIndentedString(petId)).append("\n"); + sb.append(" quantity: ").append(toIndentedString(quantity)).append("\n"); + sb.append(" shipDate: ").append(toIndentedString(shipDate)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append(" complete: ").append(toIndentedString(complete)).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/default/src/main/java/io/swagger/client/model/Pet.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Pet.java index 5a979dcb73e..d5577325a7c 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Pet.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Pet.java @@ -2,8 +2,8 @@ package io.swagger.client.model; import io.swagger.client.StringUtil; import io.swagger.client.model.Category; -import io.swagger.client.model.Tag; import java.util.*; +import io.swagger.client.model.Tag; import java.util.Objects; @@ -14,7 +14,7 @@ import com.fasterxml.jackson.annotation.*; @ApiModel(description = "") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-21T14:12:11.520+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-29T11:32:50.163+08:00") public class Pet { private Long id = null; @@ -142,17 +142,29 @@ public enum StatusEnum { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Pet {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" category: ").append(StringUtil.toIndentedString(category)).append("\n"); - sb.append(" name: ").append(StringUtil.toIndentedString(name)).append("\n"); - sb.append(" photoUrls: ").append(StringUtil.toIndentedString(photoUrls)).append("\n"); - sb.append(" tags: ").append(StringUtil.toIndentedString(tags)).append("\n"); - sb.append(" status: ").append(StringUtil.toIndentedString(status)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" category: ").append(toIndentedString(category)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" photoUrls: ").append(toIndentedString(photoUrls)).append("\n"); + sb.append(" tags: ").append(toIndentedString(tags)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).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/default/src/main/java/io/swagger/client/model/Tag.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Tag.java index 41cfb3d80d6..66f5ea8474d 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Tag.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Tag.java @@ -11,7 +11,7 @@ import com.fasterxml.jackson.annotation.*; @ApiModel(description = "") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-21T14:12:11.520+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-29T11:32:50.163+08:00") public class Tag { private Long id = null; @@ -62,13 +62,25 @@ public class Tag { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Tag {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" name: ").append(StringUtil.toIndentedString(name)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).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/default/src/main/java/io/swagger/client/model/User.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/User.java index 61960c622f6..5f2ad2cd4cf 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/User.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/User.java @@ -11,7 +11,7 @@ import com.fasterxml.jackson.annotation.*; @ApiModel(description = "") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-21T14:12:11.520+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-29T11:32:50.163+08:00") public class User { private Long id = null; @@ -147,19 +147,31 @@ public class User { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class User {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" username: ").append(StringUtil.toIndentedString(username)).append("\n"); - sb.append(" firstName: ").append(StringUtil.toIndentedString(firstName)).append("\n"); - sb.append(" lastName: ").append(StringUtil.toIndentedString(lastName)).append("\n"); - sb.append(" email: ").append(StringUtil.toIndentedString(email)).append("\n"); - sb.append(" password: ").append(StringUtil.toIndentedString(password)).append("\n"); - sb.append(" phone: ").append(StringUtil.toIndentedString(phone)).append("\n"); - sb.append(" userStatus: ").append(StringUtil.toIndentedString(userStatus)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" username: ").append(toIndentedString(username)).append("\n"); + sb.append(" firstName: ").append(toIndentedString(firstName)).append("\n"); + sb.append(" lastName: ").append(toIndentedString(lastName)).append("\n"); + sb.append(" email: ").append(toIndentedString(email)).append("\n"); + sb.append(" password: ").append(toIndentedString(password)).append("\n"); + sb.append(" phone: ").append(toIndentedString(phone)).append("\n"); + sb.append(" userStatus: ").append(toIndentedString(userStatus)).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/feign/src/main/java/io/swagger/client/StringUtil.java b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/StringUtil.java index c843634389d..bd924d2f4b7 100644 --- a/samples/client/petstore/java/feign/src/main/java/io/swagger/client/StringUtil.java +++ b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/StringUtil.java @@ -1,6 +1,6 @@ package io.swagger.client; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-10T16:26:30.730+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-29T11:53:36.016+08:00") public class StringUtil { /** * Check if the given array contains the given value (with case-insensitive comparison). @@ -39,13 +39,4 @@ public class StringUtil { } return out.toString(); } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - public static String toIndentedString(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/ApiResponse.java b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/ApiResponse.java deleted file mode 100644 index ab98bf61e89..00000000000 --- a/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/ApiResponse.java +++ /dev/null @@ -1,92 +0,0 @@ -package io.swagger.client.model; - -import io.swagger.client.StringUtil; - - - -import java.util.Objects; - -import io.swagger.annotations.*; -import com.fasterxml.jackson.annotation.JsonProperty; - - - -@ApiModel(description = "") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-09T22:59:22.180-05:00") -public class ApiResponse { - - private Integer code = null; - private String type = null; - private String message = null; - - - /** - **/ - @ApiModelProperty(value = "") - @JsonProperty("code") - public Integer getCode() { - return code; - } - public void setCode(Integer code) { - this.code = code; - } - - - /** - **/ - @ApiModelProperty(value = "") - @JsonProperty("type") - public String getType() { - return type; - } - public void setType(String type) { - this.type = type; - } - - - /** - **/ - @ApiModelProperty(value = "") - @JsonProperty("message") - public String getMessage() { - return message; - } - public void setMessage(String message) { - this.message = message; - } - - - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - ApiResponse apiResponse = (ApiResponse) o; - return Objects.equals(code, apiResponse.code) && - Objects.equals(type, apiResponse.type) && - Objects.equals(message, apiResponse.message); - } - - @Override - public int hashCode() { - return Objects.hash(code, type, message); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class ApiResponse {\n"); - - sb.append(" code: ").append(StringUtil.toIndentedString(code)).append("\n"); - sb.append(" type: ").append(StringUtil.toIndentedString(type)).append("\n"); - sb.append(" message: ").append(StringUtil.toIndentedString(message)).append("\n"); - sb.append("}"); - return sb.toString(); - } -} - - diff --git a/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/Category.java b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/Category.java index 463da28c638..c0d16bbe2c1 100644 --- a/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/Category.java +++ b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/Category.java @@ -9,8 +9,9 @@ import io.swagger.annotations.*; import com.fasterxml.jackson.annotation.*; + @ApiModel(description = "") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-10T16:26:30.730+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-29T11:53:36.016+08:00") public class Category { private Long id = null; @@ -61,13 +62,25 @@ public class Category { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Category {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" name: ").append(StringUtil.toIndentedString(name)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).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/feign/src/main/java/io/swagger/client/model/Order.java b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/Order.java index 9b490767759..d2a2d7a66e2 100644 --- a/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/Order.java +++ b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/Order.java @@ -10,8 +10,9 @@ import io.swagger.annotations.*; import com.fasterxml.jackson.annotation.*; + @ApiModel(description = "") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-10T16:26:30.730+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-29T11:53:36.016+08:00") public class Order { private Long id = null; @@ -139,17 +140,29 @@ public enum StatusEnum { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Order {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" petId: ").append(StringUtil.toIndentedString(petId)).append("\n"); - sb.append(" quantity: ").append(StringUtil.toIndentedString(quantity)).append("\n"); - sb.append(" shipDate: ").append(StringUtil.toIndentedString(shipDate)).append("\n"); - sb.append(" status: ").append(StringUtil.toIndentedString(status)).append("\n"); - sb.append(" complete: ").append(StringUtil.toIndentedString(complete)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" petId: ").append(toIndentedString(petId)).append("\n"); + sb.append(" quantity: ").append(toIndentedString(quantity)).append("\n"); + sb.append(" shipDate: ").append(toIndentedString(shipDate)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append(" complete: ").append(toIndentedString(complete)).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/feign/src/main/java/io/swagger/client/model/Pet.java b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/Pet.java index 471bbe34b00..b7095d0e74f 100644 --- a/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/Pet.java +++ b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/Pet.java @@ -2,8 +2,8 @@ package io.swagger.client.model; import io.swagger.client.StringUtil; import io.swagger.client.model.Category; -import io.swagger.client.model.Tag; import java.util.*; +import io.swagger.client.model.Tag; import java.util.Objects; @@ -12,8 +12,9 @@ import io.swagger.annotations.*; import com.fasterxml.jackson.annotation.*; + @ApiModel(description = "") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-10T16:26:30.730+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-29T11:53:36.016+08:00") public class Pet { private Long id = null; @@ -141,17 +142,29 @@ public enum StatusEnum { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Pet {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" category: ").append(StringUtil.toIndentedString(category)).append("\n"); - sb.append(" name: ").append(StringUtil.toIndentedString(name)).append("\n"); - sb.append(" photoUrls: ").append(StringUtil.toIndentedString(photoUrls)).append("\n"); - sb.append(" tags: ").append(StringUtil.toIndentedString(tags)).append("\n"); - sb.append(" status: ").append(StringUtil.toIndentedString(status)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" category: ").append(toIndentedString(category)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" photoUrls: ").append(toIndentedString(photoUrls)).append("\n"); + sb.append(" tags: ").append(toIndentedString(tags)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).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/feign/src/main/java/io/swagger/client/model/Tag.java b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/Tag.java index 02b5b85be40..b9469ad2a50 100644 --- a/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/Tag.java +++ b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/Tag.java @@ -9,8 +9,9 @@ import io.swagger.annotations.*; import com.fasterxml.jackson.annotation.*; + @ApiModel(description = "") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-10T16:26:30.730+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-29T11:53:36.016+08:00") public class Tag { private Long id = null; @@ -61,13 +62,25 @@ public class Tag { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Tag {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" name: ").append(StringUtil.toIndentedString(name)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).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/feign/src/main/java/io/swagger/client/model/User.java b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/User.java index 4d072f67d47..1fdfef1eece 100644 --- a/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/User.java +++ b/samples/client/petstore/java/feign/src/main/java/io/swagger/client/model/User.java @@ -9,8 +9,9 @@ import io.swagger.annotations.*; import com.fasterxml.jackson.annotation.*; + @ApiModel(description = "") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-10T16:26:30.730+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-29T11:53:36.016+08:00") public class User { private Long id = null; @@ -146,19 +147,31 @@ public class User { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class User {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" username: ").append(StringUtil.toIndentedString(username)).append("\n"); - sb.append(" firstName: ").append(StringUtil.toIndentedString(firstName)).append("\n"); - sb.append(" lastName: ").append(StringUtil.toIndentedString(lastName)).append("\n"); - sb.append(" email: ").append(StringUtil.toIndentedString(email)).append("\n"); - sb.append(" password: ").append(StringUtil.toIndentedString(password)).append("\n"); - sb.append(" phone: ").append(StringUtil.toIndentedString(phone)).append("\n"); - sb.append(" userStatus: ").append(StringUtil.toIndentedString(userStatus)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" username: ").append(toIndentedString(username)).append("\n"); + sb.append(" firstName: ").append(toIndentedString(firstName)).append("\n"); + sb.append(" lastName: ").append(toIndentedString(lastName)).append("\n"); + sb.append(" email: ").append(toIndentedString(email)).append("\n"); + sb.append(" password: ").append(toIndentedString(password)).append("\n"); + sb.append(" phone: ").append(toIndentedString(phone)).append("\n"); + sb.append(" userStatus: ").append(toIndentedString(userStatus)).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/jersey2/src/main/java/io/swagger/client/StringUtil.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/StringUtil.java index e9cc1341e04..1fa35d9ee72 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/StringUtil.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/StringUtil.java @@ -1,6 +1,6 @@ package io.swagger.client; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-29T00:18:01.946+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-29T11:35:06.891+08:00") public class StringUtil { /** * Check if the given array contains the given value (with case-insensitive comparison). @@ -39,13 +39,4 @@ public class StringUtil { } return out.toString(); } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - public static String toIndentedString(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/Category.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Category.java index abe1bb895d3..c0b1b559f90 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,8 +9,9 @@ import io.swagger.annotations.*; import com.fasterxml.jackson.annotation.*; + @ApiModel(description = "") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-29T00:18:01.946+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-29T11:35:06.891+08:00") public class Category { private Long id = null; @@ -61,13 +62,25 @@ public class Category { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Category {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" name: ").append(StringUtil.toIndentedString(name)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).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/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 6c90b3eca40..002d51a2908 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 @@ -10,8 +10,9 @@ import io.swagger.annotations.*; import com.fasterxml.jackson.annotation.*; + @ApiModel(description = "") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-29T00:18:01.946+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-29T11:35:06.891+08:00") public class Order { private Long id = null; @@ -139,17 +140,29 @@ public enum StatusEnum { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Order {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" petId: ").append(StringUtil.toIndentedString(petId)).append("\n"); - sb.append(" quantity: ").append(StringUtil.toIndentedString(quantity)).append("\n"); - sb.append(" shipDate: ").append(StringUtil.toIndentedString(shipDate)).append("\n"); - sb.append(" status: ").append(StringUtil.toIndentedString(status)).append("\n"); - sb.append(" complete: ").append(StringUtil.toIndentedString(complete)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" petId: ").append(toIndentedString(petId)).append("\n"); + sb.append(" quantity: ").append(toIndentedString(quantity)).append("\n"); + sb.append(" shipDate: ").append(toIndentedString(shipDate)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append(" complete: ").append(toIndentedString(complete)).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/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 28343f0fc44..33126c58b78 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 @@ -2,8 +2,8 @@ package io.swagger.client.model; import io.swagger.client.StringUtil; import io.swagger.client.model.Category; -import io.swagger.client.model.Tag; import java.util.*; +import io.swagger.client.model.Tag; import java.util.Objects; @@ -12,8 +12,9 @@ import io.swagger.annotations.*; import com.fasterxml.jackson.annotation.*; + @ApiModel(description = "") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-29T00:18:01.946+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-29T11:35:06.891+08:00") public class Pet { private Long id = null; @@ -141,17 +142,29 @@ public enum StatusEnum { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Pet {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" category: ").append(StringUtil.toIndentedString(category)).append("\n"); - sb.append(" name: ").append(StringUtil.toIndentedString(name)).append("\n"); - sb.append(" photoUrls: ").append(StringUtil.toIndentedString(photoUrls)).append("\n"); - sb.append(" tags: ").append(StringUtil.toIndentedString(tags)).append("\n"); - sb.append(" status: ").append(StringUtil.toIndentedString(status)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" category: ").append(toIndentedString(category)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" photoUrls: ").append(toIndentedString(photoUrls)).append("\n"); + sb.append(" tags: ").append(toIndentedString(tags)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).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/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 a7ee39070c8..28d7f5779a6 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,8 +9,9 @@ import io.swagger.annotations.*; import com.fasterxml.jackson.annotation.*; + @ApiModel(description = "") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-29T00:18:01.946+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-29T11:35:06.891+08:00") public class Tag { private Long id = null; @@ -61,13 +62,25 @@ public class Tag { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Tag {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" name: ").append(StringUtil.toIndentedString(name)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).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/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 5bfea7707f4..d68a953a95c 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,8 +9,9 @@ import io.swagger.annotations.*; import com.fasterxml.jackson.annotation.*; + @ApiModel(description = "") -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-29T00:18:01.946+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-29T11:35:06.891+08:00") public class User { private Long id = null; @@ -146,19 +147,31 @@ public class User { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class User {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" username: ").append(StringUtil.toIndentedString(username)).append("\n"); - sb.append(" firstName: ").append(StringUtil.toIndentedString(firstName)).append("\n"); - sb.append(" lastName: ").append(StringUtil.toIndentedString(lastName)).append("\n"); - sb.append(" email: ").append(StringUtil.toIndentedString(email)).append("\n"); - sb.append(" password: ").append(StringUtil.toIndentedString(password)).append("\n"); - sb.append(" phone: ").append(StringUtil.toIndentedString(phone)).append("\n"); - sb.append(" userStatus: ").append(StringUtil.toIndentedString(userStatus)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" username: ").append(toIndentedString(username)).append("\n"); + sb.append(" firstName: ").append(toIndentedString(firstName)).append("\n"); + sb.append(" lastName: ").append(toIndentedString(lastName)).append("\n"); + sb.append(" email: ").append(toIndentedString(email)).append("\n"); + sb.append(" password: ").append(toIndentedString(password)).append("\n"); + sb.append(" phone: ").append(toIndentedString(phone)).append("\n"); + sb.append(" userStatus: ").append(toIndentedString(userStatus)).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/StringUtil.java b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/StringUtil.java index 3a105a258e4..e67d875db41 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/StringUtil.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/StringUtil.java @@ -1,6 +1,6 @@ package io.swagger.client; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-07T12:21:33.403+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-29T11:33:26.877+08:00") public class StringUtil { /** * Check if the given array contains the given value (with case-insensitive comparison). @@ -39,13 +39,4 @@ public class StringUtil { } return out.toString(); } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - public static 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/Category.java b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/Category.java index 4f15da15c65..25ca3dbe94e 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/Category.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/Category.java @@ -64,13 +64,24 @@ public class Category { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Category {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" name: ").append(StringUtil.toIndentedString(name)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).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/Order.java b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/Order.java index 18c51201ad4..3e9c7bb0765 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/Order.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/Order.java @@ -149,17 +149,28 @@ public enum StatusEnum { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Order {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" petId: ").append(StringUtil.toIndentedString(petId)).append("\n"); - sb.append(" quantity: ").append(StringUtil.toIndentedString(quantity)).append("\n"); - sb.append(" shipDate: ").append(StringUtil.toIndentedString(shipDate)).append("\n"); - sb.append(" status: ").append(StringUtil.toIndentedString(status)).append("\n"); - sb.append(" complete: ").append(StringUtil.toIndentedString(complete)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" petId: ").append(toIndentedString(petId)).append("\n"); + sb.append(" quantity: ").append(toIndentedString(quantity)).append("\n"); + sb.append(" shipDate: ").append(toIndentedString(shipDate)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append(" complete: ").append(toIndentedString(complete)).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/Pet.java b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/Pet.java index 7e771866b39..d67add42e25 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/Pet.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/Pet.java @@ -151,17 +151,28 @@ public enum StatusEnum { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Pet {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" category: ").append(StringUtil.toIndentedString(category)).append("\n"); - sb.append(" name: ").append(StringUtil.toIndentedString(name)).append("\n"); - sb.append(" photoUrls: ").append(StringUtil.toIndentedString(photoUrls)).append("\n"); - sb.append(" tags: ").append(StringUtil.toIndentedString(tags)).append("\n"); - sb.append(" status: ").append(StringUtil.toIndentedString(status)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" category: ").append(toIndentedString(category)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" photoUrls: ").append(toIndentedString(photoUrls)).append("\n"); + sb.append(" tags: ").append(toIndentedString(tags)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).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/Tag.java b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/Tag.java index 474904011f7..b444bf87487 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/Tag.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/Tag.java @@ -64,13 +64,24 @@ public class Tag { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Tag {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" name: ").append(StringUtil.toIndentedString(name)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).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/User.java b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/User.java index 82f1a0822db..8fbc8cbd231 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/User.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/User.java @@ -155,19 +155,30 @@ public class User { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class User {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" username: ").append(StringUtil.toIndentedString(username)).append("\n"); - sb.append(" firstName: ").append(StringUtil.toIndentedString(firstName)).append("\n"); - sb.append(" lastName: ").append(StringUtil.toIndentedString(lastName)).append("\n"); - sb.append(" email: ").append(StringUtil.toIndentedString(email)).append("\n"); - sb.append(" password: ").append(StringUtil.toIndentedString(password)).append("\n"); - sb.append(" phone: ").append(StringUtil.toIndentedString(phone)).append("\n"); - sb.append(" userStatus: ").append(StringUtil.toIndentedString(userStatus)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" username: ").append(toIndentedString(username)).append("\n"); + sb.append(" firstName: ").append(toIndentedString(firstName)).append("\n"); + sb.append(" lastName: ").append(toIndentedString(lastName)).append("\n"); + sb.append(" email: ").append(toIndentedString(email)).append("\n"); + sb.append(" password: ").append(toIndentedString(password)).append("\n"); + sb.append(" phone: ").append(toIndentedString(phone)).append("\n"); + sb.append(" userStatus: ").append(toIndentedString(userStatus)).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/StringUtil.java b/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/StringUtil.java index fa3abdc9c78..3f54bb1c016 100644 --- a/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/StringUtil.java +++ b/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/StringUtil.java @@ -1,6 +1,6 @@ package io.swagger.client; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-29T00:18:14.988+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-29T11:34:07.014+08:00") public class StringUtil { /** * Check if the given array contains the given value (with case-insensitive comparison). @@ -39,13 +39,4 @@ public class StringUtil { } return out.toString(); } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - public static 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/ApiResponse.java b/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/ApiResponse.java deleted file mode 100644 index 777de9a34e3..00000000000 --- a/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/ApiResponse.java +++ /dev/null @@ -1,72 +0,0 @@ -package io.swagger.client.model; - -import io.swagger.client.StringUtil; - -import com.google.gson.annotations.SerializedName; - - - -import io.swagger.annotations.*; - - - -@ApiModel(description = "") -public class ApiResponse { - - @SerializedName("code") - private Integer code = null; - - @SerializedName("type") - private String type = null; - - @SerializedName("message") - private String message = null; - - - - /** - **/ - @ApiModelProperty(value = "") - public Integer getCode() { - return code; - } - public void setCode(Integer code) { - this.code = code; - } - - - /** - **/ - @ApiModelProperty(value = "") - public String getType() { - return type; - } - public void setType(String type) { - this.type = type; - } - - - /** - **/ - @ApiModelProperty(value = "") - public String getMessage() { - return message; - } - public void setMessage(String message) { - this.message = message; - } - - - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class ApiResponse {\n"); - - sb.append(" code: ").append(StringUtil.toIndentedString(code)).append("\n"); - sb.append(" type: ").append(StringUtil.toIndentedString(type)).append("\n"); - sb.append(" message: ").append(StringUtil.toIndentedString(message)).append("\n"); - sb.append("}"); - return sb.toString(); - } -} diff --git a/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/Category.java b/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/Category.java index 4f15da15c65..25ca3dbe94e 100644 --- a/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/Category.java +++ b/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/Category.java @@ -64,13 +64,24 @@ public class Category { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Category {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" name: ").append(StringUtil.toIndentedString(name)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).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/Order.java b/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/Order.java index 18c51201ad4..3e9c7bb0765 100644 --- a/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/Order.java +++ b/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/Order.java @@ -149,17 +149,28 @@ public enum StatusEnum { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Order {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" petId: ").append(StringUtil.toIndentedString(petId)).append("\n"); - sb.append(" quantity: ").append(StringUtil.toIndentedString(quantity)).append("\n"); - sb.append(" shipDate: ").append(StringUtil.toIndentedString(shipDate)).append("\n"); - sb.append(" status: ").append(StringUtil.toIndentedString(status)).append("\n"); - sb.append(" complete: ").append(StringUtil.toIndentedString(complete)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" petId: ").append(toIndentedString(petId)).append("\n"); + sb.append(" quantity: ").append(toIndentedString(quantity)).append("\n"); + sb.append(" shipDate: ").append(toIndentedString(shipDate)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append(" complete: ").append(toIndentedString(complete)).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/Pet.java b/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/Pet.java index bc3b80370b0..d67add42e25 100644 --- a/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/Pet.java +++ b/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/Pet.java @@ -2,8 +2,8 @@ package io.swagger.client.model; import io.swagger.client.StringUtil; import io.swagger.client.model.Category; -import io.swagger.client.model.Tag; import java.util.*; +import io.swagger.client.model.Tag; import com.google.gson.annotations.SerializedName; @@ -151,17 +151,28 @@ public enum StatusEnum { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Pet {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" category: ").append(StringUtil.toIndentedString(category)).append("\n"); - sb.append(" name: ").append(StringUtil.toIndentedString(name)).append("\n"); - sb.append(" photoUrls: ").append(StringUtil.toIndentedString(photoUrls)).append("\n"); - sb.append(" tags: ").append(StringUtil.toIndentedString(tags)).append("\n"); - sb.append(" status: ").append(StringUtil.toIndentedString(status)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" category: ").append(toIndentedString(category)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" photoUrls: ").append(toIndentedString(photoUrls)).append("\n"); + sb.append(" tags: ").append(toIndentedString(tags)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).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/Tag.java b/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/Tag.java index 474904011f7..b444bf87487 100644 --- a/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/Tag.java +++ b/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/Tag.java @@ -64,13 +64,24 @@ public class Tag { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Tag {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" name: ").append(StringUtil.toIndentedString(name)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).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/User.java b/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/User.java index 82f1a0822db..8fbc8cbd231 100644 --- a/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/User.java +++ b/samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/model/User.java @@ -155,19 +155,30 @@ public class User { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class User {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" username: ").append(StringUtil.toIndentedString(username)).append("\n"); - sb.append(" firstName: ").append(StringUtil.toIndentedString(firstName)).append("\n"); - sb.append(" lastName: ").append(StringUtil.toIndentedString(lastName)).append("\n"); - sb.append(" email: ").append(StringUtil.toIndentedString(email)).append("\n"); - sb.append(" password: ").append(StringUtil.toIndentedString(password)).append("\n"); - sb.append(" phone: ").append(StringUtil.toIndentedString(phone)).append("\n"); - sb.append(" userStatus: ").append(StringUtil.toIndentedString(userStatus)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" username: ").append(toIndentedString(username)).append("\n"); + sb.append(" firstName: ").append(toIndentedString(firstName)).append("\n"); + sb.append(" lastName: ").append(toIndentedString(lastName)).append("\n"); + sb.append(" email: ").append(toIndentedString(email)).append("\n"); + sb.append(" password: ").append(toIndentedString(password)).append("\n"); + sb.append(" phone: ").append(toIndentedString(phone)).append("\n"); + sb.append(" userStatus: ").append(toIndentedString(userStatus)).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/README.md b/samples/client/petstore/java/retrofit2/README.md new file mode 100644 index 00000000000..1a6255eb563 --- /dev/null +++ b/samples/client/petstore/java/retrofit2/README.md @@ -0,0 +1,43 @@ +# swagger-petstore-retrofit2 + +## Requirements + +Building the API client library requires [Maven](https://maven.apache.org/) to be installed. + +## Installation & Usage + +To install the API client library to your local Maven repository, simply execute: + +```shell +mvn install +``` + +To deploy it to a remote Maven repository instead, configure the settings of the repository and execute: + +```shell +mvn deploy +``` + +Refer to the [official documentation](https://maven.apache.org/plugins/maven-deploy-plugin/usage.html) for more information. + +After the client libarary is installed/deployed, you can use it in your Maven project by adding the following to your *pom.xml*: + +```xml + + io.swagger + swagger-petstore-retrofit2 + 1.0.0 + compile + + +``` + +## Recommendation + +It's recommended to create an instance of `ApiClient` per thread in a multithreaded environment to avoid any potential issue. + +## Author + +apiteam@swagger.io + + diff --git a/samples/client/petstore/java/retrofit2/src/main/AndroidManifest.xml b/samples/client/petstore/java/retrofit2/src/main/AndroidManifest.xml new file mode 100644 index 00000000000..465dcb520c4 --- /dev/null +++ b/samples/client/petstore/java/retrofit2/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + + diff --git a/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/StringUtil.java b/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/StringUtil.java index 47f9908c4de..9beb93a8465 100644 --- a/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/StringUtil.java +++ b/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/StringUtil.java @@ -1,6 +1,6 @@ package io.swagger.client; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-28T16:01:49.902+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-12-29T11:39:24.077+08:00") public class StringUtil { /** * Check if the given array contains the given value (with case-insensitive comparison). @@ -39,13 +39,4 @@ public class StringUtil { } return out.toString(); } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - public static 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/Category.java b/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/Category.java index 4f15da15c65..25ca3dbe94e 100644 --- a/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/Category.java +++ b/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/Category.java @@ -64,13 +64,24 @@ public class Category { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Category {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" name: ").append(StringUtil.toIndentedString(name)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).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/Order.java b/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/Order.java index 18c51201ad4..3e9c7bb0765 100644 --- a/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/Order.java +++ b/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/Order.java @@ -149,17 +149,28 @@ public enum StatusEnum { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Order {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" petId: ").append(StringUtil.toIndentedString(petId)).append("\n"); - sb.append(" quantity: ").append(StringUtil.toIndentedString(quantity)).append("\n"); - sb.append(" shipDate: ").append(StringUtil.toIndentedString(shipDate)).append("\n"); - sb.append(" status: ").append(StringUtil.toIndentedString(status)).append("\n"); - sb.append(" complete: ").append(StringUtil.toIndentedString(complete)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" petId: ").append(toIndentedString(petId)).append("\n"); + sb.append(" quantity: ").append(toIndentedString(quantity)).append("\n"); + sb.append(" shipDate: ").append(toIndentedString(shipDate)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append(" complete: ").append(toIndentedString(complete)).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/Pet.java b/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/Pet.java index bc3b80370b0..d67add42e25 100644 --- a/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/Pet.java +++ b/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/Pet.java @@ -2,8 +2,8 @@ package io.swagger.client.model; import io.swagger.client.StringUtil; import io.swagger.client.model.Category; -import io.swagger.client.model.Tag; import java.util.*; +import io.swagger.client.model.Tag; import com.google.gson.annotations.SerializedName; @@ -151,17 +151,28 @@ public enum StatusEnum { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Pet {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" category: ").append(StringUtil.toIndentedString(category)).append("\n"); - sb.append(" name: ").append(StringUtil.toIndentedString(name)).append("\n"); - sb.append(" photoUrls: ").append(StringUtil.toIndentedString(photoUrls)).append("\n"); - sb.append(" tags: ").append(StringUtil.toIndentedString(tags)).append("\n"); - sb.append(" status: ").append(StringUtil.toIndentedString(status)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" category: ").append(toIndentedString(category)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" photoUrls: ").append(toIndentedString(photoUrls)).append("\n"); + sb.append(" tags: ").append(toIndentedString(tags)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).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/Tag.java b/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/Tag.java index 474904011f7..b444bf87487 100644 --- a/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/Tag.java +++ b/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/Tag.java @@ -64,13 +64,24 @@ public class Tag { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Tag {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" name: ").append(StringUtil.toIndentedString(name)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).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/User.java b/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/User.java index 82f1a0822db..8fbc8cbd231 100644 --- a/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/User.java +++ b/samples/client/petstore/java/retrofit2/src/main/java/io/swagger/client/model/User.java @@ -155,19 +155,30 @@ public class User { } @Override - public String toString() { + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class User {\n"); - sb.append(" id: ").append(StringUtil.toIndentedString(id)).append("\n"); - sb.append(" username: ").append(StringUtil.toIndentedString(username)).append("\n"); - sb.append(" firstName: ").append(StringUtil.toIndentedString(firstName)).append("\n"); - sb.append(" lastName: ").append(StringUtil.toIndentedString(lastName)).append("\n"); - sb.append(" email: ").append(StringUtil.toIndentedString(email)).append("\n"); - sb.append(" password: ").append(StringUtil.toIndentedString(password)).append("\n"); - sb.append(" phone: ").append(StringUtil.toIndentedString(phone)).append("\n"); - sb.append(" userStatus: ").append(StringUtil.toIndentedString(userStatus)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" username: ").append(toIndentedString(username)).append("\n"); + sb.append(" firstName: ").append(toIndentedString(firstName)).append("\n"); + sb.append(" lastName: ").append(toIndentedString(lastName)).append("\n"); + sb.append(" email: ").append(toIndentedString(email)).append("\n"); + sb.append(" password: ").append(toIndentedString(password)).append("\n"); + sb.append(" phone: ").append(toIndentedString(phone)).append("\n"); + sb.append(" userStatus: ").append(toIndentedString(userStatus)).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 "); + } } From acc43e7f7146b50e6933bbce0b3301c1d644e744 Mon Sep 17 00:00:00 2001 From: Brad Smith Date: Mon, 28 Dec 2015 21:14:08 -0800 Subject: [PATCH 045/623] Update README.mustache Fix broken link --- .../swagger-codegen/src/main/resources/nodejs/README.mustache | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/nodejs/README.mustache b/modules/swagger-codegen/src/main/resources/nodejs/README.mustache index edeea0005c0..183cd5e6d2a 100644 --- a/modules/swagger-codegen/src/main/resources/nodejs/README.mustache +++ b/modules/swagger-codegen/src/main/resources/nodejs/README.mustache @@ -5,7 +5,7 @@ This server was generated by the [swagger-codegen](https://github.com/swagger-ap This example uses the [expressjs](http://expressjs.com/) framework. To see how to make this your own, look here: -[README](https://github.com/swagger-api/swagger-codegen/README.md) +[README](https://github.com/swagger-api/swagger-codegen/blob/master/README.md) ### Running the server To run the server, follow these simple steps: @@ -21,4 +21,4 @@ To view the Swagger UI interface: open http://localhost:8080/docs ``` -This project leverages the mega-awesome [swagger-tools](https://github.com/apigee-127/swagger-tools) middleware which does most all the work. \ No newline at end of file +This project leverages the mega-awesome [swagger-tools](https://github.com/apigee-127/swagger-tools) middleware which does most all the work. From 11d6bb9a95b978464a60bd4181a1d6f118981e41 Mon Sep 17 00:00:00 2001 From: wing328 Date: Tue, 29 Dec 2015 15:00:56 +0800 Subject: [PATCH 046/623] php remove duplicated type mapping --- .../codegen/languages/PhpClientCodegen.java | 5 +- .../php/SwaggerClient-php/lib/Api/PetApi.php | 80 ------------------- .../lib/ObjectSerializer.php | 2 +- 3 files changed, 3 insertions(+), 84 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java index 0b59e6f4320..6ce24b2e1ef 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java @@ -85,14 +85,13 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig { typeMapping.put("string", "string"); typeMapping.put("byte", "int"); typeMapping.put("boolean", "bool"); - typeMapping.put("date", "\\DateTime"); - typeMapping.put("datetime", "\\DateTime"); + typeMapping.put("Date", "\\Date"); + typeMapping.put("DateTime", "\\DateTime"); typeMapping.put("file", "\\SplFileObject"); typeMapping.put("map", "map"); typeMapping.put("array", "array"); typeMapping.put("list", "array"); typeMapping.put("object", "object"); - typeMapping.put("DateTime", "\\DateTime"); cliOptions.add(new CliOption(CodegenConstants.MODEL_PACKAGE, CodegenConstants.MODEL_PACKAGE_DESC)); cliOptions.add(new CliOption(CodegenConstants.API_PACKAGE, CodegenConstants.API_PACKAGE_DESC)); diff --git a/samples/client/petstore/php/SwaggerClient-php/lib/Api/PetApi.php b/samples/client/petstore/php/SwaggerClient-php/lib/Api/PetApi.php index c91e54f6e57..bd82444f4fe 100644 --- a/samples/client/petstore/php/SwaggerClient-php/lib/Api/PetApi.php +++ b/samples/client/petstore/php/SwaggerClient-php/lib/Api/PetApi.php @@ -738,86 +738,6 @@ class PetApi } } - /** - * downloadFile - * - * downloads an image - * - * @return \Swagger\Client\Model\File - * @throws \Swagger\Client\ApiException on non-2xx response - */ - public function downloadFile() - { - list($response, $statusCode, $httpHeader) = $this->downloadFileWithHttpInfo (); - return $response; - } - - - /** - * downloadFileWithHttpInfo - * - * downloads an image - * - * @return Array of \Swagger\Client\Model\File, HTTP status code, HTTP response headers (array of strings) - * @throws \Swagger\Client\ApiException on non-2xx response - */ - public function downloadFileWithHttpInfo() - { - - - // parse inputs - $resourcePath = "/pet/{petId}/downloadImage"; - $resourcePath = str_replace("{format}", "json", $resourcePath); - $method = "GET"; - $httpBody = ''; - $queryParams = array(); - $headerParams = array(); - $formParams = array(); - $_header_accept = ApiClient::selectHeaderAccept(array('application/octet-stream')); - if (!is_null($_header_accept)) { - $headerParams['Accept'] = $_header_accept; - } - $headerParams['Content-Type'] = ApiClient::selectHeaderContentType(array()); - - - - - - - - // for model (json/xml) - if (isset($_tempBody)) { - $httpBody = $_tempBody; // $_tempBody is the method argument, if present - } elseif (count($formParams) > 0) { - $httpBody = $formParams; // for HTTP post (form) - } - - // make the API Call - try { - list($response, $statusCode, $httpHeader) = $this->apiClient->callApi( - $resourcePath, $method, - $queryParams, $httpBody, - $headerParams, '\Swagger\Client\Model\File' - ); - - if (!$response) { - return array(null, $statusCode, $httpHeader); - } - - return array($this->apiClient->getSerializer()->deserialize($response, '\Swagger\Client\Model\File', $httpHeader), $statusCode, $httpHeader); - - } catch (ApiException $e) { - switch ($e->getCode()) { - case 200: - $data = $this->apiClient->getSerializer()->deserialize($e->getResponseBody(), '\Swagger\Client\Model\File', $e->getResponseHeaders()); - $e->setResponseObject($data); - break; - } - - throw $e; - } - } - /** * uploadFile * diff --git a/samples/client/petstore/php/SwaggerClient-php/lib/ObjectSerializer.php b/samples/client/petstore/php/SwaggerClient-php/lib/ObjectSerializer.php index 7d7a04e653c..cc023b61bd2 100644 --- a/samples/client/petstore/php/SwaggerClient-php/lib/ObjectSerializer.php +++ b/samples/client/petstore/php/SwaggerClient-php/lib/ObjectSerializer.php @@ -193,7 +193,7 @@ class ObjectSerializer $deserialized = $values; } elseif ($class === '\DateTime') { $deserialized = new \DateTime($data); - } elseif (in_array($class, array('void', 'bool', 'string', 'double', 'byte', 'mixed', 'integer', 'float', 'int', 'DateTime', 'number', 'boolean', 'object'))) { + } elseif (in_array($class, array('integer', 'int', 'void', 'number', 'object', 'double', 'float', 'byte', 'DateTime', 'string', 'mixed', 'boolean', 'bool'))) { settype($data, $class); $deserialized = $data; } elseif ($class === '\SplFileObject') { From fed4ba3cf867da004b888c2eb0733f527d7c56af Mon Sep 17 00:00:00 2001 From: wing328 Date: Tue, 29 Dec 2015 15:04:27 +0800 Subject: [PATCH 047/623] use DateTime for php date --- .../java/io/swagger/codegen/languages/PhpClientCodegen.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java index 6ce24b2e1ef..d2f5aaef0be 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java @@ -85,7 +85,7 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig { typeMapping.put("string", "string"); typeMapping.put("byte", "int"); typeMapping.put("boolean", "bool"); - typeMapping.put("Date", "\\Date"); + typeMapping.put("Date", "\\DateTime"); typeMapping.put("DateTime", "\\DateTime"); typeMapping.put("file", "\\SplFileObject"); typeMapping.put("map", "map"); From 8882c36c9192489aa7c1b75aedc95ba69ad57004 Mon Sep 17 00:00:00 2001 From: wing328 Date: Tue, 29 Dec 2015 15:21:38 +0800 Subject: [PATCH 048/623] fix perl datetime mapping --- .../java/io/swagger/codegen/languages/PerlClientCodegen.java | 4 ++-- samples/client/petstore/perl/README.md | 2 +- samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) 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 51f394d5db3..70f52403f88 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 @@ -63,8 +63,8 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig { typeMapping.put("double", "double"); typeMapping.put("boolean", "boolean"); typeMapping.put("string", "string"); - typeMapping.put("date", "DateTime"); - typeMapping.put("dateTime", "DateTime"); + typeMapping.put("Date", "DateTime"); + typeMapping.put("DateTime", "DateTime"); typeMapping.put("password", "string"); typeMapping.put("array", "ARRAY"); typeMapping.put("map", "HASH"); diff --git a/samples/client/petstore/perl/README.md b/samples/client/petstore/perl/README.md index 4cf6dc85470..ef43f3fcfd2 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: 2015-12-28T16:30:58.036+08:00 +- Build date: 2015-12-29T15:20:56.867+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 4b4d5144f58..3d45a004b99 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm @@ -37,7 +37,7 @@ has version_info => ( is => 'ro', default => sub { { app_name => 'Swagger Petstore', app_version => '1.0.0', - generated_date => '2015-12-28T16:30:58.036+08:00', + generated_date => '2015-12-29T15:20:56.867+08:00', generator_class => 'class io.swagger.codegen.languages.PerlClientCodegen', } }, documentation => 'Information about the application version and the codegen codebase version' @@ -103,7 +103,7 @@ Automatically generated by the Perl Swagger Codegen project: =over 4 -=item Build date: 2015-12-28T16:30:58.036+08:00 +=item Build date: 2015-12-29T15:20:56.867+08:00 =item Build package: class io.swagger.codegen.languages.PerlClientCodegen From e4078855f578fe86aa0346cc623ce1276c4c25cd Mon Sep 17 00:00:00 2001 From: wing328 Date: Tue, 29 Dec 2015 16:29:20 +0800 Subject: [PATCH 049/623] fix date mapping for perl --- .../java/io/swagger/codegen/languages/PerlClientCodegen.java | 2 +- samples/client/petstore/perl/README.md | 2 +- samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) 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 70f52403f88..8950ff21a22 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 @@ -63,7 +63,7 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig { typeMapping.put("double", "double"); typeMapping.put("boolean", "boolean"); typeMapping.put("string", "string"); - typeMapping.put("Date", "DateTime"); + typeMapping.put("date", "DateTime"); typeMapping.put("DateTime", "DateTime"); typeMapping.put("password", "string"); typeMapping.put("array", "ARRAY"); diff --git a/samples/client/petstore/perl/README.md b/samples/client/petstore/perl/README.md index ef43f3fcfd2..b8b8c1bda77 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: 2015-12-29T15:20:56.867+08:00 +- Build date: 2015-12-29T16:27:28.775+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 3d45a004b99..8c9e85ed506 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm @@ -37,7 +37,7 @@ has version_info => ( is => 'ro', default => sub { { app_name => 'Swagger Petstore', app_version => '1.0.0', - generated_date => '2015-12-29T15:20:56.867+08:00', + generated_date => '2015-12-29T16:27:28.775+08:00', generator_class => 'class io.swagger.codegen.languages.PerlClientCodegen', } }, documentation => 'Information about the application version and the codegen codebase version' @@ -103,7 +103,7 @@ Automatically generated by the Perl Swagger Codegen project: =over 4 -=item Build date: 2015-12-29T15:20:56.867+08:00 +=item Build date: 2015-12-29T16:27:28.775+08:00 =item Build package: class io.swagger.codegen.languages.PerlClientCodegen From 78352dd4545b0ada3c29b653c86114f8eb169172 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Tue, 3 Nov 2015 23:24:01 +0100 Subject: [PATCH 050/623] First steps on Android Volley ApiInvoker --- .../android-volley/apiInvoker.mustache | 282 ++++++++++++++++++ 1 file changed, 282 insertions(+) create mode 100644 modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache diff --git a/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache new file mode 100644 index 00000000000..540ea296ca0 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache @@ -0,0 +1,282 @@ +package {{invokerPackage}}; + +import com.google.gson.JsonParseException; + +public class ApiInvoker { + private static ApiInvoker INSTANCE; + private Map defaultHeaderMap = new HashMap(); + + Context context; + RequestQueue mRequestQueue; + + /** Content type "text/plain" with UTF-8 encoding. */ + public static final ContentType TEXT_PLAIN_UTF8 = ContentType.create("text/plain", Consts.UTF_8); + + /** + * ISO 8601 date time format. + * @see https://en.wikipedia.org/wiki/ISO_8601 + */ + public static final SimpleDateFormat DATE_TIME_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); + + /** + * ISO 8601 date format. + * @see https://en.wikipedia.org/wiki/ISO_8601 + */ + public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd"); + + static { + // Use UTC as the default time zone. + DATE_TIME_FORMAT.setTimeZone(TimeZone.getTimeZone("UTC")); + DATE_FORMAT.setTimeZone(TimeZone.getTimeZone("UTC")); + + // Set default User-Agent. + setUserAgent("Android-Java-Swagger"); + } + + public static void setUserAgent(String userAgent) { + INSTANCE.addDefaultHeader("User-Agent", userAgent); + } + + public static Date parseDateTime(String str) { + try { + return DATE_TIME_FORMAT.parse(str); + } catch (java.text.ParseException e) { + throw new RuntimeException(e); + } + } + + public static Date parseDate(String str) { + try { + return DATE_FORMAT.parse(str); + } catch (java.text.ParseException e) { + throw new RuntimeException(e); + } + } + + public static String formatDateTime(Date datetime) { + return DATE_TIME_FORMAT.format(datetime); + } + + public static String formatDate(Date date) { + return DATE_FORMAT.format(date); + } + + public static String parameterToString(Object param) { + if (param == null) { + return ""; + } else if (param instanceof Date) { + return formatDateTime((Date) param); + } else if (param instanceof Collection) { + StringBuilder b = new StringBuilder(); + for(Object o : (Collection)param) { + if(b.length() > 0) { + b.append(","); + } + b.append(String.valueOf(o)); + } + return b.toString(); + } else { + return String.valueOf(param); + } + } + + /* + Format to {@code Pair} objects. + */ + public static List parameterToPairs(String collectionFormat, String name, Object value){ + List params = new ArrayList(); + + // preconditions + if (name == null || name.isEmpty() || value == null) return params; + + Collection valueCollection = null; + if (value instanceof Collection) { + valueCollection = (Collection) value; + } else { + params.add(new Pair(name, parameterToString(value))); + return params; + } + + if (valueCollection.isEmpty()){ + return params; + } + + // get the collection format + collectionFormat = (collectionFormat == null || collectionFormat.isEmpty() ? "csv" : collectionFormat); // default: csv + + // create the params based on the collection format + if (collectionFormat.equals("multi")) { + for (Object item : valueCollection) { + params.add(new Pair(name, parameterToString(item))); + } + + return params; + } + + String delimiter = ","; + + if (collectionFormat.equals("csv")) { + delimiter = ","; + } else if (collectionFormat.equals("ssv")) { + delimiter = " "; + } else if (collectionFormat.equals("tsv")) { + delimiter = "\t"; + } else if (collectionFormat.equals("pipes")) { + delimiter = "|"; + } + + StringBuilder sb = new StringBuilder() ; + for (Object item : valueCollection) { + sb.append(delimiter); + sb.append(parameterToString(item)); + } + + params.add(new Pair(name, sb.substring(1))); + + return params; + } + + public static void initializeInstance(Context context) { + INSTANCE = new ApiInvoker(context); + setUserAgent("Android-Volley-Swagger"); + } + private ApiInvoker(Context context) { + this.context = context; + initConnectionManager(); + } + + public ApiInvoker() { + initConnectionManager(); + } + + public static ApiInvoker getInstance() { + return INSTANCE; + } + + public void addDefaultHeader(String key, String value) { + defaultHeaderMap.put(key, value); + } + + public String escapeString(String str) { + return str; + } + + public static Object deserialize(String json, String containerType, Class cls) throws ApiException { + try{ + if("list".equalsIgnoreCase(containerType) || "array".equalsIgnoreCase(containerType)) { + return JsonUtil.deserializeToList(json, cls); + } + else if(String.class.equals(cls)) { + if(json != null && json.startsWith("\"") && json.endsWith("\"") && json.length() > 1) + return json.substring(1, json.length() - 1); + else + return json; + } + else { + return JsonUtil.deserializeToObject(json, cls); + } + } + catch (JsonParseException e) { + throw new ApiException(500, e.getMessage()); + } + } + + public static String serialize(Object obj) throws ApiException { + try { + if (obj != null) + return JsonUtil.serialize(obj); + else + return null; + } + catch (Exception e) { + throw new ApiException(500, e.getMessage()); + } + } + + public void invokeAPI(String host, String path, String method, List queryParams, Object body, Map headerParams, Map formParams, String contentType, Response.Listener stringRequest, Response.ErrorListener errorListener) throws ApiException { + StringBuilder b = new StringBuilder(); + b.append("?"); + if (queryParams != null){ + for (Pair queryParam : queryParams){ + if (!queryParam.getName().isEmpty()) { + b.append(escapeString(queryParam.getName())); + b.append("="); + b.append(escapeString(queryParam.getValue())); + b.append("&"); + } + } + } + + String querystring = b.substring(0, b.length() - 1); + String url = host + path + querystring; + + HashMap headers = new HashMap(); + + for(String key : headerParams.keySet()) { + headers.put(key, headerParams.get(key)); + } + + for(String key : defaultHeaderMap.keySet()) { + if(!headerParams.containsKey(key)) { + headers.put(key, defaultHeaderMap.get(key)); + } + } + headers.put("Accept", "application/json"); + + // URL encoded string from form parameters + String formParamStr = null; + + // for form data + if ("application/x-www-form-urlencoded".equals(contentType)) { + StringBuilder formParamBuilder = new StringBuilder(); + + // encode the form params + for (String key : formParams.keySet()) { + String value = formParams.get(key); + if (value != null && !"".equals(value.trim())) { + if (formParamBuilder.length() > 0) { + formParamBuilder.append("&"); + } + try { + formParamBuilder.append(URLEncoder.encode(key, "utf8")).append("=").append(URLEncoder.encode(value, "utf8")); + } + catch (Exception e) { + // move on to next + } + } + } + formParamStr = formParamBuilder.toString(); + } + + if ("GET".equals(method)) { + GetRequest request = new GetRequest(url, headers, null, stringRequest, errorListener); + mRequestQueue.add(request); + } + else if ("POST".equals(method)) { + PostRequest request = null; + if (formParamStr != null) { + request = new PostRequest(url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener); + } else if (body != null) { + if (body instanceof HttpEntity) { + request = new PostRequest(url, headers, null, (HttpEntity) body, stringRequest, errorListener); + } else { + request = new PostRequest(url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener); + } + } + if(request != null) mRequestQueue.add(request); + } + else if ("PUT".equals(method)) { + + } + else if ("DELETE".equals(method)) { + + } + else if ("PATCH".equals(method)) { + + } + } + + private void initConnectionManager() { + mRequestQueue = Volley.newRequestQueue(context); + } +} From 795b324fe54b09e1eae4dc6631408a87c8972956 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Wed, 4 Nov 2015 20:01:48 +0100 Subject: [PATCH 051/623] Added imports to Android Volley apiInvoker --- .../android-volley/apiInvoker.mustache | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache index 540ea296ca0..ad546aba86f 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache @@ -1,7 +1,25 @@ package {{invokerPackage}}; +import android.content.Context; + +import com.android.volley.RequestQueue; +import com.android.volley.Response; +import com.android.volley.toolbox.Volley; import com.google.gson.JsonParseException; +import org.apache.http.HttpEntity; +import org.apache.http.entity.StringEntity; + +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.TimeZone; + public class ApiInvoker { private static ApiInvoker INSTANCE; private Map defaultHeaderMap = new HashMap(); From a2aeb5a129f5f9be4390c5b3614cc646322a1d5e Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Wed, 4 Nov 2015 20:04:07 +0100 Subject: [PATCH 052/623] Added ClientOptions android-volley --- .../AndroidVolleyClientOptionsTest.java | 48 +++++++++++++++++++ .../AndroidVolleyClientOptionsProvider.java | 45 +++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 modules/swagger-codegen/src/test/java/io/swagger/codegen/androidvolley/AndroidVolleyClientOptionsTest.java create mode 100644 modules/swagger-codegen/src/test/java/io/swagger/codegen/options/AndroidVolleyClientOptionsProvider.java diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/androidvolley/AndroidVolleyClientOptionsTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/androidvolley/AndroidVolleyClientOptionsTest.java new file mode 100644 index 00000000000..36946390fde --- /dev/null +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/androidvolley/AndroidVolleyClientOptionsTest.java @@ -0,0 +1,48 @@ +package io.swagger.codegen.androidvolley; + +import io.swagger.codegen.AbstractOptionsTest; +import io.swagger.codegen.CodegenConfig; +import io.swagger.codegen.languages.AndroidVolleyClientCodegen; +import io.swagger.codegen.options.AndroidClientOptionsProvider; +import io.swagger.codegen.options.AndroidVolleyClientOptionsProvider; +import mockit.Expectations; +import mockit.Tested; + +public class AndroidVolleyClientOptionsTest extends AbstractOptionsTest { + + @Tested + private AndroidVolleyClientCodegen clientCodegen; + + public AndroidVolleyClientOptionsTest() { + super(new AndroidVolleyClientOptionsProvider()); + } + + @Override + protected CodegenConfig getCodegenConfig() { + return clientCodegen; + } + + @Override + protected void setExpectations() { + new Expectations(clientCodegen) {{ + clientCodegen.setModelPackage(AndroidClientOptionsProvider.MODEL_PACKAGE_VALUE); + times = 1; + clientCodegen.setApiPackage(AndroidClientOptionsProvider.API_PACKAGE_VALUE); + times = 1; + clientCodegen.setSortParamsByRequiredFlag(Boolean.valueOf(AndroidClientOptionsProvider.SORT_PARAMS_VALUE)); + times = 1; + clientCodegen.setInvokerPackage(AndroidClientOptionsProvider.INVOKER_PACKAGE_VALUE); + times = 1; + clientCodegen.setGroupId(AndroidClientOptionsProvider.GROUP_ID_VALUE); + times = 1; + clientCodegen.setArtifactId(AndroidClientOptionsProvider.ARTIFACT_ID_VALUE); + times = 1; + clientCodegen.setArtifactVersion(AndroidClientOptionsProvider.ARTIFACT_VERSION_VALUE); + times = 1; + clientCodegen.setSourceFolder(AndroidClientOptionsProvider.SOURCE_FOLDER_VALUE); + times = 1; + clientCodegen.setUseAndroidMavenGradlePlugin(Boolean.valueOf(AndroidClientOptionsProvider.ANDROID_MAVEN_GRADLE_PLUGIN_VALUE)); + times = 1; + }}; + } +} diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/AndroidVolleyClientOptionsProvider.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/AndroidVolleyClientOptionsProvider.java new file mode 100644 index 00000000000..549d56b42fd --- /dev/null +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/AndroidVolleyClientOptionsProvider.java @@ -0,0 +1,45 @@ +package io.swagger.codegen.options; + +import io.swagger.codegen.CodegenConstants; +import io.swagger.codegen.languages.AndroidVolleyClientCodegen; + +import com.google.common.collect.ImmutableMap; + +import java.util.Map; + +public class AndroidVolleyClientOptionsProvider implements OptionsProvider { + public static final String ARTIFACT_ID_VALUE = "swagger-java-client-test"; + public static final String MODEL_PACKAGE_VALUE = "package"; + public static final String API_PACKAGE_VALUE = "apiPackage"; + public static final String INVOKER_PACKAGE_VALUE = "io.swagger.client.test"; + public static final String SORT_PARAMS_VALUE = "false"; + public static final String GROUP_ID_VALUE = "io.swagger.test"; + public static final String ARTIFACT_VERSION_VALUE = "1.0.0-SNAPSHOT"; + public static final String SOURCE_FOLDER_VALUE = "src/main/java/test"; + public static final String ANDROID_MAVEN_GRADLE_PLUGIN_VALUE = "true"; + + @Override + public String getLanguage() { + return "android-volley"; + } + + @Override + public Map createOptions() { + ImmutableMap.Builder builder = new ImmutableMap.Builder(); + return builder.put(CodegenConstants.MODEL_PACKAGE, MODEL_PACKAGE_VALUE) + .put(CodegenConstants.API_PACKAGE, API_PACKAGE_VALUE) + .put(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG, SORT_PARAMS_VALUE) + .put(CodegenConstants.INVOKER_PACKAGE, INVOKER_PACKAGE_VALUE) + .put(CodegenConstants.GROUP_ID, GROUP_ID_VALUE) + .put(CodegenConstants.ARTIFACT_ID, ARTIFACT_ID_VALUE) + .put(CodegenConstants.ARTIFACT_VERSION, ARTIFACT_VERSION_VALUE) + .put(CodegenConstants.SOURCE_FOLDER, SOURCE_FOLDER_VALUE) + .put(AndroidVolleyClientCodegen.USE_ANDROID_MAVEN_GRADLE_PLUGIN, ANDROID_MAVEN_GRADLE_PLUGIN_VALUE) + .build(); + } + + @Override + public boolean isServer() { + return false; + } +} From 16bf228a41cb2c825375fae14b49dc8820291a43 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Wed, 4 Nov 2015 20:04:31 +0100 Subject: [PATCH 053/623] Added model template android-volley --- .../resources/android-volley/model.mustache | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 modules/swagger-codegen/src/main/resources/android-volley/model.mustache diff --git a/modules/swagger-codegen/src/main/resources/android-volley/model.mustache b/modules/swagger-codegen/src/main/resources/android-volley/model.mustache new file mode 100644 index 00000000000..6c805a832e4 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/android-volley/model.mustache @@ -0,0 +1,52 @@ +package {{package}}; + +{{#imports}}import {{import}}; +{{/imports}} + +import io.swagger.annotations.*; +import com.google.gson.annotations.SerializedName; +{{#models}} + +{{#model}}{{#description}} +/** + * {{description}} + **/{{/description}} +@ApiModel(description = "{{{description}}}") +public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} { + {{#vars}}{{#isEnum}} + public enum {{datatypeWithEnum}} { + {{#allowableValues}}{{#values}} {{.}}, {{/values}}{{/allowableValues}} + }; + @SerializedName("{{baseName}}") + private {{{datatypeWithEnum}}} {{name}} = {{{defaultValue}}};{{/isEnum}}{{^isEnum}} + @SerializedName("{{baseName}}") + private {{{datatype}}} {{name}} = {{{defaultValue}}};{{/isEnum}}{{/vars}} + + {{#vars}} + /**{{#description}} + * {{{description}}}{{/description}}{{#minimum}} + * minimum: {{minimum}}{{/minimum}}{{#maximum}} + * maximum: {{maximum}}{{/maximum}} + **/ + @ApiModelProperty({{#required}}required = {{required}}, {{/required}}value = "{{{description}}}") + public {{{datatypeWithEnum}}} {{getter}}() { + return {{name}}; + } + public void {{setter}}({{{datatypeWithEnum}}} {{name}}) { + this.{{name}} = {{name}}; + } + + {{/vars}} + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class {{classname}} {\n"); + {{#parent}}sb.append(" " + super.toString()).append("\n");{{/parent}} + {{#vars}}sb.append(" {{name}}: ").append({{name}}).append("\n"); + {{/vars}}sb.append("}\n"); + return sb.toString(); + } +} +{{/model}} +{{/models}} From efac324b739e8f732929dcd21e5ebda7da3313e1 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Wed, 4 Nov 2015 20:05:24 +0100 Subject: [PATCH 054/623] Added api template android-volley --- .../resources/android-volley/api.mustache | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 modules/swagger-codegen/src/main/resources/android-volley/api.mustache diff --git a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache new file mode 100644 index 00000000000..b255bbc4592 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache @@ -0,0 +1,128 @@ +package {{package}}; + +import {{invokerPackage}}.ApiException; +import {{invokerPackage}}.ApiInvoker; +import {{invokerPackage}}.Pair; + +import {{modelPackage}}.*; + +import java.util.*; + +{{#imports}}import {{import}}; +{{/imports}} + +import org.apache.http.HttpEntity; +import org.apache.http.entity.mime.MultipartEntityBuilder; + +import java.util.Map; +import java.util.HashMap; +import java.io.File; + +{{#operations}} +public class {{classname}} { + String basePath = "{{basePath}}"; + ApiInvoker apiInvoker = ApiInvoker.getInstance(); + + public void addHeader(String key, String value) { + getInvoker().addDefaultHeader(key, value); + } + + public ApiInvoker getInvoker() { + return apiInvoker; + } + + public void setBasePath(String basePath) { + this.basePath = basePath; + } + + public String getBasePath() { + return basePath; + } + + {{#operation}} + /** + * {{summary}} + * {{notes}} +{{#allParams}} * @param {{paramName}} {{description}} +{{/allParams}} * @return {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}} + */ + public void {{nickname}} ({{#allParams}}{{{dataType}}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}, final {{#returnBaseType}}{{returnBaseType}}Responses.{{#returnContainer}}{{returnContainer}}{{/returnContainer}}{{returnBaseType}}Response{{/returnBaseType}}{{^returnBaseType}}Response.Listener{{/returnBaseType}} responseListener) { + Object postBody = {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}}; + {{#allParams}}{{#required}} + // verify the required parameter '{{paramName}}' is set + if ({{paramName}} == null) { + throw new ApiException(400, "Missing the required parameter '{{paramName}}' when calling {{nickname}}"); + } + {{/required}}{{/allParams}} + + // create path and map variables + String path = "{{path}}".replaceAll("\\{format\\}","json"){{#pathParams}}.replaceAll("\\{" + "{{baseName}}" + "\\}", apiInvoker.escapeString({{{paramName}}}.toString())){{/pathParams}}; + + // query params + List queryParams = new ArrayList(); + // header params + Map headerParams = new HashMap(); + // form params + Map formParams = new HashMap(); + + {{#queryParams}} + queryParams.addAll(ApiInvoker.parameterToPairs("{{#collectionFormat}}{{{collectionFormat}}}{{/collectionFormat}}", "{{baseName}}", {{paramName}})); + {{/queryParams}} + + {{#headerParams}} + headerParams.put("{{baseName}}", ApiInvoker.parameterToString({{paramName}})); + {{/headerParams}} + + String[] contentTypes = { + {{#consumes}}"{{mediaType}}"{{#hasMore}},{{/hasMore}}{{/consumes}} + }; + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + if (contentType.startsWith("multipart/form-data")) { + // file uploading + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + {{#formParams}}{{#notFile}} + if ({{paramName}} != null) { + builder.addTextBody("{{baseName}}", ApiInvoker.parameterToString({{paramName}}), ApiInvoker.TEXT_PLAIN_UTF8); + } + {{/notFile}}{{#isFile}} + if ({{paramName}} != null) { + builder.addBinaryBody("{{baseName}}", {{paramName}}); + } + {{/isFile}}{{/formParams}} + + HttpEntity httpEntity = builder.build(); + postBody = httpEntity; + } else { + // normal form params + {{#formParams}}{{#notFile}}formParams.put("{{baseName}}", ApiInvoker.parameterToString({{paramName}}));{{/notFile}} + {{/formParams}} + } + + try { + apiInvoker.invokeAPI(basePath, path, "{{httpMethod}}", queryParams, postBody, headerParams, formParams, contentType, + new Response.Listener() { + @Override + public void onResponse(String response) { + try { + responseListener.onResponse((List) ApiInvoker.deserialize(response, "array", Phone.class)); + } catch (ApiException exception) { + //TODO onError + Log.d("ERROR", "error"); + } + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + //TODO onError + Log.d("ERROR", "error"); + } + }); + ); + } catch (ApiException ex) { + //TODO onError + } + } + {{/operation}} +} +{{/operations}} From acac1bb83b68b3eb6b0fb61be85eb6b7a858653b Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Wed, 4 Nov 2015 20:05:43 +0100 Subject: [PATCH 055/623] Added GetRequest template android-volley --- .../android-volley/getrequest.mustache | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 modules/swagger-codegen/src/main/resources/android-volley/getrequest.mustache diff --git a/modules/swagger-codegen/src/main/resources/android-volley/getrequest.mustache b/modules/swagger-codegen/src/main/resources/android-volley/getrequest.mustache new file mode 100644 index 00000000000..91be40c66a2 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/android-volley/getrequest.mustache @@ -0,0 +1,39 @@ +package io.swagger.client.request; + +import com.android.volley.AuthFailureError; +import com.android.volley.Response; +import com.android.volley.toolbox.StringRequest; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +public class GetRequest extends StringRequest{ + Map apiHeaders; + String contentType; + + public GetRequest(String url, Map apiHeaders, String contentType, Response.Listener listener, Response.ErrorListener errorListener) { + super(Method.GET, url, listener, errorListener); + this.apiHeaders = apiHeaders; + this.contentType = contentType; + } + + /* (non-Javadoc) + * @see com.android.volley.Request#getHeaders() + */ + @Override + public Map getHeaders() throws AuthFailureError { + Map headers = super.getHeaders(); + if (headers == null || headers.equals(Collections.emptyMap())) { + headers = new HashMap(); + } + if (apiHeaders != null && !apiHeaders.equals(Collections.emptyMap())) { + headers.putAll(apiHeaders); + } + if(contentType != null) { + headers.put("Content-Type", contentType); + } + + return headers; + } +} \ No newline at end of file From 090839fe06e8b047178b5b62bb87c5ea2467fef1 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Wed, 4 Nov 2015 20:06:17 +0100 Subject: [PATCH 056/623] Added AndroidVolley ClientCodegen --- .../languages/AndroidVolleyClientCodegen.java | 280 ++++++++++++++++++ 1 file changed, 280 insertions(+) create mode 100644 modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java new file mode 100644 index 00000000000..c696f58f85e --- /dev/null +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java @@ -0,0 +1,280 @@ +package io.swagger.codegen.languages; + +import io.swagger.codegen.CliOption; +import io.swagger.codegen.CodegenConfig; +import io.swagger.codegen.CodegenConstants; +import io.swagger.codegen.CodegenType; +import io.swagger.codegen.DefaultCodegen; +import io.swagger.codegen.SupportingFile; +import io.swagger.models.properties.ArrayProperty; +import io.swagger.models.properties.MapProperty; +import io.swagger.models.properties.Property; + +import java.io.File; +import java.util.Arrays; +import java.util.HashSet; + +import org.apache.commons.lang.StringUtils; + +public class AndroidVolleyClientCodegen extends DefaultCodegen implements CodegenConfig { + public static final String USE_ANDROID_MAVEN_GRADLE_PLUGIN = "useAndroidMavenGradlePlugin"; + protected String invokerPackage = "io.swagger.client"; + protected String groupId = "io.swagger"; + protected String artifactId = "swagger-android-volley-client"; + protected String artifactVersion = "1.0.0"; + protected String projectFolder = "src/main"; + protected String sourceFolder = projectFolder + "/java"; + protected Boolean useAndroidMavenGradlePlugin = true; + protected String requestPackage = "io.swagger.client.request"; + + public AndroidVolleyClientCodegen() { + super(); + outputFolder = "generated-code/android-volley"; + modelTemplateFiles.put("model.mustache", ".java"); + apiTemplateFiles.put("api.mustache", ".java"); + embeddedTemplateDir = templateDir = "android-volley"; + apiPackage = "io.swagger.client.api"; + modelPackage = "io.swagger.client.model"; + + reservedWords = new HashSet( + Arrays.asList( + "abstract", "continue", "for", "new", "switch", "assert", + "default", "if", "package", "synchronized", "boolean", "do", "goto", "private", + "this", "break", "double", "implements", "protected", "throw", "byte", "else", + "import", "public", "throws", "case", "enum", "instanceof", "return", "transient", + "catch", "extends", "int", "short", "try", "char", "final", "interface", "static", + "void", "class", "finally", "long", "strictfp", "volatile", "const", "float", + "native", "super", "while") + ); + + languageSpecificPrimitives = new HashSet( + Arrays.asList( + "String", + "boolean", + "Boolean", + "Double", + "Integer", + "Long", + "Float", + "Object") + ); + instantiationTypes.put("array", "ArrayList"); + instantiationTypes.put("map", "HashMap"); + + cliOptions.add(new CliOption(CodegenConstants.INVOKER_PACKAGE, CodegenConstants.INVOKER_PACKAGE_DESC)); + cliOptions.add(new CliOption(CodegenConstants.GROUP_ID, "groupId for use in the generated build.gradle and pom.xml")); + cliOptions.add(new CliOption(CodegenConstants.ARTIFACT_ID, "artifactId for use in the generated build.gradle and pom.xml")); + cliOptions.add(new CliOption(CodegenConstants.ARTIFACT_VERSION, "artifact version for use in the generated build.gradle and pom.xml")); + cliOptions.add(new CliOption(CodegenConstants.SOURCE_FOLDER, CodegenConstants.SOURCE_FOLDER_DESC)); + cliOptions.add(new CliOption(USE_ANDROID_MAVEN_GRADLE_PLUGIN, "A flag to toggle android-maven gradle plugin. Default is true.")); + } + + public CodegenType getTag() { + return CodegenType.CLIENT; + } + + public String getName() { + return "android-volley"; + } + + public String getHelp() { + return "Generates an Android client library."; + } + + @Override + public String escapeReservedWord(String name) { + return "_" + name; + } + + @Override + public String apiFileFolder() { + return outputFolder + "/" + sourceFolder + "/" + apiPackage().replace('.', File.separatorChar); + } + + public String modelFileFolder() { + return outputFolder + "/" + sourceFolder + "/" + modelPackage().replace('.', File.separatorChar); + } + + @Override + public String getTypeDeclaration(Property p) { + if (p instanceof ArrayProperty) { + ArrayProperty ap = (ArrayProperty) p; + Property inner = ap.getItems(); + return getSwaggerType(p) + "<" + getTypeDeclaration(inner) + ">"; + } else if (p instanceof MapProperty) { + MapProperty mp = (MapProperty) p; + Property inner = mp.getAdditionalProperties(); + + return getSwaggerType(p) + ""; + } + return super.getTypeDeclaration(p); + } + + @Override + public String getSwaggerType(Property p) { + String swaggerType = super.getSwaggerType(p); + String type = null; + if (typeMapping.containsKey(swaggerType)) { + type = typeMapping.get(swaggerType); + if (languageSpecificPrimitives.contains(type)) { + return toModelName(type); + } + } else { + type = swaggerType; + } + return toModelName(type); + } + + @Override + public String toVarName(String name) { + // replace - with _ e.g. created-at => created_at + name = name.replaceAll("-", "_"); + + // if it's all uppper case, do nothing + if (name.matches("^[A-Z_]*$")) { + return name; + } + + // camelize (lower first character) the variable name + // pet_id => petId + name = camelize(name, true); + + // for reserved word or word starting with number, append _ + if (reservedWords.contains(name) || name.matches("^\\d.*")) { + name = escapeReservedWord(name); + } + + return name; + } + + @Override + public String toParamName(String name) { + // should be the same as variable name + return toVarName(name); + } + + @Override + public String toModelName(String name) { + // model name cannot use reserved keyword, e.g. return + if (reservedWords.contains(name)) { + throw new RuntimeException(name + " (reserved word) cannot be used as a model name"); + } + + // camelize the model name + // phone_number => PhoneNumber + return camelize(name); + } + + @Override + public String toModelFilename(String name) { + // should be the same as the model name + return toModelName(name); + } + + @Override + public String toOperationId(String operationId) { + // throw exception if method name is empty + if (StringUtils.isEmpty(operationId)) { + throw new RuntimeException("Empty method name (operationId) not allowed"); + } + + // method name cannot use reserved keyword, e.g. return + if (reservedWords.contains(operationId)) { + throw new RuntimeException(operationId + " (reserved word) cannot be used as method name"); + } + + return camelize(operationId, true); + } + + @Override + public void processOpts() { + super.processOpts(); + + if (additionalProperties.containsKey(CodegenConstants.INVOKER_PACKAGE)) { + this.setInvokerPackage((String) additionalProperties.get(CodegenConstants.INVOKER_PACKAGE)); + } else { + //not set, use default to be passed to template + additionalProperties.put(CodegenConstants.INVOKER_PACKAGE, invokerPackage); + } + + if (additionalProperties.containsKey(CodegenConstants.GROUP_ID)) { + this.setGroupId((String) additionalProperties.get(CodegenConstants.GROUP_ID)); + } else { + //not set, use to be passed to template + additionalProperties.put(CodegenConstants.GROUP_ID, groupId); + } + + if (additionalProperties.containsKey(CodegenConstants.ARTIFACT_ID)) { + this.setArtifactId((String) additionalProperties.get(CodegenConstants.ARTIFACT_ID)); + } else { + //not set, use to be passed to template + additionalProperties.put(CodegenConstants.ARTIFACT_ID, artifactId); + } + + if (additionalProperties.containsKey(CodegenConstants.ARTIFACT_VERSION)) { + this.setArtifactVersion((String) additionalProperties.get(CodegenConstants.ARTIFACT_VERSION)); + } else { + //not set, use to be passed to template + additionalProperties.put(CodegenConstants.ARTIFACT_VERSION, artifactVersion); + } + + if (additionalProperties.containsKey(CodegenConstants.SOURCE_FOLDER)) { + this.setSourceFolder((String) additionalProperties.get(CodegenConstants.SOURCE_FOLDER)); + } + + if (additionalProperties.containsKey(USE_ANDROID_MAVEN_GRADLE_PLUGIN)) { + this.setUseAndroidMavenGradlePlugin(Boolean.valueOf((String) additionalProperties + .get(USE_ANDROID_MAVEN_GRADLE_PLUGIN))); + } else { + additionalProperties.put(USE_ANDROID_MAVEN_GRADLE_PLUGIN, useAndroidMavenGradlePlugin); + } + +// supportingFiles.add(new SupportingFile("pom.mustache", "", "pom.xml")); + additionalProperties.put(USE_ANDROID_MAVEN_GRADLE_PLUGIN, useAndroidMavenGradlePlugin); + +// supportingFiles.add(new SupportingFile("settings.gradle.mustache", "", "settings.gradle")); +// supportingFiles.add(new SupportingFile("build.mustache", "", "build.gradle")); +// supportingFiles.add(new SupportingFile("manifest.mustache", projectFolder, "AndroidManifest.xml")); + supportingFiles.add(new SupportingFile("apiInvoker.mustache", + (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "ApiInvoker.java")); +// supportingFiles.add(new SupportingFile("httpPatch.mustache", +// (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "HttpPatch.java")); +// supportingFiles.add(new SupportingFile("jsonUtil.mustache", +// (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "JsonUtil.java")); +// supportingFiles.add(new SupportingFile("apiException.mustache", +// (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "ApiException.java")); +// supportingFiles.add(new SupportingFile("Pair.mustache", +// (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "Pair.java")); + supportingFiles.add(new SupportingFile("getrequest.mustache", + (sourceFolder + File.separator + requestPackage).replace(".", java.io.File.separator), "GetRequest.java")); + } + + public Boolean getUseAndroidMavenGradlePlugin() { + return useAndroidMavenGradlePlugin; + } + + public void setUseAndroidMavenGradlePlugin(Boolean useAndroidMavenGradlePlugin) { + this.useAndroidMavenGradlePlugin = useAndroidMavenGradlePlugin; + } + + public void setInvokerPackage(String invokerPackage) { + this.invokerPackage = invokerPackage; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + public void setArtifactId(String artifactId) { + this.artifactId = artifactId; + } + + public void setArtifactVersion(String artifactVersion) { + this.artifactVersion = artifactVersion; + } + + public void setSourceFolder(String sourceFolder) { + this.sourceFolder = sourceFolder; + } + +} From c3679893df06e8e23df87de8a83c7512c7ddc576 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Wed, 4 Nov 2015 20:12:35 +0100 Subject: [PATCH 057/623] Added jsonUtil and Pair android-volley --- .../languages/AndroidVolleyClientCodegen.java | 8 +-- .../resources/android-volley/Pair.mustache | 38 +++++++++++++ .../android-volley/jsonUtil.mustache | 55 +++++++++++++++++++ 3 files changed, 97 insertions(+), 4 deletions(-) create mode 100644 modules/swagger-codegen/src/main/resources/android-volley/Pair.mustache create mode 100644 modules/swagger-codegen/src/main/resources/android-volley/jsonUtil.mustache diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java index c696f58f85e..1ea9da0898b 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java @@ -239,12 +239,12 @@ public class AndroidVolleyClientCodegen extends DefaultCodegen implements Codege (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "ApiInvoker.java")); // supportingFiles.add(new SupportingFile("httpPatch.mustache", // (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "HttpPatch.java")); -// supportingFiles.add(new SupportingFile("jsonUtil.mustache", -// (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "JsonUtil.java")); + supportingFiles.add(new SupportingFile("jsonUtil.mustache", + (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "JsonUtil.java")); // supportingFiles.add(new SupportingFile("apiException.mustache", // (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "ApiException.java")); -// supportingFiles.add(new SupportingFile("Pair.mustache", -// (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "Pair.java")); + supportingFiles.add(new SupportingFile("Pair.mustache", + (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "Pair.java")); supportingFiles.add(new SupportingFile("getrequest.mustache", (sourceFolder + File.separator + requestPackage).replace(".", java.io.File.separator), "GetRequest.java")); } diff --git a/modules/swagger-codegen/src/main/resources/android-volley/Pair.mustache b/modules/swagger-codegen/src/main/resources/android-volley/Pair.mustache new file mode 100644 index 00000000000..5456028a1a0 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/android-volley/Pair.mustache @@ -0,0 +1,38 @@ +package {{invokerPackage}}; + +public class Pair { + private String name = ""; + private String value = ""; + + public Pair(String name, String value) { + setName(name); + setValue(value); + } + + private void setName(String name) { + if (!isValidString(name)) return; + + this.name = name; + } + + private void setValue(String value) { + if (!isValidString(value)) return; + + this.value = value; + } + + public String getName() { + return this.name; + } + + public String getValue() { + return this.value; + } + + private boolean isValidString(String arg) { + if (arg == null) return false; + if (arg.trim().isEmpty()) return false; + + return true; + } +} diff --git a/modules/swagger-codegen/src/main/resources/android-volley/jsonUtil.mustache b/modules/swagger-codegen/src/main/resources/android-volley/jsonUtil.mustache new file mode 100644 index 00000000000..ae8d18d3731 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/android-volley/jsonUtil.mustache @@ -0,0 +1,55 @@ +package {{invokerPackage}}; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.reflect.TypeToken; +import java.lang.reflect.Type; +import java.util.List; +import {{modelPackage}}.*; + +public class JsonUtil { + public static GsonBuilder gsonBuilder; + + static { + gsonBuilder = new GsonBuilder(); + gsonBuilder.serializeNulls(); + gsonBuilder.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); + } + + public static Gson getGson() { + return gsonBuilder.create(); + } + + public static String serialize(Object obj){ + return getGson().toJson(obj); + } + + public static T deserializeToList(String jsonString, Class cls){ + return getGson().fromJson(jsonString, getListTypeForDeserialization(cls)); + } + + public static T deserializeToObject(String jsonString, Class cls){ + return getGson().fromJson(jsonString, getTypeForDeserialization(cls)); + } + + public static Type getListTypeForDeserialization(Class cls) { + String className = cls.getSimpleName(); + {{#models}}{{#model}} + if ("{{classname}}".equalsIgnoreCase(className)) { + return new TypeToken>(){}.getType(); + } + {{/model}}{{/models}} + return new TypeToken>(){}.getType(); + } + + public static Type getTypeForDeserialization(Class cls) { + String className = cls.getSimpleName(); + {{#models}}{{#model}} + if ("{{classname}}".equalsIgnoreCase(className)) { + return new TypeToken<{{classname}}>(){}.getType(); + } + {{/model}}{{/models}} + return new TypeToken(){}.getType(); + } + +}; From 5c79c21f3cdc7cd26a80645ea1f5efaaec3d3287 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Thu, 5 Nov 2015 07:40:19 +0100 Subject: [PATCH 058/623] fixed Api returnType [android-volley] --- .../src/main/resources/android-volley/api.mustache | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache index b255bbc4592..87e41695df4 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache @@ -1,6 +1,6 @@ package {{package}}; -import {{invokerPackage}}.ApiException; +import {{invokerPackage}}.Responses; import {{invokerPackage}}.ApiInvoker; import {{invokerPackage}}.Pair; @@ -46,7 +46,7 @@ public class {{classname}} { {{#allParams}} * @param {{paramName}} {{description}} {{/allParams}} * @return {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}} */ - public void {{nickname}} ({{#allParams}}{{{dataType}}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}, final {{#returnBaseType}}{{returnBaseType}}Responses.{{#returnContainer}}{{returnContainer}}{{/returnContainer}}{{returnBaseType}}Response{{/returnBaseType}}{{^returnBaseType}}Response.Listener{{/returnBaseType}} responseListener) { + public void {{nickname}} ({{#allParams}}{{{dataType}}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}, final {{#returnBaseType}}Responses.{{returnBaseType}}{{#isListContainer}}List{{/isListContainer}}Response{{/returnBaseType}}{{^returnBaseType}}Response.Listener{{/returnBaseType}} responseListener) { Object postBody = {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}}; {{#allParams}}{{#required}} // verify the required parameter '{{paramName}}' is set @@ -105,7 +105,7 @@ public class {{classname}} { @Override public void onResponse(String response) { try { - responseListener.onResponse((List) ApiInvoker.deserialize(response, "array", Phone.class)); + responseListener.onResponse({{returnType}}) ApiInvoker.deserialize(response, "array", Phone.class)); } catch (ApiException exception) { //TODO onError Log.d("ERROR", "error"); From e098e8f372d687c2d6972d4123d366509ff503a4 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Thu, 5 Nov 2015 07:55:38 +0100 Subject: [PATCH 059/623] Added PostRequest [android-volley] --- .../languages/AndroidVolleyClientCodegen.java | 2 + .../android-volley/postrequest.mustache | 78 +++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 modules/swagger-codegen/src/main/resources/android-volley/postrequest.mustache diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java index 1ea9da0898b..3b546913554 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java @@ -247,6 +247,8 @@ public class AndroidVolleyClientCodegen extends DefaultCodegen implements Codege (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "Pair.java")); supportingFiles.add(new SupportingFile("getrequest.mustache", (sourceFolder + File.separator + requestPackage).replace(".", java.io.File.separator), "GetRequest.java")); + supportingFiles.add(new SupportingFile("postrequest.mustache", + (sourceFolder + File.separator + requestPackage).replace(".", java.io.File.separator), "PostRequest.java")); } public Boolean getUseAndroidMavenGradlePlugin() { diff --git a/modules/swagger-codegen/src/main/resources/android-volley/postrequest.mustache b/modules/swagger-codegen/src/main/resources/android-volley/postrequest.mustache new file mode 100644 index 00000000000..7daf8360753 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/android-volley/postrequest.mustache @@ -0,0 +1,78 @@ +package {{invokerPackage}}; + +import com.android.volley.AuthFailureError; +import com.android.volley.NetworkResponse; +import com.android.volley.Request; +import com.android.volley.Response; +import com.android.volley.VolleyLog; + +import org.apache.http.HttpEntity; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +public class PostRequest extends Request { + + HttpEntity entity; + + private final Response.Listener mListener; + + String contentType; + Map apiHeaders; + public PostRequest(String url, Map apiHeaders, String contentType, HttpEntity entity, Response.Listener listener, Response.ErrorListener errorListener) { + super(Method.POST, url, errorListener); + mListener = listener; + this.entity = entity; + this.contentType = contentType; + this.apiHeaders = apiHeaders; + } + + @Override + public String getBodyContentType() { + return entity.getContentType().getValue(); + } + + @Override + public byte[] getBody() throws AuthFailureError { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + try { + entity.writeTo(bos); + } + catch (IOException e) { + VolleyLog.e("IOException writing to ByteArrayOutputStream"); + } + return bos.toByteArray(); + } + + @Override + protected Response parseNetworkResponse(NetworkResponse response) { + return Response.success("Uploaded", getCacheEntry()); + } + + @Override + protected void deliverResponse(String response) { + mListener.onResponse(response); + } + + /* (non-Javadoc) + * @see com.android.volley.Request#getHeaders() + */ + @Override + public Map getHeaders() throws AuthFailureError { + Map headers = super.getHeaders(); + if (headers == null || headers.equals(Collections.emptyMap())) { + headers = new HashMap(); + } + if (apiHeaders != null && !apiHeaders.equals(Collections.emptyMap())) { + headers.putAll(apiHeaders); + } + if(contentType != null) { + headers.put("Content-Type", contentType); + } + + return headers; + } +} \ No newline at end of file From f3ff567d3f94beb4fb251a401facc1e0272d3466 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Thu, 5 Nov 2015 07:56:19 +0100 Subject: [PATCH 060/623] added default string response to api template [android-volley] --- .../src/main/resources/android-volley/api.mustache | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache index 87e41695df4..8cfc11b5ec4 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache @@ -105,7 +105,12 @@ public class {{classname}} { @Override public void onResponse(String response) { try { - responseListener.onResponse({{returnType}}) ApiInvoker.deserialize(response, "array", Phone.class)); + {{#returnType}} + responseListener.onResponse(({{{returnType}}}) ApiInvoker.deserialize(response, "array", {{returnBaseType}}.class)); + {{/returnType}} + {{^returnType}} + responseListener.onResponse(response); + {{/returnType}} } catch (ApiException exception) { //TODO onError Log.d("ERROR", "error"); From 980957b9a98b03145cacbdc862518f0d21ac9a6c Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Thu, 5 Nov 2015 07:56:34 +0100 Subject: [PATCH 061/623] fix getrequest import [android-volley] --- .../src/main/resources/android-volley/getrequest.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/resources/android-volley/getrequest.mustache b/modules/swagger-codegen/src/main/resources/android-volley/getrequest.mustache index 91be40c66a2..ec5907e6f5b 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/getrequest.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/getrequest.mustache @@ -1,4 +1,4 @@ -package io.swagger.client.request; +package {{invokerPackage}}; import com.android.volley.AuthFailureError; import com.android.volley.Response; From c80ff7ed0dab26178667cc62a3d42f1f053a0887 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Thu, 5 Nov 2015 07:57:33 +0100 Subject: [PATCH 062/623] Added responses class --- .../languages/AndroidVolleyClientCodegen.java | 2 ++ .../android-volley/responses.mustache | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 modules/swagger-codegen/src/main/resources/android-volley/responses.mustache diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java index 3b546913554..1555b715ecd 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java @@ -237,6 +237,8 @@ public class AndroidVolleyClientCodegen extends DefaultCodegen implements Codege // supportingFiles.add(new SupportingFile("manifest.mustache", projectFolder, "AndroidManifest.xml")); supportingFiles.add(new SupportingFile("apiInvoker.mustache", (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "ApiInvoker.java")); + supportingFiles.add(new SupportingFile("response.mustache", + (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "Responses.java")); // supportingFiles.add(new SupportingFile("httpPatch.mustache", // (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "HttpPatch.java")); supportingFiles.add(new SupportingFile("jsonUtil.mustache", diff --git a/modules/swagger-codegen/src/main/resources/android-volley/responses.mustache b/modules/swagger-codegen/src/main/resources/android-volley/responses.mustache new file mode 100644 index 00000000000..7a8cbf7e8d3 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/android-volley/responses.mustache @@ -0,0 +1,19 @@ +package {{invokerPackage}}; + +import java.util.List; +import {{modelPackage}}.*; + +public class Responses { + {{#models}} + {{#model}} + public static interface {{classname}}Response { + public void onResponse({{classname}} {{classVarName}}); + } + } + public static interface {{classname}}ListResponse { + public void onResponse(List<{{classname}}> {{classVarName}}List); + } + } + {{/model}} + {{/models}} +} \ No newline at end of file From 52ebd25732469f612f05a80876f99769570b729c Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Thu, 5 Nov 2015 08:02:00 +0100 Subject: [PATCH 063/623] Added responses class [android-volley] --- .../swagger/codegen/languages/AndroidVolleyClientCodegen.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java index 1555b715ecd..f537405090d 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java @@ -237,7 +237,7 @@ public class AndroidVolleyClientCodegen extends DefaultCodegen implements Codege // supportingFiles.add(new SupportingFile("manifest.mustache", projectFolder, "AndroidManifest.xml")); supportingFiles.add(new SupportingFile("apiInvoker.mustache", (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "ApiInvoker.java")); - supportingFiles.add(new SupportingFile("response.mustache", + supportingFiles.add(new SupportingFile("responses.mustache", (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "Responses.java")); // supportingFiles.add(new SupportingFile("httpPatch.mustache", // (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "HttpPatch.java")); From f5e757e6b96a4e327f85f17c7f30da4fac427cfb Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Thu, 5 Nov 2015 08:05:15 +0100 Subject: [PATCH 064/623] Added build.gradle and AndroidManifest [android-volley] --- .../resources/android-volley/build.mustache | 91 +++++++++++++++++++ .../android-volley/manifest.mustache | 3 + 2 files changed, 94 insertions(+) create mode 100644 modules/swagger-codegen/src/main/resources/android-volley/build.mustache create mode 100644 modules/swagger-codegen/src/main/resources/android-volley/manifest.mustache diff --git a/modules/swagger-codegen/src/main/resources/android-volley/build.mustache b/modules/swagger-codegen/src/main/resources/android-volley/build.mustache new file mode 100644 index 00000000000..ed1e7f7efcf --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/android-volley/build.mustache @@ -0,0 +1,91 @@ +{{#useAndroidMavenGradlePlugin}} +group = '{{groupId}}' +project.version = '{{artifactVersion}}' +{{/useAndroidMavenGradlePlugin}} + +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:1.2.2' + {{#useAndroidMavenGradlePlugin}} + classpath 'com.github.dcendents:android-maven-plugin:1.2' + {{/useAndroidMavenGradlePlugin}} + } +} + +allprojects { + repositories { + jcenter() + } +} + + +apply plugin: 'com.android.library' +{{#useAndroidMavenGradlePlugin}} +apply plugin: 'com.github.dcendents.android-maven' +{{/useAndroidMavenGradlePlugin}} + +android { + compileSdkVersion 22 + buildToolsVersion '22.0.0' + defaultConfig { + minSdkVersion 14 + targetSdkVersion 22 + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_7 + targetCompatibility JavaVersion.VERSION_1_7 + } + + // Rename the aar correctly + libraryVariants.all { variant -> + variant.outputs.each { output -> + def outputFile = output.outputFile + if (outputFile != null && outputFile.name.endsWith('.aar')) { + def fileName = "${project.name}-${variant.baseName}-${version}.aar" + output.outputFile = new File(outputFile.parent, fileName) + } + } + } +} + + +ext { + swagger_annotations_version = "1.5.0" + gson_version = "2.3.1" + httpclient_version = "4.3.3" + junit_version = "4.8.1" +} + +dependencies { + compile "io.swagger:swagger-annotations:$swagger_annotations_version" + compile "com.google.code.gson:gson:$gson_version" + compile "org.apache.httpcomponents:httpcore:$httpclient_version" + compile "org.apache.httpcomponents:httpmime:$httpclient_version" + testCompile "junit:junit:$junit_version" +} + +afterEvaluate { + android.libraryVariants.all { variant -> + def task = project.tasks.create "jar${variant.name.capitalize()}", Jar + task.description = "Create jar artifact for ${variant.name}" + task.dependsOn variant.javaCompile + task.from variant.javaCompile.destinationDir + task.destinationDir = project.file("${project.buildDir}/outputs/jar") + task.archiveName = "${project.name}-${variant.baseName}-${version}.jar" + artifacts.add('archives', task); + } +} + +{{#useAndroidMavenGradlePlugin}} +task sourcesJar(type: Jar) { + from android.sourceSets.main.java.srcDirs + classifier = 'sources' +} + +artifacts { + archives sourcesJar +} +{{/useAndroidMavenGradlePlugin}} diff --git a/modules/swagger-codegen/src/main/resources/android-volley/manifest.mustache b/modules/swagger-codegen/src/main/resources/android-volley/manifest.mustache new file mode 100644 index 00000000000..165749c3cc4 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/android-volley/manifest.mustache @@ -0,0 +1,3 @@ + + + From 84a22c83448f2c282027eb7636387f48f6a3ad88 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Thu, 5 Nov 2015 08:54:18 +0100 Subject: [PATCH 065/623] Added build.gradle and AndroidManifest [android-volley] --- .../swagger/codegen/languages/AndroidVolleyClientCodegen.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java index f537405090d..ee2b563bbc2 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java @@ -233,8 +233,8 @@ public class AndroidVolleyClientCodegen extends DefaultCodegen implements Codege additionalProperties.put(USE_ANDROID_MAVEN_GRADLE_PLUGIN, useAndroidMavenGradlePlugin); // supportingFiles.add(new SupportingFile("settings.gradle.mustache", "", "settings.gradle")); -// supportingFiles.add(new SupportingFile("build.mustache", "", "build.gradle")); -// supportingFiles.add(new SupportingFile("manifest.mustache", projectFolder, "AndroidManifest.xml")); + supportingFiles.add(new SupportingFile("build.mustache", "", "build.gradle")); + supportingFiles.add(new SupportingFile("manifest.mustache", projectFolder, "AndroidManifest.xml")); supportingFiles.add(new SupportingFile("apiInvoker.mustache", (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "ApiInvoker.java")); supportingFiles.add(new SupportingFile("responses.mustache", From b9abe2b51dbfbfd6448df6c1d335a383a41c768a Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Thu, 5 Nov 2015 08:54:47 +0100 Subject: [PATCH 066/623] Added apiException template [android-volley] --- .../languages/AndroidVolleyClientCodegen.java | 4 +-- .../android-volley/apiException.mustache | 29 +++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 modules/swagger-codegen/src/main/resources/android-volley/apiException.mustache diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java index ee2b563bbc2..0241c5f31ef 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java @@ -243,8 +243,8 @@ public class AndroidVolleyClientCodegen extends DefaultCodegen implements Codege // (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "HttpPatch.java")); supportingFiles.add(new SupportingFile("jsonUtil.mustache", (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "JsonUtil.java")); -// supportingFiles.add(new SupportingFile("apiException.mustache", -// (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "ApiException.java")); + supportingFiles.add(new SupportingFile("apiException.mustache", + (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "ApiException.java")); supportingFiles.add(new SupportingFile("Pair.mustache", (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "Pair.java")); supportingFiles.add(new SupportingFile("getrequest.mustache", diff --git a/modules/swagger-codegen/src/main/resources/android-volley/apiException.mustache b/modules/swagger-codegen/src/main/resources/android-volley/apiException.mustache new file mode 100644 index 00000000000..a6bcba75b7c --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/android-volley/apiException.mustache @@ -0,0 +1,29 @@ +package {{invokerPackage}}; + +public class ApiException extends Exception { + int code = 0; + String message = null; + + public ApiException() {} + + public ApiException(int code, String message) { + this.code = code; + this.message = message; + } + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} \ No newline at end of file From 7b811ad44b7beb7c272b211c1c40ad214b4a8fdd Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Thu, 5 Nov 2015 08:55:10 +0100 Subject: [PATCH 067/623] various api template fixes [android-volley] --- .../src/main/resources/android-volley/api.mustache | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache index 8cfc11b5ec4..96f03dd1828 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache @@ -2,12 +2,16 @@ package {{package}}; import {{invokerPackage}}.Responses; import {{invokerPackage}}.ApiInvoker; +import {{invokerPackage}}.ApiException; import {{invokerPackage}}.Pair; import {{modelPackage}}.*; import java.util.*; +import com.android.volley.Response; +import com.android.volley.VolleyError; + {{#imports}}import {{import}}; {{/imports}} @@ -46,7 +50,7 @@ public class {{classname}} { {{#allParams}} * @param {{paramName}} {{description}} {{/allParams}} * @return {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}} */ - public void {{nickname}} ({{#allParams}}{{{dataType}}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}, final {{#returnBaseType}}Responses.{{returnBaseType}}{{#isListContainer}}List{{/isListContainer}}Response{{/returnBaseType}}{{^returnBaseType}}Response.Listener{{/returnBaseType}} responseListener) { + public void {{nickname}} ({{#allParams}}{{{dataType}}} {{paramName}}{{#hasMore}}, {{/hasMore}},{{/allParams}} final {{#returnBaseType}}Responses.{{returnBaseType}}{{#isListContainer}}List{{/isListContainer}}Response{{/returnBaseType}}{{^returnBaseType}}Response.Listener{{/returnBaseType}} responseListener, final Response.ErrorListener errorListener) { Object postBody = {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}}; {{#allParams}}{{#required}} // verify the required parameter '{{paramName}}' is set @@ -113,17 +117,14 @@ public class {{classname}} { {{/returnType}} } catch (ApiException exception) { //TODO onError - Log.d("ERROR", "error"); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { - //TODO onError - Log.d("ERROR", "error"); + errorListener.onErrorResponse(error); } - }); - ); + }); } catch (ApiException ex) { //TODO onError } From 5c9606bc6662f8a2dc186a78e26272a0949f6b59 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Thu, 5 Nov 2015 08:55:35 +0100 Subject: [PATCH 068/623] fix apiInvoker template imports [android-volley] --- .../src/main/resources/android-volley/apiInvoker.mustache | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache index ad546aba86f..87e5e9edfb4 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache @@ -7,7 +7,9 @@ import com.android.volley.Response; import com.android.volley.toolbox.Volley; import com.google.gson.JsonParseException; +import org.apache.http.Consts; import org.apache.http.HttpEntity; +import org.apache.http.entity.ContentType; import org.apache.http.entity.StringEntity; import java.net.URLEncoder; From b290d2d919b621534f0f48f210ab489666a3cc4e Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Thu, 5 Nov 2015 08:56:08 +0100 Subject: [PATCH 069/623] fix responses template [android-volley] --- .../src/main/resources/android-volley/responses.mustache | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/android-volley/responses.mustache b/modules/swagger-codegen/src/main/resources/android-volley/responses.mustache index 7a8cbf7e8d3..bb4d463e2c5 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/responses.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/responses.mustache @@ -8,11 +8,9 @@ public class Responses { {{#model}} public static interface {{classname}}Response { public void onResponse({{classname}} {{classVarName}}); - } } public static interface {{classname}}ListResponse { public void onResponse(List<{{classname}}> {{classVarName}}List); - } } {{/model}} {{/models}} From 93ed2e639dc6059f7a8d0d72292655868c18b4d5 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Thu, 5 Nov 2015 08:56:26 +0100 Subject: [PATCH 070/623] added android-volley to CodegenConfig --- .../resources/META-INF/services/io.swagger.codegen.CodegenConfig | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/swagger-codegen/src/main/resources/META-INF/services/io.swagger.codegen.CodegenConfig b/modules/swagger-codegen/src/main/resources/META-INF/services/io.swagger.codegen.CodegenConfig index 5d8a4f0fc6b..13cf4d7112d 100644 --- a/modules/swagger-codegen/src/main/resources/META-INF/services/io.swagger.codegen.CodegenConfig +++ b/modules/swagger-codegen/src/main/resources/META-INF/services/io.swagger.codegen.CodegenConfig @@ -1,4 +1,5 @@ io.swagger.codegen.languages.AndroidClientCodegen +io.swagger.codegen.languages.AndroidVolleyClientCodegen io.swagger.codegen.languages.AsyncScalaClientCodegen io.swagger.codegen.languages.CSharpClientCodegen io.swagger.codegen.languages.DartClientCodegen From f5aba6d0a54c92282ad82241d1596e1c40ee8b93 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Thu, 5 Nov 2015 22:52:20 +0100 Subject: [PATCH 071/623] removed faulty setuseragent [android-volley] --- .../src/main/resources/android-volley/apiInvoker.mustache | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache index 87e5e9edfb4..ce96d62cf9f 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache @@ -48,9 +48,6 @@ public class ApiInvoker { // Use UTC as the default time zone. DATE_TIME_FORMAT.setTimeZone(TimeZone.getTimeZone("UTC")); DATE_FORMAT.setTimeZone(TimeZone.getTimeZone("UTC")); - - // Set default User-Agent. - setUserAgent("Android-Java-Swagger"); } public static void setUserAgent(String userAgent) { From b55f8802ac5f4444919ec688a2ecd45ef793ee8d Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Sat, 7 Nov 2015 13:17:19 +0100 Subject: [PATCH 072/623] throw volley error on body post null [android-volley] --- .../src/main/resources/android-volley/api.mustache | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache index 96f03dd1828..0feca99aef9 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache @@ -55,7 +55,8 @@ public class {{classname}} { {{#allParams}}{{#required}} // verify the required parameter '{{paramName}}' is set if ({{paramName}} == null) { - throw new ApiException(400, "Missing the required parameter '{{paramName}}' when calling {{nickname}}"); + VolleyError error = new VolleyError("Missing the required parameter '{{paramName}}' when calling {{nickname}}", + new ApiException(400, "Missing the required parameter '{{paramName}}' when calling {{nickname}}")); } {{/required}}{{/allParams}} From cfdf2bc3b8e80d05927b0c18add374177e8b2fd0 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Sat, 7 Nov 2015 13:31:44 +0100 Subject: [PATCH 073/623] fix returnContainer [android-volley] --- .../src/main/resources/android-volley/api.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache index 0feca99aef9..8815150576b 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache @@ -111,7 +111,7 @@ public class {{classname}} { public void onResponse(String response) { try { {{#returnType}} - responseListener.onResponse(({{{returnType}}}) ApiInvoker.deserialize(response, "array", {{returnBaseType}}.class)); + responseListener.onResponse(({{{returnType}}}) ApiInvoker.deserialize(response, "{{returnContainer}}", {{returnBaseType}}.class)); {{/returnType}} {{^returnType}} responseListener.onResponse(response); From 2e4f6dc0a1b96d05379d6371e4bd619c53139b76 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Sun, 8 Nov 2015 09:12:41 +0100 Subject: [PATCH 074/623] Added error listeners in api template [android-volley] --- .../src/main/resources/android-volley/api.mustache | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache index 8815150576b..fe1b0f20c0b 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache @@ -117,9 +117,9 @@ public class {{classname}} { responseListener.onResponse(response); {{/returnType}} } catch (ApiException exception) { - //TODO onError + errorListener.onErrorResponse(new VolleyError(exception)); + } } - } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { @@ -127,7 +127,7 @@ public class {{classname}} { } }); } catch (ApiException ex) { - //TODO onError + errorListener.onErrorResponse(new VolleyError(ex)); } } {{/operation}} From 5cfcb0b60b6e8b4f92d024ca8545ac419df40dfd Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Sun, 8 Nov 2015 09:13:28 +0100 Subject: [PATCH 075/623] fixed response parsing in post request template [android-volley] --- .../main/resources/android-volley/postrequest.mustache | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/resources/android-volley/postrequest.mustache b/modules/swagger-codegen/src/main/resources/android-volley/postrequest.mustache index 7daf8360753..80b2c4e8cdf 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/postrequest.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/postrequest.mustache @@ -49,7 +49,13 @@ public class PostRequest extends Request { @Override protected Response parseNetworkResponse(NetworkResponse response) { - return Response.success("Uploaded", getCacheEntry()); + String parsed; + try { + parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); + } catch (UnsupportedEncodingException e) { + parsed = new String(response.data); + } + return Response.success(parsed, HttpHeaderParser.parseCacheHeaders(response)); } @Override From 89b4d9b4e95cf0c419e64979689bc0fc69ef7fa3 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Wed, 11 Nov 2015 22:46:58 +0100 Subject: [PATCH 076/623] fixed requests packages and imports [android-volley] --- .../src/main/resources/android-volley/getrequest.mustache | 2 +- .../src/main/resources/android-volley/postrequest.mustache | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/android-volley/getrequest.mustache b/modules/swagger-codegen/src/main/resources/android-volley/getrequest.mustache index ec5907e6f5b..63803c3b481 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/getrequest.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/getrequest.mustache @@ -1,4 +1,4 @@ -package {{invokerPackage}}; +package {{invokerPackage}}.request; import com.android.volley.AuthFailureError; import com.android.volley.Response; diff --git a/modules/swagger-codegen/src/main/resources/android-volley/postrequest.mustache b/modules/swagger-codegen/src/main/resources/android-volley/postrequest.mustache index 80b2c4e8cdf..2c61a0fa3d4 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/postrequest.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/postrequest.mustache @@ -1,10 +1,11 @@ -package {{invokerPackage}}; +package {{invokerPackage}}.request; import com.android.volley.AuthFailureError; import com.android.volley.NetworkResponse; import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.VolleyLog; +import com.android.volley.toolbox.HttpHeaderParser; import org.apache.http.HttpEntity; From e054c3cfc01d3939e6dd41b92e284efd8370f9d2 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Thu, 12 Nov 2015 08:00:23 +0100 Subject: [PATCH 077/623] Moved request templates [android-volley] --- .../swagger/codegen/languages/AndroidVolleyClientCodegen.java | 4 ++-- .../android-volley/{ => request}/getrequest.mustache | 0 .../android-volley/{ => request}/postrequest.mustache | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename modules/swagger-codegen/src/main/resources/android-volley/{ => request}/getrequest.mustache (100%) rename modules/swagger-codegen/src/main/resources/android-volley/{ => request}/postrequest.mustache (100%) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java index 0241c5f31ef..27b730aed77 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java @@ -247,9 +247,9 @@ public class AndroidVolleyClientCodegen extends DefaultCodegen implements Codege (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "ApiException.java")); supportingFiles.add(new SupportingFile("Pair.mustache", (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "Pair.java")); - supportingFiles.add(new SupportingFile("getrequest.mustache", + supportingFiles.add(new SupportingFile("request/getrequest.mustache", (sourceFolder + File.separator + requestPackage).replace(".", java.io.File.separator), "GetRequest.java")); - supportingFiles.add(new SupportingFile("postrequest.mustache", + supportingFiles.add(new SupportingFile("request/postrequest.mustache", (sourceFolder + File.separator + requestPackage).replace(".", java.io.File.separator), "PostRequest.java")); } diff --git a/modules/swagger-codegen/src/main/resources/android-volley/getrequest.mustache b/modules/swagger-codegen/src/main/resources/android-volley/request/getrequest.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/android-volley/getrequest.mustache rename to modules/swagger-codegen/src/main/resources/android-volley/request/getrequest.mustache diff --git a/modules/swagger-codegen/src/main/resources/android-volley/postrequest.mustache b/modules/swagger-codegen/src/main/resources/android-volley/request/postrequest.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/android-volley/postrequest.mustache rename to modules/swagger-codegen/src/main/resources/android-volley/request/postrequest.mustache From 2af665a8e3ead9591fcb734f9af598da6d670678 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Fri, 13 Nov 2015 08:09:44 +0100 Subject: [PATCH 078/623] Added ApiKeyAuth implementation [android-volley] --- .../languages/AndroidVolleyClientCodegen.java | 5 ++ .../Java/auth/Authentication.mustache | 1 - .../resources/android-volley/api.mustache | 7 +- .../android-volley/apiInvoker.mustache | 81 ++++++++++++++++++- .../android-volley/auth/apikeyauth.mustache | 58 +++++++++++++ .../auth/authentication.mustache | 11 +++ 6 files changed, 157 insertions(+), 6 deletions(-) create mode 100644 modules/swagger-codegen/src/main/resources/android-volley/auth/apikeyauth.mustache create mode 100644 modules/swagger-codegen/src/main/resources/android-volley/auth/authentication.mustache diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java index 27b730aed77..5b20019aa79 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java @@ -26,6 +26,7 @@ public class AndroidVolleyClientCodegen extends DefaultCodegen implements Codege protected String sourceFolder = projectFolder + "/java"; protected Boolean useAndroidMavenGradlePlugin = true; protected String requestPackage = "io.swagger.client.request"; + protected String authPackage = "io.swagger.client.auth"; public AndroidVolleyClientCodegen() { super(); @@ -251,6 +252,10 @@ public class AndroidVolleyClientCodegen extends DefaultCodegen implements Codege (sourceFolder + File.separator + requestPackage).replace(".", java.io.File.separator), "GetRequest.java")); supportingFiles.add(new SupportingFile("request/postrequest.mustache", (sourceFolder + File.separator + requestPackage).replace(".", java.io.File.separator), "PostRequest.java")); + supportingFiles.add(new SupportingFile("auth/apikeyauth.mustache", + (sourceFolder + File.separator + authPackage).replace(".", java.io.File.separator), "ApiKeyAuth.java")); + supportingFiles.add(new SupportingFile("auth/authentication.mustache", + (sourceFolder + File.separator + authPackage).replace(".", java.io.File.separator), "Authentication.java")); } public Boolean getUseAndroidMavenGradlePlugin() { diff --git a/modules/swagger-codegen/src/main/resources/Java/auth/Authentication.mustache b/modules/swagger-codegen/src/main/resources/Java/auth/Authentication.mustache index 037ef58ab90..265c74cb76f 100644 --- a/modules/swagger-codegen/src/main/resources/Java/auth/Authentication.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/auth/Authentication.mustache @@ -5,7 +5,6 @@ import {{invokerPackage}}.Pair; import java.util.Map; import java.util.List; -{{>generatedAnnotation}} public interface Authentication { /** Apply authentication settings to header and query params. */ void applyToParams(List queryParams, Map headerParams); diff --git a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache index fe1b0f20c0b..b7bb96df0b1 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache @@ -52,7 +52,8 @@ public class {{classname}} { */ public void {{nickname}} ({{#allParams}}{{{dataType}}} {{paramName}}{{#hasMore}}, {{/hasMore}},{{/allParams}} final {{#returnBaseType}}Responses.{{returnBaseType}}{{#isListContainer}}List{{/isListContainer}}Response{{/returnBaseType}}{{^returnBaseType}}Response.Listener{{/returnBaseType}} responseListener, final Response.ErrorListener errorListener) { Object postBody = {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}}; - {{#allParams}}{{#required}} + + {{#allParams}}{{#required}} // verify the required parameter '{{paramName}}' is set if ({{paramName}} == null) { VolleyError error = new VolleyError("Missing the required parameter '{{paramName}}' when calling {{nickname}}", @@ -104,8 +105,10 @@ public class {{classname}} { {{/formParams}} } + String[] authNames = new String[] { {{#authMethods}}"{{name}}"{{#hasMore}}, {{/hasMore}}{{/authMethods}} }; + try { - apiInvoker.invokeAPI(basePath, path, "{{httpMethod}}", queryParams, postBody, headerParams, formParams, contentType, + apiInvoker.invokeAPI(basePath, path, "{{httpMethod}}", queryParams, postBody, headerParams, formParams, contentType, authNames, new Response.Listener() { @Override public void onResponse(String response) { diff --git a/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache index ce96d62cf9f..73cf7fbf412 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache @@ -22,12 +22,17 @@ import java.util.List; import java.util.Map; import java.util.TimeZone; +import {{invokerPackage}}.auth.Authentication; +import {{invokerPackage}}.auth.ApiKeyAuth; + public class ApiInvoker { private static ApiInvoker INSTANCE; private Map defaultHeaderMap = new HashMap(); - Context context; - RequestQueue mRequestQueue; + private Context context; + private RequestQueue mRequestQueue; + + private Map authentications; /** Content type "text/plain" with UTF-8 encoding. */ public static final ContentType TEXT_PLAIN_UTF8 = ContentType.create("text/plain", Consts.UTF_8); @@ -156,6 +161,16 @@ public class ApiInvoker { public static void initializeInstance(Context context) { INSTANCE = new ApiInvoker(context); setUserAgent("Android-Volley-Swagger"); + + // Setup authentications (key: authentication name, value: authentication). + INSTANCE.authentications = new HashMap(); + {{#authMethods}} + {{#isApiKey}} + INSTANCE.authentications.put("{{name}}", new ApiKeyAuth({{#isKeyInHeader}}"header"{{/isKeyInHeader}}{{^isKeyInHeader}}"query"{{/isKeyInHeader}}, "{{keyParamName}}")); + {{/isApiKey}} + {{/authMethods}} + // Prevent the authentications from being modified. + INSTANCE.authentications = Collections.unmodifiableMap(INSTANCE.authentications); } private ApiInvoker(Context context) { this.context = context; @@ -210,9 +225,69 @@ public class ApiInvoker { } } - public void invokeAPI(String host, String path, String method, List queryParams, Object body, Map headerParams, Map formParams, String contentType, Response.Listener stringRequest, Response.ErrorListener errorListener) throws ApiException { + /** + * Get authentications (key: authentication name, value: authentication). + */ + public Map getAuthentications() { + return authentications; + } + + /** + * Get authentication for the given name. + * + * @param authName The authentication name + * @return The authentication, null if not found + */ + public Authentication getAuthentication(String authName) { + return authentications.get(authName); + } + + + /** + * Helper method to set API key value for the first API key authentication. + */ + public void setApiKey(String apiKey) { + for (Authentication auth : authentications.values()) { + if (auth instanceof ApiKeyAuth) { + ((ApiKeyAuth) auth).setApiKey(apiKey); + return; + } + } + throw new RuntimeException("No API key authentication configured!"); + } + + /** + * Helper method to set API key prefix for the first API key authentication. + */ + public void setApiKeyPrefix(String apiKeyPrefix) { + for (Authentication auth : authentications.values()) { + if (auth instanceof ApiKeyAuth) { + ((ApiKeyAuth) auth).setApiKeyPrefix(apiKeyPrefix); + return; + } + } + throw new RuntimeException("No API key authentication configured!"); + } + + /** + * Update query and header parameters based on authentication settings. + * + * @param authNames The authentications to apply + */ + private void updateParamsForAuth(String[] authNames, List queryParams, Map headerParams) { + for (String authName : authNames) { + Authentication auth = authentications.get(authName); + if (auth == null) throw new RuntimeException("Authentication undefined: " + authName); + auth.applyToParams(queryParams, headerParams); + } + } + + public void invokeAPI(String host, String path, String method, List queryParams, Object body, Map headerParams, Map formParams, String contentType, String[] authNames, Response.Listener stringRequest, Response.ErrorListener errorListener) throws ApiException { StringBuilder b = new StringBuilder(); b.append("?"); + + updateParamsForAuth(authNames, queryParams, headerParams); + if (queryParams != null){ for (Pair queryParam : queryParams){ if (!queryParam.getName().isEmpty()) { diff --git a/modules/swagger-codegen/src/main/resources/android-volley/auth/apikeyauth.mustache b/modules/swagger-codegen/src/main/resources/android-volley/auth/apikeyauth.mustache new file mode 100644 index 00000000000..a1824b551ca --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/android-volley/auth/apikeyauth.mustache @@ -0,0 +1,58 @@ +package {{invokerPackage}}.auth; + +import {{invokerPackage}}.Pair; + +import java.util.Map; +import java.util.List; + +public class ApiKeyAuth implements Authentication { + private final String location; + private final String paramName; + + private String apiKey; + private String apiKeyPrefix; + + public ApiKeyAuth(String location, String paramName) { + this.location = location; + this.paramName = paramName; + } + + public String getLocation() { + return location; + } + + public String getParamName() { + return paramName; + } + + public String getApiKey() { + return apiKey; + } + + public void setApiKey(String apiKey) { + this.apiKey = apiKey; + } + + public String getApiKeyPrefix() { + return apiKeyPrefix; + } + + public void setApiKeyPrefix(String apiKeyPrefix) { + this.apiKeyPrefix = apiKeyPrefix; + } + + @Override + public void applyToParams(List queryParams, Map headerParams) { + String value; + if (apiKeyPrefix != null) { + value = apiKeyPrefix + " " + apiKey; + } else { + value = apiKey; + } + if (location == "query") { + queryParams.add(new Pair(paramName, value)); + } else if (location == "header") { + headerParams.put(paramName, value); + } + } +} diff --git a/modules/swagger-codegen/src/main/resources/android-volley/auth/authentication.mustache b/modules/swagger-codegen/src/main/resources/android-volley/auth/authentication.mustache new file mode 100644 index 00000000000..265c74cb76f --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/android-volley/auth/authentication.mustache @@ -0,0 +1,11 @@ +package {{invokerPackage}}.auth; + +import {{invokerPackage}}.Pair; + +import java.util.Map; +import java.util.List; + +public interface Authentication { + /** Apply authentication settings to header and query params. */ + void applyToParams(List queryParams, Map headerParams); +} From 3c275f1831e6453b4f0f64ff5e54ed537789ff8c Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Thu, 26 Nov 2015 14:52:26 +0100 Subject: [PATCH 079/623] try catch when string response removed --- .../src/main/resources/android-volley/api.mustache | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache index b7bb96df0b1..20adddf2bbc 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache @@ -112,16 +112,18 @@ public class {{classname}} { new Response.Listener() { @Override public void onResponse(String response) { + {{#returnType}} try { - {{#returnType}} responseListener.onResponse(({{{returnType}}}) ApiInvoker.deserialize(response, "{{returnContainer}}", {{returnBaseType}}.class)); {{/returnType}} {{^returnType}} responseListener.onResponse(response); {{/returnType}} + {{#returnType}} } catch (ApiException exception) { errorListener.onErrorResponse(new VolleyError(exception)); } + {{/returnType}} } }, new Response.ErrorListener() { @Override From c30720289b3c9f3b0cc5283859704380b30e6784 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Tue, 1 Dec 2015 07:52:59 +0100 Subject: [PATCH 080/623] Import corrections [android-volley] --- .../src/main/resources/android-volley/apiInvoker.mustache | 3 +++ .../main/resources/android-volley/request/postrequest.mustache | 1 + 2 files changed, 4 insertions(+) diff --git a/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache index 73cf7fbf412..164bc8fc0e9 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache @@ -16,6 +16,7 @@ import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -24,6 +25,8 @@ import java.util.TimeZone; import {{invokerPackage}}.auth.Authentication; import {{invokerPackage}}.auth.ApiKeyAuth; +import {{invokerPackage}}.request.GetRequest; +import {{invokerPackage}}.request.PostRequest; public class ApiInvoker { private static ApiInvoker INSTANCE; diff --git a/modules/swagger-codegen/src/main/resources/android-volley/request/postrequest.mustache b/modules/swagger-codegen/src/main/resources/android-volley/request/postrequest.mustache index 2c61a0fa3d4..f11fddd25ef 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/request/postrequest.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/request/postrequest.mustache @@ -11,6 +11,7 @@ import org.apache.http.HttpEntity; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.util.Collections; import java.util.HashMap; import java.util.Map; From 9b2a04c787a82f4bcc7fb55da8064fb600b7305f Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Tue, 1 Dec 2015 22:26:18 +0100 Subject: [PATCH 081/623] Added Android-Volley to readme and pom --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3f1691144b9..10bd3e464c6 100644 --- a/README.md +++ b/README.md @@ -288,6 +288,7 @@ $ ls -1 modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ AbstractTypeScriptClientCodegen.java AkkaScalaClientCodegen.java AndroidClientCodegen.java +AndroidVolleyClientCodegen.java AsyncScalaClientCodegen.java CSharpClientCodegen.java ClojureClientCodegen.java From b28e0893f101953eaaae5609539c94d926714a21 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Thu, 10 Dec 2015 08:23:13 +0100 Subject: [PATCH 082/623] Added PUT request [android-volley] --- .../languages/AndroidVolleyClientCodegen.java | 2 + .../resources/android-volley/api.mustache | 2 +- .../android-volley/apiInvoker.mustache | 12 ++- .../android-volley/request/put.mustache | 86 +++++++++++++++++++ 4 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 modules/swagger-codegen/src/main/resources/android-volley/request/put.mustache diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java index 5b20019aa79..c0a1eec511e 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java @@ -252,6 +252,8 @@ public class AndroidVolleyClientCodegen extends DefaultCodegen implements Codege (sourceFolder + File.separator + requestPackage).replace(".", java.io.File.separator), "GetRequest.java")); supportingFiles.add(new SupportingFile("request/postrequest.mustache", (sourceFolder + File.separator + requestPackage).replace(".", java.io.File.separator), "PostRequest.java")); + supportingFiles.add(new SupportingFile("request/putrequest.mustache", + (sourceFolder + File.separator + requestPackage).replace(".", java.io.File.separator), "PutRequest.java")); supportingFiles.add(new SupportingFile("auth/apikeyauth.mustache", (sourceFolder + File.separator + authPackage).replace(".", java.io.File.separator), "ApiKeyAuth.java")); supportingFiles.add(new SupportingFile("auth/authentication.mustache", diff --git a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache index 20adddf2bbc..aaec4e235d2 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache @@ -25,7 +25,7 @@ import java.io.File; {{#operations}} public class {{classname}} { String basePath = "{{basePath}}"; - ApiInvoker apiInvoker = ApiInvoker.getInstance(); + ApiInvoker apiInvoker = ApiInvoker.getFInstance(); public void addHeader(String key, String value) { getInvoker().addDefaultHeader(key, value); diff --git a/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache index 164bc8fc0e9..ac70a1293fe 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache @@ -361,7 +361,17 @@ public class ApiInvoker { if(request != null) mRequestQueue.add(request); } else if ("PUT".equals(method)) { - + PutRequest request = null; + if (formParamStr != null) { + request = new PutRequest(url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener); + } else if (body != null) { + if (body instanceof HttpEntity) { + request = new PutRequest(url, headers, null, (HttpEntity) body, stringRequest, errorListener); + } else { + request = new PutRequest(url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener); + } + } + if(request != null) mRequestQueue.add(request); } else if ("DELETE".equals(method)) { diff --git a/modules/swagger-codegen/src/main/resources/android-volley/request/put.mustache b/modules/swagger-codegen/src/main/resources/android-volley/request/put.mustache new file mode 100644 index 00000000000..9e54c7cfe9a --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/android-volley/request/put.mustache @@ -0,0 +1,86 @@ +package {{invokerPackage}}.request; + +import com.android.volley.AuthFailureError; +import com.android.volley.NetworkResponse; +import com.android.volley.Request; +import com.android.volley.Response; +import com.android.volley.VolleyLog; +import com.android.volley.toolbox.HttpHeaderParser; + +import org.apache.http.HttpEntity; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +public class PutRequest extends Request { + + HttpEntity entity; + + private final Response.Listener mListener; + + String contentType; + Map apiHeaders; + public PutRequest(String url, Map apiHeaders, String contentType, HttpEntity entity, Response.Listener listener, Response.ErrorListener errorListener) { + super(Method.PUT, url, errorListener); + mListener = listener; + this.entity = entity; + this.contentType = contentType; + this.apiHeaders = apiHeaders; + } + + @Override + public String getBodyContentType() { + return entity.getContentType().getValue(); + } + + @Override + public byte[] getBody() throws AuthFailureError { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + try { + entity.writeTo(bos); + } + catch (IOException e) { + VolleyLog.e("IOException writing to ByteArrayOutputStream"); + } + return bos.toByteArray(); + } + + @Override + protected Response parseNetworkResponse(NetworkResponse response) { + String parsed; + try { + parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); + } catch (UnsupportedEncodingException e) { + parsed = new String(response.data); + } + return Response.success(parsed, HttpHeaderParser.parseCacheHeaders(response)); + } + + @Override + protected void deliverResponse(String response) { + mListener.onResponse(response); + } + + /* (non-Javadoc) + * @see com.android.volley.Request#getHeaders() + */ + @Override + public Map getHeaders() throws AuthFailureError { + Map headers = super.getHeaders(); + if (headers == null || headers.equals(Collections.emptyMap())) { + headers = new HashMap(); + } + if (apiHeaders != null && !apiHeaders.equals(Collections.emptyMap())) { + headers.putAll(apiHeaders); + } + if(contentType != null) { + headers.put("Content-Type", contentType); + } + + return headers; + } +} \ No newline at end of file From a68ecf78095a1dec54c80c2e40d9ef9bde15b769 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Thu, 10 Dec 2015 08:26:46 +0100 Subject: [PATCH 083/623] Added [android-volley] petstore.sh --- bin/android-volley-petstore.sh | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 bin/android-volley-petstore.sh diff --git a/bin/android-volley-petstore.sh b/bin/android-volley-petstore.sh new file mode 100644 index 00000000000..e1def487022 --- /dev/null +++ b/bin/android-volley-petstore.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +SCRIPT="$0" + +while [ -h "$SCRIPT" ] ; do + ls=`ls -ld "$SCRIPT"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + SCRIPT="$link" + else + SCRIPT=`dirname "$SCRIPT"`/"$link" + fi +done + +if [ ! -d "${APP_DIR}" ]; then + APP_DIR=`dirname "$SCRIPT"`/.. + APP_DIR=`cd "${APP_DIR}"; pwd` +fi + +executable="../modules/swagger-codegen-cli/target/swagger-codegen-cli.jar" + +if [ ! -f "$executable" ] +then + mvn clean package +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/android-java -i ../modules/swagger-codegen/src/test/resources/2_0/petstore.json -l android -o samples/client/petstore/android-java" + +java $JAVA_OPTS -jar $executable $ags + +ping 127.0.0.1 -n 10 > nul \ No newline at end of file From cb9e4bf96175d0f314bc1b235c281a8c8ce3f375 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Tue, 15 Dec 2015 08:29:21 +0100 Subject: [PATCH 084/623] Added DELETE request [android-volley] --- .../languages/AndroidVolleyClientCodegen.java | 2 + .../android-volley/apiInvoker.mustache | 14 ++- .../android-volley/request/delete.mustache | 86 +++++++++++++++++++ 3 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 modules/swagger-codegen/src/main/resources/android-volley/request/delete.mustache diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java index c0a1eec511e..347de743231 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java @@ -254,6 +254,8 @@ public class AndroidVolleyClientCodegen extends DefaultCodegen implements Codege (sourceFolder + File.separator + requestPackage).replace(".", java.io.File.separator), "PostRequest.java")); supportingFiles.add(new SupportingFile("request/putrequest.mustache", (sourceFolder + File.separator + requestPackage).replace(".", java.io.File.separator), "PutRequest.java")); + supportingFiles.add(new SupportingFile("request/deleterequest.mustache", + (sourceFolder + File.separator + requestPackage).replace(".", java.io.File.separator), "DeleteRequest.java")); supportingFiles.add(new SupportingFile("auth/apikeyauth.mustache", (sourceFolder + File.separator + authPackage).replace(".", java.io.File.separator), "ApiKeyAuth.java")); supportingFiles.add(new SupportingFile("auth/authentication.mustache", diff --git a/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache index ac70a1293fe..a5fb652007f 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache @@ -27,6 +27,8 @@ import {{invokerPackage}}.auth.Authentication; import {{invokerPackage}}.auth.ApiKeyAuth; import {{invokerPackage}}.request.GetRequest; import {{invokerPackage}}.request.PostRequest; +import {{invokerPackage}}.request.PutRequest; +import {{invokerPackage}}.request.DeleteRequest; public class ApiInvoker { private static ApiInvoker INSTANCE; @@ -374,7 +376,17 @@ public class ApiInvoker { if(request != null) mRequestQueue.add(request); } else if ("DELETE".equals(method)) { - + DeleteRequest request = null; + if (formParamStr != null) { + request = new PutRequest(url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener); + } else if (body != null) { + if (body instanceof HttpEntity) { + request = new PutRequest(url, headers, null, (HttpEntity) body, stringRequest, errorListener); + } else { + request = new PutRequest(url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener); + } + } + if(request != null) mRequestQueue.add(request); } else if ("PATCH".equals(method)) { diff --git a/modules/swagger-codegen/src/main/resources/android-volley/request/delete.mustache b/modules/swagger-codegen/src/main/resources/android-volley/request/delete.mustache new file mode 100644 index 00000000000..0df3f6e4ac4 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/android-volley/request/delete.mustache @@ -0,0 +1,86 @@ +package {{invokerPackage}}.request; + +import com.android.volley.AuthFailureError; +import com.android.volley.NetworkResponse; +import com.android.volley.Request; +import com.android.volley.Response; +import com.android.volley.VolleyLog; +import com.android.volley.toolbox.HttpHeaderParser; + +import org.apache.http.HttpEntity; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +public class DeleteRequest extends Request { + + HttpEntity entity; + + private final Response.Listener mListener; + + String contentType; + Map apiHeaders; + public DeleteRequest(String url, Map apiHeaders, String contentType, HttpEntity entity, Response.Listener listener, Response.ErrorListener errorListener) { + super(Method.DELETE, url, errorListener); + mListener = listener; + this.entity = entity; + this.contentType = contentType; + this.apiHeaders = apiHeaders; + } + + @Override + public String getBodyContentType() { + return entity.getContentType().getValue(); + } + + @Override + public byte[] getBody() throws AuthFailureError { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + try { + entity.writeTo(bos); + } + catch (IOException e) { + VolleyLog.e("IOException writing to ByteArrayOutputStream"); + } + return bos.toByteArray(); + } + + @Override + protected Response parseNetworkResponse(NetworkResponse response) { + String parsed; + try { + parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); + } catch (UnsupportedEncodingException e) { + parsed = new String(response.data); + } + return Response.success(parsed, HttpHeaderParser.parseCacheHeaders(response)); + } + + @Override + protected void deliverResponse(String response) { + mListener.onResponse(response); + } + + /* (non-Javadoc) + * @see com.android.volley.Request#getHeaders() + */ + @Override + public Map getHeaders() throws AuthFailureError { + Map headers = super.getHeaders(); + if (headers == null || headers.equals(Collections.emptyMap())) { + headers = new HashMap(); + } + if (apiHeaders != null && !apiHeaders.equals(Collections.emptyMap())) { + headers.putAll(apiHeaders); + } + if(contentType != null) { + headers.put("Content-Type", contentType); + } + + return headers; + } +} \ No newline at end of file From a897a2f28bec9b08d4a70290487186bb77b359bf Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Wed, 16 Dec 2015 14:53:04 +0100 Subject: [PATCH 085/623] Added PATCH request [android-volley] --- .../android-volley/apiInvoker.mustache | 21 +++-- .../android-volley/request/patch.mustache | 86 +++++++++++++++++++ 2 files changed, 102 insertions(+), 5 deletions(-) create mode 100644 modules/swagger-codegen/src/main/resources/android-volley/request/patch.mustache diff --git a/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache index a5fb652007f..f5b3a763d58 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache @@ -29,6 +29,7 @@ import {{invokerPackage}}.request.GetRequest; import {{invokerPackage}}.request.PostRequest; import {{invokerPackage}}.request.PutRequest; import {{invokerPackage}}.request.DeleteRequest; +import {{invokerPackage}}.request.PatchRequest; public class ApiInvoker { private static ApiInvoker INSTANCE; @@ -378,19 +379,29 @@ public class ApiInvoker { else if ("DELETE".equals(method)) { DeleteRequest request = null; if (formParamStr != null) { - request = new PutRequest(url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener); + request = new DeleteRequest(url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener); } else if (body != null) { if (body instanceof HttpEntity) { - request = new PutRequest(url, headers, null, (HttpEntity) body, stringRequest, errorListener); + request = new DeleteRequest(url, headers, null, (HttpEntity) body, stringRequest, errorListener); } else { - request = new PutRequest(url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener); + request = new DeleteRequest(url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener); } } if(request != null) mRequestQueue.add(request); } else if ("PATCH".equals(method)) { - - } + PatchRequest request = null; + if (formParamStr != null) { + request = new PatchRequest(url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener); + } else if (body != null) { + if (body instanceof HttpEntity) { + request = new PatchRequest(url, headers, null, (HttpEntity) body, stringRequest, errorListener); + } else { + request = new PatchRequest(url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener); + } + } + if(request != null) mRequestQueue.add(request); + } } private void initConnectionManager() { diff --git a/modules/swagger-codegen/src/main/resources/android-volley/request/patch.mustache b/modules/swagger-codegen/src/main/resources/android-volley/request/patch.mustache new file mode 100644 index 00000000000..87270b48ebf --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/android-volley/request/patch.mustache @@ -0,0 +1,86 @@ +package {{invokerPackage}}.request; + +import com.android.volley.AuthFailureError; +import com.android.volley.NetworkResponse; +import com.android.volley.Request; +import com.android.volley.Response; +import com.android.volley.VolleyLog; +import com.android.volley.toolbox.HttpHeaderParser; + +import org.apache.http.HttpEntity; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +public class PatchRequest extends Request { + + HttpEntity entity; + + private final Response.Listener mListener; + + String contentType; + Map apiHeaders; + public PatchRequest(String url, Map apiHeaders, String contentType, HttpEntity entity, Response.Listener listener, Response.ErrorListener errorListener) { + super(Method.PATCH, url, errorListener); + mListener = listener; + this.entity = entity; + this.contentType = contentType; + this.apiHeaders = apiHeaders; + } + + @Override + public String getBodyContentType() { + return entity.getContentType().getValue(); + } + + @Override + public byte[] getBody() throws AuthFailureError { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + try { + entity.writeTo(bos); + } + catch (IOException e) { + VolleyLog.e("IOException writing to ByteArrayOutputStream"); + } + return bos.toByteArray(); + } + + @Override + protected Response parseNetworkResponse(NetworkResponse response) { + String parsed; + try { + parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); + } catch (UnsupportedEncodingException e) { + parsed = new String(response.data); + } + return Response.success(parsed, HttpHeaderParser.parseCacheHeaders(response)); + } + + @Override + protected void deliverResponse(String response) { + mListener.onResponse(response); + } + + /* (non-Javadoc) + * @see com.android.volley.Request#getHeaders() + */ + @Override + public Map getHeaders() throws AuthFailureError { + Map headers = super.getHeaders(); + if (headers == null || headers.equals(Collections.emptyMap())) { + headers = new HashMap(); + } + if (apiHeaders != null && !apiHeaders.equals(Collections.emptyMap())) { + headers.putAll(apiHeaders); + } + if(contentType != null) { + headers.put("Content-Type", contentType); + } + + return headers; + } +} \ No newline at end of file From b91e5c95d56a7e977cb5530c42b12d5612777e23 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Sun, 20 Dec 2015 16:38:39 +0100 Subject: [PATCH 086/623] Rename request templates and fixed patch request [android-volley] --- .../swagger/codegen/languages/AndroidVolleyClientCodegen.java | 2 ++ .../request/{delete.mustache => deleterequest.mustache} | 0 .../request/{patch.mustache => patchrequest.mustache} | 0 .../request/{put.mustache => putrequest.mustache} | 0 4 files changed, 2 insertions(+) rename modules/swagger-codegen/src/main/resources/android-volley/request/{delete.mustache => deleterequest.mustache} (100%) rename modules/swagger-codegen/src/main/resources/android-volley/request/{patch.mustache => patchrequest.mustache} (100%) rename modules/swagger-codegen/src/main/resources/android-volley/request/{put.mustache => putrequest.mustache} (100%) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java index 347de743231..91bf395369d 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java @@ -256,6 +256,8 @@ public class AndroidVolleyClientCodegen extends DefaultCodegen implements Codege (sourceFolder + File.separator + requestPackage).replace(".", java.io.File.separator), "PutRequest.java")); supportingFiles.add(new SupportingFile("request/deleterequest.mustache", (sourceFolder + File.separator + requestPackage).replace(".", java.io.File.separator), "DeleteRequest.java")); + supportingFiles.add(new SupportingFile("request/patchrequest.mustache", + (sourceFolder + File.separator + requestPackage).replace(".", java.io.File.separator), "PatchRequest.java")); supportingFiles.add(new SupportingFile("auth/apikeyauth.mustache", (sourceFolder + File.separator + authPackage).replace(".", java.io.File.separator), "ApiKeyAuth.java")); supportingFiles.add(new SupportingFile("auth/authentication.mustache", diff --git a/modules/swagger-codegen/src/main/resources/android-volley/request/delete.mustache b/modules/swagger-codegen/src/main/resources/android-volley/request/deleterequest.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/android-volley/request/delete.mustache rename to modules/swagger-codegen/src/main/resources/android-volley/request/deleterequest.mustache diff --git a/modules/swagger-codegen/src/main/resources/android-volley/request/patch.mustache b/modules/swagger-codegen/src/main/resources/android-volley/request/patchrequest.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/android-volley/request/patch.mustache rename to modules/swagger-codegen/src/main/resources/android-volley/request/patchrequest.mustache diff --git a/modules/swagger-codegen/src/main/resources/android-volley/request/put.mustache b/modules/swagger-codegen/src/main/resources/android-volley/request/putrequest.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/android-volley/request/put.mustache rename to modules/swagger-codegen/src/main/resources/android-volley/request/putrequest.mustache From e9990d610f6c497abae9f4e0ba7821c3013f0596 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Mon, 21 Dec 2015 08:51:22 +0100 Subject: [PATCH 087/623] Fix API template [android-volley] --- .../src/main/resources/android-volley/api.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache index aaec4e235d2..20adddf2bbc 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache @@ -25,7 +25,7 @@ import java.io.File; {{#operations}} public class {{classname}} { String basePath = "{{basePath}}"; - ApiInvoker apiInvoker = ApiInvoker.getFInstance(); + ApiInvoker apiInvoker = ApiInvoker.getInstance(); public void addHeader(String key, String value) { getInvoker().addDefaultHeader(key, value); From ea1cbdaf8fec1f410d9b1e4397999ed765a756bf Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Tue, 22 Dec 2015 03:06:53 +0100 Subject: [PATCH 088/623] Fix API template [android-volley] --- .../src/main/resources/android-volley/api.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache index 20adddf2bbc..c1fbacf7e23 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache @@ -50,7 +50,7 @@ public class {{classname}} { {{#allParams}} * @param {{paramName}} {{description}} {{/allParams}} * @return {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}} */ - public void {{nickname}} ({{#allParams}}{{{dataType}}} {{paramName}}{{#hasMore}}, {{/hasMore}},{{/allParams}} final {{#returnBaseType}}Responses.{{returnBaseType}}{{#isListContainer}}List{{/isListContainer}}Response{{/returnBaseType}}{{^returnBaseType}}Response.Listener{{/returnBaseType}} responseListener, final Response.ErrorListener errorListener) { + public void {{nickname}} ({{#allParams}}{{{dataType}}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{^hasMore}}, {{/hasMore}}{{/allParams}}final {{#returnBaseType}}Responses.{{returnBaseType}}{{#isListContainer}}List{{/isListContainer}}Response{{/returnBaseType}}{{^returnBaseType}}Response.Listener{{/returnBaseType}} responseListener, final Response.ErrorListener errorListener) { Object postBody = {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}}; {{#allParams}}{{#required}} From 602abdd242f55222808d4e8507acb6bd126b8ed2 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Tue, 22 Dec 2015 19:36:56 +0100 Subject: [PATCH 089/623] Added http basic authentication method [android-volley] --- .../languages/AndroidVolleyClientCodegen.java | 2 ++ .../android-volley/apiInvoker.mustache | 29 +++++++++++++++ .../auth/httpbasicauth.mustache | 35 +++++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 modules/swagger-codegen/src/main/resources/android-volley/auth/httpbasicauth.mustache diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java index 91bf395369d..e595fb6a223 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java @@ -260,6 +260,8 @@ public class AndroidVolleyClientCodegen extends DefaultCodegen implements Codege (sourceFolder + File.separator + requestPackage).replace(".", java.io.File.separator), "PatchRequest.java")); supportingFiles.add(new SupportingFile("auth/apikeyauth.mustache", (sourceFolder + File.separator + authPackage).replace(".", java.io.File.separator), "ApiKeyAuth.java")); + supportingFiles.add(new SupportingFile("auth/httpbasicauth.mustache", + (sourceFolder + File.separator + authPackage).replace(".", java.io.File.separator), "HttpBasicAuth.java")); supportingFiles.add(new SupportingFile("auth/authentication.mustache", (sourceFolder + File.separator + authPackage).replace(".", java.io.File.separator), "Authentication.java")); } diff --git a/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache index f5b3a763d58..04e6fdbc05c 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache @@ -25,6 +25,7 @@ import java.util.TimeZone; import {{invokerPackage}}.auth.Authentication; import {{invokerPackage}}.auth.ApiKeyAuth; +import {{invokerPackage}}.auth.HttpBasicAuth; import {{invokerPackage}}.request.GetRequest; import {{invokerPackage}}.request.PostRequest; import {{invokerPackage}}.request.PutRequest; @@ -174,6 +175,9 @@ public class ApiInvoker { {{#isApiKey}} INSTANCE.authentications.put("{{name}}", new ApiKeyAuth({{#isKeyInHeader}}"header"{{/isKeyInHeader}}{{^isKeyInHeader}}"query"{{/isKeyInHeader}}, "{{keyParamName}}")); {{/isApiKey}} + {{#isBasic}} + INSTANCE.authentications.put("{{name}}", new HttpBasicAuth()); + {{/isBasic}} {{/authMethods}} // Prevent the authentications from being modified. INSTANCE.authentications = Collections.unmodifiableMap(INSTANCE.authentications); @@ -248,6 +252,31 @@ public class ApiInvoker { return authentications.get(authName); } + /** + * Helper method to set username for the first HTTP basic authentication. + */ + public void setUsername(String username) { + for (Authentication auth : authentications.values()) { + if (auth instanceof HttpBasicAuth) { + ((HttpBasicAuth) auth).setUsername(username); + return; + } + } + throw new RuntimeException("No HTTP basic authentication configured!"); + } + + /** + * Helper method to set password for the first HTTP basic authentication. + */ + public void setPassword(String password) { + for (Authentication auth : authentications.values()) { + if (auth instanceof HttpBasicAuth) { + ((HttpBasicAuth) auth).setPassword(password); + return; + } + } + throw new RuntimeException("No HTTP basic authentication configured!"); + } /** * Helper method to set API key value for the first API key authentication. diff --git a/modules/swagger-codegen/src/main/resources/android-volley/auth/httpbasicauth.mustache b/modules/swagger-codegen/src/main/resources/android-volley/auth/httpbasicauth.mustache new file mode 100644 index 00000000000..64fc61f95c1 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/android-volley/auth/httpbasicauth.mustache @@ -0,0 +1,35 @@ +package {{invokerPackage}}.auth; + +import {{invokerPackage}}.Pair; + +import android.util.Base64; + +import java.util.Map; +import java.util.List; + +public class HttpBasicAuth implements Authentication { + private String username; + private String password; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + @Override + public void applyToParams(List queryParams, Map headerParams) { + String str = (username == null ? "" : username) + ":" + (password == null ? "" : password); + headerParams.put("Authorization", "Basic " + Base64.encodeToString(str.getBytes(), Base64.DEFAULT)); + } +} From d162fc53629231bceaf1fffefe0c7dc666931cce Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Thu, 24 Dec 2015 12:11:12 +0100 Subject: [PATCH 090/623] Add permissions to manifest [android-volley] --- .../src/main/resources/android-volley/manifest.mustache | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/swagger-codegen/src/main/resources/android-volley/manifest.mustache b/modules/swagger-codegen/src/main/resources/android-volley/manifest.mustache index 165749c3cc4..7f4a79f7311 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/manifest.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/manifest.mustache @@ -1,3 +1,5 @@ + + From 8260c661b3398bbd9dca7a2aaf5a9095ea7556e2 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Thu, 24 Dec 2015 12:12:09 +0100 Subject: [PATCH 091/623] Fix AndroidManifest xml schema [android-volley] --- .../src/main/resources/android-volley/manifest.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/resources/android-volley/manifest.mustache b/modules/swagger-codegen/src/main/resources/android-volley/manifest.mustache index 7f4a79f7311..6b549476ce2 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/manifest.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/manifest.mustache @@ -1,4 +1,4 @@ - + From 2613e597ddcf412159dccc16cb019224ccbb61ac Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Thu, 24 Dec 2015 19:41:46 +0100 Subject: [PATCH 092/623] Added petstore sample [android-volley] --- bin/android-volley-petstore.sh | 6 +- .../petstore/android-volley/build.gradle | 91 +++ .../src/main/AndroidManifest.xml | 5 + .../java/io/swagger/client/ApiException.java | 29 + .../java/io/swagger/client/ApiInvoker.java | 440 ++++++++++++ .../main/java/io/swagger/client/JsonUtil.java | 87 +++ .../src/main/java/io/swagger/client/Pair.java | 38 + .../java/io/swagger/client/Responses.java | 53 ++ .../java/io/swagger/client/api/PetApi.java | 647 ++++++++++++++++++ .../java/io/swagger/client/api/StoreApi.java | 339 +++++++++ .../java/io/swagger/client/api/UserApi.java | 610 +++++++++++++++++ .../io/swagger/client/auth/ApiKeyAuth.java | 58 ++ .../swagger/client/auth/Authentication.java | 11 + .../io/swagger/client/model/Category.java | 54 ++ .../java/io/swagger/client/model/Order.java | 115 ++++ .../java/io/swagger/client/model/Pet.java | 117 ++++ .../java/io/swagger/client/model/Tag.java | 54 ++ .../java/io/swagger/client/model/User.java | 139 ++++ .../swagger/client/request/DeleteRequest.java | 86 +++ .../io/swagger/client/request/GetRequest.java | 39 ++ .../swagger/client/request/PatchRequest.java | 86 +++ 21 files changed, 3100 insertions(+), 4 deletions(-) create mode 100644 bin/samples/client/petstore/android-volley/build.gradle create mode 100644 bin/samples/client/petstore/android-volley/src/main/AndroidManifest.xml create mode 100644 bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/ApiException.java create mode 100644 bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/ApiInvoker.java create mode 100644 bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/JsonUtil.java create mode 100644 bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/Pair.java create mode 100644 bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/Responses.java create mode 100644 bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/PetApi.java create mode 100644 bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/StoreApi.java create mode 100644 bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/UserApi.java create mode 100644 bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/auth/ApiKeyAuth.java create mode 100644 bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/auth/Authentication.java create mode 100644 bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Category.java create mode 100644 bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Order.java create mode 100644 bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Pet.java create mode 100644 bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Tag.java create mode 100644 bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/User.java create mode 100644 bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/DeleteRequest.java create mode 100644 bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/GetRequest.java create mode 100644 bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PatchRequest.java diff --git a/bin/android-volley-petstore.sh b/bin/android-volley-petstore.sh index e1def487022..f8ba6753976 100644 --- a/bin/android-volley-petstore.sh +++ b/bin/android-volley-petstore.sh @@ -26,8 +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 -t ../modules/swagger-codegen/src/main/resources/android-java -i ../modules/swagger-codegen/src/test/resources/2_0/petstore.json -l android -o samples/client/petstore/android-java" +ags="$@ generate -t ../modules/swagger-codegen/src/main/resources/android-volley -i ../modules/swagger-codegen/src/test/resources/2_0/petstore.json -l android-volley -o samples/client/petstore/android-volley" -java $JAVA_OPTS -jar $executable $ags - -ping 127.0.0.1 -n 10 > nul \ No newline at end of file +java $JAVA_OPTS -jar $executable $ags \ No newline at end of file diff --git a/bin/samples/client/petstore/android-volley/build.gradle b/bin/samples/client/petstore/android-volley/build.gradle new file mode 100644 index 00000000000..36b8652f535 --- /dev/null +++ b/bin/samples/client/petstore/android-volley/build.gradle @@ -0,0 +1,91 @@ + +group = 'io.swagger' +project.version = '1.0.0' + + +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:1.2.2' + + classpath 'com.github.dcendents:android-maven-plugin:1.2' + + } +} + +allprojects { + repositories { + jcenter() + } +} + + +apply plugin: 'com.android.library' + +apply plugin: 'com.github.dcendents.android-maven' + + +android { + compileSdkVersion 22 + buildToolsVersion '22.0.0' + defaultConfig { + minSdkVersion 14 + targetSdkVersion 22 + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_7 + targetCompatibility JavaVersion.VERSION_1_7 + } + + // Rename the aar correctly + libraryVariants.all { variant -> + variant.outputs.each { output -> + def outputFile = output.outputFile + if (outputFile != null && outputFile.name.endsWith('.aar')) { + def fileName = "${project.name}-${variant.baseName}-${version}.aar" + output.outputFile = new File(outputFile.parent, fileName) + } + } + } +} + + +ext { + swagger_annotations_version = "1.5.0" + gson_version = "2.3.1" + httpclient_version = "4.3.3" + junit_version = "4.8.1" +} + +dependencies { + compile "io.swagger:swagger-annotations:$swagger_annotations_version" + compile "com.google.code.gson:gson:$gson_version" + compile "org.apache.httpcomponents:httpcore:$httpclient_version" + compile "org.apache.httpcomponents:httpmime:$httpclient_version" + testCompile "junit:junit:$junit_version" +} + +afterEvaluate { + android.libraryVariants.all { variant -> + def task = project.tasks.create "jar${variant.name.capitalize()}", Jar + task.description = "Create jar artifact for ${variant.name}" + task.dependsOn variant.javaCompile + task.from variant.javaCompile.destinationDir + task.destinationDir = project.file("${project.buildDir}/outputs/jar") + task.archiveName = "${project.name}-${variant.baseName}-${version}.jar" + artifacts.add('archives', task); + } +} + + +task sourcesJar(type: Jar) { + from android.sourceSets.main.java.srcDirs + classifier = 'sources' +} + +artifacts { + archives sourcesJar +} + diff --git a/bin/samples/client/petstore/android-volley/src/main/AndroidManifest.xml b/bin/samples/client/petstore/android-volley/src/main/AndroidManifest.xml new file mode 100644 index 00000000000..29c1d7cad36 --- /dev/null +++ b/bin/samples/client/petstore/android-volley/src/main/AndroidManifest.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/ApiException.java b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/ApiException.java new file mode 100644 index 00000000000..31bc8a0978a --- /dev/null +++ b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/ApiException.java @@ -0,0 +1,29 @@ +package io.swagger.client; + +public class ApiException extends Exception { + int code = 0; + String message = null; + + public ApiException() {} + + public ApiException(int code, String message) { + this.code = code; + this.message = message; + } + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} \ No newline at end of file diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/ApiInvoker.java b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/ApiInvoker.java new file mode 100644 index 00000000000..5aa102b2bb0 --- /dev/null +++ b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/ApiInvoker.java @@ -0,0 +1,440 @@ +package io.swagger.client; + +import android.content.Context; + +import com.android.volley.RequestQueue; +import com.android.volley.Response; +import com.android.volley.toolbox.Volley; +import com.google.gson.JsonParseException; + +import org.apache.http.Consts; +import org.apache.http.HttpEntity; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.StringEntity; + +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.TimeZone; + +import io.swagger.client.auth.Authentication; +import io.swagger.client.auth.ApiKeyAuth; +import io.swagger.client.auth.HttpBasicAuth; +import io.swagger.client.request.GetRequest; +import io.swagger.client.request.PostRequest; +import io.swagger.client.request.PutRequest; +import io.swagger.client.request.DeleteRequest; +import io.swagger.client.request.PatchRequest; + +public class ApiInvoker { + private static ApiInvoker INSTANCE; + private Map defaultHeaderMap = new HashMap(); + + private Context context; + private RequestQueue mRequestQueue; + + private Map authentications; + + /** Content type "text/plain" with UTF-8 encoding. */ + public static final ContentType TEXT_PLAIN_UTF8 = ContentType.create("text/plain", Consts.UTF_8); + + /** + * ISO 8601 date time format. + * @see https://en.wikipedia.org/wiki/ISO_8601 + */ + public static final SimpleDateFormat DATE_TIME_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); + + /** + * ISO 8601 date format. + * @see https://en.wikipedia.org/wiki/ISO_8601 + */ + public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd"); + + static { + // Use UTC as the default time zone. + DATE_TIME_FORMAT.setTimeZone(TimeZone.getTimeZone("UTC")); + DATE_FORMAT.setTimeZone(TimeZone.getTimeZone("UTC")); + } + + public static void setUserAgent(String userAgent) { + INSTANCE.addDefaultHeader("User-Agent", userAgent); + } + + public static Date parseDateTime(String str) { + try { + return DATE_TIME_FORMAT.parse(str); + } catch (java.text.ParseException e) { + throw new RuntimeException(e); + } + } + + public static Date parseDate(String str) { + try { + return DATE_FORMAT.parse(str); + } catch (java.text.ParseException e) { + throw new RuntimeException(e); + } + } + + public static String formatDateTime(Date datetime) { + return DATE_TIME_FORMAT.format(datetime); + } + + public static String formatDate(Date date) { + return DATE_FORMAT.format(date); + } + + public static String parameterToString(Object param) { + if (param == null) { + return ""; + } else if (param instanceof Date) { + return formatDateTime((Date) param); + } else if (param instanceof Collection) { + StringBuilder b = new StringBuilder(); + for(Object o : (Collection)param) { + if(b.length() > 0) { + b.append(","); + } + b.append(String.valueOf(o)); + } + return b.toString(); + } else { + return String.valueOf(param); + } + } + + /* + Format to {@code Pair} objects. + */ + public static List parameterToPairs(String collectionFormat, String name, Object value){ + List params = new ArrayList(); + + // preconditions + if (name == null || name.isEmpty() || value == null) return params; + + Collection valueCollection = null; + if (value instanceof Collection) { + valueCollection = (Collection) value; + } else { + params.add(new Pair(name, parameterToString(value))); + return params; + } + + if (valueCollection.isEmpty()){ + return params; + } + + // get the collection format + collectionFormat = (collectionFormat == null || collectionFormat.isEmpty() ? "csv" : collectionFormat); // default: csv + + // create the params based on the collection format + if (collectionFormat.equals("multi")) { + for (Object item : valueCollection) { + params.add(new Pair(name, parameterToString(item))); + } + + return params; + } + + String delimiter = ","; + + if (collectionFormat.equals("csv")) { + delimiter = ","; + } else if (collectionFormat.equals("ssv")) { + delimiter = " "; + } else if (collectionFormat.equals("tsv")) { + delimiter = "\t"; + } else if (collectionFormat.equals("pipes")) { + delimiter = "|"; + } + + StringBuilder sb = new StringBuilder() ; + for (Object item : valueCollection) { + sb.append(delimiter); + sb.append(parameterToString(item)); + } + + params.add(new Pair(name, sb.substring(1))); + + return params; + } + + public static void initializeInstance(Context context) { + INSTANCE = new ApiInvoker(context); + setUserAgent("Android-Volley-Swagger"); + + // Setup authentications (key: authentication name, value: authentication). + INSTANCE.authentications = new HashMap(); + + + + + + INSTANCE.authentications.put("api_key", new ApiKeyAuth("header", "api_key")); + + + + // Prevent the authentications from being modified. + INSTANCE.authentications = Collections.unmodifiableMap(INSTANCE.authentications); + } + private ApiInvoker(Context context) { + this.context = context; + initConnectionManager(); + } + + public ApiInvoker() { + initConnectionManager(); + } + + public static ApiInvoker getInstance() { + return INSTANCE; + } + + public void addDefaultHeader(String key, String value) { + defaultHeaderMap.put(key, value); + } + + public String escapeString(String str) { + return str; + } + + public static Object deserialize(String json, String containerType, Class cls) throws ApiException { + try{ + if("list".equalsIgnoreCase(containerType) || "array".equalsIgnoreCase(containerType)) { + return JsonUtil.deserializeToList(json, cls); + } + else if(String.class.equals(cls)) { + if(json != null && json.startsWith("\"") && json.endsWith("\"") && json.length() > 1) + return json.substring(1, json.length() - 1); + else + return json; + } + else { + return JsonUtil.deserializeToObject(json, cls); + } + } + catch (JsonParseException e) { + throw new ApiException(500, e.getMessage()); + } + } + + public static String serialize(Object obj) throws ApiException { + try { + if (obj != null) + return JsonUtil.serialize(obj); + else + return null; + } + catch (Exception e) { + throw new ApiException(500, e.getMessage()); + } + } + + /** + * Get authentications (key: authentication name, value: authentication). + */ + public Map getAuthentications() { + return authentications; + } + + /** + * Get authentication for the given name. + * + * @param authName The authentication name + * @return The authentication, null if not found + */ + public Authentication getAuthentication(String authName) { + return authentications.get(authName); + } + + /** + * Helper method to set username for the first HTTP basic authentication. + */ + public void setUsername(String username) { + for (Authentication auth : authentications.values()) { + if (auth instanceof HttpBasicAuth) { + ((HttpBasicAuth) auth).setUsername(username); + return; + } + } + throw new RuntimeException("No HTTP basic authentication configured!"); + } + + /** + * Helper method to set password for the first HTTP basic authentication. + */ + public void setPassword(String password) { + for (Authentication auth : authentications.values()) { + if (auth instanceof HttpBasicAuth) { + ((HttpBasicAuth) auth).setPassword(password); + return; + } + } + throw new RuntimeException("No HTTP basic authentication configured!"); + } + + /** + * Helper method to set API key value for the first API key authentication. + */ + public void setApiKey(String apiKey) { + for (Authentication auth : authentications.values()) { + if (auth instanceof ApiKeyAuth) { + ((ApiKeyAuth) auth).setApiKey(apiKey); + return; + } + } + throw new RuntimeException("No API key authentication configured!"); + } + + /** + * Helper method to set API key prefix for the first API key authentication. + */ + public void setApiKeyPrefix(String apiKeyPrefix) { + for (Authentication auth : authentications.values()) { + if (auth instanceof ApiKeyAuth) { + ((ApiKeyAuth) auth).setApiKeyPrefix(apiKeyPrefix); + return; + } + } + throw new RuntimeException("No API key authentication configured!"); + } + + /** + * Update query and header parameters based on authentication settings. + * + * @param authNames The authentications to apply + */ + private void updateParamsForAuth(String[] authNames, List queryParams, Map headerParams) { + for (String authName : authNames) { + Authentication auth = authentications.get(authName); + if (auth == null) throw new RuntimeException("Authentication undefined: " + authName); + auth.applyToParams(queryParams, headerParams); + } + } + + public void invokeAPI(String host, String path, String method, List queryParams, Object body, Map headerParams, Map formParams, String contentType, String[] authNames, Response.Listener stringRequest, Response.ErrorListener errorListener) throws ApiException { + StringBuilder b = new StringBuilder(); + b.append("?"); + + updateParamsForAuth(authNames, queryParams, headerParams); + + if (queryParams != null){ + for (Pair queryParam : queryParams){ + if (!queryParam.getName().isEmpty()) { + b.append(escapeString(queryParam.getName())); + b.append("="); + b.append(escapeString(queryParam.getValue())); + b.append("&"); + } + } + } + + String querystring = b.substring(0, b.length() - 1); + String url = host + path + querystring; + + HashMap headers = new HashMap(); + + for(String key : headerParams.keySet()) { + headers.put(key, headerParams.get(key)); + } + + for(String key : defaultHeaderMap.keySet()) { + if(!headerParams.containsKey(key)) { + headers.put(key, defaultHeaderMap.get(key)); + } + } + headers.put("Accept", "application/json"); + + // URL encoded string from form parameters + String formParamStr = null; + + // for form data + if ("application/x-www-form-urlencoded".equals(contentType)) { + StringBuilder formParamBuilder = new StringBuilder(); + + // encode the form params + for (String key : formParams.keySet()) { + String value = formParams.get(key); + if (value != null && !"".equals(value.trim())) { + if (formParamBuilder.length() > 0) { + formParamBuilder.append("&"); + } + try { + formParamBuilder.append(URLEncoder.encode(key, "utf8")).append("=").append(URLEncoder.encode(value, "utf8")); + } + catch (Exception e) { + // move on to next + } + } + } + formParamStr = formParamBuilder.toString(); + } + + if ("GET".equals(method)) { + GetRequest request = new GetRequest(url, headers, null, stringRequest, errorListener); + mRequestQueue.add(request); + } + else if ("POST".equals(method)) { + PostRequest request = null; + if (formParamStr != null) { + request = new PostRequest(url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener); + } else if (body != null) { + if (body instanceof HttpEntity) { + request = new PostRequest(url, headers, null, (HttpEntity) body, stringRequest, errorListener); + } else { + request = new PostRequest(url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener); + } + } + if(request != null) mRequestQueue.add(request); + } + else if ("PUT".equals(method)) { + PutRequest request = null; + if (formParamStr != null) { + request = new PutRequest(url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener); + } else if (body != null) { + if (body instanceof HttpEntity) { + request = new PutRequest(url, headers, null, (HttpEntity) body, stringRequest, errorListener); + } else { + request = new PutRequest(url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener); + } + } + if(request != null) mRequestQueue.add(request); + } + else if ("DELETE".equals(method)) { + DeleteRequest request = null; + if (formParamStr != null) { + request = new DeleteRequest(url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener); + } else if (body != null) { + if (body instanceof HttpEntity) { + request = new DeleteRequest(url, headers, null, (HttpEntity) body, stringRequest, errorListener); + } else { + request = new DeleteRequest(url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener); + } + } + if(request != null) mRequestQueue.add(request); + } + else if ("PATCH".equals(method)) { + PatchRequest request = null; + if (formParamStr != null) { + request = new PatchRequest(url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener); + } else if (body != null) { + if (body instanceof HttpEntity) { + request = new PatchRequest(url, headers, null, (HttpEntity) body, stringRequest, errorListener); + } else { + request = new PatchRequest(url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener); + } + } + if(request != null) mRequestQueue.add(request); + } + } + + private void initConnectionManager() { + mRequestQueue = Volley.newRequestQueue(context); + } +} diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/JsonUtil.java b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/JsonUtil.java new file mode 100644 index 00000000000..5aa10d3ea82 --- /dev/null +++ b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/JsonUtil.java @@ -0,0 +1,87 @@ +package io.swagger.client; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.reflect.TypeToken; +import java.lang.reflect.Type; +import java.util.List; +import io.swagger.client.model.*; + +public class JsonUtil { + public static GsonBuilder gsonBuilder; + + static { + gsonBuilder = new GsonBuilder(); + gsonBuilder.serializeNulls(); + gsonBuilder.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); + } + + public static Gson getGson() { + return gsonBuilder.create(); + } + + public static String serialize(Object obj){ + return getGson().toJson(obj); + } + + public static T deserializeToList(String jsonString, Class cls){ + return getGson().fromJson(jsonString, getListTypeForDeserialization(cls)); + } + + public static T deserializeToObject(String jsonString, Class cls){ + return getGson().fromJson(jsonString, getTypeForDeserialization(cls)); + } + + public static Type getListTypeForDeserialization(Class cls) { + String className = cls.getSimpleName(); + + if ("User".equalsIgnoreCase(className)) { + return new TypeToken>(){}.getType(); + } + + if ("Category".equalsIgnoreCase(className)) { + return new TypeToken>(){}.getType(); + } + + if ("Pet".equalsIgnoreCase(className)) { + return new TypeToken>(){}.getType(); + } + + if ("Tag".equalsIgnoreCase(className)) { + return new TypeToken>(){}.getType(); + } + + if ("Order".equalsIgnoreCase(className)) { + return new TypeToken>(){}.getType(); + } + + return new TypeToken>(){}.getType(); + } + + public static Type getTypeForDeserialization(Class cls) { + String className = cls.getSimpleName(); + + if ("User".equalsIgnoreCase(className)) { + return new TypeToken(){}.getType(); + } + + if ("Category".equalsIgnoreCase(className)) { + return new TypeToken(){}.getType(); + } + + if ("Pet".equalsIgnoreCase(className)) { + return new TypeToken(){}.getType(); + } + + if ("Tag".equalsIgnoreCase(className)) { + return new TypeToken(){}.getType(); + } + + if ("Order".equalsIgnoreCase(className)) { + return new TypeToken(){}.getType(); + } + + return new TypeToken(){}.getType(); + } + +}; diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/Pair.java b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/Pair.java new file mode 100644 index 00000000000..2710fb5a99b --- /dev/null +++ b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/Pair.java @@ -0,0 +1,38 @@ +package io.swagger.client; + +public class Pair { + private String name = ""; + private String value = ""; + + public Pair(String name, String value) { + setName(name); + setValue(value); + } + + private void setName(String name) { + if (!isValidString(name)) return; + + this.name = name; + } + + private void setValue(String value) { + if (!isValidString(value)) return; + + this.value = value; + } + + public String getName() { + return this.name; + } + + public String getValue() { + return this.value; + } + + private boolean isValidString(String arg) { + if (arg == null) return false; + if (arg.trim().isEmpty()) return false; + + return true; + } +} diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/Responses.java b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/Responses.java new file mode 100644 index 00000000000..c0de417b616 --- /dev/null +++ b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/Responses.java @@ -0,0 +1,53 @@ +package io.swagger.client; + +import java.util.List; +import io.swagger.client.model.*; + +public class Responses { + + + public static interface UserResponse { + public void onResponse(User user); + } + public static interface UserListResponse { + public void onResponse(List userList); + } + + + + public static interface CategoryResponse { + public void onResponse(Category category); + } + public static interface CategoryListResponse { + public void onResponse(List categoryList); + } + + + + public static interface PetResponse { + public void onResponse(Pet pet); + } + public static interface PetListResponse { + public void onResponse(List petList); + } + + + + public static interface TagResponse { + public void onResponse(Tag tag); + } + public static interface TagListResponse { + public void onResponse(List tagList); + } + + + + public static interface OrderResponse { + public void onResponse(Order order); + } + public static interface OrderListResponse { + public void onResponse(List orderList); + } + + +} \ No newline at end of file diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/PetApi.java b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/PetApi.java new file mode 100644 index 00000000000..927c96c15b0 --- /dev/null +++ b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/PetApi.java @@ -0,0 +1,647 @@ +package io.swagger.client.api; + +import io.swagger.client.Responses; +import io.swagger.client.ApiInvoker; +import io.swagger.client.ApiException; +import io.swagger.client.Pair; + +import io.swagger.client.model.*; + +import java.util.*; + +import com.android.volley.Response; +import com.android.volley.VolleyError; + +import io.swagger.client.model.Pet; +import java.io.File; + + +import org.apache.http.HttpEntity; +import org.apache.http.entity.mime.MultipartEntityBuilder; + +import java.util.Map; +import java.util.HashMap; +import java.io.File; + + +public class PetApi { + String basePath = "http://petstore.swagger.io/v2"; + ApiInvoker apiInvoker = ApiInvoker.getInstance(); + + public void addHeader(String key, String value) { + getInvoker().addDefaultHeader(key, value); + } + + public ApiInvoker getInvoker() { + return apiInvoker; + } + + public void setBasePath(String basePath) { + this.basePath = basePath; + } + + public String getBasePath() { + return basePath; + } + + + /** + * Update an existing pet + * + * @param body Pet object that needs to be added to the store + * @return void + */ + public void updatePet (Pet body, final Response.Listener responseListener, final Response.ErrorListener errorListener) { + Object postBody = body; + + + + // create path and map variables + String path = "/pet".replaceAll("\\{format\\}","json"); + + // query params + List queryParams = new ArrayList(); + // header params + Map headerParams = new HashMap(); + // form params + Map formParams = new HashMap(); + + + + + + String[] contentTypes = { + "application/json","application/xml" + }; + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + if (contentType.startsWith("multipart/form-data")) { + // file uploading + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + + HttpEntity httpEntity = builder.build(); + postBody = httpEntity; + } else { + // normal form params + + } + + String[] authNames = new String[] { "petstore_auth" }; + + try { + apiInvoker.invokeAPI(basePath, path, "PUT", queryParams, postBody, headerParams, formParams, contentType, authNames, + new Response.Listener() { + @Override + public void onResponse(String response) { + + + responseListener.onResponse(response); + + + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + errorListener.onErrorResponse(error); + } + }); + } catch (ApiException ex) { + errorListener.onErrorResponse(new VolleyError(ex)); + } + } + + /** + * Add a new pet to the store + * + * @param body Pet object that needs to be added to the store + * @return void + */ + public void addPet (Pet body, final Response.Listener responseListener, final Response.ErrorListener errorListener) { + Object postBody = body; + + + + // create path and map variables + String path = "/pet".replaceAll("\\{format\\}","json"); + + // query params + List queryParams = new ArrayList(); + // header params + Map headerParams = new HashMap(); + // form params + Map formParams = new HashMap(); + + + + + + String[] contentTypes = { + "application/json","application/xml" + }; + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + if (contentType.startsWith("multipart/form-data")) { + // file uploading + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + + HttpEntity httpEntity = builder.build(); + postBody = httpEntity; + } else { + // normal form params + + } + + String[] authNames = new String[] { "petstore_auth" }; + + try { + apiInvoker.invokeAPI(basePath, path, "POST", queryParams, postBody, headerParams, formParams, contentType, authNames, + new Response.Listener() { + @Override + public void onResponse(String response) { + + + responseListener.onResponse(response); + + + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + errorListener.onErrorResponse(error); + } + }); + } catch (ApiException ex) { + errorListener.onErrorResponse(new VolleyError(ex)); + } + } + + /** + * Finds Pets by status + * Multiple status values can be provided with comma seperated strings + * @param status Status values that need to be considered for filter + * @return List + */ + public void findPetsByStatus (List status, final Responses.PetListResponse responseListener, final Response.ErrorListener errorListener) { + Object postBody = null; + + + + // create path and map variables + String path = "/pet/findByStatus".replaceAll("\\{format\\}","json"); + + // query params + List queryParams = new ArrayList(); + // header params + Map headerParams = new HashMap(); + // form params + Map formParams = new HashMap(); + + + queryParams.addAll(ApiInvoker.parameterToPairs("multi", "status", status)); + + + + + String[] contentTypes = { + + }; + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + if (contentType.startsWith("multipart/form-data")) { + // file uploading + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + + HttpEntity httpEntity = builder.build(); + postBody = httpEntity; + } else { + // normal form params + + } + + String[] authNames = new String[] { "petstore_auth" }; + + try { + apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, contentType, authNames, + new Response.Listener() { + @Override + public void onResponse(String response) { + + try { + responseListener.onResponse((List) ApiInvoker.deserialize(response, "array", Pet.class)); + + + + } catch (ApiException exception) { + errorListener.onErrorResponse(new VolleyError(exception)); + } + + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + errorListener.onErrorResponse(error); + } + }); + } catch (ApiException ex) { + errorListener.onErrorResponse(new VolleyError(ex)); + } + } + + /** + * Finds Pets by tags + * Muliple tags can be provided with comma seperated strings. Use tag1, tag2, tag3 for testing. + * @param tags Tags to filter by + * @return List + */ + public void findPetsByTags (List tags, final Responses.PetListResponse responseListener, final Response.ErrorListener errorListener) { + Object postBody = null; + + + + // create path and map variables + String path = "/pet/findByTags".replaceAll("\\{format\\}","json"); + + // query params + List queryParams = new ArrayList(); + // header params + Map headerParams = new HashMap(); + // form params + Map formParams = new HashMap(); + + + queryParams.addAll(ApiInvoker.parameterToPairs("multi", "tags", tags)); + + + + + String[] contentTypes = { + + }; + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + if (contentType.startsWith("multipart/form-data")) { + // file uploading + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + + HttpEntity httpEntity = builder.build(); + postBody = httpEntity; + } else { + // normal form params + + } + + String[] authNames = new String[] { "petstore_auth" }; + + try { + apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, contentType, authNames, + new Response.Listener() { + @Override + public void onResponse(String response) { + + try { + responseListener.onResponse((List) ApiInvoker.deserialize(response, "array", Pet.class)); + + + + } catch (ApiException exception) { + errorListener.onErrorResponse(new VolleyError(exception)); + } + + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + errorListener.onErrorResponse(error); + } + }); + } catch (ApiException ex) { + errorListener.onErrorResponse(new VolleyError(ex)); + } + } + + /** + * Find pet by ID + * Returns a pet when ID < 10. ID > 10 or nonintegers will simulate API error conditions + * @param petId ID of pet that needs to be fetched + * @return Pet + */ + public void getPetById (Long petId, final Responses.PetResponse responseListener, final Response.ErrorListener errorListener) { + Object postBody = null; + + + // verify the required parameter 'petId' is set + if (petId == null) { + VolleyError error = new VolleyError("Missing the required parameter 'petId' when calling getPetById", + new ApiException(400, "Missing the required parameter 'petId' when calling getPetById")); + } + + + // create path and map variables + String path = "/pet/{petId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "petId" + "\\}", apiInvoker.escapeString(petId.toString())); + + // query params + List queryParams = new ArrayList(); + // header params + Map headerParams = new HashMap(); + // form params + Map formParams = new HashMap(); + + + + + + String[] contentTypes = { + + }; + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + if (contentType.startsWith("multipart/form-data")) { + // file uploading + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + + HttpEntity httpEntity = builder.build(); + postBody = httpEntity; + } else { + // normal form params + + } + + String[] authNames = new String[] { "api_key" }; + + try { + apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, contentType, authNames, + new Response.Listener() { + @Override + public void onResponse(String response) { + + try { + responseListener.onResponse((Pet) ApiInvoker.deserialize(response, "", Pet.class)); + + + + } catch (ApiException exception) { + errorListener.onErrorResponse(new VolleyError(exception)); + } + + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + errorListener.onErrorResponse(error); + } + }); + } catch (ApiException ex) { + errorListener.onErrorResponse(new VolleyError(ex)); + } + } + + /** + * Updates a pet in the store with form data + * + * @param petId ID of pet that needs to be updated + * @param name Updated name of the pet + * @param status Updated status of the pet + * @return void + */ + public void updatePetWithForm (String petId, String name, String status, final Response.Listener responseListener, final Response.ErrorListener errorListener) { + Object postBody = null; + + + // verify the required parameter 'petId' is set + if (petId == null) { + VolleyError error = new VolleyError("Missing the required parameter 'petId' when calling updatePetWithForm", + new ApiException(400, "Missing the required parameter 'petId' when calling updatePetWithForm")); + } + + + // create path and map variables + String path = "/pet/{petId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "petId" + "\\}", apiInvoker.escapeString(petId.toString())); + + // query params + List queryParams = new ArrayList(); + // header params + Map headerParams = new HashMap(); + // form params + Map formParams = new HashMap(); + + + + + + String[] contentTypes = { + "application/x-www-form-urlencoded" + }; + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + if (contentType.startsWith("multipart/form-data")) { + // file uploading + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + if (name != null) { + builder.addTextBody("name", ApiInvoker.parameterToString(name), ApiInvoker.TEXT_PLAIN_UTF8); + } + + if (status != null) { + builder.addTextBody("status", ApiInvoker.parameterToString(status), ApiInvoker.TEXT_PLAIN_UTF8); + } + + + HttpEntity httpEntity = builder.build(); + postBody = httpEntity; + } else { + // normal form params + formParams.put("name", ApiInvoker.parameterToString(name)); + formParams.put("status", ApiInvoker.parameterToString(status)); + + } + + String[] authNames = new String[] { "petstore_auth" }; + + try { + apiInvoker.invokeAPI(basePath, path, "POST", queryParams, postBody, headerParams, formParams, contentType, authNames, + new Response.Listener() { + @Override + public void onResponse(String response) { + + + responseListener.onResponse(response); + + + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + errorListener.onErrorResponse(error); + } + }); + } catch (ApiException ex) { + errorListener.onErrorResponse(new VolleyError(ex)); + } + } + + /** + * Deletes a pet + * + * @param petId Pet id to delete + * @param apiKey + * @return void + */ + public void deletePet (Long petId, String apiKey, final Response.Listener responseListener, final Response.ErrorListener errorListener) { + Object postBody = null; + + + // verify the required parameter 'petId' is set + if (petId == null) { + VolleyError error = new VolleyError("Missing the required parameter 'petId' when calling deletePet", + new ApiException(400, "Missing the required parameter 'petId' when calling deletePet")); + } + + + // create path and map variables + String path = "/pet/{petId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "petId" + "\\}", apiInvoker.escapeString(petId.toString())); + + // query params + List queryParams = new ArrayList(); + // header params + Map headerParams = new HashMap(); + // form params + Map formParams = new HashMap(); + + + + + headerParams.put("api_key", ApiInvoker.parameterToString(apiKey)); + + + String[] contentTypes = { + + }; + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + if (contentType.startsWith("multipart/form-data")) { + // file uploading + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + + HttpEntity httpEntity = builder.build(); + postBody = httpEntity; + } else { + // normal form params + + } + + String[] authNames = new String[] { "petstore_auth" }; + + try { + apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, postBody, headerParams, formParams, contentType, authNames, + new Response.Listener() { + @Override + public void onResponse(String response) { + + + responseListener.onResponse(response); + + + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + errorListener.onErrorResponse(error); + } + }); + } catch (ApiException ex) { + errorListener.onErrorResponse(new VolleyError(ex)); + } + } + + /** + * uploads an image + * + * @param petId ID of pet to update + * @param additionalMetadata Additional data to pass to server + * @param file file to upload + * @return void + */ + public void uploadFile (Long petId, String additionalMetadata, File file, final Response.Listener responseListener, final Response.ErrorListener errorListener) { + Object postBody = null; + + + // verify the required parameter 'petId' is set + if (petId == null) { + VolleyError error = new VolleyError("Missing the required parameter 'petId' when calling uploadFile", + new ApiException(400, "Missing the required parameter 'petId' when calling uploadFile")); + } + + + // create path and map variables + String path = "/pet/{petId}/uploadImage".replaceAll("\\{format\\}","json").replaceAll("\\{" + "petId" + "\\}", apiInvoker.escapeString(petId.toString())); + + // query params + List queryParams = new ArrayList(); + // header params + Map headerParams = new HashMap(); + // form params + Map formParams = new HashMap(); + + + + + + String[] contentTypes = { + "multipart/form-data" + }; + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + if (contentType.startsWith("multipart/form-data")) { + // file uploading + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + if (additionalMetadata != null) { + builder.addTextBody("additionalMetadata", ApiInvoker.parameterToString(additionalMetadata), ApiInvoker.TEXT_PLAIN_UTF8); + } + + if (file != null) { + builder.addBinaryBody("file", file); + } + + + HttpEntity httpEntity = builder.build(); + postBody = httpEntity; + } else { + // normal form params + formParams.put("additionalMetadata", ApiInvoker.parameterToString(additionalMetadata)); + + + } + + String[] authNames = new String[] { "petstore_auth" }; + + try { + apiInvoker.invokeAPI(basePath, path, "POST", queryParams, postBody, headerParams, formParams, contentType, authNames, + new Response.Listener() { + @Override + public void onResponse(String response) { + + + responseListener.onResponse(response); + + + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + errorListener.onErrorResponse(error); + } + }); + } catch (ApiException ex) { + errorListener.onErrorResponse(new VolleyError(ex)); + } + } + +} + diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/StoreApi.java b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/StoreApi.java new file mode 100644 index 00000000000..5a74a4ddad3 --- /dev/null +++ b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/StoreApi.java @@ -0,0 +1,339 @@ +package io.swagger.client.api; + +import io.swagger.client.Responses; +import io.swagger.client.ApiInvoker; +import io.swagger.client.ApiException; +import io.swagger.client.Pair; + +import io.swagger.client.model.*; + +import java.util.*; + +import com.android.volley.Response; +import com.android.volley.VolleyError; + +import java.util.Map; +import io.swagger.client.model.Order; + + +import org.apache.http.HttpEntity; +import org.apache.http.entity.mime.MultipartEntityBuilder; + +import java.util.Map; +import java.util.HashMap; +import java.io.File; + + +public class StoreApi { + String basePath = "http://petstore.swagger.io/v2"; + ApiInvoker apiInvoker = ApiInvoker.getInstance(); + + public void addHeader(String key, String value) { + getInvoker().addDefaultHeader(key, value); + } + + public ApiInvoker getInvoker() { + return apiInvoker; + } + + public void setBasePath(String basePath) { + this.basePath = basePath; + } + + public String getBasePath() { + return basePath; + } + + + /** + * Returns pet inventories by status + * Returns a map of status codes to quantities + * @return Map + */ + public void getInventory (final Responses.MapResponse responseListener, final Response.ErrorListener errorListener) { + Object postBody = null; + + + + // create path and map variables + String path = "/store/inventory".replaceAll("\\{format\\}","json"); + + // query params + List queryParams = new ArrayList(); + // header params + Map headerParams = new HashMap(); + // form params + Map formParams = new HashMap(); + + + + + + String[] contentTypes = { + + }; + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + if (contentType.startsWith("multipart/form-data")) { + // file uploading + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + + HttpEntity httpEntity = builder.build(); + postBody = httpEntity; + } else { + // normal form params + + } + + String[] authNames = new String[] { "api_key" }; + + try { + apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, contentType, authNames, + new Response.Listener() { + @Override + public void onResponse(String response) { + + try { + responseListener.onResponse((Map) ApiInvoker.deserialize(response, "map", Map.class)); + + + + } catch (ApiException exception) { + errorListener.onErrorResponse(new VolleyError(exception)); + } + + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + errorListener.onErrorResponse(error); + } + }); + } catch (ApiException ex) { + errorListener.onErrorResponse(new VolleyError(ex)); + } + } + + /** + * Place an order for a pet + * + * @param body order placed for purchasing the pet + * @return Order + */ + public void placeOrder (Order body, final Responses.OrderResponse responseListener, final Response.ErrorListener errorListener) { + Object postBody = body; + + + + // create path and map variables + String path = "/store/order".replaceAll("\\{format\\}","json"); + + // query params + List queryParams = new ArrayList(); + // header params + Map headerParams = new HashMap(); + // form params + Map formParams = new HashMap(); + + + + + + String[] contentTypes = { + + }; + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + if (contentType.startsWith("multipart/form-data")) { + // file uploading + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + + HttpEntity httpEntity = builder.build(); + postBody = httpEntity; + } else { + // normal form params + + } + + String[] authNames = new String[] { }; + + try { + apiInvoker.invokeAPI(basePath, path, "POST", queryParams, postBody, headerParams, formParams, contentType, authNames, + new Response.Listener() { + @Override + public void onResponse(String response) { + + try { + responseListener.onResponse((Order) ApiInvoker.deserialize(response, "", Order.class)); + + + + } catch (ApiException exception) { + errorListener.onErrorResponse(new VolleyError(exception)); + } + + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + errorListener.onErrorResponse(error); + } + }); + } catch (ApiException ex) { + errorListener.onErrorResponse(new VolleyError(ex)); + } + } + + /** + * Find purchase order by ID + * 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 + */ + public void getOrderById (String orderId, final Responses.OrderResponse responseListener, final Response.ErrorListener errorListener) { + Object postBody = null; + + + // verify the required parameter 'orderId' is set + if (orderId == null) { + VolleyError error = new VolleyError("Missing the required parameter 'orderId' when calling getOrderById", + new ApiException(400, "Missing the required parameter 'orderId' when calling getOrderById")); + } + + + // create path and map variables + String path = "/store/order/{orderId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "orderId" + "\\}", apiInvoker.escapeString(orderId.toString())); + + // query params + List queryParams = new ArrayList(); + // header params + Map headerParams = new HashMap(); + // form params + Map formParams = new HashMap(); + + + + + + String[] contentTypes = { + + }; + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + if (contentType.startsWith("multipart/form-data")) { + // file uploading + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + + HttpEntity httpEntity = builder.build(); + postBody = httpEntity; + } else { + // normal form params + + } + + String[] authNames = new String[] { }; + + try { + apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, contentType, authNames, + new Response.Listener() { + @Override + public void onResponse(String response) { + + try { + responseListener.onResponse((Order) ApiInvoker.deserialize(response, "", Order.class)); + + + + } catch (ApiException exception) { + errorListener.onErrorResponse(new VolleyError(exception)); + } + + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + errorListener.onErrorResponse(error); + } + }); + } catch (ApiException ex) { + errorListener.onErrorResponse(new VolleyError(ex)); + } + } + + /** + * Delete purchase order by ID + * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + * @param orderId ID of the order that needs to be deleted + * @return void + */ + public void deleteOrder (String orderId, final Response.Listener responseListener, final Response.ErrorListener errorListener) { + Object postBody = null; + + + // verify the required parameter 'orderId' is set + if (orderId == null) { + VolleyError error = new VolleyError("Missing the required parameter 'orderId' when calling deleteOrder", + new ApiException(400, "Missing the required parameter 'orderId' when calling deleteOrder")); + } + + + // create path and map variables + String path = "/store/order/{orderId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "orderId" + "\\}", apiInvoker.escapeString(orderId.toString())); + + // query params + List queryParams = new ArrayList(); + // header params + Map headerParams = new HashMap(); + // form params + Map formParams = new HashMap(); + + + + + + String[] contentTypes = { + + }; + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + if (contentType.startsWith("multipart/form-data")) { + // file uploading + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + + HttpEntity httpEntity = builder.build(); + postBody = httpEntity; + } else { + // normal form params + + } + + String[] authNames = new String[] { }; + + try { + apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, postBody, headerParams, formParams, contentType, authNames, + new Response.Listener() { + @Override + public void onResponse(String response) { + + + responseListener.onResponse(response); + + + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + errorListener.onErrorResponse(error); + } + }); + } catch (ApiException ex) { + errorListener.onErrorResponse(new VolleyError(ex)); + } + } + +} + diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/UserApi.java b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/UserApi.java new file mode 100644 index 00000000000..14351e3fd0c --- /dev/null +++ b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/UserApi.java @@ -0,0 +1,610 @@ +package io.swagger.client.api; + +import io.swagger.client.Responses; +import io.swagger.client.ApiInvoker; +import io.swagger.client.ApiException; +import io.swagger.client.Pair; + +import io.swagger.client.model.*; + +import java.util.*; + +import com.android.volley.Response; +import com.android.volley.VolleyError; + +import io.swagger.client.model.User; +import java.util.*; + + +import org.apache.http.HttpEntity; +import org.apache.http.entity.mime.MultipartEntityBuilder; + +import java.util.Map; +import java.util.HashMap; +import java.io.File; + + +public class UserApi { + String basePath = "http://petstore.swagger.io/v2"; + ApiInvoker apiInvoker = ApiInvoker.getInstance(); + + public void addHeader(String key, String value) { + getInvoker().addDefaultHeader(key, value); + } + + public ApiInvoker getInvoker() { + return apiInvoker; + } + + public void setBasePath(String basePath) { + this.basePath = basePath; + } + + public String getBasePath() { + return basePath; + } + + + /** + * Create user + * This can only be done by the logged in user. + * @param body Created user object + * @return void + */ + public void createUser (User body, final Response.Listener responseListener, final Response.ErrorListener errorListener) { + Object postBody = body; + + + + // create path and map variables + String path = "/user".replaceAll("\\{format\\}","json"); + + // query params + List queryParams = new ArrayList(); + // header params + Map headerParams = new HashMap(); + // form params + Map formParams = new HashMap(); + + + + + + String[] contentTypes = { + + }; + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + if (contentType.startsWith("multipart/form-data")) { + // file uploading + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + + HttpEntity httpEntity = builder.build(); + postBody = httpEntity; + } else { + // normal form params + + } + + String[] authNames = new String[] { }; + + try { + apiInvoker.invokeAPI(basePath, path, "POST", queryParams, postBody, headerParams, formParams, contentType, authNames, + new Response.Listener() { + @Override + public void onResponse(String response) { + + + responseListener.onResponse(response); + + + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + errorListener.onErrorResponse(error); + } + }); + } catch (ApiException ex) { + errorListener.onErrorResponse(new VolleyError(ex)); + } + } + + /** + * Creates list of users with given input array + * + * @param body List of user object + * @return void + */ + public void createUsersWithArrayInput (List body, final Response.Listener responseListener, final Response.ErrorListener errorListener) { + Object postBody = body; + + + + // create path and map variables + String path = "/user/createWithArray".replaceAll("\\{format\\}","json"); + + // query params + List queryParams = new ArrayList(); + // header params + Map headerParams = new HashMap(); + // form params + Map formParams = new HashMap(); + + + + + + String[] contentTypes = { + + }; + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + if (contentType.startsWith("multipart/form-data")) { + // file uploading + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + + HttpEntity httpEntity = builder.build(); + postBody = httpEntity; + } else { + // normal form params + + } + + String[] authNames = new String[] { }; + + try { + apiInvoker.invokeAPI(basePath, path, "POST", queryParams, postBody, headerParams, formParams, contentType, authNames, + new Response.Listener() { + @Override + public void onResponse(String response) { + + + responseListener.onResponse(response); + + + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + errorListener.onErrorResponse(error); + } + }); + } catch (ApiException ex) { + errorListener.onErrorResponse(new VolleyError(ex)); + } + } + + /** + * Creates list of users with given input array + * + * @param body List of user object + * @return void + */ + public void createUsersWithListInput (List body, final Response.Listener responseListener, final Response.ErrorListener errorListener) { + Object postBody = body; + + + + // create path and map variables + String path = "/user/createWithList".replaceAll("\\{format\\}","json"); + + // query params + List queryParams = new ArrayList(); + // header params + Map headerParams = new HashMap(); + // form params + Map formParams = new HashMap(); + + + + + + String[] contentTypes = { + + }; + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + if (contentType.startsWith("multipart/form-data")) { + // file uploading + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + + HttpEntity httpEntity = builder.build(); + postBody = httpEntity; + } else { + // normal form params + + } + + String[] authNames = new String[] { }; + + try { + apiInvoker.invokeAPI(basePath, path, "POST", queryParams, postBody, headerParams, formParams, contentType, authNames, + new Response.Listener() { + @Override + public void onResponse(String response) { + + + responseListener.onResponse(response); + + + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + errorListener.onErrorResponse(error); + } + }); + } catch (ApiException ex) { + errorListener.onErrorResponse(new VolleyError(ex)); + } + } + + /** + * Logs user into the system + * + * @param username The user name for login + * @param password The password for login in clear text + * @return String + */ + public void loginUser (String username, String password, final Responses.StringResponse responseListener, final Response.ErrorListener errorListener) { + Object postBody = null; + + + + // create path and map variables + String path = "/user/login".replaceAll("\\{format\\}","json"); + + // query params + List queryParams = new ArrayList(); + // header params + Map headerParams = new HashMap(); + // form params + Map formParams = new HashMap(); + + + queryParams.addAll(ApiInvoker.parameterToPairs("", "username", username)); + + queryParams.addAll(ApiInvoker.parameterToPairs("", "password", password)); + + + + + String[] contentTypes = { + + }; + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + if (contentType.startsWith("multipart/form-data")) { + // file uploading + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + + HttpEntity httpEntity = builder.build(); + postBody = httpEntity; + } else { + // normal form params + + } + + String[] authNames = new String[] { }; + + try { + apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, contentType, authNames, + new Response.Listener() { + @Override + public void onResponse(String response) { + + try { + responseListener.onResponse((String) ApiInvoker.deserialize(response, "", String.class)); + + + + } catch (ApiException exception) { + errorListener.onErrorResponse(new VolleyError(exception)); + } + + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + errorListener.onErrorResponse(error); + } + }); + } catch (ApiException ex) { + errorListener.onErrorResponse(new VolleyError(ex)); + } + } + + /** + * Logs out current logged in user session + * + * @return void + */ + public void logoutUser (final Response.Listener responseListener, final Response.ErrorListener errorListener) { + Object postBody = null; + + + + // create path and map variables + String path = "/user/logout".replaceAll("\\{format\\}","json"); + + // query params + List queryParams = new ArrayList(); + // header params + Map headerParams = new HashMap(); + // form params + Map formParams = new HashMap(); + + + + + + String[] contentTypes = { + + }; + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + if (contentType.startsWith("multipart/form-data")) { + // file uploading + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + + HttpEntity httpEntity = builder.build(); + postBody = httpEntity; + } else { + // normal form params + + } + + String[] authNames = new String[] { }; + + try { + apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, contentType, authNames, + new Response.Listener() { + @Override + public void onResponse(String response) { + + + responseListener.onResponse(response); + + + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + errorListener.onErrorResponse(error); + } + }); + } catch (ApiException ex) { + errorListener.onErrorResponse(new VolleyError(ex)); + } + } + + /** + * Get user by user name + * + * @param username The name that needs to be fetched. Use user1 for testing. + * @return User + */ + public void getUserByName (String username, final Responses.UserResponse responseListener, final Response.ErrorListener errorListener) { + Object postBody = null; + + + // verify the required parameter 'username' is set + if (username == null) { + VolleyError error = new VolleyError("Missing the required parameter 'username' when calling getUserByName", + new ApiException(400, "Missing the required parameter 'username' when calling getUserByName")); + } + + + // create path and map variables + String path = "/user/{username}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "username" + "\\}", apiInvoker.escapeString(username.toString())); + + // query params + List queryParams = new ArrayList(); + // header params + Map headerParams = new HashMap(); + // form params + Map formParams = new HashMap(); + + + + + + String[] contentTypes = { + + }; + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + if (contentType.startsWith("multipart/form-data")) { + // file uploading + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + + HttpEntity httpEntity = builder.build(); + postBody = httpEntity; + } else { + // normal form params + + } + + String[] authNames = new String[] { }; + + try { + apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, contentType, authNames, + new Response.Listener() { + @Override + public void onResponse(String response) { + + try { + responseListener.onResponse((User) ApiInvoker.deserialize(response, "", User.class)); + + + + } catch (ApiException exception) { + errorListener.onErrorResponse(new VolleyError(exception)); + } + + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + errorListener.onErrorResponse(error); + } + }); + } catch (ApiException ex) { + errorListener.onErrorResponse(new VolleyError(ex)); + } + } + + /** + * Updated user + * This can only be done by the logged in user. + * @param username name that need to be deleted + * @param body Updated user object + * @return void + */ + public void updateUser (String username, User body, final Response.Listener responseListener, final Response.ErrorListener errorListener) { + Object postBody = body; + + + // verify the required parameter 'username' is set + if (username == null) { + VolleyError error = new VolleyError("Missing the required parameter 'username' when calling updateUser", + new ApiException(400, "Missing the required parameter 'username' when calling updateUser")); + } + + + // create path and map variables + String path = "/user/{username}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "username" + "\\}", apiInvoker.escapeString(username.toString())); + + // query params + List queryParams = new ArrayList(); + // header params + Map headerParams = new HashMap(); + // form params + Map formParams = new HashMap(); + + + + + + String[] contentTypes = { + + }; + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + if (contentType.startsWith("multipart/form-data")) { + // file uploading + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + + HttpEntity httpEntity = builder.build(); + postBody = httpEntity; + } else { + // normal form params + + } + + String[] authNames = new String[] { }; + + try { + apiInvoker.invokeAPI(basePath, path, "PUT", queryParams, postBody, headerParams, formParams, contentType, authNames, + new Response.Listener() { + @Override + public void onResponse(String response) { + + + responseListener.onResponse(response); + + + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + errorListener.onErrorResponse(error); + } + }); + } catch (ApiException ex) { + errorListener.onErrorResponse(new VolleyError(ex)); + } + } + + /** + * Delete user + * This can only be done by the logged in user. + * @param username The name that needs to be deleted + * @return void + */ + public void deleteUser (String username, final Response.Listener responseListener, final Response.ErrorListener errorListener) { + Object postBody = null; + + + // verify the required parameter 'username' is set + if (username == null) { + VolleyError error = new VolleyError("Missing the required parameter 'username' when calling deleteUser", + new ApiException(400, "Missing the required parameter 'username' when calling deleteUser")); + } + + + // create path and map variables + String path = "/user/{username}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "username" + "\\}", apiInvoker.escapeString(username.toString())); + + // query params + List queryParams = new ArrayList(); + // header params + Map headerParams = new HashMap(); + // form params + Map formParams = new HashMap(); + + + + + + String[] contentTypes = { + + }; + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + if (contentType.startsWith("multipart/form-data")) { + // file uploading + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + + HttpEntity httpEntity = builder.build(); + postBody = httpEntity; + } else { + // normal form params + + } + + String[] authNames = new String[] { }; + + try { + apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, postBody, headerParams, formParams, contentType, authNames, + new Response.Listener() { + @Override + public void onResponse(String response) { + + + responseListener.onResponse(response); + + + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + errorListener.onErrorResponse(error); + } + }); + } catch (ApiException ex) { + errorListener.onErrorResponse(new VolleyError(ex)); + } + } + +} + diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/auth/ApiKeyAuth.java b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/auth/ApiKeyAuth.java new file mode 100644 index 00000000000..0e5ca9c7c53 --- /dev/null +++ b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/auth/ApiKeyAuth.java @@ -0,0 +1,58 @@ +package io.swagger.client.auth; + +import io.swagger.client.Pair; + +import java.util.Map; +import java.util.List; + +public class ApiKeyAuth implements Authentication { + private final String location; + private final String paramName; + + private String apiKey; + private String apiKeyPrefix; + + public ApiKeyAuth(String location, String paramName) { + this.location = location; + this.paramName = paramName; + } + + public String getLocation() { + return location; + } + + public String getParamName() { + return paramName; + } + + public String getApiKey() { + return apiKey; + } + + public void setApiKey(String apiKey) { + this.apiKey = apiKey; + } + + public String getApiKeyPrefix() { + return apiKeyPrefix; + } + + public void setApiKeyPrefix(String apiKeyPrefix) { + this.apiKeyPrefix = apiKeyPrefix; + } + + @Override + public void applyToParams(List queryParams, Map headerParams) { + String value; + if (apiKeyPrefix != null) { + value = apiKeyPrefix + " " + apiKey; + } else { + value = apiKey; + } + if (location == "query") { + queryParams.add(new Pair(paramName, value)); + } else if (location == "header") { + headerParams.put(paramName, value); + } + } +} diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/auth/Authentication.java b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/auth/Authentication.java new file mode 100644 index 00000000000..98b1a6900b9 --- /dev/null +++ b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/auth/Authentication.java @@ -0,0 +1,11 @@ +package io.swagger.client.auth; + +import io.swagger.client.Pair; + +import java.util.Map; +import java.util.List; + +public interface Authentication { + /** Apply authentication settings to header and query params. */ + void applyToParams(List queryParams, Map headerParams); +} diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Category.java b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Category.java new file mode 100644 index 00000000000..98e5c25c80f --- /dev/null +++ b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Category.java @@ -0,0 +1,54 @@ +package io.swagger.client.model; + + + +import io.swagger.annotations.*; +import com.google.gson.annotations.SerializedName; + + + +@ApiModel(description = "") +public class Category { + + @SerializedName("id") + private Long id = null; + @SerializedName("name") + private String name = null; + + + /** + **/ + @ApiModelProperty(value = "") + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + + + /** + **/ + @ApiModelProperty(value = "") + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Category {\n"); + + sb.append(" id: ").append(id).append("\n"); + sb.append(" name: ").append(name).append("\n"); + sb.append("}\n"); + return sb.toString(); + } +} + + diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Order.java b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Order.java new file mode 100644 index 00000000000..4ef664deba2 --- /dev/null +++ b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Order.java @@ -0,0 +1,115 @@ +package io.swagger.client.model; + +import java.util.Date; + + +import io.swagger.annotations.*; +import com.google.gson.annotations.SerializedName; + + + +@ApiModel(description = "") +public class Order { + + @SerializedName("id") + private Long id = null; + @SerializedName("petId") + private Long petId = null; + @SerializedName("quantity") + private Integer quantity = null; + @SerializedName("shipDate") + private Date shipDate = null; + public enum StatusEnum { + placed, approved, delivered, + }; + @SerializedName("status") + private StatusEnum status = null; + @SerializedName("complete") + private Boolean complete = null; + + + /** + **/ + @ApiModelProperty(value = "") + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + + + /** + **/ + @ApiModelProperty(value = "") + public Long getPetId() { + return petId; + } + public void setPetId(Long petId) { + this.petId = petId; + } + + + /** + **/ + @ApiModelProperty(value = "") + public Integer getQuantity() { + return quantity; + } + public void setQuantity(Integer quantity) { + this.quantity = quantity; + } + + + /** + **/ + @ApiModelProperty(value = "") + public Date getShipDate() { + return shipDate; + } + public void setShipDate(Date shipDate) { + this.shipDate = shipDate; + } + + + /** + * Order Status + **/ + @ApiModelProperty(value = "Order Status") + public StatusEnum getStatus() { + return status; + } + public void setStatus(StatusEnum status) { + this.status = status; + } + + + /** + **/ + @ApiModelProperty(value = "") + public Boolean getComplete() { + return complete; + } + public void setComplete(Boolean complete) { + this.complete = complete; + } + + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Order {\n"); + + sb.append(" id: ").append(id).append("\n"); + sb.append(" petId: ").append(petId).append("\n"); + sb.append(" quantity: ").append(quantity).append("\n"); + sb.append(" shipDate: ").append(shipDate).append("\n"); + sb.append(" status: ").append(status).append("\n"); + sb.append(" complete: ").append(complete).append("\n"); + sb.append("}\n"); + return sb.toString(); + } +} + + diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Pet.java b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Pet.java new file mode 100644 index 00000000000..cf7eb877b2a --- /dev/null +++ b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Pet.java @@ -0,0 +1,117 @@ +package io.swagger.client.model; + +import io.swagger.client.model.Category; +import java.util.*; +import io.swagger.client.model.Tag; + + +import io.swagger.annotations.*; +import com.google.gson.annotations.SerializedName; + + + +@ApiModel(description = "") +public class Pet { + + @SerializedName("id") + private Long id = null; + @SerializedName("category") + private Category category = null; + @SerializedName("name") + private String name = null; + @SerializedName("photoUrls") + private List photoUrls = null; + @SerializedName("tags") + private List tags = null; + public enum StatusEnum { + available, pending, sold, + }; + @SerializedName("status") + private StatusEnum status = null; + + + /** + **/ + @ApiModelProperty(value = "") + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + + + /** + **/ + @ApiModelProperty(value = "") + public Category getCategory() { + return category; + } + public void setCategory(Category category) { + this.category = category; + } + + + /** + **/ + @ApiModelProperty(required = true, value = "") + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + + /** + **/ + @ApiModelProperty(required = true, value = "") + public List getPhotoUrls() { + return photoUrls; + } + public void setPhotoUrls(List photoUrls) { + this.photoUrls = photoUrls; + } + + + /** + **/ + @ApiModelProperty(value = "") + public List getTags() { + return tags; + } + public void setTags(List tags) { + this.tags = tags; + } + + + /** + * pet status in the store + **/ + @ApiModelProperty(value = "pet status in the store") + public StatusEnum getStatus() { + return status; + } + public void setStatus(StatusEnum status) { + this.status = status; + } + + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Pet {\n"); + + sb.append(" id: ").append(id).append("\n"); + sb.append(" category: ").append(category).append("\n"); + sb.append(" name: ").append(name).append("\n"); + sb.append(" photoUrls: ").append(photoUrls).append("\n"); + sb.append(" tags: ").append(tags).append("\n"); + sb.append(" status: ").append(status).append("\n"); + sb.append("}\n"); + return sb.toString(); + } +} + + diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Tag.java b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Tag.java new file mode 100644 index 00000000000..e87a002a144 --- /dev/null +++ b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Tag.java @@ -0,0 +1,54 @@ +package io.swagger.client.model; + + + +import io.swagger.annotations.*; +import com.google.gson.annotations.SerializedName; + + + +@ApiModel(description = "") +public class Tag { + + @SerializedName("id") + private Long id = null; + @SerializedName("name") + private String name = null; + + + /** + **/ + @ApiModelProperty(value = "") + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + + + /** + **/ + @ApiModelProperty(value = "") + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Tag {\n"); + + sb.append(" id: ").append(id).append("\n"); + sb.append(" name: ").append(name).append("\n"); + sb.append("}\n"); + return sb.toString(); + } +} + + diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/User.java b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/User.java new file mode 100644 index 00000000000..fabdab0b4e3 --- /dev/null +++ b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/User.java @@ -0,0 +1,139 @@ +package io.swagger.client.model; + + + +import io.swagger.annotations.*; +import com.google.gson.annotations.SerializedName; + + + +@ApiModel(description = "") +public class User { + + @SerializedName("id") + private Long id = null; + @SerializedName("username") + private String username = null; + @SerializedName("firstName") + private String firstName = null; + @SerializedName("lastName") + private String lastName = null; + @SerializedName("email") + private String email = null; + @SerializedName("password") + private String password = null; + @SerializedName("phone") + private String phone = null; + @SerializedName("userStatus") + private Integer userStatus = null; + + + /** + **/ + @ApiModelProperty(value = "") + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + + + /** + **/ + @ApiModelProperty(value = "") + public String getUsername() { + return username; + } + public void setUsername(String username) { + this.username = username; + } + + + /** + **/ + @ApiModelProperty(value = "") + public String getFirstName() { + return firstName; + } + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + + /** + **/ + @ApiModelProperty(value = "") + public String getLastName() { + return lastName; + } + public void setLastName(String lastName) { + this.lastName = lastName; + } + + + /** + **/ + @ApiModelProperty(value = "") + public String getEmail() { + return email; + } + public void setEmail(String email) { + this.email = email; + } + + + /** + **/ + @ApiModelProperty(value = "") + public String getPassword() { + return password; + } + public void setPassword(String password) { + this.password = password; + } + + + /** + **/ + @ApiModelProperty(value = "") + public String getPhone() { + return phone; + } + public void setPhone(String phone) { + this.phone = phone; + } + + + /** + * User Status + **/ + @ApiModelProperty(value = "User Status") + public Integer getUserStatus() { + return userStatus; + } + public void setUserStatus(Integer userStatus) { + this.userStatus = userStatus; + } + + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class User {\n"); + + sb.append(" id: ").append(id).append("\n"); + sb.append(" username: ").append(username).append("\n"); + sb.append(" firstName: ").append(firstName).append("\n"); + sb.append(" lastName: ").append(lastName).append("\n"); + sb.append(" email: ").append(email).append("\n"); + sb.append(" password: ").append(password).append("\n"); + sb.append(" phone: ").append(phone).append("\n"); + sb.append(" userStatus: ").append(userStatus).append("\n"); + sb.append("}\n"); + return sb.toString(); + } +} + + diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/DeleteRequest.java b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/DeleteRequest.java new file mode 100644 index 00000000000..36b0c6ad07d --- /dev/null +++ b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/DeleteRequest.java @@ -0,0 +1,86 @@ +package io.swagger.client.request; + +import com.android.volley.AuthFailureError; +import com.android.volley.NetworkResponse; +import com.android.volley.Request; +import com.android.volley.Response; +import com.android.volley.VolleyLog; +import com.android.volley.toolbox.HttpHeaderParser; + +import org.apache.http.HttpEntity; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +public class DeleteRequest extends Request { + + HttpEntity entity; + + private final Response.Listener mListener; + + String contentType; + Map apiHeaders; + public DeleteRequest(String url, Map apiHeaders, String contentType, HttpEntity entity, Response.Listener listener, Response.ErrorListener errorListener) { + super(Method.DELETE, url, errorListener); + mListener = listener; + this.entity = entity; + this.contentType = contentType; + this.apiHeaders = apiHeaders; + } + + @Override + public String getBodyContentType() { + return entity.getContentType().getValue(); + } + + @Override + public byte[] getBody() throws AuthFailureError { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + try { + entity.writeTo(bos); + } + catch (IOException e) { + VolleyLog.e("IOException writing to ByteArrayOutputStream"); + } + return bos.toByteArray(); + } + + @Override + protected Response parseNetworkResponse(NetworkResponse response) { + String parsed; + try { + parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); + } catch (UnsupportedEncodingException e) { + parsed = new String(response.data); + } + return Response.success(parsed, HttpHeaderParser.parseCacheHeaders(response)); + } + + @Override + protected void deliverResponse(String response) { + mListener.onResponse(response); + } + + /* (non-Javadoc) + * @see com.android.volley.Request#getHeaders() + */ + @Override + public Map getHeaders() throws AuthFailureError { + Map headers = super.getHeaders(); + if (headers == null || headers.equals(Collections.emptyMap())) { + headers = new HashMap(); + } + if (apiHeaders != null && !apiHeaders.equals(Collections.emptyMap())) { + headers.putAll(apiHeaders); + } + if(contentType != null) { + headers.put("Content-Type", contentType); + } + + return headers; + } +} \ No newline at end of file diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/GetRequest.java b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/GetRequest.java new file mode 100644 index 00000000000..91be40c66a2 --- /dev/null +++ b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/GetRequest.java @@ -0,0 +1,39 @@ +package io.swagger.client.request; + +import com.android.volley.AuthFailureError; +import com.android.volley.Response; +import com.android.volley.toolbox.StringRequest; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +public class GetRequest extends StringRequest{ + Map apiHeaders; + String contentType; + + public GetRequest(String url, Map apiHeaders, String contentType, Response.Listener listener, Response.ErrorListener errorListener) { + super(Method.GET, url, listener, errorListener); + this.apiHeaders = apiHeaders; + this.contentType = contentType; + } + + /* (non-Javadoc) + * @see com.android.volley.Request#getHeaders() + */ + @Override + public Map getHeaders() throws AuthFailureError { + Map headers = super.getHeaders(); + if (headers == null || headers.equals(Collections.emptyMap())) { + headers = new HashMap(); + } + if (apiHeaders != null && !apiHeaders.equals(Collections.emptyMap())) { + headers.putAll(apiHeaders); + } + if(contentType != null) { + headers.put("Content-Type", contentType); + } + + return headers; + } +} \ No newline at end of file diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PatchRequest.java b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PatchRequest.java new file mode 100644 index 00000000000..206a745e5b2 --- /dev/null +++ b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PatchRequest.java @@ -0,0 +1,86 @@ +package io.swagger.client.request; + +import com.android.volley.AuthFailureError; +import com.android.volley.NetworkResponse; +import com.android.volley.Request; +import com.android.volley.Response; +import com.android.volley.VolleyLog; +import com.android.volley.toolbox.HttpHeaderParser; + +import org.apache.http.HttpEntity; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +public class PatchRequest extends Request { + + HttpEntity entity; + + private final Response.Listener mListener; + + String contentType; + Map apiHeaders; + public PatchRequest(String url, Map apiHeaders, String contentType, HttpEntity entity, Response.Listener listener, Response.ErrorListener errorListener) { + super(Method.PATCH, url, errorListener); + mListener = listener; + this.entity = entity; + this.contentType = contentType; + this.apiHeaders = apiHeaders; + } + + @Override + public String getBodyContentType() { + return entity.getContentType().getValue(); + } + + @Override + public byte[] getBody() throws AuthFailureError { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + try { + entity.writeTo(bos); + } + catch (IOException e) { + VolleyLog.e("IOException writing to ByteArrayOutputStream"); + } + return bos.toByteArray(); + } + + @Override + protected Response parseNetworkResponse(NetworkResponse response) { + String parsed; + try { + parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); + } catch (UnsupportedEncodingException e) { + parsed = new String(response.data); + } + return Response.success(parsed, HttpHeaderParser.parseCacheHeaders(response)); + } + + @Override + protected void deliverResponse(String response) { + mListener.onResponse(response); + } + + /* (non-Javadoc) + * @see com.android.volley.Request#getHeaders() + */ + @Override + public Map getHeaders() throws AuthFailureError { + Map headers = super.getHeaders(); + if (headers == null || headers.equals(Collections.emptyMap())) { + headers = new HashMap(); + } + if (apiHeaders != null && !apiHeaders.equals(Collections.emptyMap())) { + headers.putAll(apiHeaders); + } + if(contentType != null) { + headers.put("Content-Type", contentType); + } + + return headers; + } +} \ No newline at end of file From 69e1eecee0f721419cebc6c33fdff0658a52d8b7 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Thu, 24 Dec 2015 19:42:03 +0100 Subject: [PATCH 093/623] Added petstore sample [android-volley] --- .../swagger/client/request/PostRequest.java | 86 +++++++++++++++++++ .../io/swagger/client/request/PutRequest.java | 86 +++++++++++++++++++ 2 files changed, 172 insertions(+) create mode 100644 bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PostRequest.java create mode 100644 bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PutRequest.java diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PostRequest.java b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PostRequest.java new file mode 100644 index 00000000000..97d0eb16b1a --- /dev/null +++ b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PostRequest.java @@ -0,0 +1,86 @@ +package io.swagger.client.request; + +import com.android.volley.AuthFailureError; +import com.android.volley.NetworkResponse; +import com.android.volley.Request; +import com.android.volley.Response; +import com.android.volley.VolleyLog; +import com.android.volley.toolbox.HttpHeaderParser; + +import org.apache.http.HttpEntity; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +public class PostRequest extends Request { + + HttpEntity entity; + + private final Response.Listener mListener; + + String contentType; + Map apiHeaders; + public PostRequest(String url, Map apiHeaders, String contentType, HttpEntity entity, Response.Listener listener, Response.ErrorListener errorListener) { + super(Method.POST, url, errorListener); + mListener = listener; + this.entity = entity; + this.contentType = contentType; + this.apiHeaders = apiHeaders; + } + + @Override + public String getBodyContentType() { + return entity.getContentType().getValue(); + } + + @Override + public byte[] getBody() throws AuthFailureError { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + try { + entity.writeTo(bos); + } + catch (IOException e) { + VolleyLog.e("IOException writing to ByteArrayOutputStream"); + } + return bos.toByteArray(); + } + + @Override + protected Response parseNetworkResponse(NetworkResponse response) { + String parsed; + try { + parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); + } catch (UnsupportedEncodingException e) { + parsed = new String(response.data); + } + return Response.success(parsed, HttpHeaderParser.parseCacheHeaders(response)); + } + + @Override + protected void deliverResponse(String response) { + mListener.onResponse(response); + } + + /* (non-Javadoc) + * @see com.android.volley.Request#getHeaders() + */ + @Override + public Map getHeaders() throws AuthFailureError { + Map headers = super.getHeaders(); + if (headers == null || headers.equals(Collections.emptyMap())) { + headers = new HashMap(); + } + if (apiHeaders != null && !apiHeaders.equals(Collections.emptyMap())) { + headers.putAll(apiHeaders); + } + if(contentType != null) { + headers.put("Content-Type", contentType); + } + + return headers; + } +} \ No newline at end of file diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PutRequest.java b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PutRequest.java new file mode 100644 index 00000000000..0a7b40e510e --- /dev/null +++ b/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PutRequest.java @@ -0,0 +1,86 @@ +package io.swagger.client.request; + +import com.android.volley.AuthFailureError; +import com.android.volley.NetworkResponse; +import com.android.volley.Request; +import com.android.volley.Response; +import com.android.volley.VolleyLog; +import com.android.volley.toolbox.HttpHeaderParser; + +import org.apache.http.HttpEntity; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +public class PutRequest extends Request { + + HttpEntity entity; + + private final Response.Listener mListener; + + String contentType; + Map apiHeaders; + public PutRequest(String url, Map apiHeaders, String contentType, HttpEntity entity, Response.Listener listener, Response.ErrorListener errorListener) { + super(Method.PUT, url, errorListener); + mListener = listener; + this.entity = entity; + this.contentType = contentType; + this.apiHeaders = apiHeaders; + } + + @Override + public String getBodyContentType() { + return entity.getContentType().getValue(); + } + + @Override + public byte[] getBody() throws AuthFailureError { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + try { + entity.writeTo(bos); + } + catch (IOException e) { + VolleyLog.e("IOException writing to ByteArrayOutputStream"); + } + return bos.toByteArray(); + } + + @Override + protected Response parseNetworkResponse(NetworkResponse response) { + String parsed; + try { + parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); + } catch (UnsupportedEncodingException e) { + parsed = new String(response.data); + } + return Response.success(parsed, HttpHeaderParser.parseCacheHeaders(response)); + } + + @Override + protected void deliverResponse(String response) { + mListener.onResponse(response); + } + + /* (non-Javadoc) + * @see com.android.volley.Request#getHeaders() + */ + @Override + public Map getHeaders() throws AuthFailureError { + Map headers = super.getHeaders(); + if (headers == null || headers.equals(Collections.emptyMap())) { + headers = new HashMap(); + } + if (apiHeaders != null && !apiHeaders.equals(Collections.emptyMap())) { + headers.putAll(apiHeaders); + } + if(contentType != null) { + headers.put("Content-Type", contentType); + } + + return headers; + } +} \ No newline at end of file From 58cb5716cb871b087ae3f928d47c051c1345a364 Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Sat, 26 Dec 2015 11:51:53 +0100 Subject: [PATCH 094/623] move android-volley generated sample --- bin/android-volley-petstore.sh | 2 +- .../client/petstore/android-volley/build.gradle | 0 .../client/petstore/android-volley/src/main/AndroidManifest.xml | 0 .../src/main/java/io/swagger/client/ApiException.java | 0 .../src/main/java/io/swagger/client/ApiInvoker.java | 0 .../src/main/java/io/swagger/client/JsonUtil.java | 0 .../android-volley/src/main/java/io/swagger/client/Pair.java | 0 .../src/main/java/io/swagger/client/Responses.java | 0 .../src/main/java/io/swagger/client/api/PetApi.java | 0 .../src/main/java/io/swagger/client/api/StoreApi.java | 0 .../src/main/java/io/swagger/client/api/UserApi.java | 0 .../src/main/java/io/swagger/client/auth/ApiKeyAuth.java | 0 .../src/main/java/io/swagger/client/auth/Authentication.java | 0 .../src/main/java/io/swagger/client/model/Category.java | 0 .../src/main/java/io/swagger/client/model/Order.java | 0 .../src/main/java/io/swagger/client/model/Pet.java | 0 .../src/main/java/io/swagger/client/model/Tag.java | 0 .../src/main/java/io/swagger/client/model/User.java | 0 .../src/main/java/io/swagger/client/request/DeleteRequest.java | 0 .../src/main/java/io/swagger/client/request/GetRequest.java | 0 .../src/main/java/io/swagger/client/request/PatchRequest.java | 0 .../src/main/java/io/swagger/client/request/PostRequest.java | 0 .../src/main/java/io/swagger/client/request/PutRequest.java | 0 23 files changed, 1 insertion(+), 1 deletion(-) rename {bin/samples => samples}/client/petstore/android-volley/build.gradle (100%) rename {bin/samples => samples}/client/petstore/android-volley/src/main/AndroidManifest.xml (100%) rename {bin/samples => samples}/client/petstore/android-volley/src/main/java/io/swagger/client/ApiException.java (100%) rename {bin/samples => samples}/client/petstore/android-volley/src/main/java/io/swagger/client/ApiInvoker.java (100%) rename {bin/samples => samples}/client/petstore/android-volley/src/main/java/io/swagger/client/JsonUtil.java (100%) rename {bin/samples => samples}/client/petstore/android-volley/src/main/java/io/swagger/client/Pair.java (100%) rename {bin/samples => samples}/client/petstore/android-volley/src/main/java/io/swagger/client/Responses.java (100%) rename {bin/samples => samples}/client/petstore/android-volley/src/main/java/io/swagger/client/api/PetApi.java (100%) rename {bin/samples => samples}/client/petstore/android-volley/src/main/java/io/swagger/client/api/StoreApi.java (100%) rename {bin/samples => samples}/client/petstore/android-volley/src/main/java/io/swagger/client/api/UserApi.java (100%) rename {bin/samples => samples}/client/petstore/android-volley/src/main/java/io/swagger/client/auth/ApiKeyAuth.java (100%) rename {bin/samples => samples}/client/petstore/android-volley/src/main/java/io/swagger/client/auth/Authentication.java (100%) rename {bin/samples => samples}/client/petstore/android-volley/src/main/java/io/swagger/client/model/Category.java (100%) rename {bin/samples => samples}/client/petstore/android-volley/src/main/java/io/swagger/client/model/Order.java (100%) rename {bin/samples => samples}/client/petstore/android-volley/src/main/java/io/swagger/client/model/Pet.java (100%) rename {bin/samples => samples}/client/petstore/android-volley/src/main/java/io/swagger/client/model/Tag.java (100%) rename {bin/samples => samples}/client/petstore/android-volley/src/main/java/io/swagger/client/model/User.java (100%) rename {bin/samples => samples}/client/petstore/android-volley/src/main/java/io/swagger/client/request/DeleteRequest.java (100%) rename {bin/samples => samples}/client/petstore/android-volley/src/main/java/io/swagger/client/request/GetRequest.java (100%) rename {bin/samples => samples}/client/petstore/android-volley/src/main/java/io/swagger/client/request/PatchRequest.java (100%) rename {bin/samples => samples}/client/petstore/android-volley/src/main/java/io/swagger/client/request/PostRequest.java (100%) rename {bin/samples => samples}/client/petstore/android-volley/src/main/java/io/swagger/client/request/PutRequest.java (100%) diff --git a/bin/android-volley-petstore.sh b/bin/android-volley-petstore.sh index f8ba6753976..ab6ab7d9f08 100644 --- a/bin/android-volley-petstore.sh +++ b/bin/android-volley-petstore.sh @@ -17,7 +17,7 @@ if [ ! -d "${APP_DIR}" ]; then APP_DIR=`cd "${APP_DIR}"; pwd` fi -executable="../modules/swagger-codegen-cli/target/swagger-codegen-cli.jar" +executable="./modules/swagger-codegen-cli/target/swagger-codegen-cli.jar" if [ ! -f "$executable" ] then diff --git a/bin/samples/client/petstore/android-volley/build.gradle b/samples/client/petstore/android-volley/build.gradle similarity index 100% rename from bin/samples/client/petstore/android-volley/build.gradle rename to samples/client/petstore/android-volley/build.gradle diff --git a/bin/samples/client/petstore/android-volley/src/main/AndroidManifest.xml b/samples/client/petstore/android-volley/src/main/AndroidManifest.xml similarity index 100% rename from bin/samples/client/petstore/android-volley/src/main/AndroidManifest.xml rename to samples/client/petstore/android-volley/src/main/AndroidManifest.xml diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/ApiException.java b/samples/client/petstore/android-volley/src/main/java/io/swagger/client/ApiException.java similarity index 100% rename from bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/ApiException.java rename to samples/client/petstore/android-volley/src/main/java/io/swagger/client/ApiException.java diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/ApiInvoker.java b/samples/client/petstore/android-volley/src/main/java/io/swagger/client/ApiInvoker.java similarity index 100% rename from bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/ApiInvoker.java rename to samples/client/petstore/android-volley/src/main/java/io/swagger/client/ApiInvoker.java diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/JsonUtil.java b/samples/client/petstore/android-volley/src/main/java/io/swagger/client/JsonUtil.java similarity index 100% rename from bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/JsonUtil.java rename to samples/client/petstore/android-volley/src/main/java/io/swagger/client/JsonUtil.java diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/Pair.java b/samples/client/petstore/android-volley/src/main/java/io/swagger/client/Pair.java similarity index 100% rename from bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/Pair.java rename to samples/client/petstore/android-volley/src/main/java/io/swagger/client/Pair.java diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/Responses.java b/samples/client/petstore/android-volley/src/main/java/io/swagger/client/Responses.java similarity index 100% rename from bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/Responses.java rename to samples/client/petstore/android-volley/src/main/java/io/swagger/client/Responses.java diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/PetApi.java b/samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/PetApi.java similarity index 100% rename from bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/PetApi.java rename to samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/PetApi.java diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/StoreApi.java b/samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/StoreApi.java similarity index 100% rename from bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/StoreApi.java rename to samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/StoreApi.java diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/UserApi.java b/samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/UserApi.java similarity index 100% rename from bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/UserApi.java rename to samples/client/petstore/android-volley/src/main/java/io/swagger/client/api/UserApi.java diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/auth/ApiKeyAuth.java b/samples/client/petstore/android-volley/src/main/java/io/swagger/client/auth/ApiKeyAuth.java similarity index 100% rename from bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/auth/ApiKeyAuth.java rename to samples/client/petstore/android-volley/src/main/java/io/swagger/client/auth/ApiKeyAuth.java diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/auth/Authentication.java b/samples/client/petstore/android-volley/src/main/java/io/swagger/client/auth/Authentication.java similarity index 100% rename from bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/auth/Authentication.java rename to samples/client/petstore/android-volley/src/main/java/io/swagger/client/auth/Authentication.java diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Category.java b/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Category.java similarity index 100% rename from bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Category.java rename to samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Category.java diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Order.java b/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Order.java similarity index 100% rename from bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Order.java rename to samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Order.java diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Pet.java b/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Pet.java similarity index 100% rename from bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Pet.java rename to samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Pet.java diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Tag.java b/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Tag.java similarity index 100% rename from bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Tag.java rename to samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/Tag.java diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/User.java b/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/User.java similarity index 100% rename from bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/User.java rename to samples/client/petstore/android-volley/src/main/java/io/swagger/client/model/User.java diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/DeleteRequest.java b/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/DeleteRequest.java similarity index 100% rename from bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/DeleteRequest.java rename to samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/DeleteRequest.java diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/GetRequest.java b/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/GetRequest.java similarity index 100% rename from bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/GetRequest.java rename to samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/GetRequest.java diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PatchRequest.java b/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PatchRequest.java similarity index 100% rename from bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PatchRequest.java rename to samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PatchRequest.java diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PostRequest.java b/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PostRequest.java similarity index 100% rename from bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PostRequest.java rename to samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PostRequest.java diff --git a/bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PutRequest.java b/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PutRequest.java similarity index 100% rename from bin/samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PutRequest.java rename to samples/client/petstore/android-volley/src/main/java/io/swagger/client/request/PutRequest.java From 29c05b5d65946d960f4e46fa4abcec2412a6c8ab Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Sun, 27 Dec 2015 12:36:19 +0100 Subject: [PATCH 095/623] Added string responses [android-volley] --- .../src/main/resources/android-volley/api.mustache | 2 +- .../src/main/resources/android-volley/responses.mustache | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache index c1fbacf7e23..ccd12fd67c5 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/api.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/api.mustache @@ -50,7 +50,7 @@ public class {{classname}} { {{#allParams}} * @param {{paramName}} {{description}} {{/allParams}} * @return {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}} */ - public void {{nickname}} ({{#allParams}}{{{dataType}}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{^hasMore}}, {{/hasMore}}{{/allParams}}final {{#returnBaseType}}Responses.{{returnBaseType}}{{#isListContainer}}List{{/isListContainer}}Response{{/returnBaseType}}{{^returnBaseType}}Response.Listener{{/returnBaseType}} responseListener, final Response.ErrorListener errorListener) { + public void {{nickname}} ({{#allParams}}{{{dataType}}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{^hasMore}}, {{/hasMore}}{{/allParams}}final {{#returnBaseType}}Responses.{{returnBaseType}}{{#isListContainer}}List{{/isListContainer}}Response{{/returnBaseType}}{{^returnBaseType}}Responses.StringResponse{{/returnBaseType}} responseListener, final Response.ErrorListener errorListener) { Object postBody = {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}}; {{#allParams}}{{#required}} diff --git a/modules/swagger-codegen/src/main/resources/android-volley/responses.mustache b/modules/swagger-codegen/src/main/resources/android-volley/responses.mustache index bb4d463e2c5..7cb955f7239 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/responses.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/responses.mustache @@ -14,4 +14,11 @@ public class Responses { } {{/model}} {{/models}} + public static interface StringResponse { + public void onResponse(String response); + } + + public static interface StringListResponse { + public void onResponse(List stringList); + } } \ No newline at end of file From e864994b62d826d99a2014c80e1128113936168f Mon Sep 17 00:00:00 2001 From: Andy Lowry Date: Tue, 29 Dec 2015 11:58:28 -0500 Subject: [PATCH 096/623] [Akka-Scala] Fix #1781 re specs w/o security defs Per issue recommendation, fix is to DefaultCodegen#fromSecurity, which now returns an empty list rather than null if no securityDefinitions property is present in the swagger spec --- .../src/main/java/io/swagger/codegen/DefaultCodegen.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java index afeb5cd62d5..a4bc5c54a20 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java @@ -1602,7 +1602,7 @@ public class DefaultCodegen { */ public List fromSecurity(Map schemes) { if (schemes == null) { - return null; + return Collections.emptyList(); } List secs = new ArrayList(schemes.size()); From b41efdab5ff6cedad9c3dcdeb2c578f90f972d8f Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Sun, 27 Dec 2015 13:06:17 +0100 Subject: [PATCH 097/623] updated android-volley build.gradle --- .../languages/AndroidVolleyClientCodegen.java | 2 ++ .../AndroidVolleyClientOptionsTest.java | 18 +++++++++--------- .../AndroidVolleyClientOptionsProvider.java | 2 ++ .../petstore/android-volley/build.gradle | 8 +++++--- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java index e595fb6a223..9eeb9618b48 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidVolleyClientCodegen.java @@ -62,6 +62,8 @@ public class AndroidVolleyClientCodegen extends DefaultCodegen implements Codege instantiationTypes.put("array", "ArrayList"); instantiationTypes.put("map", "HashMap"); + cliOptions.add(new CliOption(CodegenConstants.MODEL_PACKAGE, CodegenConstants.MODEL_PACKAGE_DESC)); + cliOptions.add(new CliOption(CodegenConstants.API_PACKAGE, CodegenConstants.API_PACKAGE_DESC)); cliOptions.add(new CliOption(CodegenConstants.INVOKER_PACKAGE, CodegenConstants.INVOKER_PACKAGE_DESC)); cliOptions.add(new CliOption(CodegenConstants.GROUP_ID, "groupId for use in the generated build.gradle and pom.xml")); cliOptions.add(new CliOption(CodegenConstants.ARTIFACT_ID, "artifactId for use in the generated build.gradle and pom.xml")); diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/androidvolley/AndroidVolleyClientOptionsTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/androidvolley/AndroidVolleyClientOptionsTest.java index 36946390fde..58711d9a3f8 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/androidvolley/AndroidVolleyClientOptionsTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/androidvolley/AndroidVolleyClientOptionsTest.java @@ -25,23 +25,23 @@ public class AndroidVolleyClientOptionsTest extends AbstractOptionsTest { @Override protected void setExpectations() { new Expectations(clientCodegen) {{ - clientCodegen.setModelPackage(AndroidClientOptionsProvider.MODEL_PACKAGE_VALUE); + clientCodegen.setModelPackage(AndroidVolleyClientOptionsProvider.MODEL_PACKAGE_VALUE); times = 1; - clientCodegen.setApiPackage(AndroidClientOptionsProvider.API_PACKAGE_VALUE); + clientCodegen.setApiPackage(AndroidVolleyClientOptionsProvider.API_PACKAGE_VALUE); times = 1; - clientCodegen.setSortParamsByRequiredFlag(Boolean.valueOf(AndroidClientOptionsProvider.SORT_PARAMS_VALUE)); + clientCodegen.setSortParamsByRequiredFlag(Boolean.valueOf(AndroidVolleyClientOptionsProvider.SORT_PARAMS_VALUE)); times = 1; - clientCodegen.setInvokerPackage(AndroidClientOptionsProvider.INVOKER_PACKAGE_VALUE); + clientCodegen.setInvokerPackage(AndroidVolleyClientOptionsProvider.INVOKER_PACKAGE_VALUE); times = 1; - clientCodegen.setGroupId(AndroidClientOptionsProvider.GROUP_ID_VALUE); + clientCodegen.setGroupId(AndroidVolleyClientOptionsProvider.GROUP_ID_VALUE); times = 1; - clientCodegen.setArtifactId(AndroidClientOptionsProvider.ARTIFACT_ID_VALUE); + clientCodegen.setArtifactId(AndroidVolleyClientOptionsProvider.ARTIFACT_ID_VALUE); times = 1; - clientCodegen.setArtifactVersion(AndroidClientOptionsProvider.ARTIFACT_VERSION_VALUE); + clientCodegen.setArtifactVersion(AndroidVolleyClientOptionsProvider.ARTIFACT_VERSION_VALUE); times = 1; - clientCodegen.setSourceFolder(AndroidClientOptionsProvider.SOURCE_FOLDER_VALUE); + clientCodegen.setSourceFolder(AndroidVolleyClientOptionsProvider.SOURCE_FOLDER_VALUE); times = 1; - clientCodegen.setUseAndroidMavenGradlePlugin(Boolean.valueOf(AndroidClientOptionsProvider.ANDROID_MAVEN_GRADLE_PLUGIN_VALUE)); + clientCodegen.setUseAndroidMavenGradlePlugin(Boolean.valueOf(AndroidVolleyClientOptionsProvider.ANDROID_MAVEN_GRADLE_PLUGIN_VALUE)); times = 1; }}; } diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/AndroidVolleyClientOptionsProvider.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/AndroidVolleyClientOptionsProvider.java index 549d56b42fd..e67948935cc 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/AndroidVolleyClientOptionsProvider.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/AndroidVolleyClientOptionsProvider.java @@ -13,6 +13,7 @@ public class AndroidVolleyClientOptionsProvider implements OptionsProvider { public static final String API_PACKAGE_VALUE = "apiPackage"; public static final String INVOKER_PACKAGE_VALUE = "io.swagger.client.test"; public static final String SORT_PARAMS_VALUE = "false"; + public static final String ENSURE_UNIQUE_PARAMS_VALUE = "true"; public static final String GROUP_ID_VALUE = "io.swagger.test"; public static final String ARTIFACT_VERSION_VALUE = "1.0.0-SNAPSHOT"; public static final String SOURCE_FOLDER_VALUE = "src/main/java/test"; @@ -29,6 +30,7 @@ public class AndroidVolleyClientOptionsProvider implements OptionsProvider { return builder.put(CodegenConstants.MODEL_PACKAGE, MODEL_PACKAGE_VALUE) .put(CodegenConstants.API_PACKAGE, API_PACKAGE_VALUE) .put(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG, SORT_PARAMS_VALUE) + .put(CodegenConstants.ENSURE_UNIQUE_PARAMS, ENSURE_UNIQUE_PARAMS_VALUE) .put(CodegenConstants.INVOKER_PACKAGE, INVOKER_PACKAGE_VALUE) .put(CodegenConstants.GROUP_ID, GROUP_ID_VALUE) .put(CodegenConstants.ARTIFACT_ID, ARTIFACT_ID_VALUE) diff --git a/samples/client/petstore/android-volley/build.gradle b/samples/client/petstore/android-volley/build.gradle index 36b8652f535..13edc8fdab2 100644 --- a/samples/client/petstore/android-volley/build.gradle +++ b/samples/client/petstore/android-volley/build.gradle @@ -28,11 +28,11 @@ apply plugin: 'com.github.dcendents.android-maven' android { - compileSdkVersion 22 - buildToolsVersion '22.0.0' + compileSdkVersion 23 + buildToolsVersion '23.0.2' defaultConfig { minSdkVersion 14 - targetSdkVersion 22 + targetSdkVersion 23 } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 @@ -57,6 +57,7 @@ ext { gson_version = "2.3.1" httpclient_version = "4.3.3" junit_version = "4.8.1" + volley_version = "1.0.19" } dependencies { @@ -64,6 +65,7 @@ dependencies { compile "com.google.code.gson:gson:$gson_version" compile "org.apache.httpcomponents:httpcore:$httpclient_version" compile "org.apache.httpcomponents:httpmime:$httpclient_version" + compile "com.mcxiaoke.volley:library:${volley_version}@aar" testCompile "junit:junit:$junit_version" } From ffe12b0620b61ad6a0ca957b3941e07f1f811ac4 Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Tue, 29 Dec 2015 23:28:09 -0800 Subject: [PATCH 098/623] added library, date library --- .../codegen/languages/JaxRSServerCodegen.java | 69 ++++++++++++++++++- .../codegen/jaxrs/JaxRSServerOptionsTest.java | 2 + .../options/JaxRSServerOptionsProvider.java | 18 +++++ 3 files changed, 88 insertions(+), 1 deletion(-) 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 a91b405d36b..53a7bbffcab 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,8 +9,10 @@ import java.io.File; import java.util.*; public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConfig { + protected String dateLibrary = "default"; protected String title = "Swagger Server"; + public static final String DATE_LIBRARY = "dateLibrary"; public JaxRSServerCodegen() { super.processOpts(); @@ -24,7 +26,6 @@ public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConf apiTemplateFiles.put("apiService.mustache", ".java"); apiTemplateFiles.put("apiServiceImpl.mustache", ".java"); apiTemplateFiles.put("apiServiceFactory.mustache", ".java"); - embeddedTemplateDir = templateDir = "JavaJaxRS"; apiPackage = System.getProperty("swagger.codegen.jaxrs.apipackage", "io.swagger.api"); modelPackage = System.getProperty("swagger.codegen.jaxrs.modelpackage", "io.swagger.model"); @@ -33,6 +34,34 @@ public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConf additionalProperties.put(CodegenConstants.ARTIFACT_ID, artifactId); additionalProperties.put(CodegenConstants.ARTIFACT_VERSION, artifactVersion); additionalProperties.put("title", title); + + embeddedTemplateDir = templateDir = "JavaJaxRS" + File.separator + "jersey1_18"; + + for(int i = 0; i < cliOptions.size(); i++) { + if(CodegenConstants.LIBRARY.equals(cliOptions.get(i).getOpt())) { + cliOptions.remove(i); + break; + } + } + + 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); + + Map supportedLibraries = new LinkedHashMap(); + + supportedLibraries.put(DEFAULT_LIBRARY, "Jersey core 1.18.1"); +// supportedLibraries.put("jersey2", "Jersey2 core library 2.x"); + library.setEnum(supportedLibraries); + + cliOptions.add(library); } @Override @@ -54,6 +83,10 @@ public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConf public void processOpts() { super.processOpts(); +// if("jersey2".equals(getLibrary())) { +// embeddedTemplateDir = templateDir = "JavaJaxRS" + File.separator + "jersey2"; +// } + supportingFiles.clear(); supportingFiles.add(new SupportingFile("pom.mustache", "", "pom.xml")); supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); @@ -68,6 +101,36 @@ public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConf supportingFiles.add(new SupportingFile("web.mustache", ("src/main/webapp/WEB-INF"), "web.xml")); + if (additionalProperties.containsKey("dateLibrary")) { + 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("date-time", "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 @@ -237,4 +300,8 @@ 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/jaxrs/JaxRSServerOptionsTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxRSServerOptionsTest.java index ac6288b7f1e..055bb721ad8 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxRSServerOptionsTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxRSServerOptionsTest.java @@ -49,6 +49,8 @@ public class JaxRSServerOptionsTest extends JavaClientOptionsTest { times = 1; clientCodegen.setFullJavaUtil(Boolean.valueOf(JaxRSServerOptionsProvider.FULL_JAVA_UTIL_VALUE)); times = 1; + clientCodegen.setDateLibrary("joda"); + times = 1; }}; } } 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 0b735363b77..ae68a5dfb83 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,6 +1,13 @@ package io.swagger.codegen.options; +import com.google.common.collect.ImmutableMap; +import io.swagger.codegen.languages.JaxRSServerCodegen; + +import java.util.Map; + public class JaxRSServerOptionsProvider extends JavaOptionsProvider { + public static final String JODA_DATE_LIBRARY = "joda"; + @Override public boolean isServer() { return true; @@ -10,4 +17,15 @@ public class JaxRSServerOptionsProvider extends JavaOptionsProvider { public String getLanguage() { return "jaxrs"; } + + @Override + public Map createOptions() { + Map options = super.createOptions(); + + ImmutableMap.Builder builder = new ImmutableMap.Builder(); + builder.putAll(options) + .put(JaxRSServerCodegen.DATE_LIBRARY, "joda"); + + return builder.build(); + } } From 29f928d644ff001557084d3be2d3472682d11fb9 Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Tue, 29 Dec 2015 23:28:31 -0800 Subject: [PATCH 099/623] prepare for multiple jaxrs libraries --- config-feign.json | 1 - .../{ => jersey1_18}/ApiException.mustache | 0 .../{ => jersey1_18}/ApiOriginFilter.mustache | 0 .../ApiResponseMessage.mustache | 0 .../jersey1_18/JodaDateTimeProvider.mustache | 44 +++++++++++++++++++ .../jersey1_18/JodaLocalDateProvider.mustache | 44 +++++++++++++++++++ .../jersey1_18/LocalDateProvider.mustache | 44 +++++++++++++++++++ .../jersey1_18/LocalDateTimeProvider.mustache | 44 +++++++++++++++++++ .../NotFoundException.mustache | 0 .../{ => jersey1_18}/README.mustache | 0 .../{ => jersey1_18}/allowableValues.mustache | 0 .../JavaJaxRS/{ => jersey1_18}/api.mustache | 0 .../{ => jersey1_18}/apiService.mustache | 0 .../apiServiceFactory.mustache | 0 .../{ => jersey1_18}/apiServiceImpl.mustache | 0 .../{ => jersey1_18}/bodyParams.mustache | 0 .../{ => jersey1_18}/formParams.mustache | 0 .../generatedAnnotation.mustache | 0 .../{ => jersey1_18}/headerParams.mustache | 0 .../JavaJaxRS/{ => jersey1_18}/model.mustache | 0 .../{ => jersey1_18}/pathParams.mustache | 0 .../JavaJaxRS/{ => jersey1_18}/pom.mustache | 0 .../{ => jersey1_18}/project/build.properties | 0 .../{ => jersey1_18}/project/plugins.sbt | 0 .../{ => jersey1_18}/queryParams.mustache | 0 .../{ => jersey1_18}/returnTypes.mustache | 0 .../serviceBodyParams.mustache | 0 .../serviceFormParams.mustache | 0 .../serviceHeaderParams.mustache | 0 .../servicePathParams.mustache | 0 .../serviceQueryParams.mustache | 0 .../JavaJaxRS/{ => jersey1_18}/web.mustache | 0 .../java/jaxrs/AllowableValuesTest.java | 2 +- 33 files changed, 177 insertions(+), 2 deletions(-) delete mode 100644 config-feign.json rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/ApiException.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/ApiOriginFilter.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/ApiResponseMessage.mustache (100%) create mode 100644 modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/JodaDateTimeProvider.mustache create mode 100644 modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/JodaLocalDateProvider.mustache create mode 100644 modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/LocalDateProvider.mustache create mode 100644 modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/LocalDateTimeProvider.mustache rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/NotFoundException.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/README.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/allowableValues.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/api.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/apiService.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/apiServiceFactory.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/apiServiceImpl.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/bodyParams.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/formParams.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/generatedAnnotation.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/headerParams.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/model.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/pathParams.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/pom.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/project/build.properties (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/project/plugins.sbt (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/queryParams.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/returnTypes.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/serviceBodyParams.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/serviceFormParams.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/serviceHeaderParams.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/servicePathParams.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/serviceQueryParams.mustache (100%) rename modules/swagger-codegen/src/main/resources/JavaJaxRS/{ => jersey1_18}/web.mustache (100%) diff --git a/config-feign.json b/config-feign.json deleted file mode 100644 index 3b8c48c3caa..00000000000 --- a/config-feign.json +++ /dev/null @@ -1 +0,0 @@ -{"library":"feign"} \ No newline at end of file diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/ApiException.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/ApiException.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/ApiException.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/ApiException.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/ApiOriginFilter.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/ApiOriginFilter.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/ApiOriginFilter.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/ApiOriginFilter.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/ApiResponseMessage.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/ApiResponseMessage.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/ApiResponseMessage.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/ApiResponseMessage.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/JodaDateTimeProvider.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/JodaDateTimeProvider.mustache new file mode 100644 index 00000000000..f9421790983 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/JodaDateTimeProvider.mustache @@ -0,0 +1,44 @@ +package {{apiPackage}}; + +import com.sun.jersey.core.spi.component.ComponentContext; +import com.sun.jersey.spi.inject.Injectable; +import com.sun.jersey.spi.inject.PerRequestTypeInjectableProvider; + +import javax.ws.rs.QueryParam; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.Status; +import javax.ws.rs.core.UriInfo; +import javax.ws.rs.ext.Provider; +import org.joda.time.DateTime; +import java.util.List; + +@Provider +public class JodaDateTimeProvider extends PerRequestTypeInjectableProvider { + private final UriInfo uriInfo; + + public JodaDateTimeProvider(@Context UriInfo uriInfo) { + super(DateTime.class); + this.uriInfo = uriInfo; + } + + @Override + public Injectable getInjectable(final ComponentContext cc, final QueryParam a) { + return new Injectable() { + @Override + public DateTime getValue() { + final List values = uriInfo.getQueryParameters().get(a.value()); + + if (values == null || values.isEmpty()) + return null; + if (values.size() > 1) { + throw new WebApplicationException(Response.status(Status.BAD_REQUEST). + entity(a.value() + " cannot contain multiple values").build()); + } + + return DateTime.parse(values.get(0)); + } + }; + } +} \ No newline at end of file diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/JodaLocalDateProvider.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/JodaLocalDateProvider.mustache new file mode 100644 index 00000000000..7bd4027e63d --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/JodaLocalDateProvider.mustache @@ -0,0 +1,44 @@ +package {{apiPackage}}; + +import com.sun.jersey.core.spi.component.ComponentContext; +import com.sun.jersey.spi.inject.Injectable; +import com.sun.jersey.spi.inject.PerRequestTypeInjectableProvider; + +import javax.ws.rs.QueryParam; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.Status; +import javax.ws.rs.core.UriInfo; +import javax.ws.rs.ext.Provider; +import org.joda.time.LocalDate; +import java.util.List; + +@Provider +public class JodaLocalDateProvider extends PerRequestTypeInjectableProvider { + private final UriInfo uriInfo; + + public JodaLocalDateProvider(@Context UriInfo uriInfo) { + super(LocalDate.class); + this.uriInfo = uriInfo; + } + + @Override + public Injectable getInjectable(final ComponentContext cc, final QueryParam a) { + return new Injectable() { + @Override + public LocalDate getValue() { + final List values = uriInfo.getQueryParameters().get(a.value()); + + if (values == null || values.isEmpty()) + return null; + if (values.size() > 1) { + throw new WebApplicationException(Response.status(Status.BAD_REQUEST). + entity(a.value() + " cannot contain multiple values").build()); + } + + return LocalDate.parse(values.get(0)); + } + }; + } +} \ No newline at end of file diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/LocalDateProvider.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/LocalDateProvider.mustache new file mode 100644 index 00000000000..8c4cd4cbd15 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/LocalDateProvider.mustache @@ -0,0 +1,44 @@ +package {{apiPackage}}; + +import com.sun.jersey.core.spi.component.ComponentContext; +import com.sun.jersey.spi.inject.Injectable; +import com.sun.jersey.spi.inject.PerRequestTypeInjectableProvider; + +import javax.ws.rs.QueryParam; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.Status; +import javax.ws.rs.core.UriInfo; +import javax.ws.rs.ext.Provider; +import java.time.LocalDate; +import java.util.List; + +@Provider +public class LocalDateProvider extends PerRequestTypeInjectableProvider { + private final UriInfo uriInfo; + + public LocalDateProvider(@Context UriInfo uriInfo) { + super(LocalDate.class); + this.uriInfo = uriInfo; + } + + @Override + public Injectable getInjectable(final ComponentContext cc, final QueryParam a) { + return new Injectable() { + @Override + public LocalDate getValue() { + final List values = uriInfo.getQueryParameters().get(a.value()); + + if (values == null || values.isEmpty()) + return null; + if (values.size() > 1) { + throw new WebApplicationException(Response.status(Status.BAD_REQUEST). + entity(a.value() + " cannot contain multiple values").build()); + } + + return LocalDate.parse(values.get(0)); + } + }; + } +} \ No newline at end of file diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/LocalDateTimeProvider.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/LocalDateTimeProvider.mustache new file mode 100644 index 00000000000..93bb6f19d50 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/LocalDateTimeProvider.mustache @@ -0,0 +1,44 @@ +package {{apiPackage}}; + +import com.sun.jersey.core.spi.component.ComponentContext; +import com.sun.jersey.spi.inject.Injectable; +import com.sun.jersey.spi.inject.PerRequestTypeInjectableProvider; + +import javax.ws.rs.QueryParam; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.Status; +import javax.ws.rs.core.UriInfo; +import javax.ws.rs.ext.Provider; +import java.time.LocalDateTime; +import java.util.List; + +@Provider +public class LocalDateTimeProvider extends PerRequestTypeInjectableProvider { + private final UriInfo uriInfo; + + public LocalDateTimeProvider(@Context UriInfo uriInfo) { + super(LocalDateTime.class); + this.uriInfo = uriInfo; + } + + @Override + public Injectable getInjectable(final ComponentContext cc, final QueryParam a) { + return new Injectable() { + @Override + public LocalDateTime getValue() { + final List values = uriInfo.getQueryParameters().get(a.value()); + + if (values == null || values.isEmpty()) + return null; + if (values.size() > 1) { + throw new WebApplicationException(Response.status(Status.BAD_REQUEST). + entity(a.value() + " cannot contain multiple values").build()); + } + + return LocalDateTime.parse(values.get(0)); + } + }; + } +} \ No newline at end of file diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/NotFoundException.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/NotFoundException.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/NotFoundException.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/NotFoundException.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/README.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/README.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/README.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/README.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/allowableValues.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/allowableValues.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/allowableValues.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/allowableValues.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/api.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/api.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/api.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/api.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/apiService.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/apiService.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/apiService.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/apiService.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/apiServiceFactory.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/apiServiceFactory.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/apiServiceFactory.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/apiServiceFactory.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/apiServiceImpl.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/apiServiceImpl.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/apiServiceImpl.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/apiServiceImpl.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/bodyParams.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/bodyParams.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/bodyParams.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/bodyParams.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/formParams.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/formParams.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/formParams.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/formParams.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/generatedAnnotation.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/generatedAnnotation.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/generatedAnnotation.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/generatedAnnotation.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/headerParams.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/headerParams.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/headerParams.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/headerParams.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/model.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/model.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/model.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/model.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/pathParams.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/pathParams.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/pathParams.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/pathParams.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/pom.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/pom.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/pom.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/pom.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/project/build.properties b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/project/build.properties similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/project/build.properties rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/project/build.properties diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/project/plugins.sbt b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/project/plugins.sbt similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/project/plugins.sbt rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/project/plugins.sbt diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/queryParams.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/queryParams.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/queryParams.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/queryParams.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/returnTypes.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/returnTypes.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/returnTypes.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/returnTypes.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/serviceBodyParams.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/serviceBodyParams.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/serviceBodyParams.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/serviceBodyParams.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/serviceFormParams.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/serviceFormParams.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/serviceFormParams.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/serviceFormParams.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/serviceHeaderParams.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/serviceHeaderParams.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/serviceHeaderParams.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/serviceHeaderParams.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/servicePathParams.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/servicePathParams.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/servicePathParams.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/servicePathParams.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/serviceQueryParams.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/serviceQueryParams.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/serviceQueryParams.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/serviceQueryParams.mustache diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/web.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/web.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/JavaJaxRS/web.mustache rename to modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/web.mustache diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/jaxrs/AllowableValuesTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/jaxrs/AllowableValuesTest.java index ef24287b005..9ae5e6dc3e4 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/jaxrs/AllowableValuesTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/jaxrs/AllowableValuesTest.java @@ -17,7 +17,7 @@ import java.nio.charset.StandardCharsets; public class AllowableValuesTest { - private static final String TEMPLATE_FILE = "JavaJaxRS/allowableValues.mustache"; + private static final String TEMPLATE_FILE = "JavaJaxRS/jersey1_18/allowableValues.mustache"; private static final String PROVIDER_NAME = "operations"; private static String loadClassResource(Class cls, String name) throws IOException { From 405e09a0578755969ebb37c2f1c03148f01fdc6b Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Tue, 29 Dec 2015 23:44:15 -0800 Subject: [PATCH 100/623] added tests --- .../codegen/languages/JaxRSServerCodegen.java | 2 +- .../codegen/jaxrs/JaxrsJava8ModelTest.java | 36 +++++++++++++++++++ .../codegen/jaxrs/JaxrsJodaModelTest.java | 36 +++++++++++++++++++ 3 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJava8ModelTest.java create mode 100644 modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJodaModelTest.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 53a7bbffcab..10b2ec77206 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 @@ -122,7 +122,7 @@ public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConf additionalProperties.put("java8", "true"); additionalProperties.put("javaVersion", "1.8"); typeMapping.put("date", "LocalDate"); - typeMapping.put("date-time", "LocalDateTime"); + typeMapping.put("DateTime", "LocalDateTime"); importMapping.put("LocalDate", "java.time.LocalDate"); importMapping.put("LocalDateTime", "java.time.LocalDateTime"); diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJava8ModelTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJava8ModelTest.java new file mode 100644 index 00000000000..55219787f89 --- /dev/null +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJava8ModelTest.java @@ -0,0 +1,36 @@ +package io.swagger.codegen.jaxrs; + +import io.swagger.codegen.CodegenModel; +import io.swagger.codegen.languages.JaxRSServerCodegen; +import io.swagger.models.Model; +import io.swagger.models.ModelImpl; +import io.swagger.models.properties.DateProperty; +import io.swagger.models.properties.DateTimeProperty; +import io.swagger.models.properties.LongProperty; +import io.swagger.util.Json; +import org.testng.annotations.Test; + +import static org.testng.Assert.assertEquals; + +public class JaxrsJava8ModelTest { + @Test(description = "convert a simple java model with java8 types") + public void simpleModelTest() { + final Model model = new ModelImpl() + .description("a sample model") + .property("id", new LongProperty()) + .property("theDate", new DateProperty()) + .property("createdAt", new DateTimeProperty()) + .required("id") + .required("name"); + + final JaxRSServerCodegen codegen = new JaxRSServerCodegen(); + codegen.setDateLibrary("java8"); + codegen.processOpts(); + final CodegenModel cm = codegen.fromModel("sample", model); + + Json.prettyPrint(cm); + assertEquals(cm.vars.get(0).datatype, "Long"); + assertEquals(cm.vars.get(1).datatype, "LocalDate"); + assertEquals(cm.vars.get(2).datatype, "LocalDateTime"); + } +} diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJodaModelTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJodaModelTest.java new file mode 100644 index 00000000000..3f2ac1a9ec1 --- /dev/null +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJodaModelTest.java @@ -0,0 +1,36 @@ +package io.swagger.codegen.jaxrs; + +import io.swagger.codegen.CodegenModel; +import io.swagger.codegen.languages.JaxRSServerCodegen; +import io.swagger.models.Model; +import io.swagger.models.ModelImpl; +import io.swagger.models.properties.DateProperty; +import io.swagger.models.properties.DateTimeProperty; +import io.swagger.models.properties.LongProperty; +import io.swagger.util.Json; +import org.testng.annotations.Test; + +import static org.testng.Assert.assertEquals; + +public class JaxrsJodaModelTest { + @Test(description = "convert a simple java model with Joda types") + public void simpleModelTest() { + final Model model = new ModelImpl() + .description("a sample model") + .property("id", new LongProperty()) + .property("theDate", new DateProperty()) + .property("createdAt", new DateTimeProperty()) + .required("id") + .required("name"); + + final JaxRSServerCodegen codegen = new JaxRSServerCodegen(); + codegen.setDateLibrary("joda"); + codegen.processOpts(); + final CodegenModel cm = codegen.fromModel("sample", model); + + Json.prettyPrint(cm); + assertEquals(cm.vars.get(0).datatype, "Long"); + assertEquals(cm.vars.get(1).datatype, "LocalDate"); + assertEquals(cm.vars.get(2).datatype, "DateTime"); + } +} From 05b0d8f1bf3229ebda5cb338362f56a5cce6096d Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Wed, 30 Dec 2015 00:06:24 -0800 Subject: [PATCH 101/623] added `serverPort` --- .../swagger/codegen/languages/JaxRSServerCodegen.java | 10 ++++++++++ .../resources/JavaJaxRS/jersey1_18/README.mustache | 2 +- .../main/resources/JavaJaxRS/jersey1_18/pom.mustache | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) 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 10b2ec77206..ae22656cd97 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 @@ -166,6 +166,16 @@ public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConf if("/".equals(swagger.getBasePath())) { swagger.setBasePath(""); } + + String host = swagger.getHost(); + String port = "8080"; + if(host != null) { + String[] parts = host.split(":"); + if(parts.length > 0) { + port = parts[1]; + } + } + this.additionalProperties.put("serverPort", port); if(swagger != null && swagger.getPaths() != null) { for(String pathname : swagger.getPaths().keySet()) { Path path = swagger.getPath(pathname); diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/README.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/README.mustache index f240464851d..7bad8dbee0a 100644 --- a/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/README.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/README.mustache @@ -16,7 +16,7 @@ mvn clean package jetty:run You can then view the swagger listing here: ``` -http://localhost:8080{{contextPath}}/swagger.json +http://localhost:{{serverPort}}{{contextPath}}/swagger.json ``` Note that if you have configured the `host` to be something other than localhost, the calls through diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/pom.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/pom.mustache index b8426a0a693..0d1b06de43a 100644 --- a/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/pom.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/pom.mustache @@ -37,7 +37,7 @@ 8079 stopit - 8080 + {{serverPort}} 60000 From 67bea9ec270162517353dc39f3a608ac06239ef0 Mon Sep 17 00:00:00 2001 From: lugaru1234 Date: Wed, 30 Dec 2015 16:27:59 +0300 Subject: [PATCH 102/623] CliOption.type has ben set to boolean for boolean options --- .../src/main/java/io/swagger/codegen/DefaultCodegen.java | 7 ++++--- .../io/swagger/codegen/languages/AndroidClientCodegen.java | 5 +++-- .../io/swagger/codegen/languages/CSharpClientCodegen.java | 7 +++++-- .../io/swagger/codegen/languages/JavaClientCodegen.java | 7 ++++--- .../io/swagger/codegen/languages/PerlClientCodegen.java | 7 +++++-- .../io/swagger/codegen/languages/PythonClientCodegen.java | 3 ++- 6 files changed, 23 insertions(+), 13 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java index 8364800fce6..415fd729de9 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java @@ -434,9 +434,10 @@ public class DefaultCodegen { importMapping.put("LocalTime", "org.joda.time.*"); cliOptions.add(new CliOption(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG, - CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC).defaultValue("true")); - cliOptions.add(new CliOption(CodegenConstants.ENSURE_UNIQUE_PARAMS, CodegenConstants.ENSURE_UNIQUE_PARAMS_DESC) - .defaultValue("true")); + CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC, BooleanProperty.TYPE) + .defaultValue(Boolean.TRUE.toString())); + cliOptions.add(new CliOption(CodegenConstants.ENSURE_UNIQUE_PARAMS, CodegenConstants.ENSURE_UNIQUE_PARAMS_DESC, + BooleanProperty.TYPE).defaultValue(Boolean.TRUE.toString())); } /** diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidClientCodegen.java index 704b38f7f46..636739c6b64 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidClientCodegen.java @@ -7,6 +7,7 @@ import io.swagger.codegen.CodegenType; import io.swagger.codegen.DefaultCodegen; import io.swagger.codegen.SupportingFile; import io.swagger.models.properties.ArrayProperty; +import io.swagger.models.properties.BooleanProperty; import io.swagger.models.properties.MapProperty; import io.swagger.models.properties.Property; @@ -67,8 +68,8 @@ public class AndroidClientCodegen extends DefaultCodegen implements CodegenConfi cliOptions.add(new CliOption(CodegenConstants.ARTIFACT_ID, "artifactId for use in the generated build.gradle and pom.xml")); cliOptions.add(new CliOption(CodegenConstants.ARTIFACT_VERSION, "artifact version for use in the generated build.gradle and pom.xml")); cliOptions.add(new CliOption(CodegenConstants.SOURCE_FOLDER, CodegenConstants.SOURCE_FOLDER_DESC)); - cliOptions.add(new CliOption(USE_ANDROID_MAVEN_GRADLE_PLUGIN, "A flag to toggle android-maven gradle plugin.") - .defaultValue("true")); + cliOptions.add(new CliOption(USE_ANDROID_MAVEN_GRADLE_PLUGIN, "A flag to toggle android-maven gradle plugin.", + BooleanProperty.TYPE).defaultValue(Boolean.TRUE.toString())); } @Override 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 acf0b1b1262..5a1d1b9598b 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 @@ -89,8 +89,11 @@ public class CSharpClientCodegen extends DefaultCodegen implements CodegenConfig cliOptions.add(new CliOption(CodegenConstants.PACKAGE_NAME, "C# package name (convention: Camel.Case).") .defaultValue("IO.Swagger")); cliOptions.add(new CliOption(CodegenConstants.PACKAGE_VERSION, "C# package version.").defaultValue("1.0.0")); - cliOptions.add(new CliOption(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG, CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC)); - cliOptions.add(new CliOption(CodegenConstants.OPTIONAL_METHOD_ARGUMENT, "C# Optional method argument, e.g. void square(int x=10) (.net 4.0+ only). Default: false").defaultValue("false")); + cliOptions.add(new CliOption(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG, + CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC, BooleanProperty.TYPE)); + cliOptions.add(new CliOption(CodegenConstants.OPTIONAL_METHOD_ARGUMENT, "C# Optional method argument, " + + "e.g. void square(int x=10) (.net 4.0+ only).", BooleanProperty.TYPE) + .defaultValue(Boolean.FALSE.toString())); } @Override 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 e408641c8a6..08a28b81bf1 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 @@ -99,9 +99,10 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { cliOptions.add(new CliOption(CodegenConstants.ARTIFACT_VERSION, CodegenConstants.ARTIFACT_VERSION_DESC)); cliOptions.add(new CliOption(CodegenConstants.SOURCE_FOLDER, CodegenConstants.SOURCE_FOLDER_DESC)); cliOptions.add(new CliOption(CodegenConstants.LOCAL_VARIABLE_PREFIX, CodegenConstants.LOCAL_VARIABLE_PREFIX_DESC)); - cliOptions.add(new CliOption(CodegenConstants.SERIALIZABLE_MODEL, CodegenConstants.SERIALIZABLE_MODEL_DESC)); - cliOptions.add(new CliOption(FULL_JAVA_UTIL, "whether to use fully qualified name for classes under java.util") - .defaultValue("false")); + cliOptions.add(new CliOption(CodegenConstants.SERIALIZABLE_MODEL, CodegenConstants.SERIALIZABLE_MODEL_DESC, + BooleanProperty.TYPE)); + cliOptions.add(new CliOption(FULL_JAVA_UTIL, "whether to use fully qualified name for classes under java.util", + BooleanProperty.TYPE).defaultValue(Boolean.FALSE.toString())); supportedLibraries.put(DEFAULT_LIBRARY, "HTTP client: Jersey client 1.18. JSON processing: Jackson 2.4.2"); supportedLibraries.put("feign", "HTTP client: Netflix Feign 8.1.1"); 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 8950ff21a22..76c1afacb56 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 @@ -7,6 +7,7 @@ import io.swagger.codegen.SupportingFile; import io.swagger.codegen.CodegenConstants; import io.swagger.codegen.CliOption; import io.swagger.models.properties.ArrayProperty; +import io.swagger.models.properties.BooleanProperty; import io.swagger.models.properties.MapProperty; import io.swagger.models.properties.Property; @@ -73,8 +74,10 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig { cliOptions.clear(); cliOptions.add(new CliOption(MODULE_NAME, "Perl module name (convention: CamelCase).").defaultValue("SwaggerClient")); cliOptions.add(new CliOption(MODULE_VERSION, "Perl module version.").defaultValue("1.0.0")); - cliOptions.add(new CliOption(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG, CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC)); - cliOptions.add(new CliOption(CodegenConstants.ENSURE_UNIQUE_PARAMS, CodegenConstants.ENSURE_UNIQUE_PARAMS_DESC)); + cliOptions.add(new CliOption(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG, + CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC, BooleanProperty.TYPE)); + cliOptions.add(new CliOption(CodegenConstants.ENSURE_UNIQUE_PARAMS, CodegenConstants.ENSURE_UNIQUE_PARAMS_DESC, + BooleanProperty.TYPE)); } 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 d7fdd39239a..205e710e990 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 @@ -65,7 +65,8 @@ public class PythonClientCodegen extends DefaultCodegen implements CodegenConfig .defaultValue("swagger_client")); cliOptions.add(new CliOption(CodegenConstants.PACKAGE_VERSION, "python package version.") .defaultValue("1.0.0")); - cliOptions.add(new CliOption(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG, CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC)); + cliOptions.add(new CliOption(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG, + CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC, BooleanProperty.TYPE)); } @Override From 460e5befec4e5f821e6f0808b5fc166844f578c9 Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Wed, 30 Dec 2015 10:42:20 -0800 Subject: [PATCH 103/623] fixed index issue --- .../java/io/swagger/codegen/languages/JaxRSServerCodegen.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 ae22656cd97..1cf57b8bdef 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 @@ -171,7 +171,7 @@ public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConf String port = "8080"; if(host != null) { String[] parts = host.split(":"); - if(parts.length > 0) { + if(parts.length > 1) { port = parts[1]; } } From ac7856d009f5915b0dd246f9c07efe9000afc860 Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Wed, 30 Dec 2015 12:27:31 -0800 Subject: [PATCH 104/623] formatting --- .../main/resources/Java/enumClass.mustache | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/Java/enumClass.mustache b/modules/swagger-codegen/src/main/resources/Java/enumClass.mustache index e0ec74385ff..6010e26704f 100644 --- a/modules/swagger-codegen/src/main/resources/Java/enumClass.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/enumClass.mustache @@ -1,17 +1,17 @@ -public enum {{{datatypeWithEnum}}} { - {{#allowableValues}}{{#enumVars}}{{{name}}}("{{{value}}}"){{^-last}}, - {{/-last}}{{#-last}};{{/-last}}{{/enumVars}}{{/allowableValues}} + public enum {{{datatypeWithEnum}}} { + {{#allowableValues}}{{#enumVars}}{{{name}}}("{{{value}}}"){{^-last}}, + {{/-last}}{{#-last}};{{/-last}}{{/enumVars}}{{/allowableValues}} - private String value; + private String value; - {{{datatypeWithEnum}}}(String value) { - this.value = value; + {{{datatypeWithEnum}}}(String value) { + this.value = value; + } + + @Override + @JsonValue + public String toString() { + return value; + } } - - @Override - @JsonValue - public String toString() { - return value; - } -} From 1cd54ee6856a8be28082678ff1193b2edf86d60f Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Wed, 30 Dec 2015 12:32:37 -0800 Subject: [PATCH 105/623] added `bigDecimalAsString` option to allow serializing with strings --- .../io/swagger/codegen/CodegenConfig.java | 4 ++ .../io/swagger/codegen/CodegenConstants.java | 3 + .../io/swagger/codegen/DefaultCodegen.java | 18 ++++- .../codegen/languages/JavaClientCodegen.java | 69 +++++++++++-------- .../src/main/resources/Java/pojo.mustache | 1 + .../JavaInflectorServerOptionsTest.java | 4 +- .../codegen/options/JavaOptionsProvider.java | 1 + 7 files changed, 68 insertions(+), 32 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfig.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfig.java index c111a3af2fc..a74e652bb6d 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfig.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfig.java @@ -109,6 +109,10 @@ public interface CodegenConfig { Map postProcessSupportingFileData(Map objs); + void postProcessModelProperty(CodegenModel model, CodegenProperty property); + + void postProcessParameter(CodegenParameter parameter); + String apiFilename(String templateName, String tag); boolean shouldOverwrite(String filename); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java index 9c2711f8cad..06d7e801176 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java @@ -34,6 +34,9 @@ public class CodegenConstants { public static final String SERIALIZABLE_MODEL = "serializableModel"; public static final String SERIALIZABLE_MODEL_DESC = "boolean - toggle \"implements Serializable\" for generated models"; + public static final String SERIALIZE_BIG_DECIMAL_AS_STRING = "bigDecimalAsString"; + public static final String SERIALIZE_BIG_DECIMAL_AS_STRING_DESC = "boolean - treat BigDecimal values as Strings to avoid precision loss. Default: false"; + public static final String LIBRARY = "library"; public static final String LIBRARY_DESC = "library template (sub-template)"; diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java index 415fd729de9..c8362d1b19d 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java @@ -120,6 +120,12 @@ public class DefaultCodegen { return objs; } + // override to post-process any model properties + public void postProcessModelProperty(CodegenModel model, CodegenProperty property){} + + // override to post-process any parameters + public void postProcessParameter(CodegenParameter parameter){} + //override with any special handling of the entire swagger spec public void preprocessSwagger(Swagger swagger) { } @@ -620,7 +626,9 @@ public class DefaultCodegen { **/ public String getSwaggerType(Property p) { String datatype = null; - if (p instanceof StringProperty) { + if (p instanceof StringProperty && "number".equals(p.getFormat())) { + datatype = "BigDecimal"; + } else if (p instanceof StringProperty) { datatype = "string"; } else if (p instanceof ByteArrayProperty) { datatype = "ByteArray"; @@ -843,6 +851,12 @@ public class DefaultCodegen { } addVars(m, impl.getProperties(), impl.getRequired()); } + + if(m.vars != null) { + for(CodegenProperty prop : m.vars) { + postProcessModelProperty(m, prop); + } + } return m; } @@ -1595,6 +1609,8 @@ public class DefaultCodegen { } p.paramName = toParamName(bp.getName()); } + + postProcessParameter(p); return p; } 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 08a28b81bf1..f23b719d679 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 @@ -1,45 +1,21 @@ package io.swagger.codegen.languages; import com.google.common.base.Strings; -import io.swagger.codegen.CliOption; -import io.swagger.codegen.CodegenConfig; -import io.swagger.codegen.CodegenConstants; -import io.swagger.codegen.CodegenModel; -import io.swagger.codegen.CodegenOperation; -import io.swagger.codegen.CodegenProperty; -import io.swagger.codegen.CodegenType; -import io.swagger.codegen.DefaultCodegen; -import io.swagger.codegen.SupportingFile; +import io.swagger.codegen.*; import io.swagger.models.Model; import io.swagger.models.Operation; import io.swagger.models.Path; import io.swagger.models.Swagger; -import io.swagger.models.parameters.BodyParameter; import io.swagger.models.parameters.FormParameter; import io.swagger.models.parameters.Parameter; -import io.swagger.models.properties.ArrayProperty; -import io.swagger.models.properties.BooleanProperty; -import io.swagger.models.properties.DoubleProperty; -import io.swagger.models.properties.FloatProperty; -import io.swagger.models.properties.IntegerProperty; -import io.swagger.models.properties.LongProperty; -import io.swagger.models.properties.MapProperty; -import io.swagger.models.properties.Property; -import io.swagger.models.properties.StringProperty; - -import java.io.File; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - +import io.swagger.models.properties.*; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.File; +import java.util.*; + public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { private static final Logger LOGGER = LoggerFactory.getLogger(JavaClientCodegen.class); public static final String FULL_JAVA_UTIL = "fullJavaUtil"; @@ -55,6 +31,7 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { protected boolean fullJavaUtil = false; protected String javaUtilPrefix = ""; protected Boolean serializableModel = false; + protected boolean serializeBigDecimalAsString = false; public JavaClientCodegen() { super(); @@ -101,6 +78,8 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { cliOptions.add(new CliOption(CodegenConstants.LOCAL_VARIABLE_PREFIX, CodegenConstants.LOCAL_VARIABLE_PREFIX_DESC)); cliOptions.add(new CliOption(CodegenConstants.SERIALIZABLE_MODEL, CodegenConstants.SERIALIZABLE_MODEL_DESC, BooleanProperty.TYPE)); + cliOptions.add(new CliOption(CodegenConstants.SERIALIZE_BIG_DECIMAL_AS_STRING, CodegenConstants.SERIALIZE_BIG_DECIMAL_AS_STRING_DESC, + BooleanProperty.TYPE)); cliOptions.add(new CliOption(FULL_JAVA_UTIL, "whether to use fully qualified name for classes under java.util", BooleanProperty.TYPE).defaultValue(Boolean.FALSE.toString())); @@ -181,6 +160,10 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { this.setLibrary((String) additionalProperties.get(CodegenConstants.LIBRARY)); } + if(additionalProperties.containsKey(CodegenConstants.SERIALIZE_BIG_DECIMAL_AS_STRING)) { + this.setSerializeBigDecimalAsString(Boolean.valueOf(additionalProperties.get(CodegenConstants.SERIALIZE_BIG_DECIMAL_AS_STRING).toString())); + } + // need to put back serializableModel (boolean) into additionalProperties as value in additionalProperties is string additionalProperties.put(CodegenConstants.SERIALIZABLE_MODEL, serializableModel); @@ -212,6 +195,11 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { this.sanitizeConfig(); + + // optional jackson mappings for BigDecimal support + importMapping.put("ToStringSerializer", "com.fasterxml.jackson.databind.ser.std.ToStringSerializer"); + importMapping.put("JsonSerialize", "com.fasterxml.jackson.databind.annotation.JsonSerialize"); + final String invokerFolder = (sourceFolder + '/' + invokerPackage).replace(".", "/"); supportingFiles.add(new SupportingFile("pom.mustache", "", "pom.xml")); supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); @@ -471,6 +459,26 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { return codegenModel; } + @Override + public void postProcessModelProperty(CodegenModel model, CodegenProperty property) { + if(serializeBigDecimalAsString) { + if (property.baseType.equals("BigDecimal")) { + // we serialize BigDecimal as `string` to avoid precision loss + property.vendorExtensions.put("extraAnnotation", "@JsonSerialize(using = ToStringSerializer.class)"); + + // this requires some more imports to be added for this model... + model.imports.add("ToStringSerializer"); + model.imports.add("JsonSerialize"); + } + } + return; + } + + @Override + public void postProcessParameter(CodegenParameter parameter) { + return; + } + @Override public Map postProcessModels(Map objs) { List models = (List) objs.get("models"); @@ -702,6 +710,9 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { this.localVariablePrefix = localVariablePrefix; } + public void setSerializeBigDecimalAsString(boolean s) { + this.serializeBigDecimalAsString = s; + } public Boolean getSerializableModel() { return serializableModel; diff --git a/modules/swagger-codegen/src/main/resources/Java/pojo.mustache b/modules/swagger-codegen/src/main/resources/Java/pojo.mustache index 8d92141fa7f..6d65b5a888d 100644 --- a/modules/swagger-codegen/src/main/resources/Java/pojo.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/pojo.mustache @@ -14,6 +14,7 @@ public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#seriali * minimum: {{minimum}}{{/minimum}}{{#maximum}} * maximum: {{maximum}}{{/maximum}} **/ + {{#vendorExtensions.extraAnnotation}}{{vendorExtensions.extraAnnotation}}{{/vendorExtensions.extraAnnotation}} @ApiModelProperty({{#required}}required = {{required}}, {{/required}}value = "{{{description}}}") @JsonProperty("{{baseName}}") public {{{datatypeWithEnum}}} {{getter}}() { diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/inflector/JavaInflectorServerOptionsTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/inflector/JavaInflectorServerOptionsTest.java index d7046dda9b2..8c54a382993 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/inflector/JavaInflectorServerOptionsTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/inflector/JavaInflectorServerOptionsTest.java @@ -4,8 +4,6 @@ import io.swagger.codegen.CodegenConfig; import io.swagger.codegen.java.JavaClientOptionsTest; import io.swagger.codegen.languages.JavaInflectorServerCodegen; import io.swagger.codegen.options.JavaInflectorServerOptionsProvider; -import io.swagger.codegen.options.JavaOptionsProvider; - import mockit.Expectations; import mockit.Tested; @@ -50,6 +48,8 @@ public class JavaInflectorServerOptionsTest extends JavaClientOptionsTest { times = 1; clientCodegen.setFullJavaUtil(Boolean.valueOf(JavaInflectorServerOptionsProvider.FULL_JAVA_UTIL_VALUE)); times = 1; + clientCodegen.setSerializeBigDecimalAsString(true); + times = 1; }}; } } 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 8ea7ee31452..7e5fd36793a 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 @@ -38,6 +38,7 @@ public class JavaOptionsProvider implements OptionsProvider { .put(CodegenConstants.SERIALIZABLE_MODEL, SERIALIZABLE_MODEL_VALUE) .put(JavaClientCodegen.FULL_JAVA_UTIL, FULL_JAVA_UTIL_VALUE) .put(CodegenConstants.LIBRARY, LIBRARY_VALUE) + .put(CodegenConstants.SERIALIZE_BIG_DECIMAL_AS_STRING, "true") .build(); } From d75e602168a9075a9df371f8017c500837afa594 Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Wed, 30 Dec 2015 13:16:08 -0800 Subject: [PATCH 106/623] made imports more intelligent --- .../java/io/swagger/codegen/CodegenModel.java | 2 +- .../io/swagger/codegen/DefaultGenerator.java | 1 + .../codegen/languages/JavaClientCodegen.java | 21 ++++++++++++++++++- .../src/main/resources/Java/model.mustache | 3 --- .../codegen/java/JavaModelEnumTest.java | 4 +--- 5 files changed, 23 insertions(+), 8 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenModel.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenModel.java index b4d964647b7..3713261f8f1 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenModel.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenModel.java @@ -15,7 +15,7 @@ public class CodegenModel { // list of all required parameters public Set mandatory = new HashSet(); - public Set imports = new HashSet(); + public Set imports = new TreeSet(); public Boolean hasVars, emptyVars, hasMoreModels, hasEnums, isEnum; public ExternalDocs externalDocs; diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java index 3623361387e..01ac045c38d 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java @@ -697,6 +697,7 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { mo.put("model", cm); mo.put("importPath", config.toModelImport(key)); models.add(mo); + allImports.addAll(cm.imports); } objs.put("models", models); 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 f23b719d679..247517d948c 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 @@ -147,7 +147,6 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { this.setSourceFolder((String) additionalProperties.get(CodegenConstants.SOURCE_FOLDER)); } - if (additionalProperties.containsKey(CodegenConstants.LOCAL_VARIABLE_PREFIX)) { this.setLocalVariablePrefix((String) additionalProperties.get(CodegenConstants.LOCAL_VARIABLE_PREFIX)); } @@ -200,6 +199,14 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { importMapping.put("ToStringSerializer", "com.fasterxml.jackson.databind.ser.std.ToStringSerializer"); importMapping.put("JsonSerialize", "com.fasterxml.jackson.databind.annotation.JsonSerialize"); + // imports for pojos + importMapping.put("ApiModelProperty", "io.swagger.annotations.ApiModelProperty"); + importMapping.put("ApiModel", "io.swagger.annotations.ApiModel"); + importMapping.put("JsonProperty", "com.fasterxml.jackson.annotation.JsonProperty"); + importMapping.put("JsonValue", "com.fasterxml.jackson.annotation.JsonValue"); + importMapping.put("Objects", "java.util.Objects"); + importMapping.put("StringUtil", invokerPackage + ".StringUtil"); + final String invokerFolder = (sourceFolder + '/' + invokerPackage).replace(".", "/"); supportingFiles.add(new SupportingFile("pom.mustache", "", "pom.xml")); supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); @@ -471,6 +478,18 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { model.imports.add("JsonSerialize"); } } + if(model.isEnum == null || model.isEnum) { + // needed by all pojos, but not enums + model.imports.add("ApiModelProperty"); + model.imports.add("ApiModel"); + model.imports.add("JsonProperty"); + model.imports.add("Objects"); + model.imports.add("StringUtil"); + + if(model.hasEnums != null || model.hasEnums == true) { + model.imports.add("JsonValue"); + } + } return; } diff --git a/modules/swagger-codegen/src/main/resources/Java/model.mustache b/modules/swagger-codegen/src/main/resources/Java/model.mustache index b62cb983281..2f3d4780a33 100644 --- a/modules/swagger-codegen/src/main/resources/Java/model.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/model.mustache @@ -6,10 +6,7 @@ import {{invokerPackage}}.StringUtil; {{#serializableModel}} import java.io.Serializable;{{/serializableModel}} -import java.util.Objects; -import io.swagger.annotations.*; -import com.fasterxml.jackson.annotation.*; {{#models}} {{#model}}{{#description}} diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/JavaModelEnumTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/JavaModelEnumTest.java index 46828a1f805..33470e9bb50 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/JavaModelEnumTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/JavaModelEnumTest.java @@ -10,13 +10,11 @@ import io.swagger.models.ModelImpl; import io.swagger.models.RefModel; import io.swagger.models.properties.Property; import io.swagger.models.properties.StringProperty; - import org.testng.Assert; import org.testng.annotations.Test; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -83,7 +81,7 @@ public class JavaModelEnumTest { Assert.assertEquals(cm.name, "sample"); Assert.assertEquals(cm.classname, "Sample"); Assert.assertEquals(cm.parent, "ParentModel"); - Assert.assertEquals(cm.imports, Collections.singletonList("ParentModel")); + Assert.assertTrue(cm.imports.contains("ParentModel")); // Assert that only the unshared/uninherited enum remains Assert.assertEquals(cm.vars.size(), 1); From 788c70922d1322fc99930ff51a2f51e345e864a1 Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Wed, 30 Dec 2015 13:40:51 -0800 Subject: [PATCH 107/623] updated cli name --- .../src/main/java/io/swagger/codegen/SwaggerCodegen.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/SwaggerCodegen.java b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/SwaggerCodegen.java index 3cdc01fe3f5..502e4d046ba 100644 --- a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/SwaggerCodegen.java +++ b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/SwaggerCodegen.java @@ -21,7 +21,7 @@ public class SwaggerCodegen { public static void main(String[] args) { - Cli.CliBuilder builder = Cli.builder("swagger") + Cli.CliBuilder builder = Cli.builder("swagger-codegen-cli") .withDescription("Swagger code generator CLI. More info on swagger.io") .withDefaultCommand(Langs.class) .withCommands( From 83460ba81afac7fbdef0e9e4ea26d7d7b605427f Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Wed, 30 Dec 2015 13:40:58 -0800 Subject: [PATCH 108/623] improved install instructions --- README.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3f1691144b9..9f396cc3ff4 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,20 @@ Swagger Codegen Version | Release Date | Swagger Spec compatibility | Notes ### Prerequisites -You need the following installed and available in your $PATH: +If you're looking for the latest stable version, you can grab it directly from maven central (you'll need the java 7 runtime): + +``` +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 + +java -jar swagger-codegen-cli.jar help +``` + +On a mac, it's even easier with `brew`: +``` +brew install swagger-codegen +``` + +To build from source, you need the following installed and available in your $PATH: * [Java 7](http://java.oracle.com) From 9ca914f769ed2840b19f51d9c61a6ff4d3a3dd73 Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Wed, 30 Dec 2015 14:20:52 -0800 Subject: [PATCH 109/623] updated jaxrs generator pojos --- .../codegen/languages/JaxRSServerCodegen.java | 18 +---- .../JavaJaxRS/jersey1_18/StringUtil.mustache | 42 +++++++++++ .../JavaJaxRS/jersey1_18/enumClass.mustache | 17 +++++ .../jersey1_18/enumOuterClass.mustache | 3 + .../JavaJaxRS/jersey1_18/model.mustache | 70 +++---------------- .../JavaJaxRS/jersey1_18/pojo.mustache | 68 ++++++++++++++++++ 6 files changed, 140 insertions(+), 78 deletions(-) create mode 100644 modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/StringUtil.mustache create mode 100644 modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/enumClass.mustache create mode 100644 modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/enumOuterClass.mustache create mode 100644 modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/pojo.mustache 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 1cf57b8bdef..9998822c4c9 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 @@ -100,6 +100,8 @@ public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConf (sourceFolder + '/' + apiPackage).replace(".", "/"), "NotFoundException.java")); supportingFiles.add(new SupportingFile("web.mustache", ("src/main/webapp/WEB-INF"), "web.xml")); + supportingFiles.add(new SupportingFile("StringUtil.mustache", + (sourceFolder + '/' + apiPackage).replace(".", "/"), "StringUtil.java")); if (additionalProperties.containsKey("dateLibrary")) { setDateLibrary(additionalProperties.get("dateLibrary").toString()); @@ -204,22 +206,6 @@ public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConf } } - @Override - public Map postProcessModels(Map objs) { - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); - for (CodegenProperty var : cm.vars) { - // handle default value for enum, e.g. available => StatusEnum.available - if (var.isEnum && var.defaultValue != null && !"null".equals(var.defaultValue)) { - var.defaultValue = var.datatypeWithEnum + "." + var.defaultValue; - } - } - } - return objs; - } - @Override public Map postProcessOperations(Map objs) { Map operations = (Map) objs.get("operations"); diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/StringUtil.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/StringUtil.mustache new file mode 100644 index 00000000000..073966b0c21 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/StringUtil.mustache @@ -0,0 +1,42 @@ +package {{invokerPackage}}; + +{{>generatedAnnotation}} +public class StringUtil { + /** + * Check if the given array contains the given value (with case-insensitive comparison). + * + * @param array The array + * @param value The value to search + * @return true if the array contains the value + */ + public static boolean containsIgnoreCase(String[] array, String value) { + for (String str : array) { + if (value == null && str == null) return true; + if (value != null && value.equalsIgnoreCase(str)) return true; + } + return false; + } + + /** + * Join an array of strings with the given separator. + *

+ * Note: This might be replaced by utility method from commons-lang or guava someday + * if one of those libraries is added as dependency. + *

+ * + * @param array The array of strings + * @param separator The separator + * @return the resulting string + */ + public static String join(String[] array, String separator) { + int len = array.length; + if (len == 0) return ""; + + StringBuilder out = new StringBuilder(); + out.append(array[0]); + for (int i = 1; i < len; i++) { + out.append(separator).append(array[i]); + } + return out.toString(); + } +} diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/enumClass.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/enumClass.mustache new file mode 100644 index 00000000000..6010e26704f --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/enumClass.mustache @@ -0,0 +1,17 @@ + + public enum {{{datatypeWithEnum}}} { + {{#allowableValues}}{{#enumVars}}{{{name}}}("{{{value}}}"){{^-last}}, + {{/-last}}{{#-last}};{{/-last}}{{/enumVars}}{{/allowableValues}} + + private String value; + + {{{datatypeWithEnum}}}(String value) { + this.value = value; + } + + @Override + @JsonValue + public String toString() { + return value; + } + } diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/enumOuterClass.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/enumOuterClass.mustache new file mode 100644 index 00000000000..7aea7b92f22 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/enumOuterClass.mustache @@ -0,0 +1,3 @@ +public enum {{classname}} { + {{#allowableValues}}{{.}}{{^-last}}, {{/-last}}{{/allowableValues}} +} \ No newline at end of file diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/model.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/model.mustache index 63bba4a8dfb..2f3d4780a33 100644 --- a/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/model.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/model.mustache @@ -1,73 +1,19 @@ package {{package}}; +import {{invokerPackage}}.StringUtil; {{#imports}}import {{import}}; {{/imports}} -import io.swagger.annotations.*; -import com.fasterxml.jackson.annotation.JsonProperty; +{{#serializableModel}} +import java.io.Serializable;{{/serializableModel}} -import java.util.Objects; {{#models}} -{{#model}}{{#unescapedDescription}} +{{#model}}{{#description}} /** - * {{unescapedDescription}} - **/{{/unescapedDescription}} -@ApiModel(description = "{{{description}}}") -{{>generatedAnnotation}} -public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} { - {{#vars}}{{#isEnum}} - public enum {{datatypeWithEnum}} { - {{#allowableValues}}{{#values}} {{.}}, {{/values}}{{/allowableValues}} - }; - private {{{datatypeWithEnum}}} {{name}} = {{{defaultValue}}};{{/isEnum}}{{^isEnum}} - private {{{datatype}}} {{name}} = {{{defaultValue}}};{{/isEnum}}{{/vars}} - - {{#vars}} - /**{{#unescapedDescription}} - * {{{unescapedDescription}}}{{/unescapedDescription}}{{#minimum}} - * minimum: {{minimum}}{{/minimum}}{{#maximum}} - * maximum: {{maximum}}{{/maximum}} - **/ - @ApiModelProperty({{#required}}required = {{required}}, {{/required}}value = "{{{description}}}") - @JsonProperty("{{baseName}}") - public {{{datatypeWithEnum}}} {{getter}}() { - return {{name}}; - } - public void {{setter}}({{{datatypeWithEnum}}} {{name}}) { - this.{{name}} = {{name}}; - } - - {{/vars}} - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - {{classname}} {{classVarName}} = ({{classname}}) o;{{#hasVars}} - return {{#vars}}Objects.equals({{name}}, {{classVarName}}.{{name}}){{#hasMore}} && - {{/hasMore}}{{^hasMore}};{{/hasMore}}{{/vars}}{{/hasVars}}{{^hasVars}} - return true;{{/hasVars}} - } - - @Override - public int hashCode() { - return Objects.hash({{#vars}}{{name}}{{#hasMore}}, {{/hasMore}}{{/vars}}); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class {{classname}} {\n"); - {{#parent}}sb.append(" " + super.toString()).append("\n");{{/parent}} - {{#vars}}sb.append(" {{name}}: ").append({{name}}).append("\n"); - {{/vars}}sb.append("}\n"); - return sb.toString(); - } -} + * {{description}} + **/{{/description}} +{{#isEnum}}{{>enumOuterClass}}{{/isEnum}} +{{^isEnum}}{{>pojo}}{{/isEnum}} {{/model}} {{/models}} diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/pojo.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/pojo.mustache new file mode 100644 index 00000000000..6d65b5a888d --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/pojo.mustache @@ -0,0 +1,68 @@ +@ApiModel(description = "{{{description}}}") +{{>generatedAnnotation}} +public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} { + {{#vars}}{{#isEnum}} + +{{>enumClass}}{{/isEnum}}{{#items.isEnum}}{{#items}} + +{{>enumClass}}{{/items}}{{/items.isEnum}} + private {{{datatypeWithEnum}}} {{name}} = {{{defaultValue}}};{{/vars}} + + {{#vars}} + /**{{#description}} + * {{{description}}}{{/description}}{{#minimum}} + * minimum: {{minimum}}{{/minimum}}{{#maximum}} + * maximum: {{maximum}}{{/maximum}} + **/ + {{#vendorExtensions.extraAnnotation}}{{vendorExtensions.extraAnnotation}}{{/vendorExtensions.extraAnnotation}} + @ApiModelProperty({{#required}}required = {{required}}, {{/required}}value = "{{{description}}}") + @JsonProperty("{{baseName}}") + public {{{datatypeWithEnum}}} {{getter}}() { + return {{name}}; + } + public void {{setter}}({{{datatypeWithEnum}}} {{name}}) { + this.{{name}} = {{name}}; + } + + {{/vars}} + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + {{classname}} {{classVarName}} = ({{classname}}) o;{{#hasVars}} + return {{#vars}}Objects.equals({{name}}, {{classVarName}}.{{name}}){{#hasMore}} && + {{/hasMore}}{{^hasMore}};{{/hasMore}}{{/vars}}{{/hasVars}}{{^hasVars}} + return true;{{/hasVars}} + } + + @Override + public int hashCode() { + return Objects.hash({{#vars}}{{name}}{{#hasMore}}, {{/hasMore}}{{/vars}}); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class {{classname}} {\n"); + {{#parent}}sb.append(" ").append(toIndentedString(super.toString())).append("\n");{{/parent}} + {{#vars}}sb.append(" {{name}}: ").append(toIndentedString({{name}})).append("\n"); + {{/vars}}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 "); + } +} From e08e578c5843ac8786b3ea7003eaa170894fb635 Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Wed, 30 Dec 2015 14:51:37 -0800 Subject: [PATCH 110/623] updated templates per #1789 --- .../languages/JavaInflectorServerCodegen.java | 18 +---- .../JavaInflector/StringUtil.mustache | 42 ++++++++++++ .../JavaInflector/enumClass.mustache | 17 +++++ .../JavaInflector/enumOuterClass.mustache | 3 + .../resources/JavaInflector/model.mustache | 43 +----------- .../resources/JavaInflector/pojo.mustache | 68 +++++++++++++++++++ 6 files changed, 135 insertions(+), 56 deletions(-) create mode 100644 modules/swagger-codegen/src/main/resources/JavaInflector/StringUtil.mustache create mode 100644 modules/swagger-codegen/src/main/resources/JavaInflector/enumClass.mustache create mode 100644 modules/swagger-codegen/src/main/resources/JavaInflector/enumOuterClass.mustache create mode 100644 modules/swagger-codegen/src/main/resources/JavaInflector/pojo.mustache diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaInflectorServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaInflectorServerCodegen.java index a7612638255..01ca02f185d 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaInflectorServerCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaInflectorServerCodegen.java @@ -73,6 +73,8 @@ public class JavaInflectorServerCodegen extends JavaClientCodegen implements Cod "src/main/swagger", "swagger.yaml") ); + supportingFiles.add(new SupportingFile("StringUtil.mustache", + (sourceFolder + '/' + invokerPackage).replace(".", "/"), "StringUtil.java")); } @Override @@ -118,22 +120,6 @@ public class JavaInflectorServerCodegen extends JavaClientCodegen implements Cod co.baseName = basePath; } - @Override - public Map postProcessModels(Map objs) { - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); - for (CodegenProperty var : cm.vars) { - // handle default value for enum, e.g. available => StatusEnum.available - if (var.isEnum && var.defaultValue != null && !"null".equals(var.defaultValue)) { - var.defaultValue = var.datatypeWithEnum + "." + var.defaultValue; - } - } - } - return objs; - } - @Override public Map postProcessOperations(Map objs) { Map operations = (Map) objs.get("operations"); diff --git a/modules/swagger-codegen/src/main/resources/JavaInflector/StringUtil.mustache b/modules/swagger-codegen/src/main/resources/JavaInflector/StringUtil.mustache new file mode 100644 index 00000000000..073966b0c21 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/JavaInflector/StringUtil.mustache @@ -0,0 +1,42 @@ +package {{invokerPackage}}; + +{{>generatedAnnotation}} +public class StringUtil { + /** + * Check if the given array contains the given value (with case-insensitive comparison). + * + * @param array The array + * @param value The value to search + * @return true if the array contains the value + */ + public static boolean containsIgnoreCase(String[] array, String value) { + for (String str : array) { + if (value == null && str == null) return true; + if (value != null && value.equalsIgnoreCase(str)) return true; + } + return false; + } + + /** + * Join an array of strings with the given separator. + *

+ * Note: This might be replaced by utility method from commons-lang or guava someday + * if one of those libraries is added as dependency. + *

+ * + * @param array The array of strings + * @param separator The separator + * @return the resulting string + */ + public static String join(String[] array, String separator) { + int len = array.length; + if (len == 0) return ""; + + StringBuilder out = new StringBuilder(); + out.append(array[0]); + for (int i = 1; i < len; i++) { + out.append(separator).append(array[i]); + } + return out.toString(); + } +} diff --git a/modules/swagger-codegen/src/main/resources/JavaInflector/enumClass.mustache b/modules/swagger-codegen/src/main/resources/JavaInflector/enumClass.mustache new file mode 100644 index 00000000000..6010e26704f --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/JavaInflector/enumClass.mustache @@ -0,0 +1,17 @@ + + public enum {{{datatypeWithEnum}}} { + {{#allowableValues}}{{#enumVars}}{{{name}}}("{{{value}}}"){{^-last}}, + {{/-last}}{{#-last}};{{/-last}}{{/enumVars}}{{/allowableValues}} + + private String value; + + {{{datatypeWithEnum}}}(String value) { + this.value = value; + } + + @Override + @JsonValue + public String toString() { + return value; + } + } diff --git a/modules/swagger-codegen/src/main/resources/JavaInflector/enumOuterClass.mustache b/modules/swagger-codegen/src/main/resources/JavaInflector/enumOuterClass.mustache new file mode 100644 index 00000000000..7aea7b92f22 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/JavaInflector/enumOuterClass.mustache @@ -0,0 +1,3 @@ +public enum {{classname}} { + {{#allowableValues}}{{.}}{{^-last}}, {{/-last}}{{/allowableValues}} +} \ No newline at end of file diff --git a/modules/swagger-codegen/src/main/resources/JavaInflector/model.mustache b/modules/swagger-codegen/src/main/resources/JavaInflector/model.mustache index 39f0f0b6fa1..005d63991da 100644 --- a/modules/swagger-codegen/src/main/resources/JavaInflector/model.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaInflector/model.mustache @@ -3,50 +3,13 @@ package {{package}}; {{#imports}}import {{import}}; {{/imports}} -import io.swagger.annotations.*; -import com.fasterxml.jackson.annotation.JsonProperty; +{{#serializableModel}}import java.io.Serializable;{{/serializableModel}} {{#models}} - {{#model}}{{#description}} /** * {{description}} **/{{/description}} -@ApiModel(description = "{{{description}}}") -{{>generatedAnnotation}} -public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} { - {{#vars}}{{#isEnum}} - public enum {{datatypeWithEnum}} { - {{#allowableValues}}{{#values}} {{.}}, {{/values}}{{/allowableValues}} - }; - private {{{datatypeWithEnum}}} {{name}} = {{{defaultValue}}};{{/isEnum}}{{^isEnum}} - private {{{datatype}}} {{name}} = {{{defaultValue}}};{{/isEnum}}{{/vars}} - - {{#vars}} - /**{{#description}} - * {{{description}}}{{/description}}{{#minimum}} - * minimum: {{minimum}}{{/minimum}}{{#maximum}} - * maximum: {{maximum}}{{/maximum}} - **/ - @ApiModelProperty({{#required}}required = {{required}}, {{/required}}value = "{{{description}}}") - @JsonProperty("{{baseName}}") - public {{{datatypeWithEnum}}} {{getter}}() { - return {{name}}; - } - public void {{setter}}({{{datatypeWithEnum}}} {{name}}) { - this.{{name}} = {{name}}; - } - - {{/vars}} - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class {{classname}} {\n"); - {{#parent}}sb.append(" " + super.toString()).append("\n");{{/parent}} - {{#vars}}sb.append(" {{name}}: ").append({{name}}).append("\n"); - {{/vars}}sb.append("}\n"); - return sb.toString(); - } -} +{{#isEnum}}{{>enumOuterClass}}{{/isEnum}} +{{^isEnum}}{{>pojo}}{{/isEnum}} {{/model}} {{/models}} diff --git a/modules/swagger-codegen/src/main/resources/JavaInflector/pojo.mustache b/modules/swagger-codegen/src/main/resources/JavaInflector/pojo.mustache new file mode 100644 index 00000000000..eea33d346d4 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/JavaInflector/pojo.mustache @@ -0,0 +1,68 @@ +{{#description}}@ApiModel(description = "{{{description}}}"){{/description}} +{{>generatedAnnotation}} +public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} { + {{#vars}}{{#isEnum}} + +{{>enumClass}}{{/isEnum}}{{#items.isEnum}}{{#items}} + +{{>enumClass}}{{/items}}{{/items.isEnum}} + private {{{datatypeWithEnum}}} {{name}} = {{{defaultValue}}};{{/vars}} + + {{#vars}} + /**{{#description}} + * {{{description}}}{{/description}}{{#minimum}} + * minimum: {{minimum}}{{/minimum}}{{#maximum}} + * maximum: {{maximum}}{{/maximum}} + **/ + {{#vendorExtensions.extraAnnotation}}{{vendorExtensions.extraAnnotation}}{{/vendorExtensions.extraAnnotation}} + @ApiModelProperty({{#required}}required = {{required}}, {{/required}}value = "{{{description}}}") + @JsonProperty("{{baseName}}") + public {{{datatypeWithEnum}}} {{getter}}() { + return {{name}}; + } + public void {{setter}}({{{datatypeWithEnum}}} {{name}}) { + this.{{name}} = {{name}}; + } + + {{/vars}} + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + {{classname}} {{classVarName}} = ({{classname}}) o;{{#hasVars}} + return {{#vars}}Objects.equals({{name}}, {{classVarName}}.{{name}}){{#hasMore}} && + {{/hasMore}}{{^hasMore}};{{/hasMore}}{{/vars}}{{/hasVars}}{{^hasVars}} + return true;{{/hasVars}} + } + + @Override + public int hashCode() { + return Objects.hash({{#vars}}{{name}}{{#hasMore}}, {{/hasMore}}{{/vars}}); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class {{classname}} {\n"); + {{#parent}}sb.append(" ").append(toIndentedString(super.toString())).append("\n");{{/parent}} + {{#vars}}sb.append(" {{name}}: ").append(toIndentedString({{name}})).append("\n"); + {{/vars}}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 "); + } +} From adb3795a44dae580421ca3f0c5ca40cab6c7c0b3 Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Wed, 30 Dec 2015 14:51:43 -0800 Subject: [PATCH 111/623] formatting --- .../io/swagger/codegen/DefaultGenerator.java | 17 +++++++++++------ .../src/main/resources/Java/model.mustache | 6 +----- .../src/main/resources/Java/pojo.mustache | 2 +- .../JavaJaxRS/jersey1_18/model.mustache | 6 +----- .../JavaJaxRS/jersey1_18/pojo.mustache | 2 +- 5 files changed, 15 insertions(+), 18 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java index 01ac045c38d..c5be6d4563a 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java @@ -702,25 +702,30 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { } objs.put("models", models); - List> imports = new ArrayList>(); + Set importSet = new TreeSet(); for (String nextImport : allImports) { - Map im = new LinkedHashMap(); + Map im = new HashMap(); String mapping = config.importMapping().get(nextImport); if (mapping == null) { mapping = config.toModelImport(nextImport); } if (mapping != null && !config.defaultIncludes().contains(mapping)) { - im.put("import", mapping); - imports.add(im); + importSet.add(mapping); } // add instantiation types mapping = config.instantiationTypes().get(nextImport); if (mapping != null && !config.defaultIncludes().contains(mapping)) { - im.put("import", mapping); - imports.add(im); + importSet.add(mapping); } } + List> imports = new ArrayList>(); + for(String s: importSet) { + Map item = new HashMap(); + item.put("import", s); + imports.add(item); + } + objs.put("imports", imports); config.postProcessModels(objs); diff --git a/modules/swagger-codegen/src/main/resources/Java/model.mustache b/modules/swagger-codegen/src/main/resources/Java/model.mustache index 2f3d4780a33..005d63991da 100644 --- a/modules/swagger-codegen/src/main/resources/Java/model.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/model.mustache @@ -1,14 +1,10 @@ package {{package}}; -import {{invokerPackage}}.StringUtil; {{#imports}}import {{import}}; {{/imports}} -{{#serializableModel}} -import java.io.Serializable;{{/serializableModel}} - +{{#serializableModel}}import java.io.Serializable;{{/serializableModel}} {{#models}} - {{#model}}{{#description}} /** * {{description}} diff --git a/modules/swagger-codegen/src/main/resources/Java/pojo.mustache b/modules/swagger-codegen/src/main/resources/Java/pojo.mustache index 6d65b5a888d..eea33d346d4 100644 --- a/modules/swagger-codegen/src/main/resources/Java/pojo.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/pojo.mustache @@ -1,4 +1,4 @@ -@ApiModel(description = "{{{description}}}") +{{#description}}@ApiModel(description = "{{{description}}}"){{/description}} {{>generatedAnnotation}} public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} { {{#vars}}{{#isEnum}} diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/model.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/model.mustache index 2f3d4780a33..005d63991da 100644 --- a/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/model.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/model.mustache @@ -1,14 +1,10 @@ package {{package}}; -import {{invokerPackage}}.StringUtil; {{#imports}}import {{import}}; {{/imports}} -{{#serializableModel}} -import java.io.Serializable;{{/serializableModel}} - +{{#serializableModel}}import java.io.Serializable;{{/serializableModel}} {{#models}} - {{#model}}{{#description}} /** * {{description}} diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/pojo.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/pojo.mustache index 6d65b5a888d..eea33d346d4 100644 --- a/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/pojo.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/pojo.mustache @@ -1,4 +1,4 @@ -@ApiModel(description = "{{{description}}}") +{{#description}}@ApiModel(description = "{{{description}}}"){{/description}} {{>generatedAnnotation}} public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} { {{#vars}}{{#isEnum}} From 9a54371ca9e0355dfebd7cdfe4c4632684791c5a Mon Sep 17 00:00:00 2001 From: Ron Date: Wed, 30 Dec 2015 14:52:15 -0800 Subject: [PATCH 112/623] Swagger Spec -> OpenAPI Spec --- CONTRIBUTING.md | 4 ++-- README.md | 16 ++++++++-------- modules/swagger-codegen-maven-plugin/README.md | 2 +- .../io/swagger/codegen/DefaultGenerator.java | 2 +- .../codegen/languages/PhpClientCodegen.java | 2 +- .../codegen/languages/SilexServerCodegen.java | 2 +- .../languages/SlimFrameworkServerCodegen.java | 2 +- .../JavaJaxRS/jersey1_18/README.mustache | 2 +- .../main/resources/JavaSpringMVC/README.mustache | 2 +- .../src/main/resources/codegen/README.mustache | 4 ++-- .../resources/flaskConnexion/README.mustache | 2 +- .../src/main/resources/nodejs/README.mustache | 2 +- .../src/main/resources/perl/ApiClient.mustache | 2 +- .../src/main/resources/perl/README.mustache | 6 +++--- .../src/main/resources/perl/Role.mustache | 6 +++--- .../main/resources/php/configuration.mustache | 2 +- .../src/main/resources/scalatra/README.mustache | 2 +- .../src/main/resources/silex/README.mustache | 2 +- .../src/main/resources/slim/README.mustache | 2 +- .../src/main/resources/validator/index.mustache | 4 ++-- samples/client/petstore/perl/README.md | 6 +++--- samples/server-generator/node/README.md | 2 +- samples/server-generator/php/README.md | 2 +- .../php/templates/README.mustache | 2 +- samples/server/petstore/nodejs/README.md | 2 +- 25 files changed, 41 insertions(+), 41 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4bef580bb26..f80eeb3cd01 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,7 +4,7 @@ - Before submitting an issue, search the [open issue](https://github.com/swagger-api/swagger-codegen/issues) and [closed issue](https://github.com/swagger-api/swagger-codegen/issues?q=is%3Aissue+is%3Aclosed) to ensure no one else has reported something similar before. - The issue should contain details on how to repeat the issue, e.g. - - the Swagger spec for reproducing the issue (:bulb: use [Gist](https://gist.github.com) to share). If the Swagger spec cannot be shared publicly, it will be hard for the community to help + - the OpenAPI Spec for reproducing the issue (:bulb: use [Gist](https://gist.github.com) to share). If the OpenAPI Spec cannot be shared publicly, it will be hard for the community to help - version of Swagger Codegen - language (`-l` in the command line, e.g. java, csharp, php) - You can also make a suggestion or ask a question by opening an "issue" @@ -56,7 +56,7 @@ To start the CI tests, you can run `mvn verify -Psamples` (assuming you've all t ### Tips - Smaller changes are easier to review -- [Optional] For bug fixes, provide a Swagger spec to repeat the issue so that the reviewer can use it to confirm the fix +- [Optional] For bug fixes, provide a OpenAPI Spec to repeat the issue so that the reviewer can use it to confirm the fix - Add test case(s) to cover the change - Document the fix in the code to make the code more readable - Make sure test cases passed after the change (one way is to leverage https://travis-ci.org/ to run the CI tests) diff --git a/README.md b/README.md index 9f396cc3ff4..bbb6a443368 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ ## Overview This is the swagger codegen project, which allows generation of client libraries automatically from a Swagger-compliant server. -Check out [Swagger-Spec](https://github.com/swagger-api/swagger-spec) for additional information about the Swagger project, including additional libraries with support for other languages and more. +Check out [Swagger-Spec](https://github.com/OAI/OpenAPI-Specification) for additional information about the Swagger project, including additional libraries with support for other languages and more. # Table of contents @@ -32,7 +32,7 @@ Check out [Swagger-Spec](https://github.com/swagger-api/swagger-spec) for additi - [Where is Javascript???](#where-is-javascript) - [Generating a client from local files](#generating-a-client-from-local-files) - [Customizing the generator](#customizing-the-generator) - - [Validating your swagger spec](#validating-your-swagger-spec) + - [Validating your OpenAPI Spec](#validating-your-swagger-spec) - [Generating dynamic html api documentation](#generating-dynamic-html-api-documentation) - [Generating static html api documentation](#generating-static-html-api-documentation) - [To build a server stub](#to-build-a-server-stub) @@ -50,9 +50,9 @@ Check out [Swagger-Spec](https://github.com/swagger-api/swagger-spec) for additi ## Compatibility -The Swagger Specification has undergone 3 revisions since initial creation in 2010. The swagger-codegen project has the following compatibilies with the swagger specification: +The OpenAPI Specification has undergone 3 revisions since initial creation in 2010. The swagger-codegen project has the following compatibilies with the OpenAPI Specification: -Swagger Codegen Version | Release Date | Swagger Spec compatibility | Notes +Swagger Codegen Version | Release Date | OpenAPI Spec compatibility | Notes -------------------------- | ------------ | -------------------------- | ----- 2.1.5-SNAPSHOT | | 1.0, 1.1, 1.2, 2.0 | [master](https://github.com/swagger-api/swagger-codegen) 2.1.4 (**current stable**) | 2015-10-25 | 1.0, 1.1, 1.2, 2.0 | [tag v2.1.4](https://github.com/swagger-api/swagger-codegen/tree/v2.1.4) @@ -177,7 +177,7 @@ OPTIONS name=value,name=value -i , --input-spec - location of the swagger spec, as URL or file (required) + location of the OpenAPI Spec, as URL or file (required) -l , --lang client language to generate (maybe class name in classpath, @@ -248,12 +248,12 @@ java -cp output/myLibrary/target/myClientCodegen-swagger-codegen-1.0.0.jar:modul ### Where is Javascript??? See our [javascript library](http://github.com/swagger-api/swagger-js)--it's completely dynamic and doesn't require static code generation. -There is a third-party component called [swagger-js-codegen](https://github.com/wcandillon/swagger-js-codegen) that can generate angularjs or nodejs source code from a swagger specification. +There is a third-party component called [swagger-js-codegen](https://github.com/wcandillon/swagger-js-codegen) that can generate angularjs or nodejs source code from a OpenAPI Specification. :exclamation: On Dec 7th 2015, a Javascript API client generator has been added by @jfiala. ### Generating a client from local files -If you don't want to call your server, you can save the swagger spec files into a directory and pass an argument +If you don't want to call your server, you can save the OpenAPI Spec files into a directory and pass an argument to the code generator like this: ``` @@ -432,7 +432,7 @@ and specify the `classname` when running the generator: Your subclass will now be loaded and overrides the `PREFIX` value in the superclass. -### Validating your swagger spec +### Validating your OpenAPI Spec You have options. The easiest is to use our [online validator](https://github.com/swagger-api/validator-badge) which not only will let you validate your spec, but with the debug flag, you can see what's wrong with your spec. For example: diff --git a/modules/swagger-codegen-maven-plugin/README.md b/modules/swagger-codegen-maven-plugin/README.md index 372b2c90adf..f42e9cc8778 100644 --- a/modules/swagger-codegen-maven-plugin/README.md +++ b/modules/swagger-codegen-maven-plugin/README.md @@ -37,7 +37,7 @@ mvn clean compile ### General Configuration parameters -- `inputSpec` - swagger spec file path +- `inputSpec` - OpenAPI Spec file path - `language` - target generation language - `output` - target output path (default is `${project.build.directory}/generated-sources/swagger`) - `templateDirectory` - directory with mustache templates diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java index 01ac045c38d..705d5593213 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java @@ -563,7 +563,7 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { Map authMethods = new HashMap(); // NOTE: Use only the first security requirement for now. // See the "security" field of "Swagger Object": - // https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#swagger-object + // https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#swagger-object // "there is a logical OR between the security requirements" if (securities.size() > 1) { LOGGER.warn("More than 1 security requirements are found, using only the first one"); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java index d2f5aaef0be..192fd285e53 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java @@ -76,7 +76,7 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig { String primitives = "'" + StringUtils.join(languageSpecificPrimitives, "', '") + "'"; additionalProperties.put("primitives", primitives); - // ref: https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#data-types + // ref: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types typeMapping = new HashMap(); typeMapping.put("integer", "int"); typeMapping.put("long", "int"); 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 3984d0ac85f..4effb480048 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 @@ -65,7 +65,7 @@ public class SilexServerCodegen extends DefaultCodegen implements CodegenConfig instantiationTypes.put("array", "array"); instantiationTypes.put("map", "map"); - // ref: https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#data-types + // ref: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types typeMapping = new HashMap(); typeMapping.put("integer", "int"); typeMapping.put("long", "int"); 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 58d8c9e53e5..ae28493fe7c 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 @@ -67,7 +67,7 @@ public class SlimFrameworkServerCodegen extends DefaultCodegen implements Codege instantiationTypes.put("array", "array"); instantiationTypes.put("map", "map"); - // ref: https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#data-types + // ref: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types typeMapping = new HashMap(); typeMapping.put("integer", "int"); typeMapping.put("long", "int"); diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/README.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/README.mustache index 7bad8dbee0a..3551b9e9914 100644 --- a/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/README.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaJaxRS/jersey1_18/README.mustache @@ -2,7 +2,7 @@ ## Overview This server was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the -[swagger-spec](https://github.com/swagger-api/swagger-core/wiki) from a remote server, you can easily generate a server stub. This +[OpenAPI-Spec](https://github.com/swagger-api/swagger-core/wiki) from a remote server, you can easily generate a server stub. This is an example of building a swagger-enabled JAX-RS server. This example uses the [JAX-RS](https://jax-rs-spec.java.net/) framework. diff --git a/modules/swagger-codegen/src/main/resources/JavaSpringMVC/README.mustache b/modules/swagger-codegen/src/main/resources/JavaSpringMVC/README.mustache index 9cf2b4bc6e8..1354151afbb 100644 --- a/modules/swagger-codegen/src/main/resources/JavaSpringMVC/README.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaSpringMVC/README.mustache @@ -4,7 +4,7 @@ Spring MVC Server ## Overview -This server was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the [swagger-spec](https://github.com/swagger-api/swagger-core), you can easily generate a server stub. This is an example of building a swagger-enabled server in Java using the Spring MVC framework. +This server was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the [OpenAPI-Spec](https://github.com/swagger-api/swagger-core), you can easily generate a server stub. This is an example of building a swagger-enabled server in Java using the Spring MVC framework. The underlying library integrating swagger to Spring-MVC is [springfox](https://github.com/springfox/springfox) diff --git a/modules/swagger-codegen/src/main/resources/codegen/README.mustache b/modules/swagger-codegen/src/main/resources/codegen/README.mustache index a434038ec41..268a84a0edd 100644 --- a/modules/swagger-codegen/src/main/resources/codegen/README.mustache +++ b/modules/swagger-codegen/src/main/resources/codegen/README.mustache @@ -9,7 +9,7 @@ your changes applied. The goal of Swagger™ is to define a standard, language-agnostic interface to REST APIs which allows both humans and computers to discover and understand the capabilities of the service without access to source code, documentation, or through network traffic inspection. When properly defined via Swagger, a consumer can understand and interact with the remote service with a minimal amount of implementation logic. Similar to what interfaces have done for lower-level programming, Swagger removes the guesswork in calling the service. -Check out [Swagger-Spec](https://github.com/swagger-api/swagger-spec) for additional information about the Swagger project, including additional libraries with support for other languages and more. +Check out [OpenAPI-Spec](https://github.com/OAI/OpenAPI-Specification) for additional information about the Swagger project, including additional libraries with support for other languages and more. ## How do I use this? At this point, you've likely generated a client setup. It will include something along these lines: @@ -62,7 +62,7 @@ the object you have available during client generation: ``` # The following additional debug options are available for all codegen targets: -# -DdebugSwagger prints the swagger specification as interpreted by the codegen +# -DdebugSwagger prints the OpenAPI Specification as interpreted by the codegen # -DdebugModels prints models passed to the template engine # -DdebugOperations prints operations passed to the template engine # -DdebugSupportingFiles prints additional data passed to the template engine diff --git a/modules/swagger-codegen/src/main/resources/flaskConnexion/README.mustache b/modules/swagger-codegen/src/main/resources/flaskConnexion/README.mustache index ed64b667558..7e80a2086ef 100644 --- a/modules/swagger-codegen/src/main/resources/flaskConnexion/README.mustache +++ b/modules/swagger-codegen/src/main/resources/flaskConnexion/README.mustache @@ -2,7 +2,7 @@ ## Overview This server was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the -[swagger-spec](https://github.com/swagger-api/swagger-core/wiki) from a remote server, you can easily generate a server stub. This +[OpenAPI-Spec](https://github.com/swagger-api/swagger-core/wiki) from a remote server, you can easily generate a server stub. This is an example of building a swagger-enabled flask server. This example uses the [connexion](https://github.com/zalando/connexion) library on top of Flask. diff --git a/modules/swagger-codegen/src/main/resources/nodejs/README.mustache b/modules/swagger-codegen/src/main/resources/nodejs/README.mustache index 183cd5e6d2a..d94aa385ec0 100644 --- a/modules/swagger-codegen/src/main/resources/nodejs/README.mustache +++ b/modules/swagger-codegen/src/main/resources/nodejs/README.mustache @@ -1,7 +1,7 @@ # Swagger generated server ## Overview -This server was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the [swagger-spec](https://github.com/swagger-api/swagger-spec) from a remote server, you can easily generate a server stub. This is an example of building a node.js server. +This server was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the [OpenAPI-Spec](https://github.com/OAI/OpenAPI-Specification) from a remote server, you can easily generate a server stub. This is an example of building a node.js server. This example uses the [expressjs](http://expressjs.com/) framework. To see how to make this your own, look here: diff --git a/modules/swagger-codegen/src/main/resources/perl/ApiClient.mustache b/modules/swagger-codegen/src/main/resources/perl/ApiClient.mustache index 1623721cc70..4d7d5bb7088 100644 --- a/modules/swagger-codegen/src/main/resources/perl/ApiClient.mustache +++ b/modules/swagger-codegen/src/main/resources/perl/ApiClient.mustache @@ -345,7 +345,7 @@ sub update_params_for_auth { # The endpoint API class has not found any settings for auth. This may be deliberate, # in which case update_params_for_auth() will be a no-op. But it may also be that the -# swagger spec does not describe the intended authorization. So we check in the config for any +# OpenAPI Spec does not describe the intended authorization. So we check in the config for any # auth tokens and if we find any, we use them for all endpoints; sub _global_auth_setup { my ($self, $header_params, $query_params) = @_; diff --git a/modules/swagger-codegen/src/main/resources/perl/README.mustache b/modules/swagger-codegen/src/main/resources/perl/README.mustache index 8d0b7695c15..ac94b5b0638 100644 --- a/modules/swagger-codegen/src/main/resources/perl/README.mustache +++ b/modules/swagger-codegen/src/main/resources/perl/README.mustache @@ -20,7 +20,7 @@ WWW::{{moduleName}}::ApiFactory for non-Moosey usage. # SYNOPSIS The Perl Swagger Codegen project builds a library of Perl modules to interact with -a web service defined by a Swagger specification. See below for how to build the +a web service defined by a OpenAPI Specification. See below for how to build the library. This module provides an interface to the generated library. All the classes, @@ -56,7 +56,7 @@ For documentation of all these methods, see AUTOMATIC DOCUMENTATION below. ## Configuring authentication -In the normal case, the Swagger spec will describe what parameters are +In the normal case, the OpenAPI Spec will describe what parameters are required and where to put them. You just need to supply the tokens. my $tokens = { @@ -203,7 +203,7 @@ output formats are supported: The `-c` option allows you to load and inspect your own application. A dummy namespace is used if you don't supply your own class. -# DOCUMENTATION FROM THE SWAGGER SPEC +# DOCUMENTATION FROM THE OpenAPI Spec Additional documentation for each class and method may be provided by the Swagger spec. If so, this is available via the `class_documentation()` and diff --git a/modules/swagger-codegen/src/main/resources/perl/Role.mustache b/modules/swagger-codegen/src/main/resources/perl/Role.mustache index 7bca8cca78d..ac2298a08e9 100644 --- a/modules/swagger-codegen/src/main/resources/perl/Role.mustache +++ b/modules/swagger-codegen/src/main/resources/perl/Role.mustache @@ -119,7 +119,7 @@ WWW::{{moduleName}}::ApiFactory for non-Moosey usage. =head1 SYNOPSIS The Perl Swagger Codegen project builds a library of Perl modules to interact with -a web service defined by a Swagger specification. See below for how to build the +a web service defined by a OpenAPI Specification. See below for how to build the library. This module provides an interface to the generated library. All the classes, @@ -154,7 +154,7 @@ For documentation of all these methods, see AUTOMATIC DOCUMENTATION below. =head2 Configuring authentication -In the normal case, the Swagger spec will describe what parameters are +In the normal case, the OpenAPI Spec will describe what parameters are required and where to put them. You just need to supply the tokens. my $tokens = { @@ -304,7 +304,7 @@ output formats are supported: The C<-c> option allows you to load and inspect your own application. A dummy namespace is used if you don't supply your own class. -=head1 DOCUMENTATION FROM THE SWAGGER SPEC +=head1 DOCUMENTATION FROM THE OpenAPI Spec Additional documentation for each class and method may be provided by the Swagger spec. If so, this is available via the C and diff --git a/modules/swagger-codegen/src/main/resources/php/configuration.mustache b/modules/swagger-codegen/src/main/resources/php/configuration.mustache index 28082851c00..161affb1c9d 100644 --- a/modules/swagger-codegen/src/main/resources/php/configuration.mustache +++ b/modules/swagger-codegen/src/main/resources/php/configuration.mustache @@ -516,7 +516,7 @@ class Configuration $report = "PHP SDK ({{invokerPackage}}) Debug Report:\n"; $report .= " OS: ".php_uname()."\n"; $report .= " PHP Version: ".phpversion()."\n"; - $report .= " Swagger Spec Version: {{version}}\n"; + $report .= " OpenAPI Spec Version: {{version}}\n"; $report .= " SDK Package Version: {{artifactVersion}}\n"; $report .= " Temp Folder Path: ".self::getDefaultConfiguration()->getTempFolderPath()."\n"; diff --git a/modules/swagger-codegen/src/main/resources/scalatra/README.mustache b/modules/swagger-codegen/src/main/resources/scalatra/README.mustache index 3ffa01fb257..327870827fd 100644 --- a/modules/swagger-codegen/src/main/resources/scalatra/README.mustache +++ b/modules/swagger-codegen/src/main/resources/scalatra/README.mustache @@ -2,7 +2,7 @@ ## Overview This server was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the -[swagger-spec](https://github.com/swagger-api/swagger-core/wiki) from a remote server, you can easily generate a server stub. This +[OpenAPI-Spec](https://github.com/swagger-api/swagger-core/wiki) from a remote server, you can easily generate a server stub. This is an example of building a swagger-enabled scalatra server. This example uses the [scalatra](http://scalatra.org/) framework. To see how to make this your own, look here: diff --git a/modules/swagger-codegen/src/main/resources/silex/README.mustache b/modules/swagger-codegen/src/main/resources/silex/README.mustache index 9f35636b3f8..d335e2f4ab8 100644 --- a/modules/swagger-codegen/src/main/resources/silex/README.mustache +++ b/modules/swagger-codegen/src/main/resources/silex/README.mustache @@ -2,7 +2,7 @@ ## Overview This server was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the -[swagger-spec](https://github.com/swagger-api/swagger-core/wiki) from a remote server, you can easily generate a server stub. This +[OpenAPI-Spec](https://github.com/swagger-api/swagger-core/wiki) from a remote server, you can easily generate a server stub. This is an example of building a PHP server. This example uses the [Silex](http://silex.sensiolabs.org/) micro-framework. To see how to make this your own, please take a look at the template here: diff --git a/modules/swagger-codegen/src/main/resources/slim/README.mustache b/modules/swagger-codegen/src/main/resources/slim/README.mustache index 3b19f46bd38..03910060439 100644 --- a/modules/swagger-codegen/src/main/resources/slim/README.mustache +++ b/modules/swagger-codegen/src/main/resources/slim/README.mustache @@ -2,7 +2,7 @@ ## Overview This server was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the -[swagger-spec](https://github.com/swagger-api/swagger-core/wiki) from a remote server, you can easily generate a server stub. This +[OpenAPI-Spec](https://github.com/swagger-api/swagger-core/wiki) from a remote server, you can easily generate a server stub. This is an example of building a PHP server. This example uses the [Slim Framework](http://www.slimframework.com/). To see how to make this your own, please take a look at the template here: diff --git a/modules/swagger-codegen/src/main/resources/validator/index.mustache b/modules/swagger-codegen/src/main/resources/validator/index.mustache index 2f4c45b32dc..0a1a5438774 100644 --- a/modules/swagger-codegen/src/main/resources/validator/index.mustache +++ b/modules/swagger-codegen/src/main/resources/validator/index.mustache @@ -2,7 +2,7 @@ - Swagger Spec Validator + OpenAPI Spec Validator