From f8cafaaee7d6a9ac69de3c2fcc6c7056ae8c8c53 Mon Sep 17 00:00:00 2001 From: hrachya Date: Tue, 26 May 2015 15:49:32 -0700 Subject: [PATCH 01/18] new CliOption class for wrapping org.apache.commons.cli.Option --- .../wordnik/swagger/codegen/CliOption.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/CliOption.java diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/CliOption.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/CliOption.java new file mode 100644 index 00000000000..837759b9d2f --- /dev/null +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/CliOption.java @@ -0,0 +1,44 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wordnik.swagger.codegen; + +import org.apache.commons.cli.Option; + +public class CliOption extends Option { + + private Boolean langSpecific = false; + + public CliOption(String opt, String description) throws IllegalArgumentException { + super(opt, description); + } + + public CliOption(String opt, boolean hasArg, String description) throws IllegalArgumentException { + super(opt, hasArg, description); + } + + public CliOption(String opt, String longOpt, boolean hasArg, String description) throws IllegalArgumentException { + super(opt, longOpt, hasArg, description); + } + + public CliOption(String opt, String description, Boolean langSpecific) throws IllegalArgumentException { + this(opt, description); + this.langSpecific = langSpecific; + } + + public CliOption(String opt, boolean hasArg, String description, Boolean langSpecific) throws IllegalArgumentException { + this(opt, hasArg, description); + this.langSpecific = langSpecific; + } + + public CliOption(String opt, String longOpt, boolean hasArg, String description, Boolean langSpecific) throws IllegalArgumentException { + this(opt, longOpt, hasArg, description); + this.langSpecific = langSpecific; + } + + public Boolean isLangSpecific() { + return langSpecific; + } +} From 9f1504062af24a7a589f2e5112a5ed9356e88881 Mon Sep 17 00:00:00 2001 From: hrachya Date: Tue, 26 May 2015 15:52:25 -0700 Subject: [PATCH 02/18] add List cliOptions() method to CodegenConfig interface with default implementation in DefaultCodegen --- .../main/java/com/wordnik/swagger/codegen/CodegenConfig.java | 1 + .../java/com/wordnik/swagger/codegen/DefaultCodegen.java | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/CodegenConfig.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/CodegenConfig.java index 167610fcd70..b112923b6d7 100644 --- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/CodegenConfig.java +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/CodegenConfig.java @@ -27,6 +27,7 @@ public interface CodegenConfig { String getTypeDeclaration(Property p); String getTypeDeclaration(String name); void processOpts(); + List cliOptions(); String generateExamplePath(String path, Operation operation); Set reservedWords(); diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java index 2513bedfcb9..4bb7940b148 100644 --- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java @@ -77,6 +77,11 @@ public class DefaultCodegen { protected String templateDir; protected Map additionalProperties = new HashMap(); protected List supportingFiles = new ArrayList(); + protected List cliOptions = new ArrayList(); + + public List cliOptions() { + return cliOptions; + } public void processOpts(){ if(additionalProperties.containsKey("templateDir")) { From 33436d62c3a50d3d5c0f56b938fdf6e2e2f36c7a Mon Sep 17 00:00:00 2001 From: hrachya Date: Tue, 26 May 2015 15:57:01 -0700 Subject: [PATCH 03/18] Get all cliOptions for available codegen configs and add to command line options Add all the specified ones to clientOpts properties --- .../com/wordnik/swagger/codegen/Codegen.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/Codegen.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/Codegen.java index efda171ff82..1adcc792a8e 100644 --- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/Codegen.java +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/Codegen.java @@ -51,6 +51,30 @@ public static void main(String[] args) { options.addOption("d", "debug-info", false, "prints additional info for debugging"); options.addOption("a", "auth", true, "adds authorization headers when fetching the swagger definitions remotely. Pass in a URL-encoded string of name:header with a comma separating multiple values"); + //adding additional options from language specific configs + Option existingOption; + for (Map.Entry configEntry : configs.entrySet()) { + for (CliOption langCliOption : configEntry.getValue().cliOptions()) { + //lang specific option + if (langCliOption.isLangSpecific()) { + //option exists, update description + if (options.hasOption(langCliOption.getOpt())) { + existingOption = options.getOption(langCliOption.getOpt()); + existingOption.setDescription(existingOption.getDescription() + "\n" + configEntry.getKey() + ": " + langCliOption.getDescription()); + } else { + //new option, prepend 'lang: ' to the description and add + langCliOption.setDescription(configEntry.getKey() + ": " + langCliOption.getDescription()); + options.addOption((Option) langCliOption); + } + } else { + //not lang specific, add if not already there + if (!options.hasOption(langCliOption.getOpt())) { + options.addOption((Option) langCliOption); + } + } + } + } + ClientOptInput clientOptInput = new ClientOptInput(); ClientOpts clientOpts = new ClientOpts(); Swagger swagger = null; @@ -92,6 +116,13 @@ public static void main(String[] args) { swagger = new SwaggerParser().read(cmd.getOptionValue("i"), clientOptInput.getAuthorizationValues(), true); if (cmd.hasOption("t")) clientOpts.getProperties().put("templateDir", String.valueOf(cmd.getOptionValue("t"))); + + //add all passed cliOptions to clientOpts.properties + for (CliOption langCliOption : clientOptInput.getConfig().cliOptions()) { + if (cmd.hasOption(langCliOption.getOpt())) { + clientOpts.getProperties().put(langCliOption.getOpt(), String.valueOf(cmd.getOptionValue(langCliOption.getOpt()))); + } + } } catch (Exception e) { usage(options); From d7dec5a43d5047c565247f99bd4cde486b9bdf61 Mon Sep 17 00:00:00 2001 From: hrachya Date: Tue, 26 May 2015 16:02:27 -0700 Subject: [PATCH 04/18] Use new functionality to add 't' as a command line option to set 'templateDir' --- modules/swagger-codegen/nbactions.xml | 46 +++++++++++++++++++ .../com/wordnik/swagger/codegen/Codegen.java | 3 -- .../swagger/codegen/DefaultCodegen.java | 6 ++- 3 files changed, 50 insertions(+), 5 deletions(-) create mode 100644 modules/swagger-codegen/nbactions.xml diff --git a/modules/swagger-codegen/nbactions.xml b/modules/swagger-codegen/nbactions.xml new file mode 100644 index 00000000000..92802c5f44d --- /dev/null +++ b/modules/swagger-codegen/nbactions.xml @@ -0,0 +1,46 @@ + + + + run + + jar + + + process-classes + org.codehaus.mojo:exec-maven-plugin:1.2.1:exec + + + -classpath %classpath ${packageClassName} generate -i http://hyeghsealnxd1.bigfish.lan:83/gamestatus.json -l java -o /home/hrachya/Desktop/codegen/java -t blah + java + + + + debug + + jar + + + process-classes + org.codehaus.mojo:exec-maven-plugin:1.2.1:exec + + + -Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address} -classpath %classpath ${packageClassName} generate -i http://hyeghsealnxd1.bigfish.lan:83/gamestatus.json -l java -o /home/hrachya/Desktop/codegen/java -t blah + java + true + + + + profile + + jar + + + process-classes + org.codehaus.mojo:exec-maven-plugin:1.2.1:exec + + + -classpath %classpath ${packageClassName} generate -i http://hyeghsealnxd1.bigfish.lan:83/gamestatus.json -l java -o /home/hrachya/Desktop/codegen/java -t blah + java + + + diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/Codegen.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/Codegen.java index 1adcc792a8e..76c95ae102f 100644 --- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/Codegen.java +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/Codegen.java @@ -47,7 +47,6 @@ public static void main(String[] args) { options.addOption("l", "lang", true, "client language to generate.\nAvailable languages include:\n\t[" + configString + "]"); options.addOption("o", "output", true, "where to write the generated files"); options.addOption("i", "input-spec", true, "location of the swagger spec, as URL or file"); - options.addOption("t", "template-dir", true, "folder containing the template files"); options.addOption("d", "debug-info", false, "prints additional info for debugging"); options.addOption("a", "auth", true, "adds authorization headers when fetching the swagger definitions remotely. Pass in a URL-encoded string of name:header with a comma separating multiple values"); @@ -114,8 +113,6 @@ public static void main(String[] args) { } if (cmd.hasOption("i")) swagger = new SwaggerParser().read(cmd.getOptionValue("i"), clientOptInput.getAuthorizationValues(), true); - if (cmd.hasOption("t")) - clientOpts.getProperties().put("templateDir", String.valueOf(cmd.getOptionValue("t"))); //add all passed cliOptions to clientOpts.properties for (CliOption langCliOption : clientOptInput.getConfig().cliOptions()) { diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java index 4bb7940b148..97c5798f223 100644 --- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java @@ -84,8 +84,8 @@ public List cliOptions() { } public void processOpts(){ - if(additionalProperties.containsKey("templateDir")) { - this.setTemplateDir((String)additionalProperties.get("templateDir")); + if(additionalProperties.containsKey("t")) { + this.setTemplateDir((String)additionalProperties.get("t")); } } @@ -286,6 +286,8 @@ public DefaultCodegen() { importMapping.put("LocalDateTime", "org.joda.time.*"); importMapping.put("LocalDate", "org.joda.time.*"); importMapping.put("LocalTime", "org.joda.time.*"); + + cliOptions.add(new CliOption("t", "template-dir", true, "folder containing the template files")); } From e08a5a9d83aeb979181ef1469ddc13ae90d6b134 Mon Sep 17 00:00:00 2001 From: hrachya Date: Tue, 26 May 2015 17:01:07 -0700 Subject: [PATCH 05/18] Add 'modelPackage' and 'apiPackage' as command line options Add setters for modelPackage and apiPackage --- .../swagger/codegen/DefaultCodegen.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java index 97c5798f223..6571990efc7 100644 --- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java @@ -87,6 +87,14 @@ public void processOpts(){ if(additionalProperties.containsKey("t")) { this.setTemplateDir((String)additionalProperties.get("t")); } + + if(additionalProperties.containsKey("modelPackage")) { + this.setModelPackage((String)additionalProperties.get("modelPackage")); + } + + if(additionalProperties.containsKey("apiPackage")) { + this.setApiPackage((String)additionalProperties.get("apiPackage")); + } } // override with any special post-processing @@ -183,6 +191,14 @@ public void setTemplateDir(String templateDir) { this.templateDir = templateDir; } + public void setModelPackage(String modelPackage) { + this.modelPackage = modelPackage; + } + + public void setApiPackage(String apiPackage) { + this.apiPackage = apiPackage; + } + public String toApiFilename(String name) { return toApiName(name); } @@ -288,6 +304,8 @@ public DefaultCodegen() { importMapping.put("LocalTime", "org.joda.time.*"); cliOptions.add(new CliOption("t", "template-dir", true, "folder containing the template files")); + cliOptions.add(new CliOption("modelPackage", "model-package", true, "Package for generated models")); + cliOptions.add(new CliOption("apiPackage", "api-package", true, "Package for generated api classes")); } From 1e09f5149ee773fd970fce9da6901f0762f880fe Mon Sep 17 00:00:00 2001 From: hrachya Date: Tue, 26 May 2015 17:05:53 -0700 Subject: [PATCH 06/18] Add 'invokerPackage', 'groupId', 'arifactId', 'artifactVersion', 'sourceFolder' command line options for java (and all the derived ones jaxrs, spring-mvc ...) Add processOpts override to process java specific options Move supporting file initialization from constructor to processOpts, since it uses some of the options that are not yet set in the constructor Add setters --- .../codegen/languages/JavaClientCodegen.java | 88 ++++++++++++++++--- 1 file changed, 75 insertions(+), 13 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/JavaClientCodegen.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/JavaClientCodegen.java index 7c0ac7422ff..622e1322a1d 100644 --- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/JavaClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/JavaClientCodegen.java @@ -45,19 +45,6 @@ public JavaClientCodegen() { "native", "super", "while") ); - additionalProperties.put("invokerPackage", invokerPackage); - additionalProperties.put("groupId", groupId); - additionalProperties.put("artifactId", artifactId); - additionalProperties.put("artifactVersion", artifactVersion); - - supportingFiles.add(new SupportingFile("pom.mustache", "", "pom.xml")); - supportingFiles.add(new SupportingFile("apiInvoker.mustache", - (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "ApiInvoker.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")); - languageSpecificPrimitives = new HashSet( Arrays.asList( "String", @@ -71,8 +58,65 @@ public JavaClientCodegen() { ); instantiationTypes.put("array", "ArrayList"); instantiationTypes.put("map", "HashMap"); + + cliOptions.add(new CliOption("invokerPackage", "invoker-package", true, "Root package for generated code", true)); + cliOptions.add(new CliOption("groupId", "group-id", true, "groupId in pom.xml", true)); + cliOptions.add(new CliOption("artifactId", "artifact-id", true, "groupId in pom.xml", true)); + cliOptions.add(new CliOption("artifactVersion", "artifact-version", true, "artifact version in pom.xml", true)); + cliOptions.add(new CliOption("sourceFolder", "source-folder", true, "Source folder for generated code", true)); } + @Override + public void processOpts() { + super.processOpts(); + + if(additionalProperties.containsKey("invokerPackage")) { + this.setInvokerPackage((String)additionalProperties.get("invokerPackage")); + } + else{ + //not set, use default to be passed to template + additionalProperties.put("invokerPackage", invokerPackage); + } + + if(additionalProperties.containsKey("groupId")) { + this.setGroupId((String)additionalProperties.get("groupId")); + } + else{ + //not set, use to be passed to template + additionalProperties.put("groupId", groupId); + } + + if(additionalProperties.containsKey("artifactId")) { + this.setArtifactId((String)additionalProperties.get("artifactId")); + } + else{ + //not set, use to be passed to template + additionalProperties.put("artifactId", artifactId); + } + + if(additionalProperties.containsKey("artifactVersion")) { + this.setArtifactVersion((String)additionalProperties.get("artifactVersion")); + } + else{ + //not set, use to be passed to template + additionalProperties.put("artifactVersion", artifactVersion); + } + + if(additionalProperties.containsKey("sourceFolder")) { + this.setSourceFolder((String)additionalProperties.get("sourceFolder")); + } + + supportingFiles.add(new SupportingFile("pom.mustache", "", "pom.xml")); + supportingFiles.add(new SupportingFile("apiInvoker.mustache", + (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "ApiInvoker.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")); + } + + + @Override public String escapeReservedWord(String name) { return "_" + name; @@ -169,5 +213,23 @@ public String toOperationId(String operationId) { return camelize(operationId, true); } + 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 74f5c769f9b5a31ed6980d26ab6940101d6cba81 Mon Sep 17 00:00:00 2001 From: hrachya Date: Tue, 26 May 2015 17:10:19 -0700 Subject: [PATCH 07/18] removing extra file, was committed by mistake --- modules/swagger-codegen/nbactions.xml | 46 --------------------------- 1 file changed, 46 deletions(-) delete mode 100644 modules/swagger-codegen/nbactions.xml diff --git a/modules/swagger-codegen/nbactions.xml b/modules/swagger-codegen/nbactions.xml deleted file mode 100644 index 92802c5f44d..00000000000 --- a/modules/swagger-codegen/nbactions.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - run - - jar - - - process-classes - org.codehaus.mojo:exec-maven-plugin:1.2.1:exec - - - -classpath %classpath ${packageClassName} generate -i http://hyeghsealnxd1.bigfish.lan:83/gamestatus.json -l java -o /home/hrachya/Desktop/codegen/java -t blah - java - - - - debug - - jar - - - process-classes - org.codehaus.mojo:exec-maven-plugin:1.2.1:exec - - - -Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address} -classpath %classpath ${packageClassName} generate -i http://hyeghsealnxd1.bigfish.lan:83/gamestatus.json -l java -o /home/hrachya/Desktop/codegen/java -t blah - java - true - - - - profile - - jar - - - process-classes - org.codehaus.mojo:exec-maven-plugin:1.2.1:exec - - - -classpath %classpath ${packageClassName} generate -i http://hyeghsealnxd1.bigfish.lan:83/gamestatus.json -l java -o /home/hrachya/Desktop/codegen/java -t blah - java - - - From a9e767cbd8ed98c1b448bacabe84c533e0061c54 Mon Sep 17 00:00:00 2001 From: hrachya Date: Wed, 27 May 2015 17:19:34 -0700 Subject: [PATCH 08/18] Rolling back changes to deprecated class --- .../com/wordnik/swagger/codegen/Codegen.java | 36 +++---------------- 1 file changed, 4 insertions(+), 32 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/Codegen.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/Codegen.java index 76c95ae102f..c28031a9f27 100644 --- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/Codegen.java +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/Codegen.java @@ -47,33 +47,10 @@ public static void main(String[] args) { options.addOption("l", "lang", true, "client language to generate.\nAvailable languages include:\n\t[" + configString + "]"); options.addOption("o", "output", true, "where to write the generated files"); options.addOption("i", "input-spec", true, "location of the swagger spec, as URL or file"); + options.addOption("t", "template-dir", true, "folder containing the template files"); options.addOption("d", "debug-info", false, "prints additional info for debugging"); options.addOption("a", "auth", true, "adds authorization headers when fetching the swagger definitions remotely. Pass in a URL-encoded string of name:header with a comma separating multiple values"); - //adding additional options from language specific configs - Option existingOption; - for (Map.Entry configEntry : configs.entrySet()) { - for (CliOption langCliOption : configEntry.getValue().cliOptions()) { - //lang specific option - if (langCliOption.isLangSpecific()) { - //option exists, update description - if (options.hasOption(langCliOption.getOpt())) { - existingOption = options.getOption(langCliOption.getOpt()); - existingOption.setDescription(existingOption.getDescription() + "\n" + configEntry.getKey() + ": " + langCliOption.getDescription()); - } else { - //new option, prepend 'lang: ' to the description and add - langCliOption.setDescription(configEntry.getKey() + ": " + langCliOption.getDescription()); - options.addOption((Option) langCliOption); - } - } else { - //not lang specific, add if not already there - if (!options.hasOption(langCliOption.getOpt())) { - options.addOption((Option) langCliOption); - } - } - } - } - ClientOptInput clientOptInput = new ClientOptInput(); ClientOpts clientOpts = new ClientOpts(); Swagger swagger = null; @@ -113,13 +90,8 @@ public static void main(String[] args) { } if (cmd.hasOption("i")) swagger = new SwaggerParser().read(cmd.getOptionValue("i"), clientOptInput.getAuthorizationValues(), true); - - //add all passed cliOptions to clientOpts.properties - for (CliOption langCliOption : clientOptInput.getConfig().cliOptions()) { - if (cmd.hasOption(langCliOption.getOpt())) { - clientOpts.getProperties().put(langCliOption.getOpt(), String.valueOf(cmd.getOptionValue(langCliOption.getOpt()))); - } - } + if (cmd.hasOption("t")) + clientOpts.getProperties().put("templateDir", String.valueOf(cmd.getOptionValue("t"))); } catch (Exception e) { usage(options); @@ -168,4 +140,4 @@ public static CodegenConfig getConfig(String name) { } } } -} +} \ No newline at end of file From 2cca1a8c2c8ec33f2b34a43bed172e55b0bc0c7b Mon Sep 17 00:00:00 2001 From: hrachya Date: Wed, 27 May 2015 17:22:44 -0700 Subject: [PATCH 09/18] Changing templateDir back to explicit option for cli --- .../main/java/com/wordnik/swagger/codegen/DefaultCodegen.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java index 6571990efc7..f7ec12b2c94 100644 --- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java @@ -84,7 +84,7 @@ public List cliOptions() { } public void processOpts(){ - if(additionalProperties.containsKey("t")) { + if(additionalProperties.containsKey("templateDir")) { this.setTemplateDir((String)additionalProperties.get("t")); } @@ -303,7 +303,6 @@ public DefaultCodegen() { importMapping.put("LocalDate", "org.joda.time.*"); importMapping.put("LocalTime", "org.joda.time.*"); - cliOptions.add(new CliOption("t", "template-dir", true, "folder containing the template files")); cliOptions.add(new CliOption("modelPackage", "model-package", true, "Package for generated models")); cliOptions.add(new CliOption("apiPackage", "api-package", true, "Package for generated api classes")); } From c3055c7cc456b523e88dceb38bf2d639cfa4ae25 Mon Sep 17 00:00:00 2001 From: hrachya Date: Wed, 27 May 2015 17:30:42 -0700 Subject: [PATCH 10/18] Adding Config and ConfigParser classes --- .../src/main/java/config/Config.java | 38 +++++++++++++++ .../src/main/java/config/ConfigParser.java | 46 +++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 modules/swagger-codegen/src/main/java/config/Config.java create mode 100644 modules/swagger-codegen/src/main/java/config/ConfigParser.java diff --git a/modules/swagger-codegen/src/main/java/config/Config.java b/modules/swagger-codegen/src/main/java/config/Config.java new file mode 100644 index 00000000000..745824bd816 --- /dev/null +++ b/modules/swagger-codegen/src/main/java/config/Config.java @@ -0,0 +1,38 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package config; + +import com.google.common.collect.ImmutableMap; +import java.util.HashMap; +import java.util.Map; + +public class Config { + private Map options; + + public Config() { + this.options = new HashMap(); + } + + public Config(Map properties) { + this.options = properties; + } + + public Map getOptions() { + return ImmutableMap.copyOf(options); + } + + public boolean hasOption(String opt){ + return options.containsKey(opt); + } + + public String getOption(String opt){ + return options.get(opt); + } + + public void setOption(String opt, String value){ + options.put(opt, value); + } +} diff --git a/modules/swagger-codegen/src/main/java/config/ConfigParser.java b/modules/swagger-codegen/src/main/java/config/ConfigParser.java new file mode 100644 index 00000000000..df2b37c2923 --- /dev/null +++ b/modules/swagger-codegen/src/main/java/config/ConfigParser.java @@ -0,0 +1,46 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package config; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.File; +import java.util.Iterator; +import java.util.Map; + +public class ConfigParser { + + public static Config read(String location) { + + System.out.println("reading cofig from " + location); + + ObjectMapper mapper = new ObjectMapper(); + + Config config = new Config(); + + try { + JsonNode rootNode = mapper.readTree(new File(location)); + Iterator> optionNodes = rootNode.fields(); + + while (optionNodes.hasNext()) { + Map.Entry optionNode = (Map.Entry) optionNodes.next(); + + if(optionNode.getValue().isValueNode()){ + config.setOption(optionNode.getKey(), optionNode.getValue().asText()); + } + else{ + System.out.println("omitting non-value node " + optionNode.getKey()); + } + } + } + catch (Exception e) { + System.out.println(e.getMessage()); + return null; + } + + return config; + } +} From c9c58cbe4c6115af273dd290f13d867acc5ff30f Mon Sep 17 00:00:00 2001 From: hrachya Date: Wed, 27 May 2015 17:37:07 -0700 Subject: [PATCH 11/18] new -c/--config option for swagger-cli to specify json config file path setting options passed in config file if those were allowed by lang specific CodegenConfig --- .../wordnik/swagger/codegen/cmd/Generate.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/modules/swagger-codegen-cli/src/main/java/com/wordnik/swagger/codegen/cmd/Generate.java b/modules/swagger-codegen-cli/src/main/java/com/wordnik/swagger/codegen/cmd/Generate.java index 47449d84286..9bd2b5e0c24 100644 --- a/modules/swagger-codegen-cli/src/main/java/com/wordnik/swagger/codegen/cmd/Generate.java +++ b/modules/swagger-codegen-cli/src/main/java/com/wordnik/swagger/codegen/cmd/Generate.java @@ -1,10 +1,13 @@ package com.wordnik.swagger.codegen.cmd; +import com.wordnik.swagger.codegen.CliOption; import com.wordnik.swagger.codegen.ClientOptInput; import com.wordnik.swagger.codegen.ClientOpts; import com.wordnik.swagger.codegen.CodegenConfig; import com.wordnik.swagger.codegen.DefaultGenerator; import com.wordnik.swagger.models.Swagger; +import config.Config; +import config.ConfigParser; import io.airlift.airline.Command; import io.airlift.airline.Option; import io.swagger.parser.SwaggerParser; @@ -57,6 +60,9 @@ public class Generate implements Runnable { @Option( name= {"-D"}, title = "system properties", description = "sets specified system properties in " + "the format of name=value,name=value") private String systemProperties; + + @Option( name= {"-c", "--config"}, title = "configuration file", description = "path to json configuration file") + private String configFile; @Override public void run() { @@ -76,6 +82,17 @@ public void run() { if (null != templateDir) { config.additionalProperties().put(TEMPLATE_DIR_PARAM, new File(templateDir).getAbsolutePath()); } + + if(null != configFile){ + Config genConfig = ConfigParser.read(configFile); + if (null != genConfig) { + for (CliOption langCliOption : config.cliOptions()) { + if (genConfig.hasOption(langCliOption.getOpt())) { + config.additionalProperties().put(langCliOption.getOpt(), genConfig.getOption(langCliOption.getOpt())); + } + } + } + } input.setConfig(config); From 26a2290078726172bf3007071fb9288e3baaf582 Mon Sep 17 00:00:00 2001 From: hrachya Date: Thu, 28 May 2015 13:01:54 -0700 Subject: [PATCH 12/18] adding classPrefix, sourceFolder, projectName cli options to objc --- .../codegen/languages/ObjcClientCodegen.java | 51 +++++++++++++++---- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/ObjcClientCodegen.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/ObjcClientCodegen.java index d1e227ce744..021ca0b3b21 100644 --- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/ObjcClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/ObjcClientCodegen.java @@ -1,6 +1,5 @@ package com.wordnik.swagger.codegen.languages; -import com.wordnik.swagger.util.Json; import com.wordnik.swagger.codegen.*; import com.wordnik.swagger.models.properties.*; @@ -10,7 +9,8 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { protected Set foundationClasses = new HashSet(); protected String sourceFolder = "client"; - protected static String PREFIX = "SWG"; + protected String classPrefix = "SWG"; + protected String projectName = "swaggerClient"; public CodegenType getTag() { return CodegenType.CLIENT; @@ -34,12 +34,6 @@ public ObjcClientCodegen() { templateDir = "objc"; modelPackage = ""; - String appName = System.getProperty("appName"); - if(appName == null) { - appName = "swaggerClient"; - } - additionalProperties.put("projectName", appName); - defaultIncludes = new HashSet( Arrays.asList( "bool", @@ -111,7 +105,31 @@ public ObjcClientCodegen() { instantiationTypes.put("array", "NSMutableArray"); instantiationTypes.put("map", "NSMutableDictionary"); + + cliOptions.add(new CliOption("classPrefix", "class-prefix", true, "prefix for generated classes", true)); + cliOptions.add(new CliOption("sourceFolder", "source-folder", true, "source folder for generated code", true)); + cliOptions.add(new CliOption("projectName", "project-name", true, "name of the Xcode project in generated Podfile", true)); + } + @Override + public void processOpts() { + super.processOpts(); + + if(additionalProperties.containsKey("sourceFolder")) { + this.setSourceFolder((String)additionalProperties.get("sourceFolder")); + } + + if(additionalProperties.containsKey("classPrefix")) { + this.setClassPrefix((String)additionalProperties.get("classPrefix")); + } + + if(additionalProperties.containsKey("projectName")) { + this.setProjectName((String)additionalProperties.get("projectName")); + } + else{ + additionalProperties.put("projectName", projectName); + } + supportingFiles.add(new SupportingFile("SWGObject.h", sourceFolder, "SWGObject.h")); supportingFiles.add(new SupportingFile("SWGObject.m", sourceFolder, "SWGObject.m")); supportingFiles.add(new SupportingFile("SWGQueryParamCollection.h", sourceFolder, "SWGQueryParamCollection.h")); @@ -220,7 +238,7 @@ public String toModelName(String type) { } // custom classes else { - return PREFIX + camelize(type); + return classPrefix + camelize(type); } } @@ -266,11 +284,11 @@ public String modelFileFolder() { @Override public String toApiName(String name) { - return PREFIX + camelize(name) + "Api"; + return classPrefix + camelize(name) + "Api"; } public String toApiFilename(String name) { - return PREFIX + camelize(name) + "Api"; + return classPrefix + camelize(name) + "Api"; } @Override @@ -313,4 +331,15 @@ public String toOperationId(String operationId) { return camelize(operationId, true); } + public void setSourceFolder(String sourceFolder) { + this.sourceFolder = sourceFolder; + } + + public void setClassPrefix(String classPrefix) { + this.classPrefix = classPrefix; + } + + public void setProjectName(String projectName) { + this.projectName = projectName; + } } From c5a7800ec61fa52feec9e5793b0cb358bc85a19a Mon Sep 17 00:00:00 2001 From: hrachya Date: Thu, 28 May 2015 13:02:30 -0700 Subject: [PATCH 13/18] fixing typo --- modules/swagger-codegen/src/main/java/config/ConfigParser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/java/config/ConfigParser.java b/modules/swagger-codegen/src/main/java/config/ConfigParser.java index df2b37c2923..019061faa33 100644 --- a/modules/swagger-codegen/src/main/java/config/ConfigParser.java +++ b/modules/swagger-codegen/src/main/java/config/ConfigParser.java @@ -15,7 +15,7 @@ public class ConfigParser { public static Config read(String location) { - System.out.println("reading cofig from " + location); + System.out.println("reading config from " + location); ObjectMapper mapper = new ObjectMapper(); From 08647b337fcecc4343520f339490752d84dff9c4 Mon Sep 17 00:00:00 2001 From: hrachya Date: Thu, 28 May 2015 13:08:52 -0700 Subject: [PATCH 14/18] fixing property name --- .../main/java/com/wordnik/swagger/codegen/DefaultCodegen.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java index f7ec12b2c94..7a689164449 100644 --- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java @@ -85,7 +85,7 @@ public List cliOptions() { public void processOpts(){ if(additionalProperties.containsKey("templateDir")) { - this.setTemplateDir((String)additionalProperties.get("t")); + this.setTemplateDir((String)additionalProperties.get("templateDir")); } if(additionalProperties.containsKey("modelPackage")) { From 1f360961e0bff365b3c0ad3f19a8e9f9c8829c5e Mon Sep 17 00:00:00 2001 From: hrachya Date: Thu, 28 May 2015 14:55:36 -0700 Subject: [PATCH 15/18] Simplifying CliOption class --- .../wordnik/swagger/codegen/CliOption.java | 40 ++++++------------- .../swagger/codegen/DefaultCodegen.java | 4 +- .../codegen/languages/JavaClientCodegen.java | 10 ++--- .../codegen/languages/ObjcClientCodegen.java | 6 +-- 4 files changed, 22 insertions(+), 38 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/CliOption.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/CliOption.java index 837759b9d2f..4294d097116 100644 --- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/CliOption.java +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/CliOption.java @@ -5,40 +5,24 @@ */ package com.wordnik.swagger.codegen; -import org.apache.commons.cli.Option; +public class CliOption { + private final String opt; + private String description; -public class CliOption extends Option { - - private Boolean langSpecific = false; - - public CliOption(String opt, String description) throws IllegalArgumentException { - super(opt, description); - } - - public CliOption(String opt, boolean hasArg, String description) throws IllegalArgumentException { - super(opt, hasArg, description); - } - - public CliOption(String opt, String longOpt, boolean hasArg, String description) throws IllegalArgumentException { - super(opt, longOpt, hasArg, description); - } - - public CliOption(String opt, String description, Boolean langSpecific) throws IllegalArgumentException { - this(opt, description); - this.langSpecific = langSpecific; + public CliOption(String opt, String description) { + this.opt = opt; + this.description = description; } - public CliOption(String opt, boolean hasArg, String description, Boolean langSpecific) throws IllegalArgumentException { - this(opt, hasArg, description); - this.langSpecific = langSpecific; + public String getOpt() { + return opt; } - public CliOption(String opt, String longOpt, boolean hasArg, String description, Boolean langSpecific) throws IllegalArgumentException { - this(opt, longOpt, hasArg, description); - this.langSpecific = langSpecific; + public String getDescription() { + return description; } - public Boolean isLangSpecific() { - return langSpecific; + public void setDescription(String description) { + this.description = description; } } diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java index 7a689164449..d7788ef8865 100644 --- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/DefaultCodegen.java @@ -303,8 +303,8 @@ public DefaultCodegen() { importMapping.put("LocalDate", "org.joda.time.*"); importMapping.put("LocalTime", "org.joda.time.*"); - cliOptions.add(new CliOption("modelPackage", "model-package", true, "Package for generated models")); - cliOptions.add(new CliOption("apiPackage", "api-package", true, "Package for generated api classes")); + cliOptions.add(new CliOption("modelPackage", "package for generated models")); + cliOptions.add(new CliOption("apiPackage", "package for generated api classes")); } diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/JavaClientCodegen.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/JavaClientCodegen.java index 622e1322a1d..736b533ebc6 100644 --- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/JavaClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/JavaClientCodegen.java @@ -59,11 +59,11 @@ public JavaClientCodegen() { instantiationTypes.put("array", "ArrayList"); instantiationTypes.put("map", "HashMap"); - cliOptions.add(new CliOption("invokerPackage", "invoker-package", true, "Root package for generated code", true)); - cliOptions.add(new CliOption("groupId", "group-id", true, "groupId in pom.xml", true)); - cliOptions.add(new CliOption("artifactId", "artifact-id", true, "groupId in pom.xml", true)); - cliOptions.add(new CliOption("artifactVersion", "artifact-version", true, "artifact version in pom.xml", true)); - cliOptions.add(new CliOption("sourceFolder", "source-folder", true, "Source folder for generated code", true)); + cliOptions.add(new CliOption("invokerPackage", "root package for generated code")); + cliOptions.add(new CliOption("groupId", "groupId in generated pom.xml")); + cliOptions.add(new CliOption("artifactId", "artifactId in generated pom.xml")); + cliOptions.add(new CliOption("artifactVersion", "artifact version in generated pom.xml")); + cliOptions.add(new CliOption("sourceFolder", "source folder for generated code")); } @Override diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/ObjcClientCodegen.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/ObjcClientCodegen.java index 021ca0b3b21..75d33511a9e 100644 --- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/ObjcClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/ObjcClientCodegen.java @@ -106,9 +106,9 @@ public ObjcClientCodegen() { instantiationTypes.put("array", "NSMutableArray"); instantiationTypes.put("map", "NSMutableDictionary"); - cliOptions.add(new CliOption("classPrefix", "class-prefix", true, "prefix for generated classes", true)); - cliOptions.add(new CliOption("sourceFolder", "source-folder", true, "source folder for generated code", true)); - cliOptions.add(new CliOption("projectName", "project-name", true, "name of the Xcode project in generated Podfile", true)); + cliOptions.add(new CliOption("classPrefix", "prefix for generated classes")); + cliOptions.add(new CliOption("sourceFolder", "source folder for generated code")); + cliOptions.add(new CliOption("projectName", "name of the Xcode project in generated Podfile")); } @Override From ba7025d54bd8f7dad69d808b125c50e679631463 Mon Sep 17 00:00:00 2001 From: hrachya Date: Thu, 28 May 2015 15:02:32 -0700 Subject: [PATCH 16/18] Adding config-help command --- .../swagger/codegen/SwaggerCodegen.java | 4 +- .../swagger/codegen/cmd/ConfigHelp.java | 54 +++++++++++++++++++ .../wordnik/swagger/codegen/cmd/Generate.java | 4 +- 3 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 modules/swagger-codegen-cli/src/main/java/com/wordnik/swagger/codegen/cmd/ConfigHelp.java diff --git a/modules/swagger-codegen-cli/src/main/java/com/wordnik/swagger/codegen/SwaggerCodegen.java b/modules/swagger-codegen-cli/src/main/java/com/wordnik/swagger/codegen/SwaggerCodegen.java index c8c718fb67b..f2c794776ce 100644 --- a/modules/swagger-codegen-cli/src/main/java/com/wordnik/swagger/codegen/SwaggerCodegen.java +++ b/modules/swagger-codegen-cli/src/main/java/com/wordnik/swagger/codegen/SwaggerCodegen.java @@ -1,5 +1,6 @@ package com.wordnik.swagger.codegen; +import com.wordnik.swagger.codegen.cmd.ConfigHelp; import com.wordnik.swagger.codegen.cmd.Generate; import com.wordnik.swagger.codegen.cmd.Langs; import com.wordnik.swagger.codegen.cmd.Meta; @@ -27,7 +28,8 @@ public static void main(String[] args) { Generate.class, Meta.class, Langs.class, - Help.class + Help.class, + ConfigHelp.class ); builder.build().parse(args).run(); diff --git a/modules/swagger-codegen-cli/src/main/java/com/wordnik/swagger/codegen/cmd/ConfigHelp.java b/modules/swagger-codegen-cli/src/main/java/com/wordnik/swagger/codegen/cmd/ConfigHelp.java new file mode 100644 index 00000000000..6934bcf702e --- /dev/null +++ b/modules/swagger-codegen-cli/src/main/java/com/wordnik/swagger/codegen/cmd/ConfigHelp.java @@ -0,0 +1,54 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.wordnik.swagger.codegen.cmd; + +import com.wordnik.swagger.codegen.CliOption; +import com.wordnik.swagger.codegen.CodegenConfig; +import io.airlift.airline.Command; +import io.airlift.airline.Option; +import java.util.ServiceLoader; +import static java.util.ServiceLoader.load; + +@Command(name = "config-help", description = "Config help for chosen lang") +public class ConfigHelp implements Runnable { + + @Option(name = {"-l", "--lang"}, title = "language", required = true, + description = "language to get config help for") + private String lang; + + @Override + public void run() { + System.out.println(); + CodegenConfig config = forName(lang); + System.out.println("CONFIG OPTIONS"); + for (CliOption langCliOption : config.cliOptions()) { + System.out.println("\t" + langCliOption.getOpt()); + System.out.println("\t " + langCliOption.getDescription()); + System.out.println(); + } + } + + /** + * Tries to load config class with SPI first, then with class name directly from classpath + * @param name name of config, or full qualified class name in classpath + * @return config class + */ + private static CodegenConfig forName(String name) { + ServiceLoader loader = load(CodegenConfig.class); + for (CodegenConfig config : loader) { + if (config.getName().equals(name)) { + return config; + } + } + + // else try to load directly + try { + return (CodegenConfig) Class.forName(name).newInstance(); + } catch (Exception e) { + throw new RuntimeException("Can't load config class with name ".concat(name), e); + } + } +} diff --git a/modules/swagger-codegen-cli/src/main/java/com/wordnik/swagger/codegen/cmd/Generate.java b/modules/swagger-codegen-cli/src/main/java/com/wordnik/swagger/codegen/cmd/Generate.java index 9bd2b5e0c24..3485eb8dd24 100644 --- a/modules/swagger-codegen-cli/src/main/java/com/wordnik/swagger/codegen/cmd/Generate.java +++ b/modules/swagger-codegen-cli/src/main/java/com/wordnik/swagger/codegen/cmd/Generate.java @@ -61,7 +61,9 @@ public class Generate implements Runnable { "the format of name=value,name=value") private String systemProperties; - @Option( name= {"-c", "--config"}, title = "configuration file", description = "path to json configuration file") + @Option( name= {"-c", "--config"}, title = "configuration file", description = "Path to json configuration file. " + + "File content should be in a json format {\"optionKey\":\"optionValue\", \"optionKey1\":\"optionValue1\"...} " + + "Supported options can be different for each language. Run config-help -l {lang} command for language specific config options.") private String configFile; @Override From 0996901e72ef510c591fafacdbbeb38d1b4a3bd9 Mon Sep 17 00:00:00 2001 From: Richie Azaria Date: Fri, 29 May 2015 13:01:42 -0700 Subject: [PATCH 17/18] add documentation -c option and config-help --- README.md | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index cb649e07da5..da7d0752f0d 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,8 @@ NAME SYNOPSIS swagger generate [(-a | --auth )] + [(-c | --config )] + [-D ] (-i | --input-spec ) (-l | --lang ) [(-o | --output )] @@ -72,6 +74,16 @@ OPTIONS remotely. Pass in a URL-encoded string of name:header with a comma separating multiple values + -c , --config + Path to json configuration file. File content should be in a json + format {"optionKey":"optionValue", "optionKey1":"optionValue1"...} + Supported options can be different for each language. Run + config-help -l {lang} command for language specific config options. + + -D + sets specified system properties in the format of + name=value,name=value + -i , --input-spec location of the swagger spec, as URL or file (required) @@ -166,8 +178,60 @@ SwaggerYamlGenerator.java TizenClientCodegen.java ``` -Each of these files creates reasonable defaults so you can get running quickly. But if you want to configure package names, prefixes, model folders, etc., you may want to extend these. +Each of these files creates reasonable defaults so you can get running quickly. But if you want to configure package names, prefixes, model folders, etc. you can use a json config file to pass the values. + +``` +java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \ + -i http://petstore.swagger.io/v2/swagger.json \ + -l java \ + -o samples/client/petstore/java \ + -c path/to/config.json +``` +Supported config options can be different per language. Running `config-help -l {lang}` will show available options. + +``` +java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jarr config-help -l java +``` + +Output + +``` +CONFIG OPTIONS + modelPackage + package for generated models + + apiPackage + package for generated api classes + + invokerPackage + root package for generated code + + groupId + groupId in generated pom.xml + + artifactId + artifactId in generated pom.xml + + artifactVersion + artifact version in generated pom.xml + + sourceFolder + source folder for generated code +``` + +Your config file for java can look like + +``` +{ + "groupId":"com.my.company", + "artifactId":"MyClent", + "artifactVersion":"1.2.0" +} +``` + +For all the unspecified options default values will be used. +Another way to override default options is to extend config class for specific language. To change, for example, the prefix for the Objective-C generated files, simply subclass the ObjcClientCodegen.java: ``` From 3e0913a813bc0e9d6d55c32ad72e41da4986a916 Mon Sep 17 00:00:00 2001 From: hrachya Date: Mon, 1 Jun 2015 10:43:23 -0700 Subject: [PATCH 18/18] removing generic header comments --- .../java/com/wordnik/swagger/codegen/cmd/ConfigHelp.java | 5 ----- .../src/main/java/com/wordnik/swagger/codegen/CliOption.java | 5 ----- modules/swagger-codegen/src/main/java/config/Config.java | 5 ----- .../swagger-codegen/src/main/java/config/ConfigParser.java | 5 ----- 4 files changed, 20 deletions(-) diff --git a/modules/swagger-codegen-cli/src/main/java/com/wordnik/swagger/codegen/cmd/ConfigHelp.java b/modules/swagger-codegen-cli/src/main/java/com/wordnik/swagger/codegen/cmd/ConfigHelp.java index 6934bcf702e..fbdca12e6e8 100644 --- a/modules/swagger-codegen-cli/src/main/java/com/wordnik/swagger/codegen/cmd/ConfigHelp.java +++ b/modules/swagger-codegen-cli/src/main/java/com/wordnik/swagger/codegen/cmd/ConfigHelp.java @@ -1,8 +1,3 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ package com.wordnik.swagger.codegen.cmd; import com.wordnik.swagger.codegen.CliOption; diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/CliOption.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/CliOption.java index 4294d097116..8ea0b60db26 100644 --- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/CliOption.java +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/CliOption.java @@ -1,8 +1,3 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ package com.wordnik.swagger.codegen; public class CliOption { diff --git a/modules/swagger-codegen/src/main/java/config/Config.java b/modules/swagger-codegen/src/main/java/config/Config.java index 745824bd816..9bc4bf58624 100644 --- a/modules/swagger-codegen/src/main/java/config/Config.java +++ b/modules/swagger-codegen/src/main/java/config/Config.java @@ -1,8 +1,3 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ package config; import com.google.common.collect.ImmutableMap; diff --git a/modules/swagger-codegen/src/main/java/config/ConfigParser.java b/modules/swagger-codegen/src/main/java/config/ConfigParser.java index 019061faa33..cbb1b78f645 100644 --- a/modules/swagger-codegen/src/main/java/config/ConfigParser.java +++ b/modules/swagger-codegen/src/main/java/config/ConfigParser.java @@ -1,8 +1,3 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ package config; import com.fasterxml.jackson.databind.JsonNode;