From a41361c959cd5b56f3b34d813c32a02952a224db Mon Sep 17 00:00:00 2001 From: xhh Date: Fri, 7 Aug 2015 22:16:32 +0800 Subject: [PATCH] Change the "--library" option into a config option --- README.md | 26 ++++--------------- bin/java-petstore-jersey2.json | 5 +++- bin/java-petstore-jersey2.sh | 2 +- .../io/swagger/codegen/cmd/ConfigHelp.java | 2 +- .../java/io/swagger/codegen/cmd/Generate.java | 15 +++++------ .../io/swagger/codegen/DefaultCodegen.java | 12 ++++++++- .../codegen/languages/JavaClientCodegen.java | 3 ++- 7 files changed, 31 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 72daf861251..a7f7f4e45d9 100644 --- a/README.md +++ b/README.md @@ -116,10 +116,6 @@ OPTIONS client language to generate (maybe class name in classpath, required) - -L , --library - Library template (sub-template) to use. Run library-help -l {lang} - command for a list of supported libraries. - -o , --output where to write the generated files (current dir by default) @@ -148,23 +144,6 @@ Other languages have petstore samples, too: ./bin/objc-petstore.sh ``` -Various library templates (sub-templates) might be available for a specific language. Running `library-help -l {lang}` will show all library templates supported. - -``` -java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar library-help -l java -``` - -Output - -``` -LIBRARY OPTIONS - - HTTP client: Jersey client 1.18. JSON processing: Jackson 2.4.2 - - jersey2 - HTTP client: Jersey client 2.6 -``` - ### Generating libraries from your server It's just as easy--just use the `-i` flag to point to either a server or file. @@ -270,6 +249,11 @@ CONFIG OPTIONS sourceFolder source folder for generated code + + library + library template (sub-template) to use: + - HTTP client: Jersey client 1.18. JSON processing: Jackson 2.4.2 + jersey2 - HTTP client: Jersey client 2.6 ``` Your config file for java can look like diff --git a/bin/java-petstore-jersey2.json b/bin/java-petstore-jersey2.json index 1ba121afe21..af343e1d6b8 100644 --- a/bin/java-petstore-jersey2.json +++ b/bin/java-petstore-jersey2.json @@ -1 +1,4 @@ -{"artifactId": "swagger-petstore-jersey2"} \ No newline at end of file +{ + "library": "jersey2", + "artifactId": "swagger-petstore-jersey2" +} \ No newline at end of file diff --git a/bin/java-petstore-jersey2.sh b/bin/java-petstore-jersey2.sh index 94f16422d1a..cb51c1e1a8d 100755 --- a/bin/java-petstore-jersey2.sh +++ b/bin/java-petstore-jersey2.sh @@ -26,6 +26,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="$@ generate -i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l java --library jersey2 -c bin/java-petstore-jersey2.json -o samples/client/petstore/java/jersey2" +ags="$@ generate -i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l java -c bin/java-petstore-jersey2.json -o samples/client/petstore/java/jersey2" java $JAVA_OPTS -jar $executable $ags diff --git a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/ConfigHelp.java b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/ConfigHelp.java index 6b34a4bf56d..78e4b9bd6ba 100644 --- a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/ConfigHelp.java +++ b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/ConfigHelp.java @@ -45,7 +45,7 @@ public class ConfigHelp implements Runnable { 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("\t " + langCliOption.getDescription().replaceAll("\n", "\n\t ")); System.out.println(); } } diff --git a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Generate.java b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Generate.java index 99f597740d9..cf22ae91b62 100644 --- a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Generate.java +++ b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Generate.java @@ -40,11 +40,6 @@ public class Generate implements Runnable { description = "client language to generate (maybe class name in classpath, required)") private String lang; - @Option(name = {"-L", "--library"}, title = "library", - description = "Library template (sub-template) to use. Run library-help -l {lang} " + - "command for a list of supported libraries.") - private String library; - @Option(name = {"-o", "--output"}, title = "output directory", description = "where to write the generated files (current dir by default)") private String output = ""; @@ -110,7 +105,6 @@ public class Generate implements Runnable { } CodegenConfig config = forName(lang); - config.setLibrary(library); config.setOutputDir(new File(output).getAbsolutePath()); if (null != templateDir) { @@ -121,8 +115,13 @@ public class Generate implements Runnable { 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())); + String opt = langCliOption.getOpt(); + if (genConfig.hasOption(opt)) { + config.additionalProperties().put(opt, genConfig.getOption(opt)); + // the "library" config option is for library template (sub-template) + if ("library".equals(opt)) { + config.setLibrary(genConfig.getOption(opt)); + } } } } 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 641fa43b6d4..179387a0b37 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 @@ -55,6 +55,7 @@ import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -81,7 +82,7 @@ public class DefaultCodegen { protected List cliOptions = new ArrayList(); protected boolean skipOverwrite; protected boolean supportsInheritance = false; - protected Map supportedLibraries = new HashMap(); + protected Map supportedLibraries = new LinkedHashMap(); protected String library = null; public List cliOptions() { @@ -1392,6 +1393,7 @@ public class DefaultCodegen { /** * All library templates supported. + * (key: library name, value: library description) */ public Map supportedLibraries() { return supportedLibraries; @@ -1409,4 +1411,12 @@ public class DefaultCodegen { public String getLibrary() { return library; } + + protected CliOption buildLibraryCliOption(Map supportedLibraries) { + StringBuilder sb = new StringBuilder("library template (sub-template) to use:"); + for (String lib : supportedLibraries.keySet()) { + sb.append("\n").append(lib).append(" - ").append(supportedLibraries.get(lib)); + } + return new CliOption("library", sb.toString()); + } } 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 4df04fc9a1c..e5437f2fcb8 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 @@ -62,8 +62,9 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { cliOptions.add(new CliOption("artifactVersion", "artifact version in generated pom.xml")); cliOptions.add(new CliOption("sourceFolder", "source folder for generated code")); - supportedLibraries.put("", "HTTP client: Jersey client 1.18. JSON processing: Jackson 2.4.2"); + supportedLibraries.put("", "HTTP client: Jersey client 1.18. JSON processing: Jackson 2.4.2"); supportedLibraries.put("jersey2", "HTTP client: Jersey client 2.6"); + cliOptions.add(buildLibraryCliOption(supportedLibraries)); } public CodegenType getTag() {