From 49a6d0e6c1ec54627279bf6b321f189046249592 Mon Sep 17 00:00:00 2001 From: Kirill Vlasov Date: Tue, 15 Dec 2015 14:09:31 +0500 Subject: [PATCH 001/654] 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 ca06652b942b..9843024b1043 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 8c8308471ffc..818edab02147 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 a8d664918518..0147b47cca36 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 29732f1d45ad..aa5d314184b4 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 7983d83cea15..704b38f7f46f 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 5e85712ffcd6..36309c9ee52f 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 f69ddd16d351..acf0b1b12621 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 7b6bf5e78445..f3ae3b6a4d81 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 e18b9eac0a22..7d11f2a81838 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 8608cbe8924c..44c2b9cb09e7 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 7a06ee8b845f..483e841d7355 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 fb1674772146..429d992b7ef8 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 2f77a4178378..b48ab8008365 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 a7a0420d9846..a7612638255d 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 51ef135ae0dc..b1796c9d4fd4 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 6bc1a3924148..a91b405d36bd 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 4dee5f6f2df6..914c602f86b4 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 9c488db1254a..78a60089cf7b 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 27f39f11ed0d..8190d9963556 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 c712374f4241..0b59e6f4320e 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 b5aa56aa2c46..d7fdd39239af 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 2abff5515b08..18ba3718068e 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 2fd6d8d8bc09..25f0521c5f8c 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 b2f5b9571dd2..8d917430d3ce 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 d50fa8678876..5d6da580130d 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 2e35f412bbfb..3984d0ac85f3 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 1c31b45664e6..44f97009371b 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 ef318cb6bddf..58d8c9e53e5a 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 446185bcd47e..62c9a2a13482 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 b27ba23a4cd4..99ba292915a3 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 a86c2244995f..cb598f8fbd88 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 3241dde7b922..a98d5fc5b131 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 8ee1440b17e9..9c4680112e9d 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 fffd3aa2aae8..e951cfb76d3b 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 8efb5276cffd..83241ddc5e70 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 6c9b615476de..60b6f2b34c62 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 7bc2a86bc6bb..002e4ba8f299 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 3adc19e6db9b..68c2b4b170bf 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 018d34161495..53e67dc099f8 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 fea969d72730..122561ddd942 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 ed58675e12b4..fc772a793080 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 8ec4d1760e8f..55161327b1ce 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/654] 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 53c0e6350b0d..d411a1c32a32 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/654] 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 018d34161495..49613764e08d 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 50019486ec38..fe8b455ecb0e 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 b90c6ee319d6..7cab512b58cf 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 339cac259c1f..b84985d51e1f 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 ed58675e12b4..bb74164e0f0d 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/654] 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/654] 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 91a418d6f9ab..2dd4fc03b389 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 9c2711f8cad8..4d0e64e19a45 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 6bc1a3924148..532abab4596e 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/654] 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 0b735363b77e..7326eade0bfa 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/654] 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 f727560210ad..8235797d8e78 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/654] 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 8235797d8e78..a52cc2125dbb 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/654] 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 a52cc2125dbb..62ce6eec8fd7 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/654] 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 62ce6eec8fd7..2b407c4b1c97 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/654] 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 2b407c4b1c97..4b79ded26519 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/654] 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 4b79ded26519..6471a0688a8d 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/654] 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 68d64562eba6..f972711138b6 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/654] 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 446185bcd47e..23ffe6c0fc4b 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 000000000000..b11e5c2db202 --- /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/654] 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 5d8a4f0fc6bf..87d612299368 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/654] 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 11472fec4ff6..ac91c60fa0f0 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 3623361387ed..24c17615f2d4 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 000000000000..04401b044e52 --- /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 000000000000..1e18bde85caa --- /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 000000000000..bbd7e772d0e7 --- /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 000000000000..420a7df21ed8 --- /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 000000000000..7681d4c5e6fa --- /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 000000000000..187f3ed57950 --- /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 000000000000..cbc962df5303 --- /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 000000000000..5170797cc806 --- /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 000000000000..987c39a72163 --- /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 000000000000..7fd20f55ef4e --- /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 000000000000..608ac3606187 --- /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 000000000000..4c2c73cb9dc6 --- /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 000000000000..b20f0347354b --- /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/654] 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 1e18bde85caa..9e0679538fab 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 5170797cc806..cf6f793805fb 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 987c39a72163..17adb00933b4 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 4c2c73cb9dc6..0a1abeb7827b 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 b20f0347354b..d1dbf4272a26 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/654] 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 ac91c60fa0f0..11472fec4ff6 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 24c17615f2d4..3623361387ed 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 04401b044e52..c9ec24de6b27 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 9e0679538fab..16512786abc9 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 7681d4c5e6fa..0268f62488af 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 187f3ed57950..254b962de2f1 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 cbc962df5303..7544eed63847 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 cf6f793805fb..a83f426471d0 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 17adb00933b4..1682b6ce16a4 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 7fd20f55ef4e..6b505272a15d 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 608ac3606187..e7f26d1d10c2 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 0a1abeb7827b..31c26c7b6e70 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 d1dbf4272a26..f28a510f3cce 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/654] 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 c9ec24de6b27..81008d552cba 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 16512786abc9..d009ad10ef28 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 254b962de2f1..9db0f945110b 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 a83f426471d0..a4ed5033d570 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 1682b6ce16a4..4af27d02b7ab 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 31c26c7b6e70..c5da3c81b6d9 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 f28a510f3cce..a2f72ca9ef3a 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/654] 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 81008d552cba..a7488983d400 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 000000000000..586b35ed3f5a --- /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 d009ad10ef28..ae7fb8412b0c 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 bbd7e772d0e7..83ba416883d1 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 420a7df21ed8..000000000000 --- 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 a4ed5033d570..51b32061e0fe 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 4af27d02b7ab..c43d320077c9 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 c5da3c81b6d9..9907453bd392 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/654] 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 f3678e783e09..7db012f439cd 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 22726c84c046..50c9ce48f382 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/654] 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 13a3600918d0..e52373c3c081 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/654] 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 99dcdb517805..664e0e45a58f 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 19cb83d620cb..0314969b99e8 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 9b5c68057448..ba143470c9ad 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/654] 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 8d84f065284c..dd8d9aefa902 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/654] 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 db34c76636c6..02ecb7220cdf 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/654] 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 cd1dd28b9d9b..64f3b7eb5ce3 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/654] 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 837b1234fd0b..54854efe332f 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 4c05f2560fa1..160fa85a57d1 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 52a3eb43855c..53be21db3b0f 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 7173a4450c64..0a67bae014fc 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 c2bfef4e8e4e..aeb4eefad512 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/654] 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 664e0e45a58f..8c0880bf2171 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 0314969b99e8..10be2206a424 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/654] 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 f6156dbcee99..7db8c7ec9161 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 000000000000..435c29ac0703 --- /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 000000000000..c19430ec9ab1 --- /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/654] 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 0d367cb8be34..ed5786d3faa8 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 d156ef144176..85b227ece87c 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 ed41db4bfb13..1c95cf1afe58 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 ea6c50e2549c..57e586dc0290 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 c3865cb3cccf..f1a2ad59f379 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 231e7f59228e..19cf534cea83 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 0a9f74b3e764..8015d1bd3a23 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/654] 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 ad9cbead5e97..66762d74b2bc 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 57e586dc0290..5fc929a20a29 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 f1a2ad59f379..301bc80285d2 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/654] 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 000000000000..215625487656 --- /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 000000000000..ab2ba5d71bf3 --- /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/654] 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 d5702b5c50a0..b4d964647b7e 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 32e169ac8782..e77258a08189 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 dd8d9aefa902..5dc25b514d68 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/654] 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 5dc25b514d68..fb331918d87d 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/654] 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 cce59f4d94b5..23855792e6d7 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/654] 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 bd82444f4fe0..c91e54f6e57a 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 cc023b61bd27..7d7a04e653cc 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/654] 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 8190d9963556..2e220841f5db 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 a41931940bae..aed1aec3118a 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 00c572453c1e..95af03e09d38 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 adfe2455d658..d07bf6f71216 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 43c12b040c73..77dd19a7caf2 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 ea5f6160ee5f..cbb7a21c26c9 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 a1aeb1341784..f1f49e85f5e8 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 a50eded7cde0..dd84157915bb 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 cb431b1e059f..3e7fd312141e 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 06ccfca98e80..7cceeca62fd8 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 941d9e0ce246..cfe13ba5e216 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/654] 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 d07bf6f71216..5468824638bb 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 77dd19a7caf2..a1b2b4af09c3 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 7cceeca62fd8..06ccfca98e80 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 cfe13ba5e216..dfc004ebc3d8 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/654] 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 2e220841f5db..51f394d5db32 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 95af03e09d38..d2e1b2a2a505 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 5468824638bb..4cf6dc854702 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 a1b2b4af09c3..39767d613edd 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 cbb7a21c26c9..500218017bc2 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 f1f49e85f5e8..eadf72be0054 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 dd84157915bb..e114c1e1ec03 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 3e7fd312141e..463424288d82 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 dfc004ebc3d8..4b4d5144f58d 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/654] 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 25f0521c5f8c..d292362e2b94 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 ddb68998e9eb..d4ea5b334a62 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 2000b2be86f1..ec5ee0ac17c3 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 f253a2c0e60f..21de688e525c 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 4c21fb331d3f..82cc9a8c4fc8 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 af0ec63e79f4..000000000000 --- 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 e223e747e747..2e6effd24c02 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 19a33d1cfc30..0ff43744c75a 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 fb967cbbab4f..cba403d7e280 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 681c2a2a5c94..a821b665d178 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 ca00bf34be13..1959adeaa422 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 313d47f5d54f..a2614ba9c168 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/654] 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 32e169ac8782..32a12cdb21b3 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 dd8d9aefa902..d9c7b4f26815 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 3623361387ed..2c5ca67198c7 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 6471a0688a8d..2e698162182d 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 ad892917c701..8771d10aebe4 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 36309c9ee52f..310b4788dd08 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 c8b581b3d3a4..d4a8ada06b97 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 44c2b9cb09e7..dac3d23b22ac 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 e408641c8a62..282fa7c68ce7 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 67b99bbd2828..ac680d594632 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 d7fdd39239af..5ac251ed02fc 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 25f0521c5f8c..a85b6e152d0b 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 8d917430d3ce..9469cbb8e819 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 44f97009371b..e478c00341e2 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 e951cfb76d3b..ddd72e4230b3 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/654] 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 64f3b7eb5ce3..33b7e2c1f89b 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/654] 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 435c29ac0703..d43b0c432865 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 23ffe6c0fc4b..b68c9dd98996 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 000000000000..566a4c83d8de --- /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/654] 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 c9583f1bc636..073966b0c217 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 b7b4ea2cf3f0..0794a94f6dce 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 b7b4ea2cf3f0..0794a94f6dce 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 b7b4ea2cf3f0..0794a94f6dce 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 2e9facfb14d2..8d92141fa7fb 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 4ba4ee3a2f3c..cd6112efeb91 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 abcb97e84eef..03efe0d240c8 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 b488fab6c3fd..fc1cb16b3202 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 5a979dcb73e7..d5577325a7ce 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 41cfb3d80d6a..66f5ea8474d0 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 61960c622f68..5f2ad2cd4cf4 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 c843634389db..bd924d2f4b7f 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 ab98bf61e891..000000000000 --- 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 463da28c6384..c0d16bbe2c1d 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 9b4907677594..d2a2d7a66e21 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 471bbe34b006..b7095d0e74f7 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 02b5b85be403..b9469ad2a508 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 4d072f67d477..1fdfef1eecea 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 e9cc1341e04f..1fa35d9ee726 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 abe1bb895d39..c0b1b559f90d 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 6c90b3eca400..002d51a2908a 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 28343f0fc441..33126c58b78f 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 a7ee39070c84..28d7f5779a64 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 5bfea7707f47..d68a953a95c3 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 3a105a258e4b..e67d875db410 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 4f15da15c65b..25ca3dbe94ea 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 18c51201ad40..3e9c7bb0765d 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 7e771866b39e..d67add42e256 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 474904011f74..b444bf874878 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 82f1a0822db4..8fbc8cbd231c 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 fa3abdc9c787..3f54bb1c0164 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 777de9a34e3e..000000000000 --- 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 4f15da15c65b..25ca3dbe94ea 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 18c51201ad40..3e9c7bb0765d 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 bc3b80370b05..d67add42e256 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 474904011f74..b444bf874878 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 82f1a0822db4..8fbc8cbd231c 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 000000000000..1a6255eb563e --- /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 000000000000..465dcb520c40 --- /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 47f9908c4ded..9beb93a84653 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 4f15da15c65b..25ca3dbe94ea 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 18c51201ad40..3e9c7bb0765d 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 bc3b80370b05..d67add42e256 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 474904011f74..b444bf874878 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 82f1a0822db4..8fbc8cbd231c 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/654] 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 edeea0005c06..183cd5e6d2a5 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/654] 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 0b59e6f4320e..6ce24b2e1ef0 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 c91e54f6e57a..bd82444f4fe0 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 7d7a04e653cc..cc023b61bd27 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/654] 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 6ce24b2e1ef0..d2f5aaef0be4 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/654] 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 51f394d5db32..70f52403f887 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 4cf6dc854702..ef43f3fcfd2d 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 4b4d5144f58d..3d45a004b990 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/654] 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 70f52403f887..8950ff21a22f 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 ef43f3fcfd2d..b8b8c1bda778 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 3d45a004b990..8c9e85ed5063 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/654] 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 000000000000..540ea296ca05 --- /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/654] 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 540ea296ca05..ad546aba86f5 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/654] 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 000000000000..36946390fded --- /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 000000000000..549d56b42fdd --- /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/654] 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 000000000000..6c805a832e44 --- /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/654] 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 000000000000..b255bbc4592c --- /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/654] 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 000000000000..91be40c66a29 --- /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/654] 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 000000000000..c696f58f85e5 --- /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/654] 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 c696f58f85e5..1ea9da0898be 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 000000000000..5456028a1a08 --- /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 000000000000..ae8d18d37315 --- /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/654] 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 b255bbc4592c..87e41695df48 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/654] 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 1ea9da0898be..3b546913554e 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 000000000000..7daf83607535 --- /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/654] 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 87e41695df48..8cfc11b5ec46 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/654] 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 91be40c66a29..ec5907e6f5b4 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/654] 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 3b546913554e..1555b715ecd8 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 000000000000..7a8cbf7e8d3a --- /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/654] 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 1555b715ecd8..f537405090d8 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/654] 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 000000000000..ed1e7f7efcfa --- /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 000000000000..165749c3cc4b --- /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/654] 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 f537405090d8..ee2b563bbc20 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/654] 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 ee2b563bbc20..0241c5f31efe 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 000000000000..a6bcba75b7c1 --- /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/654] 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 8cfc11b5ec46..96f03dd18287 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/654] 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 ad546aba86f5..87e5e9edfb45 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/654] 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 7a8cbf7e8d3a..bb4d463e2c57 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/654] 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 5d8a4f0fc6bf..13cf4d7112db 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/654] 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 87e5e9edfb45..ce96d62cf9f9 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/654] 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 96f03dd18287..0feca99aef95 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/654] 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 0feca99aef95..8815150576b9 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/654] 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 8815150576b9..fe1b0f20c0b9 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/654] 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 7daf83607535..80b2c4e8cdf8 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/654] 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 ec5907e6f5b4..63803c3b481a 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 80b2c4e8cdf8..2c61a0fa3d4f 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/654] 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 0241c5f31efe..27b730aed771 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/654] 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 27b730aed771..5b20019aa79d 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 037ef58ab90e..265c74cb76f9 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 fe1b0f20c0b9..b7bb96df0b1b 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 ce96d62cf9f9..73cf7fbf4126 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 000000000000..a1824b551ca9 --- /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 000000000000..265c74cb76f9 --- /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/654] 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 b7bb96df0b1b..20adddf2bbc3 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/654] 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 73cf7fbf4126..164bc8fc0e93 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 2c61a0fa3d4f..f11fddd25efc 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/654] Added Android-Volley to readme and pom --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3f1691144b9a..10bd3e464c6a 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/654] 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 5b20019aa79d..c0a1eec511e4 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 20adddf2bbc3..aaec4e235d20 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 164bc8fc0e93..ac70a1293fe9 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 000000000000..9e54c7cfe9a9 --- /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/654] 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 000000000000..e1def4870225 --- /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/654] 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 c0a1eec511e4..347de743231d 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 ac70a1293fe9..a5fb652007f9 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 000000000000..0df3f6e4ac4b --- /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/654] 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 a5fb652007f9..f5b3a763d58e 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 000000000000..87270b48ebfd --- /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/654] 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 347de743231d..91bf395369d7 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/654] 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 aaec4e235d20..20adddf2bbc3 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/654] 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 20adddf2bbc3..c1fbacf7e232 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/654] 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 91bf395369d7..e595fb6a2234 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 f5b3a763d58e..04e6fdbc05c0 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 000000000000..64fc61f95c15 --- /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/654] 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 165749c3cc4b..7f4a79f73113 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/654] 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 7f4a79f73113..6b549476ce2e 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/654] 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 e1def4870225..f8ba67539765 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 000000000000..36b8652f5359 --- /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 000000000000..29c1d7cad36d --- /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 000000000000..31bc8a0978ad --- /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 000000000000..5aa102b2bb02 --- /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 000000000000..5aa10d3ea825 --- /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 000000000000..2710fb5a99be --- /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 000000000000..c0de417b616a --- /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 000000000000..927c96c15b0e --- /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 000000000000..5a74a4ddad3f --- /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 000000000000..14351e3fd0ca --- /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 000000000000..0e5ca9c7c538 --- /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 000000000000..98b1a6900b93 --- /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 000000000000..98e5c25c80f9 --- /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 000000000000..4ef664deba2d --- /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 000000000000..cf7eb877b2ab --- /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 000000000000..e87a002a1447 --- /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 000000000000..fabdab0b4e37 --- /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 000000000000..36b0c6ad07d6 --- /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 000000000000..91be40c66a29 --- /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 000000000000..206a745e5b2b --- /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/654] 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 000000000000..97d0eb16b1ad --- /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 000000000000..0a7b40e510ec --- /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/654] 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 f8ba67539765..ab6ab7d9f084 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/654] 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 c1fbacf7e232..ccd12fd67c55 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 bb4d463e2c57..7cb955f7239f 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/654] [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 afeb5cd62d5f..a4bc5c54a201 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/654] 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 e595fb6a2234..9eeb9618b480 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 36946390fded..58711d9a3f81 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 549d56b42fdd..e67948935cc2 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 36b8652f5359..13edc8fdab2a 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/654] 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 a91b405d36bd..53a7bbffcab5 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 ac6288b7f1e8..055bb721ad81 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 0b735363b77e..ae68a5dfb835 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/654] 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 3b8c48c3caa0..000000000000 --- 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 000000000000..f94217909835 --- /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 000000000000..7bd4027e63dc --- /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 000000000000..8c4cd4cbd157 --- /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 000000000000..93bb6f19d506 --- /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 ef24287b0051..9ae5e6dc3e4b 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/654] 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 53a7bbffcab5..10b2ec77206c 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 000000000000..55219787f89d --- /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 000000000000..3f2ac1a9ec1b --- /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/654] 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 10b2ec77206c..ae22656cd979 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 f240464851d2..7bad8dbee0ad 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 b8426a0a6931..0d1b06de43a0 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/654] 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 8364800fce69..415fd729de90 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 704b38f7f46f..636739c6b642 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 acf0b1b12621..5a1d1b9598bd 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 e408641c8a62..08a28b81bf1c 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 8950ff21a22f..76c1afacb565 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 d7fdd39239af..205e710e990f 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/654] 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 ae22656cd979..1cf57b8bdef1 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/654] 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 e0ec74385ff0..6010e26704f5 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/654] 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 c111a3af2fcb..a74e652bb6d8 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 9c2711f8cad8..06d7e801176d 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 415fd729de90..c8362d1b19d0 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 08a28b81bf1c..f23b719d679f 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 8d92141fa7fb..6d65b5a888da 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 d7046dda9b2a..8c54a382993b 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 8ea7ee314528..7e5fd36793a8 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/654] 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 b4d964647b7e..3713261f8f1d 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 3623361387ed..01ac045c38dc 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 f23b719d679f..247517d948c3 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 b62cb9832818..2f3d4780a333 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 46828a1f805f..33470e9bb501 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/654] 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 3cdc01fe3f5a..502e4d046bae 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/654] improved install instructions --- README.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3f1691144b9a..9f396cc3ff42 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/654] 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 1cf57b8bdef1..9998822c4c90 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 000000000000..073966b0c217 --- /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 000000000000..6010e26704f5 --- /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 000000000000..7aea7b92f22f --- /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 63bba4a8dfb9..2f3d4780a333 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 000000000000..6d65b5a888da --- /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/654] 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 a7612638255d..01ca02f185d9 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 000000000000..073966b0c217 --- /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 000000000000..6010e26704f5 --- /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 000000000000..7aea7b92f22f --- /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 39f0f0b6fa12..005d63991daf 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 000000000000..eea33d346d4d --- /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/654] 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 01ac045c38dc..c5be6d4563a8 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 2f3d4780a333..005d63991daf 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 6d65b5a888da..eea33d346d4d 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 2f3d4780a333..005d63991daf 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 6d65b5a888da..eea33d346d4d 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/654] 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 4bef580bb265..f80eeb3cd013 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 9f396cc3ff42..bbb6a443368f 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 372b2c90adf6..f42e9cc8778b 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 01ac045c38dc..705d55932138 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 d2f5aaef0be4..192fd285e534 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 3984d0ac85f3..4effb480048e 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 58d8c9e53e5a..ae28493fe7ce 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 7bad8dbee0ad..3551b9e99149 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 9cf2b4bc6e80..1354151afbbe 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 a434038ec411..268a84a0edd1 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 ed64b6675587..7e80a2086ef5 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 183cd5e6d2a5..d94aa385ec03 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 1623721cc70d..4d7d5bb70882 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 8d0b7695c153..ac94b5b06380 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 7bca8cca78d7..ac2298a08e9f 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 28082851c009..161affb1c9d8 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 3ffa01fb2571..327870827fd6 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 9f35636b3f86..d335e2f4ab88 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 3b19f46bd38f..03910060439a 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 2f4c45b32dc0..0a1a54387749 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