From e5811ebdc747b878a20256dad10187e22e9e3216 Mon Sep 17 00:00:00 2001 From: russellb337 Date: Wed, 26 Aug 2015 17:38:51 -0700 Subject: [PATCH 1/8] expose more generate options in the cli --- modules/swagger-codegen-cli/pom.xml | 23 +- .../io/swagger/codegen/cmd/ConfigHelp.java | 25 +- .../java/io/swagger/codegen/cmd/Generate.java | 140 +++++-- .../cmd/utils/CodegenConfigLoader.java | 34 ++ .../codegen/cmd/utils/OptionUtils.java | 43 +++ .../io/swagger/codegen/cmd/GenerateTest.java | 352 ++++++++++++++++++ .../cmd/utils/CodegenConfigLoaderTest.java | 59 +++ .../codegen/cmd/utils/OptionUtilsTest.java | 52 +++ modules/swagger-codegen/pom.xml | 6 + .../io/swagger/codegen/ClientOptInput.java | 7 +- .../main/java/io/swagger/codegen/Codegen.java | 2 +- .../io/swagger/codegen/CodegenConfig.java | 2 + .../io/swagger/codegen/CodegenConstants.java | 36 ++ .../io/swagger/codegen/DefaultCodegen.java | 16 +- .../languages/AkkaScalaClientCodegen.java | 9 +- .../languages/AndroidClientCodegen.java | 39 +- .../languages/AsyncScalaClientCodegen.java | 9 +- .../codegen/languages/FlashClientCodegen.java | 27 +- .../codegen/languages/JavaClientCodegen.java | 72 ++-- .../languages/JavaInflectorServerCodegen.java | 9 +- .../codegen/languages/JaxRSServerCodegen.java | 14 +- .../codegen/languages/PhpClientCodegen.java | 29 +- .../languages/RetrofitClientCodegen.java | 9 +- .../codegen/languages/ScalaClientCodegen.java | 9 +- .../languages/ScalatraServerCodegen.java | 9 +- .../codegen/languages/SilexServerCodegen.java | 9 +- .../languages/SpringMVCServerCodegen.java | 10 +- .../codegen/languages/StaticDocCodegen.java | 9 +- .../languages/StaticHtmlGenerator.java | 9 +- .../codegen/DefaultGeneratorTest.java} | 61 +-- .../src/test/resources/petstore.json | 0 pom.xml | 43 +++ 32 files changed, 932 insertions(+), 241 deletions(-) create mode 100644 modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/utils/CodegenConfigLoader.java create mode 100644 modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/utils/OptionUtils.java create mode 100644 modules/swagger-codegen-cli/src/test/java/io/swagger/codegen/cmd/GenerateTest.java create mode 100644 modules/swagger-codegen-cli/src/test/java/io/swagger/codegen/cmd/utils/CodegenConfigLoaderTest.java create mode 100644 modules/swagger-codegen-cli/src/test/java/io/swagger/codegen/cmd/utils/OptionUtilsTest.java create mode 100644 modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java rename modules/{swagger-codegen-cli/src/test/java/io/swagger/codegen/GenerateTest.java => swagger-codegen/src/test/java/io/swagger/codegen/DefaultGeneratorTest.java} (51%) rename modules/{swagger-codegen-cli => swagger-codegen}/src/test/resources/petstore.json (100%) diff --git a/modules/swagger-codegen-cli/pom.xml b/modules/swagger-codegen-cli/pom.xml index 13f7f5c0152..9c0b6af1bcd 100644 --- a/modules/swagger-codegen-cli/pom.xml +++ b/modules/swagger-codegen-cli/pom.xml @@ -70,33 +70,40 @@ swagger-codegen ${project.version} - io.airlift airline 0.7 - com.googlecode.lambdaj lambdaj 2.3.3 - org.slf4j slf4j-simple ${slf4j-version} - - junit - junit - ${junit-version} + org.testng + testng + ${testng-version} + test + + + org.jmockit + jmockit + ${jmockit-version} + test + + + org.reflections + reflections + ${reflections-version} test - \ No newline at end of file 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 78e4b9bd6ba..5a7c46eefeb 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 @@ -4,6 +4,7 @@ import io.airlift.airline.Command; import io.airlift.airline.Option; import io.swagger.codegen.CliOption; import io.swagger.codegen.CodegenConfig; +import io.swagger.codegen.cmd.utils.CodegenConfigLoader; import java.util.ServiceLoader; @@ -16,32 +17,10 @@ public class ConfigHelp implements Runnable { description = "language to get config help for") private String lang; - /** - * 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); - } - } - @Override public void run() { System.out.println(); - CodegenConfig config = forName(lang); + CodegenConfig config = CodegenConfigLoader.forName(lang); System.out.println("CONFIG OPTIONS"); for (CliOption langCliOption : config.cliOptions()) { System.out.println("\t" + langCliOption.getOpt()); 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 cf22ae91b62..9e4754f9a1d 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 @@ -8,14 +8,20 @@ import io.swagger.codegen.CliOption; import io.swagger.codegen.ClientOptInput; import io.swagger.codegen.ClientOpts; import io.swagger.codegen.CodegenConfig; +import io.swagger.codegen.CodegenConstants; import io.swagger.codegen.DefaultGenerator; +import io.swagger.codegen.cmd.utils.CodegenConfigLoader; +import io.swagger.codegen.cmd.utils.OptionUtils; import io.swagger.models.Swagger; import io.swagger.parser.SwaggerParser; +import org.apache.commons.lang3.tuple.Pair; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; -import java.util.ServiceLoader; +import java.util.List; +import java.util.Map; +import java.util.Set; import static java.util.ServiceLoader.load; import static org.apache.commons.lang3.StringUtils.isNotEmpty; @@ -31,8 +37,6 @@ public class Generate implements Runnable { public static final Logger LOG = LoggerFactory.getLogger(Generate.class); - public static final String TEMPLATE_DIR_PARAM = "templateDir"; - @Option(name = {"-v", "--verbose"}, description = "verbose mode") private boolean verbose; @@ -70,27 +74,42 @@ public class Generate implements Runnable { "overwritten during the generation.") private boolean skipOverwrite; - /** - * 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; - } - } + @Option(name = {"--api-package"}, title = "api package", description = CodegenConstants.API_PACKAGE_DESC) + private String apiPackage; - // 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); - } - } + @Option(name = {"--model-package"}, title = "model package", description = CodegenConstants.MODEL_PACKAGE_DESC) + private String modelPackage; + + @Option(name = {"--instantiation-types"}, title = "instantiation types", description = "sets instantiation type mappings in the format of type=instantiatedType,type=instantiatedType." + + "For example (in Java): array=ArrayList,map=HashMap. In other words array types will get instantiated as ArrayList in generated code.") + private String instantiationTypes; + + @Option(name = {"--type-mappings"}, title = "type mappings", description = "sets mappings between swagger spec types and generated code types " + + "in the format of swaggerType=generatedType,swaggerType=generatedType. For example: array=List,map=Map,string=String") + private String typeMappings; + + @Option(name = {"--additional-properties"}, title = "additional properties", description = "sets additional properties that can be referenced by the mustache templates in the format of name=value,name=value") + private String additionalProperties; + + @Option(name = {"--language-specific-primitives"}, title = "language specific primitives", + description = "specifies additional language specific primitive types in the format of type1,type2,type3,type3. For example: String,boolean,Boolean,Double") + private String languageSpecificPrimitives; + + @Option(name = {"--import-mappings"}, title = "import mappings", + description = "specifies mappings between a given class and the import that should be used for that class in the format of type=import,type=import") + private String importMappings; + + @Option(name = {"--invoker-package"}, title = "invoker package", description = CodegenConstants.INVOKER_PACKAGE_DESC) + private String invokerPackage; + + @Option(name = {"--group-id"}, title = "group id", description = CodegenConstants.GROUP_ID_DESC) + private String groupId; + + @Option(name = {"--artifact-id"}, title = "artifact id", description = CodegenConstants.ARTIFACT_ID_DESC) + private String artifactId; + + @Option(name = {"--artifact-version"}, title = "artifact version", description = CodegenConstants.ARTIFACT_VERSION_DESC) + private String artifactVersion; @Override public void run() { @@ -98,19 +117,30 @@ public class Generate implements Runnable { setSystemProperties(); - ClientOptInput input = new ClientOptInput(); + CodegenConfig config = CodegenConfigLoader.forName(lang); - if (isNotEmpty(auth)) { - input.setAuth(auth); - } - - CodegenConfig config = forName(lang); config.setOutputDir(new File(output).getAbsolutePath()); + config.setSkipOverwrite(skipOverwrite); - if (null != templateDir) { - config.additionalProperties().put(TEMPLATE_DIR_PARAM, new File(templateDir).getAbsolutePath()); + putKeyValuePairsInMap(config.instantiationTypes(), instantiationTypes); + putKeyValuePairsInMap(config.typeMapping(), typeMappings); + putKeyValuePairsInMap(config.additionalProperties(), additionalProperties); + putKeyValuePairsInMap(config.importMapping(), importMappings); + + addValuesToSet(config.languageSpecificPrimitives(), languageSpecificPrimitives); + + checkAndSetAdditionalProperty(config, apiPackage, CodegenConstants.API_PACKAGE); + checkAndSetAdditionalProperty(config, modelPackage, CodegenConstants.MODEL_PACKAGE); + + if(isNotEmpty(templateDir)) { + config.additionalProperties().put(CodegenConstants.TEMPLATE_DIR, new File(templateDir).getAbsolutePath()); } + checkAndSetAdditionalProperty(config, invokerPackage, CodegenConstants.INVOKER_PACKAGE); + checkAndSetAdditionalProperty(config, groupId, CodegenConstants.GROUP_ID); + checkAndSetAdditionalProperty(config, artifactId, CodegenConstants.ARTIFACT_ID); + checkAndSetAdditionalProperty(config, artifactVersion, CodegenConstants.ARTIFACT_VERSION); + if (null != configFile) { Config genConfig = ConfigParser.read(configFile); if (null != genConfig) { @@ -127,24 +157,52 @@ public class Generate implements Runnable { } } - config.setSkipOverwrite(skipOverwrite); - input.setConfig(config); + ClientOptInput input = new ClientOptInput().config(config); + + if (isNotEmpty(auth)) { + input.setAuth(auth); + } Swagger swagger = new SwaggerParser().read(spec, input.getAuthorizationValues(), true); new DefaultGenerator().opts(input.opts(new ClientOpts()).swagger(swagger)).generate(); } - private void setSystemProperties() { - if (systemProperties != null && systemProperties.length() > 0) { - for (String property : systemProperties.split(",")) { - int ix = property.indexOf('='); - if (ix > 0 && ix < property.length() - 1) { - System.setProperty(property.substring(0, ix), property.substring(ix + 1)); - } - } + private void addValuesToSet(Set set, String csvProperty) { + final List values = OptionUtils.splitCommaSeparatedList(csvProperty); + + for (String value : values) { + set.add(value); } } + private void checkAndSetAdditionalProperty(CodegenConfig config, String property, String propertyKey) { + checkAndSetAdditionalProperty(config, property, property, propertyKey); + } + + private void checkAndSetAdditionalProperty(CodegenConfig config, String property, String valueToSet, String propertyKey) { + if(isNotEmpty(property)) { + config.additionalProperties().put(propertyKey, valueToSet); + } + } + + private void setSystemProperties() { + + final List> systemPropertyPairs = OptionUtils.parseCommaSeparatedTuples(systemProperties); + + for (Pair pair : systemPropertyPairs) { + System.setProperty(pair.getLeft(), pair.getRight()); + } + } + + private void putKeyValuePairsInMap(Map map, String commaSeparatedKVPairs) { + final List> pairs = OptionUtils.parseCommaSeparatedTuples(commaSeparatedKVPairs); + + for (Pair pair : pairs) { + map.put(pair.getLeft(), pair.getRight()); + } + } + + /** * If true parameter, adds system properties which enables debug mode in generator * diff --git a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/utils/CodegenConfigLoader.java b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/utils/CodegenConfigLoader.java new file mode 100644 index 00000000000..2e068bccb47 --- /dev/null +++ b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/utils/CodegenConfigLoader.java @@ -0,0 +1,34 @@ +package io.swagger.codegen.cmd.utils; + +import io.swagger.codegen.CodegenConfig; + +import java.util.ServiceLoader; + +import static java.util.ServiceLoader.load; + +/** + * Created by russellb337 on 8/25/15. + */ +public class CodegenConfigLoader { + /** + * 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 + */ + public 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/io/swagger/codegen/cmd/utils/OptionUtils.java b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/utils/OptionUtils.java new file mode 100644 index 00000000000..34d56727412 --- /dev/null +++ b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/utils/OptionUtils.java @@ -0,0 +1,43 @@ +package io.swagger.codegen.cmd.utils; + +import org.apache.commons.lang3.tuple.Pair; + +import java.util.ArrayList; +import java.util.List; + +import static org.apache.commons.lang3.StringUtils.isNotEmpty; + +public class OptionUtils { + + public static List> parseCommaSeparatedTuples(String input) { + + List> results = new ArrayList>(); + + final List tuples = splitCommaSeparatedList(input); + + for (String tuple : tuples) { + int ix = tuple.indexOf('='); + if (ix > 0 && ix < tuple.length() - 1) { + final Pair pair = Pair.of(tuple.substring(0, ix), tuple.substring(ix + 1)); + results.add(pair); + } + } + + return results; + } + + public static List splitCommaSeparatedList(String input) { + + List results = new ArrayList(); + + if(input != null && !input.isEmpty()) { + for (String value : input.split(",")) { + if(isNotEmpty(value)) + results.add(value); + } + } + + return results; + } + +} diff --git a/modules/swagger-codegen-cli/src/test/java/io/swagger/codegen/cmd/GenerateTest.java b/modules/swagger-codegen-cli/src/test/java/io/swagger/codegen/cmd/GenerateTest.java new file mode 100644 index 00000000000..2fc414e884e --- /dev/null +++ b/modules/swagger-codegen-cli/src/test/java/io/swagger/codegen/cmd/GenerateTest.java @@ -0,0 +1,352 @@ +package io.swagger.codegen.cmd; + +import config.Config; +import config.ConfigParser; +import io.swagger.codegen.ClientOptInput; +import io.swagger.codegen.ClientOpts; +import io.swagger.codegen.CodegenConfig; +import io.swagger.codegen.CodegenConstants; +import io.swagger.codegen.DefaultGenerator; +import io.swagger.codegen.SwaggerCodegen; +import io.swagger.codegen.cmd.utils.CodegenConfigLoader; +import io.swagger.codegen.languages.JavaClientCodegen; +import io.swagger.models.Swagger; +import io.swagger.models.auth.AuthorizationValue; +import io.swagger.parser.SwaggerParser; +import mockit.Expectations; +import mockit.FullVerifications; +import mockit.Injectable; +import mockit.Mocked; +import mockit.StrictExpectations; +import org.apache.commons.lang3.ArrayUtils; +import org.testng.annotations.Test; + +import java.io.File; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertFalse; +import static org.testng.Assert.assertTrue; + +public class GenerateTest { + + @Mocked + SwaggerParser parser; + + @Injectable + Swagger swagger; + + @Mocked + DefaultGenerator defaultGenerator; + + @Mocked + CodegenConfigLoader codegenConfigLoader; + + @Mocked + ClientOptInput clientOptInput; + + @Injectable + List authorizationValues; + + @Test + public void testVerbose_ShortArg() throws Exception { + doVerboseTest("-v"); + } + + @Test + public void testVerbose_LongArg() throws Exception { + doVerboseTest("--verbose"); + } + + @Test + public void testRequiredArgs_ShortArgs() throws Exception { + doRequiredArgsTest("-l", "-o", "-i"); + } + + @Test + public void testRequiredArgs_LongArgs() throws Exception { + doRequiredArgsTest("--lang", "--output", "--input-spec"); + } + + @Test + public void testTemplateDir() throws Exception { + final String absolutePath = new File("src").getAbsolutePath(); + + doSingleAdditionalPropertyTest("--template-dir", CodegenConstants.TEMPLATE_DIR, "src", absolutePath); + doSingleAdditionalPropertyTest("--template-dir", CodegenConstants.TEMPLATE_DIR, absolutePath, absolutePath); + doSingleAdditionalPropertyTest("-t", CodegenConstants.TEMPLATE_DIR, "src", absolutePath); + doSingleAdditionalPropertyTest("-t", CodegenConstants.TEMPLATE_DIR, absolutePath, absolutePath); + } + + @Test + public void testAuth() throws Exception { + + final String auth = "hello:world"; + + new StrictExpectations() {{ + clientOptInput.setAuth(auth); + times = 1; + }}; + + setupAndRunGenericTest("-a", auth); + + new StrictExpectations() {{ + clientOptInput.setAuth(auth); + times = 1; + }}; + + setupAndRunGenericTest("--auth", auth); + } + + @Test + public void testSystemProperties() throws Exception { + + new StrictExpectations(System.class) {{ + System.setProperty("hello", "world"); + times = 1; + System.setProperty("foo", "bar"); + times = 1; + }}; + + setupAndRunGenericTest("-D", "hello=world,foo=bar"); + } + + @Test + public void testConfig(@Mocked final ConfigParser parser) throws Exception { + + final String configFilePath = "config.json"; + final String invokerPackage = "com.foo.bar.invoker"; + final String groupId = "com.foo.bar"; + Map configMap = new HashMap(); + configMap.put(CodegenConstants.INVOKER_PACKAGE, invokerPackage); + configMap.put(CodegenConstants.GROUP_ID, groupId); + final Config config = new Config(configMap); + + final String[] configArgs = {"-c", "--config"}; + + for (String configArg : configArgs) { + new StrictExpectations() {{ + parser.read(configFilePath); + times = 1; + result = config; + + }}; + + final CodegenConfig codegenConfig = setupAndRunGenericTest(configArg, configFilePath); + + assertValueInMap(codegenConfig.additionalProperties(), CodegenConstants.INVOKER_PACKAGE, invokerPackage); + assertValueInMap(codegenConfig.additionalProperties(), CodegenConstants.GROUP_ID, groupId); + } + } + + @Test + public void testSkipOverwrite() throws Exception { + + CodegenConfig codegenConfig1 = setupAndRunGenericTest(); + assertFalse(codegenConfig1.isSkipOverwrite()); + + CodegenConfig codegenConfig2 = setupAndRunGenericTest("-s"); + assertTrue(codegenConfig2.isSkipOverwrite()); + + CodegenConfig codegenConfig3 = setupAndRunGenericTest("--skip-overwrite"); + assertTrue(codegenConfig3.isSkipOverwrite()); + } + + @Test + public void testApiPackage() throws Exception { + doSingleAdditionalPropertyTest("--api-package", CodegenConstants.API_PACKAGE, "io.foo.bar.api"); + } + + @Test + public void testModelPackage() throws Exception { + doSingleAdditionalPropertyTest("--model-package", CodegenConstants.MODEL_PACKAGE, "io.foo.bar.models"); + } + + @Test + public void testInstantiationTypes() throws Exception { + + final CodegenConfig codegenConfig = setupAndRunGenericTest("--instantiation-types", "foo=bar,hello=world"); + + assertValueInMap(codegenConfig.instantiationTypes(), "foo", "bar"); + assertValueInMap(codegenConfig.instantiationTypes(), "hello", "world"); + } + + @Test + public void testTypeMappings() throws Exception { + final CodegenConfig codegenConfig = setupAndRunGenericTest("--type-mappings", "foo=bar,hello=world"); + + assertValueInMap(codegenConfig.typeMapping(), "foo", "bar"); + assertValueInMap(codegenConfig.typeMapping(), "hello", "world"); + } + + @Test + public void testAdditionalProperties() throws Exception { + final CodegenConfig codegenConfig = setupAndRunGenericTest("--additional-properties", "foo=bar,hello=world"); + + assertValueInMap(codegenConfig.additionalProperties(), "foo", "bar"); + assertValueInMap(codegenConfig.additionalProperties(), "hello", "world"); + } + + @Test + public void testLanguageSpecificPrimitives() throws Exception { + final CodegenConfig codegenConfig = setupAndRunGenericTest("--language-specific-primitives", "foo,bar,hello,world"); + + final Set languageSpecificPrimitives = codegenConfig.languageSpecificPrimitives(); + + assertTrue(languageSpecificPrimitives.contains("foo")); + assertTrue(languageSpecificPrimitives.contains("bar")); + assertTrue(languageSpecificPrimitives.contains("hello")); + assertTrue(languageSpecificPrimitives.contains("world")); + } + + @Test + public void testImportMappings() throws Exception { + final CodegenConfig codegenConfig = setupAndRunGenericTest("--import-mappings", "foo=bar,hello=world"); + + assertValueInMap(codegenConfig.importMapping(), "foo", "bar"); + assertValueInMap(codegenConfig.importMapping(), "hello", "world"); + } + + @Test + public void testInvokerPackage() throws Exception { + doSingleAdditionalPropertyTest("--invoker-package", CodegenConstants.INVOKER_PACKAGE, "io.foo.bar.invoker"); + } + + @Test + public void testGroupId() throws Exception { + doSingleAdditionalPropertyTest("--group-id", CodegenConstants.GROUP_ID, "io.foo.bar"); + } + + @Test + public void testArtifactId() throws Exception { + doSingleAdditionalPropertyTest("--artifact-id", CodegenConstants.ARTIFACT_ID, "awesome-api"); + } + + @Test + public void testArtifactVersion() throws Exception { + doSingleAdditionalPropertyTest("--artifact-version", CodegenConstants.ARTIFACT_VERSION, "1.2.3"); + } + + private void doVerboseTest(String verboseFlag) { + new StrictExpectations(System.class) {{ + System.setProperty("debugSwagger", ""); + times = 1; + System.setProperty("debugModels", ""); + times = 1; + System.setProperty("debugOperations", ""); + times = 1; + System.setProperty("debugSupportingFiles", ""); + times = 1; + }}; + + setupAndRunGenericTest(verboseFlag); + } + + private void doRequiredArgsTest(String langFlag, String outputDirFlag, String inputSpecFlag) { + final String spec = "swagger.yaml"; + final String lang = "java"; + final String outputDir = "src/main/java"; + + final String[] args = {"generate", langFlag, lang, outputDirFlag, outputDir, inputSpecFlag, spec}; + + final CodegenConfig config = new JavaClientCodegen(); + + setupStandardExpectations(spec, lang, config); + + SwaggerCodegen.main(args); + + new FullVerifications() {{ + }}; + + assertEquals(config.getOutputDir(), new File(outputDir).getAbsolutePath()); + } + + private void doSingleAdditionalPropertyTest(String cliArg, String additionalPropertyKey, String expectedValue) { + doSingleAdditionalPropertyTest(cliArg, additionalPropertyKey, expectedValue, expectedValue); + } + + private void doSingleAdditionalPropertyTest(String cliArg, String additionalPropertyKey, String cliValue, String additionalPropertyValue) { + + final CodegenConfig config = setupAndRunGenericTest(cliArg, cliValue); + + assertValueInMap(config.additionalProperties(), additionalPropertyKey, additionalPropertyValue); + } + + private CodegenConfig setupAndRunGenericTest(String... additionalParameters) { + + final String spec = "swagger.yaml"; + final String lang = "java"; + + final String[] commonArgs = {"generate", "-l", lang, "-o", "path/to/some/directory", "-i", spec}; + + String[] argsToUse = ArrayUtils.addAll(commonArgs, additionalParameters); + + final CodegenConfig config = new JavaClientCodegen(); + + setupStandardExpectations(spec, lang, config); + + SwaggerCodegen.main(argsToUse); + + new FullVerifications() {{ + }}; + + return config; + } + + private void assertValueInMap(Map map, String propertyKey, String expectedPropertyValue) { + assertTrue(map.containsKey(propertyKey)); + assertEquals(map.get(propertyKey), expectedPropertyValue); + } + + private void setupStandardExpectations(final String spec, final String languageName, final CodegenConfig config) { + + new Expectations() {{ + CodegenConfigLoader.forName(languageName); + times = 1; + result = config; + + new ClientOptInput(); + times = 1; + result = clientOptInput; + + clientOptInput.config(config); + times = 1; + result = clientOptInput; + + new SwaggerParser(); + times = 1; + result = parser; + + clientOptInput.getAuthorizationValues(); + times = 1; + result = authorizationValues; + + parser.read(spec, authorizationValues, true); + times = 1; + result = swagger; + + new DefaultGenerator(); + times = 1; + result = defaultGenerator; + + clientOptInput.opts((ClientOpts) any); + times = 1; + result = clientOptInput; + + clientOptInput.swagger(swagger); + times = 1; + result = clientOptInput; + + defaultGenerator.opts(clientOptInput); + times = 1; + result = defaultGenerator; + + defaultGenerator.generate(); + times = 1; + }}; + } + +} diff --git a/modules/swagger-codegen-cli/src/test/java/io/swagger/codegen/cmd/utils/CodegenConfigLoaderTest.java b/modules/swagger-codegen-cli/src/test/java/io/swagger/codegen/cmd/utils/CodegenConfigLoaderTest.java new file mode 100644 index 00000000000..0bfd6175f8d --- /dev/null +++ b/modules/swagger-codegen-cli/src/test/java/io/swagger/codegen/cmd/utils/CodegenConfigLoaderTest.java @@ -0,0 +1,59 @@ +package io.swagger.codegen.cmd.utils; + +import io.swagger.codegen.CodegenConfig; +import io.swagger.codegen.DefaultCodegen; +import org.reflections.Reflections; +import org.testng.annotations.DataProvider; +import org.testng.annotations.Test; + +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import static org.testng.Assert.assertEquals; + +public class CodegenConfigLoaderTest { + + @DataProvider(name = "codegenConfig") + public Object[][] createCodegenConfigDataSet() throws Exception { + + Reflections reflections = new Reflections("io.swagger.codegen.languages"); + final Set> subTypesOf = reflections.getSubTypesOf(DefaultCodegen.class); + + List codegenConfigList = new ArrayList(); + + for (Class aClass : subTypesOf) { + if (!Modifier.isAbstract(aClass.getModifiers())) { + final DefaultCodegen defaultCodegen = aClass.newInstance(); + codegenConfigList.add((CodegenConfig) defaultCodegen); + } + } + + Object[][] result = new Object[codegenConfigList.size()][1]; + + for (int i = 0; i < codegenConfigList.size(); i++) { + result[i]= new Object[]{codegenConfigList.get(i)}; + } + + return result; + } + + @Test(dataProvider = "codegenConfig") + public void testLoadByName(CodegenConfig codegenConfig) throws Exception { + final CodegenConfig loadedConfig = CodegenConfigLoader.forName(codegenConfig.getName()); + + assertEquals(loadedConfig.getClass(), codegenConfig.getClass()); + assertEquals(loadedConfig.getName(), codegenConfig.getName()); + } + + @Test(dataProvider = "codegenConfig") + public void testLoadByFullQualifiedName(CodegenConfig codegenConfig) throws Exception { + final CodegenConfig loadedConfig = CodegenConfigLoader.forName(codegenConfig.getClass().getName()); + + assertEquals(loadedConfig.getClass(), codegenConfig.getClass()); + assertEquals(loadedConfig.getName(), codegenConfig.getName()); + + + } +} diff --git a/modules/swagger-codegen-cli/src/test/java/io/swagger/codegen/cmd/utils/OptionUtilsTest.java b/modules/swagger-codegen-cli/src/test/java/io/swagger/codegen/cmd/utils/OptionUtilsTest.java new file mode 100644 index 00000000000..a7dc4d7f1cd --- /dev/null +++ b/modules/swagger-codegen-cli/src/test/java/io/swagger/codegen/cmd/utils/OptionUtilsTest.java @@ -0,0 +1,52 @@ +package io.swagger.codegen.cmd.utils; + +import org.apache.commons.lang3.tuple.Pair; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotNull; + +public class OptionUtilsTest { + + @Test + public void splitCommaSeparatedList() throws Exception { + doCommaSeparatedListTest("a,b,c", Arrays.asList("a", "b", "c")); + doCommaSeparatedListTest("a,,c", Arrays.asList("a", "c")); + doCommaSeparatedListTest("", new ArrayList()); + doCommaSeparatedListTest(null, new ArrayList()); + } + + @Test + public void testParseCommaSeparatedTuples() throws Exception { + doTupleListTest("a=1,b=2,c=3", Arrays.asList(Pair.of("a", "1"), Pair.of("b", "2"), Pair.of("c", "3"))); + doTupleListTest("a=1,,c=3", Arrays.asList(Pair.of("a", "1"), Pair.of("c", "3"))); + doTupleListTest("a=1,xyz,c=3", Arrays.asList(Pair.of("a", "1"), Pair.of("c", "3"))); + doTupleListTest("a=1,=,c=3", Arrays.asList(Pair.of("a", "1"), Pair.of("c", "3"))); + doTupleListTest("", new ArrayList>()); + doTupleListTest(null, new ArrayList>()); + } + + private void doTupleListTest(String input, List> expectedResults) { + final List> result = OptionUtils.parseCommaSeparatedTuples(input); + assertNotNull(result); + assertEquals(result.size(), expectedResults.size()); + for (int i = 0; i < expectedResults.size(); i++) { + final Pair actualPair = result.get(i); + final Pair expected = expectedResults.get(i); + assertEquals(actualPair, expected); + } + } + + private void doCommaSeparatedListTest(String csvStr, List expectedResults) { + final List result = OptionUtils.splitCommaSeparatedList(csvStr); + assertNotNull(result); + assertEquals(result.size(), expectedResults.size()); + for (int i = 0; i < expectedResults.size(); i++) { + assertEquals(result.get(i), expectedResults.get(i)); + } + } +} diff --git a/modules/swagger-codegen/pom.xml b/modules/swagger-codegen/pom.xml index a392e98bda4..0f640d577ad 100644 --- a/modules/swagger-codegen/pom.xml +++ b/modules/swagger-codegen/pom.xml @@ -334,6 +334,12 @@ ${scala-version} test + + org.testng + testng + ${testng-version} + test + diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/ClientOptInput.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/ClientOptInput.java index da026c7f040..56c4c66835a 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/ClientOptInput.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/ClientOptInput.java @@ -10,7 +10,7 @@ import java.util.ArrayList; import java.util.List; public class ClientOptInput { - protected CodegenConfig config; + private CodegenConfig config; private ClientOpts opts; private Swagger swagger; private List auths; @@ -25,6 +25,11 @@ public class ClientOptInput { return this; } + public ClientOptInput config(CodegenConfig codegenConfig) { + this.setConfig(codegenConfig); + return this; + } + public String getAuth() { if (auths != null) { StringBuilder b = new StringBuilder(); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/Codegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/Codegen.java index c99e04e5494..d4c0707f1a7 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/Codegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/Codegen.java @@ -85,7 +85,7 @@ public class Codegen extends DefaultGenerator { swagger = new SwaggerParser().read(cmd.getOptionValue("i"), clientOptInput.getAuthorizationValues(), true); } if (cmd.hasOption("t")) { - clientOpts.getProperties().put("templateDir", String.valueOf(cmd.getOptionValue("t"))); + clientOpts.getProperties().put(CodegenConstants.TEMPLATE_DIR, String.valueOf(cmd.getOptionValue("t"))); } } catch (Exception e) { usage(options); 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 9cbf32a154c..1b0e349daca 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 @@ -83,6 +83,8 @@ public interface CodegenConfig { Map modelTemplateFiles(); + Set languageSpecificPrimitives(); + void processSwagger(Swagger swagger); String toApiFilename(String name); 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 new file mode 100644 index 00000000000..c4bdad9c6ea --- /dev/null +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java @@ -0,0 +1,36 @@ +package io.swagger.codegen; + +/** + * A class for storing constants that are used throughout the project. + */ +public class CodegenConstants { + public static final String API_PACKAGE = "apiPackage"; + public static final String API_PACKAGE_DESC = "package for generated api classes"; + + public static final String MODEL_PACKAGE = "modelPackage"; + public static final String MODEL_PACKAGE_DESC = "package for generated models"; + + public static final String TEMPLATE_DIR = "templateDir"; + + + public static final String INVOKER_PACKAGE = "invokerPackage"; + public static final String INVOKER_PACKAGE_DESC = "root package for generated code"; + + public static final String GROUP_ID = "groupId"; + public static final String GROUP_ID_DESC = "groupId in generated pom.xml"; + + public static final String ARTIFACT_ID = "artifactId"; + public static final String ARTIFACT_ID_DESC = "artifactId in generated pom.xml"; + + public static final String ARTIFACT_VERSION = "artifactVersion"; + public static final String ARTIFACT_VERSION_DESC = "artifact version in generated pom.xml"; + + public static final String SOURCE_FOLDER = "sourceFolder"; + public static final String SOURCE_FOLDER_DESC = "source folder for generated 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"; + + public static final String SERIALIZABLE_MODEL = "serializableModel"; + public static final String SERIALIZABLE_MODEL_DESC = "boolean - toggle \"implements Serializable\" for generated models"; +} 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 1422b1c36a0..f15a8785f97 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 @@ -91,16 +91,16 @@ public class DefaultCodegen { } public void processOpts() { - if (additionalProperties.containsKey("templateDir")) { - this.setTemplateDir((String) additionalProperties.get("templateDir")); + if (additionalProperties.containsKey(CodegenConstants.TEMPLATE_DIR)) { + this.setTemplateDir((String) additionalProperties.get(CodegenConstants.TEMPLATE_DIR)); } - if (additionalProperties.containsKey("modelPackage")) { - this.setModelPackage((String) additionalProperties.get("modelPackage")); + if (additionalProperties.containsKey(CodegenConstants.MODEL_PACKAGE)) { + this.setModelPackage((String) additionalProperties.get(CodegenConstants.MODEL_PACKAGE)); } - if (additionalProperties.containsKey("apiPackage")) { - this.setApiPackage((String) additionalProperties.get("apiPackage")); + if (additionalProperties.containsKey(CodegenConstants.API_PACKAGE)) { + this.setApiPackage((String) additionalProperties.get(CodegenConstants.API_PACKAGE)); } } @@ -336,8 +336,8 @@ public class DefaultCodegen { importMapping.put("LocalDate", "org.joda.time.*"); importMapping.put("LocalTime", "org.joda.time.*"); - cliOptions.add(new CliOption("modelPackage", "package for generated models")); - cliOptions.add(new CliOption("apiPackage", "package for generated api classes")); + 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/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 f9490e3d3dd..c40eb653543 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 @@ -4,6 +4,7 @@ import com.google.common.base.CaseFormat; import com.samskivert.mustache.Mustache; import com.samskivert.mustache.Template; import io.swagger.codegen.CodegenConfig; +import io.swagger.codegen.CodegenConstants; import io.swagger.codegen.CodegenOperation; import io.swagger.codegen.CodegenProperty; import io.swagger.codegen.CodegenResponse; @@ -80,10 +81,10 @@ public class AkkaScalaClientCodegen extends DefaultCodegen implements CodegenCon "trait", "try", "true", "type", "val", "var", "while", "with", "yield") ); - additionalProperties.put("invokerPackage", invokerPackage); - additionalProperties.put("groupId", groupId); - additionalProperties.put("artifactId", artifactId); - additionalProperties.put("artifactVersion", artifactVersion); + 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("configKey", configKey); additionalProperties.put("configKeyPath", configKeyPath); additionalProperties.put("defaultTimeout", defaultTimeoutInMs); 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 f570cc42e82..9c55053e59c 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 @@ -2,6 +2,7 @@ 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; @@ -58,11 +59,11 @@ public class AndroidClientCodegen extends DefaultCodegen implements CodegenConfi instantiationTypes.put("array", "ArrayList"); instantiationTypes.put("map", "HashMap"); - cliOptions.add(new CliOption("invokerPackage", "root package to use for the generated code")); - cliOptions.add(new CliOption("groupId", "groupId for use in the generated build.gradle and pom.xml")); - cliOptions.add(new CliOption("artifactId", "artifactId for use in the generated build.gradle and pom.xml")); - cliOptions.add(new CliOption("artifactVersion", "artifact version for use in the generated build.gradle and pom.xml")); - cliOptions.add(new CliOption("sourceFolder", "source folder for generated code")); + 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("useAndroidMavenGradlePlugin", "A flag to toggle android-maven gradle plugin. Default is true.")); } @@ -187,36 +188,36 @@ public class AndroidClientCodegen extends DefaultCodegen implements CodegenConfi public void processOpts() { super.processOpts(); - if (additionalProperties.containsKey("invokerPackage")) { - this.setInvokerPackage((String) additionalProperties.get("invokerPackage")); + 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("invokerPackage", invokerPackage); + additionalProperties.put(CodegenConstants.INVOKER_PACKAGE, invokerPackage); } - if (additionalProperties.containsKey("groupId")) { - this.setGroupId((String) additionalProperties.get("groupId")); + 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("groupId", groupId); + additionalProperties.put(CodegenConstants.GROUP_ID, groupId); } - if (additionalProperties.containsKey("artifactId")) { - this.setArtifactId((String) additionalProperties.get("artifactId")); + 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("artifactId", artifactId); + additionalProperties.put(CodegenConstants.ARTIFACT_ID, artifactId); } - if (additionalProperties.containsKey("artifactVersion")) { - this.setArtifactVersion((String) additionalProperties.get("artifactVersion")); + 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("artifactVersion", artifactVersion); + additionalProperties.put(CodegenConstants.ARTIFACT_VERSION, artifactVersion); } - if (additionalProperties.containsKey("sourceFolder")) { - this.setSourceFolder((String) additionalProperties.get("sourceFolder")); + if (additionalProperties.containsKey(CodegenConstants.SOURCE_FOLDER)) { + this.setSourceFolder((String) additionalProperties.get(CodegenConstants.SOURCE_FOLDER)); } if (additionalProperties.containsKey("useAndroidMavenGradlePlugin")) { 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 53faf2f9e1f..38e6328a8e5 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 @@ -1,6 +1,7 @@ package io.swagger.codegen.languages; 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; @@ -52,10 +53,10 @@ public class AsyncScalaClientCodegen extends DefaultCodegen implements CodegenCo "trait", "try", "true", "type", "val", "var", "while", "with", "yield") ); - additionalProperties.put("invokerPackage", invokerPackage); - additionalProperties.put("groupId", groupId); - additionalProperties.put("artifactId", artifactId); - additionalProperties.put("artifactVersion", artifactVersion); + 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("asyncHttpClient", asyncHttpClient); additionalProperties.put("authScheme", authScheme); additionalProperties.put("authPreemptive", authPreemptive); 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 ca0979fb694..7c484c38a0b 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 @@ -2,34 +2,27 @@ 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 io.swagger.models.properties.AbstractNumericProperty; -import io.swagger.models.properties.ArrayProperty; import io.swagger.models.properties.BooleanProperty; 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.RefProperty; import io.swagger.models.properties.StringProperty; +import org.apache.commons.lang.StringUtils; import java.io.File; import java.util.Arrays; -import java.util.HashSet; import java.util.HashMap; - -import org.apache.commons.lang.StringUtils; +import java.util.HashSet; public class FlashClientCodegen extends DefaultCodegen implements CodegenConfig { protected String packageName = "io.swagger"; @@ -82,8 +75,8 @@ public class FlashClientCodegen extends DefaultCodegen implements CodegenConfig cliOptions.clear(); cliOptions.add(new CliOption("packageName", "flash package name (convention: package.name), default: io.swagger")); cliOptions.add(new CliOption("packageVersion", "flash package version, default: 1.0.0")); - cliOptions.add(new CliOption("invokerPackage", "root package for generated code")); - cliOptions.add(new CliOption("sourceFolder", "source folder for generated code. e.g. src/main/flex")); + cliOptions.add(new CliOption(CodegenConstants.INVOKER_PACKAGE, CodegenConstants.INVOKER_PACKAGE_DESC)); + cliOptions.add(new CliOption(CodegenConstants.SOURCE_FOLDER, "source folder for generated code. e.g. src/main/flex")); } @@ -91,15 +84,15 @@ public class FlashClientCodegen extends DefaultCodegen implements CodegenConfig public void processOpts() { super.processOpts(); - if (additionalProperties.containsKey("invokerPackage")) { - this.setInvokerPackage((String) additionalProperties.get("invokerPackage")); + 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("invokerPackage", invokerPackage); + additionalProperties.put(CodegenConstants.INVOKER_PACKAGE, invokerPackage); } - if (additionalProperties.containsKey("sourceFolder")) { - this.setSourceFolder((String) additionalProperties.get("sourceFolder")); + if (additionalProperties.containsKey(CodegenConstants.SOURCE_FOLDER)) { + this.setSourceFolder((String) additionalProperties.get(CodegenConstants.SOURCE_FOLDER)); } if (additionalProperties.containsKey("packageName")) { 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 40818acd2d3..4cfd79ec345 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 @@ -3,24 +3,19 @@ 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.CodegenProperty; import io.swagger.codegen.CodegenType; import io.swagger.codegen.DefaultCodegen; import io.swagger.codegen.SupportingFile; -import io.swagger.models.ComposedModel; import io.swagger.models.Model; -import io.swagger.models.ModelImpl; -import io.swagger.models.RefModel; import io.swagger.models.properties.ArrayProperty; 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; @@ -72,14 +67,13 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { instantiationTypes.put("array", "ArrayList"); instantiationTypes.put("map", "HashMap"); - 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")); - cliOptions.add(new CliOption("localVariablePrefix", "prefix for generated code members and local variables")); - - cliOptions.add(new CliOption("serializableModel", "boolean - toggle \"implements Serializable\" for generated models")); + cliOptions.add(new CliOption(CodegenConstants.INVOKER_PACKAGE, CodegenConstants.INVOKER_PACKAGE_DESC)); + cliOptions.add(new CliOption(CodegenConstants.GROUP_ID, CodegenConstants.GROUP_ID_DESC)); + cliOptions.add(new CliOption(CodegenConstants.ARTIFACT_ID, CodegenConstants.ARTIFACT_ID_DESC)); + 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)); supportedLibraries.put("", "HTTP client: Jersey client 1.18. JSON processing: Jackson 2.4.2"); supportedLibraries.put("jersey2", "HTTP client: Jersey client 2.6"); @@ -102,49 +96,49 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { public void processOpts() { super.processOpts(); - if (additionalProperties.containsKey("invokerPackage")) { - this.setInvokerPackage((String) additionalProperties.get("invokerPackage")); + 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("invokerPackage", invokerPackage); + additionalProperties.put(CodegenConstants.INVOKER_PACKAGE, invokerPackage); } - if (additionalProperties.containsKey("groupId")) { - this.setGroupId((String) additionalProperties.get("groupId")); + 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("groupId", groupId); + additionalProperties.put(CodegenConstants.GROUP_ID, groupId); } - if (additionalProperties.containsKey("artifactId")) { - this.setArtifactId((String) additionalProperties.get("artifactId")); + 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("artifactId", artifactId); + additionalProperties.put(CodegenConstants.ARTIFACT_ID, artifactId); } - if (additionalProperties.containsKey("artifactVersion")) { - this.setArtifactVersion((String) additionalProperties.get("artifactVersion")); + 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("artifactVersion", artifactVersion); + additionalProperties.put(CodegenConstants.ARTIFACT_VERSION, artifactVersion); } - if (additionalProperties.containsKey("sourceFolder")) { - this.setSourceFolder((String) additionalProperties.get("sourceFolder")); + if (additionalProperties.containsKey(CodegenConstants.SOURCE_FOLDER)) { + this.setSourceFolder((String) additionalProperties.get(CodegenConstants.SOURCE_FOLDER)); } - if (additionalProperties.containsKey("localVariablePrefix")) { - this.setLocalVariablePrefix((String) additionalProperties.get("localVariablePrefix")); + if (additionalProperties.containsKey(CodegenConstants.LOCAL_VARIABLE_PREFIX)) { + this.setLocalVariablePrefix((String) additionalProperties.get(CodegenConstants.LOCAL_VARIABLE_PREFIX)); } - if (additionalProperties.containsKey("serializableModel")) { - this.setSerializableModel(Boolean.valueOf((String)additionalProperties.get("serializableModel").toString())); + if (additionalProperties.containsKey(CodegenConstants.SERIALIZABLE_MODEL)) { + this.setSerializableModel(Boolean.valueOf((String)additionalProperties.get(CodegenConstants.SERIALIZABLE_MODEL).toString())); } // need to put back serializableModel (boolean) into additionalProperties as value in additionalProperties is string - additionalProperties.put("serializableModel", serializableModel); + additionalProperties.put(CodegenConstants.SERIALIZABLE_MODEL, serializableModel); this.sanitizeConfig(); @@ -170,18 +164,18 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { // the whole additionalProperties object is injected into the main object passed to the mustache layer this.setApiPackage(sanitizePackageName(apiPackage)); - if (additionalProperties.containsKey("apiPackage")) { - this.additionalProperties.put("apiPackage", apiPackage); + if (additionalProperties.containsKey(CodegenConstants.API_PACKAGE)) { + this.additionalProperties.put(CodegenConstants.API_PACKAGE, apiPackage); } this.setModelPackage(sanitizePackageName(modelPackage)); - if (additionalProperties.containsKey("modelPackage")) { - this.additionalProperties.put("modelPackage", modelPackage); + if (additionalProperties.containsKey(CodegenConstants.MODEL_PACKAGE)) { + this.additionalProperties.put(CodegenConstants.MODEL_PACKAGE, modelPackage); } this.setInvokerPackage(sanitizePackageName(invokerPackage)); - if (additionalProperties.containsKey("invokerPackage")) { - this.additionalProperties.put("invokerPackage", invokerPackage); + if (additionalProperties.containsKey(CodegenConstants.INVOKER_PACKAGE)) { + this.additionalProperties.put(CodegenConstants.INVOKER_PACKAGE, invokerPackage); } } 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 168e214aef1..56dbdd0e48b 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 @@ -1,6 +1,7 @@ package io.swagger.codegen.languages; import io.swagger.codegen.CodegenConfig; +import io.swagger.codegen.CodegenConstants; import io.swagger.codegen.CodegenOperation; import io.swagger.codegen.CodegenType; import io.swagger.codegen.SupportingFile; @@ -38,10 +39,10 @@ public class JavaInflectorServerCodegen extends JavaClientCodegen implements Cod apiPackage = System.getProperty("swagger.codegen.inflector.apipackage", "io.swagger.handler"); modelPackage = System.getProperty("swagger.codegen.inflector.modelpackage", "io.swagger.model"); - additionalProperties.put("invokerPackage", invokerPackage); - additionalProperties.put("groupId", groupId); - additionalProperties.put("artifactId", artifactId); - additionalProperties.put("artifactVersion", artifactVersion); + 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); languageSpecificPrimitives = new HashSet( 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 01261799556..3966cb9bea7 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 @@ -1,14 +1,12 @@ package io.swagger.codegen.languages; import io.swagger.codegen.CodegenConfig; -import io.swagger.codegen.CodegenResponse; +import io.swagger.codegen.CodegenConstants; import io.swagger.codegen.CodegenOperation; +import io.swagger.codegen.CodegenResponse; import io.swagger.codegen.CodegenType; import io.swagger.codegen.SupportingFile; import io.swagger.models.Operation; -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.ArrayList; @@ -39,10 +37,10 @@ public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConf apiPackage = System.getProperty("swagger.codegen.jaxrs.apipackage", "io.swagger.api"); modelPackage = System.getProperty("swagger.codegen.jaxrs.modelpackage", "io.swagger.model"); - additionalProperties.put("invokerPackage", invokerPackage); - additionalProperties.put("groupId", groupId); - additionalProperties.put("artifactId", artifactId); - additionalProperties.put("artifactVersion", artifactVersion); + 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); 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 cd88d916e03..234e1508e6e 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 @@ -2,6 +2,7 @@ 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; @@ -84,12 +85,12 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig { typeMapping.put("object", "object"); typeMapping.put("DateTime", "\\DateTime"); - cliOptions.add(new CliOption("invokerPackage", "The main namespace to use for all classes. e.g. Yay\\Pets")); + cliOptions.add(new CliOption(CodegenConstants.INVOKER_PACKAGE, "The main namespace to use for all classes. e.g. Yay\\Pets")); cliOptions.add(new CliOption("packagePath", "The main package name for classes. e.g. GeneratedPetstore")); cliOptions.add(new CliOption("srcBasePath", "The directory under packagePath to serve as source root.")); cliOptions.add(new CliOption("composerVendorName", "The vendor name used in the composer package name. The template uses {{composerVendorName}}/{{composerProjectName}} for the composer package name. e.g. yaypets")); cliOptions.add(new CliOption("composerProjectName", "The project name used in the composer package name. The template uses {{composerVendorName}}/{{composerProjectName}} for the composer package name. e.g. petstore-client")); - cliOptions.add(new CliOption("artifactVersion", "The version to use in the composer package version field. e.g. 1.2.3")); + cliOptions.add(new CliOption(CodegenConstants.ARTIFACT_VERSION, "The version to use in the composer package version field. e.g. 1.2.3")); } public String getPackagePath() { @@ -153,22 +154,22 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig { additionalProperties.put("srcBasePath", srcBasePath); } - if (additionalProperties.containsKey("invokerPackage")) { - this.setInvokerPackage((String) additionalProperties.get("invokerPackage")); + if (additionalProperties.containsKey(CodegenConstants.INVOKER_PACKAGE)) { + this.setInvokerPackage((String) additionalProperties.get(CodegenConstants.INVOKER_PACKAGE)); } else { - additionalProperties.put("invokerPackage", invokerPackage); + additionalProperties.put(CodegenConstants.INVOKER_PACKAGE, invokerPackage); } - if (additionalProperties.containsKey("modelPackage")) { - this.setModelPackage((String) additionalProperties.get("modelPackage")); + if (additionalProperties.containsKey(CodegenConstants.MODEL_PACKAGE)) { + this.setModelPackage((String) additionalProperties.get(CodegenConstants.MODEL_PACKAGE)); } else { - additionalProperties.put("modelPackage", modelPackage); + additionalProperties.put(CodegenConstants.MODEL_PACKAGE, modelPackage); } - if (additionalProperties.containsKey("apiPackage")) { - this.setApiPackage((String) additionalProperties.get("apiPackage")); + if (additionalProperties.containsKey(CodegenConstants.API_PACKAGE)) { + this.setApiPackage((String) additionalProperties.get(CodegenConstants.API_PACKAGE)); } else { - additionalProperties.put("apiPackage", apiPackage); + additionalProperties.put(CodegenConstants.API_PACKAGE, apiPackage); } if (additionalProperties.containsKey("composerProjectName")) { @@ -183,10 +184,10 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig { additionalProperties.put("composerVendorName", composerVendorName); } - if (additionalProperties.containsKey("artifactVersion")) { - this.setArtifactVersion((String) additionalProperties.get("artifactVersion")); + if (additionalProperties.containsKey(CodegenConstants.ARTIFACT_VERSION)) { + this.setArtifactVersion((String) additionalProperties.get(CodegenConstants.ARTIFACT_VERSION)); } else { - additionalProperties.put("artifactVersion", artifactVersion); + additionalProperties.put(CodegenConstants.ARTIFACT_VERSION, artifactVersion); } additionalProperties.put("escapedInvokerPackage", invokerPackage.replace("\\", "\\\\")); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RetrofitClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RetrofitClientCodegen.java index 66d3f19f948..37c119edfb6 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RetrofitClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RetrofitClientCodegen.java @@ -1,6 +1,7 @@ package io.swagger.codegen.languages; import io.swagger.codegen.CodegenConfig; +import io.swagger.codegen.CodegenConstants; import io.swagger.codegen.CodegenOperation; import io.swagger.codegen.CodegenType; import io.swagger.codegen.DefaultCodegen; @@ -44,10 +45,10 @@ public class RetrofitClientCodegen extends DefaultCodegen implements CodegenConf "native", "super", "while") ); - additionalProperties.put("invokerPackage", invokerPackage); - additionalProperties.put("groupId", groupId); - additionalProperties.put("artifactId", artifactId); - additionalProperties.put("artifactVersion", artifactVersion); + additionalProperties.put(CodegenConstants.INVOKER_PACKAGE, invokerPackage); + additionalProperties.put(CodegenConstants.GROUP_ID, groupId); + additionalProperties.put(CodegenConstants.ARTIFACT_ID, artifactId); + additionalProperties.put(CodegenConstants.ARTIFACT_VERSION, artifactVersion); supportingFiles.add(new SupportingFile("pom.mustache", "", "pom.xml")); supportingFiles.add(new SupportingFile("service.mustache", 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 5d8ae4b89b6..003be5ab950 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 @@ -1,6 +1,7 @@ package io.swagger.codegen.languages; 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; @@ -54,10 +55,10 @@ public class ScalaClientCodegen extends DefaultCodegen implements CodegenConfig "trait", "try", "true", "type", "val", "var", "while", "with", "yield") ); - additionalProperties.put("invokerPackage", invokerPackage); - additionalProperties.put("groupId", groupId); - additionalProperties.put("artifactId", artifactId); - additionalProperties.put("artifactVersion", artifactVersion); + 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("asyncHttpClient", asyncHttpClient); additionalProperties.put("authScheme", authScheme); additionalProperties.put("authPreemptive", authPreemptive); 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 d6b0f78253a..9bab6a6cad0 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 @@ -1,6 +1,7 @@ package io.swagger.codegen.languages; import io.swagger.codegen.CodegenConfig; +import io.swagger.codegen.CodegenConstants; import io.swagger.codegen.CodegenOperation; import io.swagger.codegen.CodegenType; import io.swagger.codegen.DefaultCodegen; @@ -73,10 +74,10 @@ public class ScalatraServerCodegen extends DefaultCodegen implements CodegenConf additionalProperties.put("infoEmail", "apiteam@swagger.io"); additionalProperties.put("licenseInfo", "All rights reserved"); additionalProperties.put("licenseUrl", "http://apache.org/licenses/LICENSE-2.0.html"); - additionalProperties.put("invokerPackage", invokerPackage); - additionalProperties.put("groupId", groupId); - additionalProperties.put("artifactId", artifactId); - additionalProperties.put("artifactVersion", artifactVersion); + additionalProperties.put(CodegenConstants.INVOKER_PACKAGE, invokerPackage); + additionalProperties.put(CodegenConstants.GROUP_ID, groupId); + additionalProperties.put(CodegenConstants.ARTIFACT_ID, artifactId); + additionalProperties.put(CodegenConstants.ARTIFACT_VERSION, artifactVersion); supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); supportingFiles.add(new SupportingFile("build.sbt", "", "build.sbt")); 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 8bd4d627d56..e25aae15976 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 @@ -1,6 +1,7 @@ package io.swagger.codegen.languages; 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; @@ -41,10 +42,10 @@ public class SilexServerCodegen extends DefaultCodegen implements CodegenConfig "__halt_compiler", "abstract", "and", "array", "as", "break", "callable", "case", "catch", "class", "clone", "const", "continue", "declare", "default", "die", "do", "echo", "else", "elseif", "empty", "enddeclare", "endfor", "endforeach", "endif", "endswitch", "endwhile", "eval", "exit", "extends", "final", "for", "foreach", "function", "global", "goto", "if", "implements", "include", "include_once", "instanceof", "insteadof", "interface", "isset", "list", "namespace", "new", "or", "print", "private", "protected", "public", "require", "require_once", "return", "static", "switch", "throw", "trait", "try", "unset", "use", "var", "while", "xor") ); - additionalProperties.put("invokerPackage", invokerPackage); - additionalProperties.put("groupId", groupId); - additionalProperties.put("artifactId", artifactId); - additionalProperties.put("artifactVersion", artifactVersion); + additionalProperties.put(CodegenConstants.INVOKER_PACKAGE, invokerPackage); + additionalProperties.put(CodegenConstants.GROUP_ID, groupId); + additionalProperties.put(CodegenConstants.ARTIFACT_ID, artifactId); + additionalProperties.put(CodegenConstants.ARTIFACT_VERSION, artifactVersion); // ref: http://php.net/manual/en/language.types.intro.php languageSpecificPrimitives = new HashSet( 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 edc424f125c..597fd1f1936 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 @@ -34,12 +34,12 @@ public class SpringMVCServerCodegen extends JavaClientCodegen implements Codegen configPackage = "io.swagger.configuration"; - additionalProperties.put("invokerPackage", invokerPackage); - additionalProperties.put("groupId", groupId); - additionalProperties.put("artifactId", artifactId); - additionalProperties.put("artifactVersion", artifactVersion); + 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); - additionalProperties.put("apiPackage", apiPackage); + additionalProperties.put(CodegenConstants.API_PACKAGE, apiPackage); additionalProperties.put("configPackage", configPackage); languageSpecificPrimitives = new HashSet( 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 bfee70f1732..c0ccf2a0a6f 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 @@ -1,6 +1,7 @@ package io.swagger.codegen.languages; 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; @@ -21,10 +22,10 @@ public class StaticDocCodegen extends DefaultCodegen implements CodegenConfig { apiTemplateFiles.put("operation.mustache", ".html"); templateDir = "swagger-static"; - additionalProperties.put("invokerPackage", invokerPackage); - additionalProperties.put("groupId", groupId); - additionalProperties.put("artifactId", artifactId); - additionalProperties.put("artifactVersion", artifactVersion); + additionalProperties.put(CodegenConstants.INVOKER_PACKAGE, invokerPackage); + additionalProperties.put(CodegenConstants.GROUP_ID, groupId); + additionalProperties.put(CodegenConstants.ARTIFACT_ID, artifactId); + additionalProperties.put(CodegenConstants.ARTIFACT_VERSION, artifactVersion); supportingFiles.add(new SupportingFile("package.mustache", "", "package.json")); supportingFiles.add(new SupportingFile("main.mustache", "", "main.js")); 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 8a3244b0097..29cb5d55eaa 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 @@ -1,6 +1,7 @@ package io.swagger.codegen.languages; import io.swagger.codegen.CodegenConfig; +import io.swagger.codegen.CodegenConstants; import io.swagger.codegen.CodegenOperation; import io.swagger.codegen.CodegenType; import io.swagger.codegen.DefaultCodegen; @@ -37,10 +38,10 @@ public class StaticHtmlGenerator extends DefaultCodegen implements CodegenConfig additionalProperties.put("infoEmail", "hello@helloreverb.com"); additionalProperties.put("licenseInfo", "All rights reserved"); additionalProperties.put("licenseUrl", "http://apache.org/licenses/LICENSE-2.0.html"); - additionalProperties.put("invokerPackage", invokerPackage); - additionalProperties.put("groupId", groupId); - additionalProperties.put("artifactId", artifactId); - additionalProperties.put("artifactVersion", artifactVersion); + additionalProperties.put(CodegenConstants.INVOKER_PACKAGE, invokerPackage); + additionalProperties.put(CodegenConstants.GROUP_ID, groupId); + additionalProperties.put(CodegenConstants.ARTIFACT_ID, artifactId); + additionalProperties.put(CodegenConstants.ARTIFACT_VERSION, artifactVersion); supportingFiles.add(new SupportingFile("index.mustache", "", "index.html")); reservedWords = new HashSet(); diff --git a/modules/swagger-codegen-cli/src/test/java/io/swagger/codegen/GenerateTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/DefaultGeneratorTest.java similarity index 51% rename from modules/swagger-codegen-cli/src/test/java/io/swagger/codegen/GenerateTest.java rename to modules/swagger-codegen/src/test/java/io/swagger/codegen/DefaultGeneratorTest.java index bd2a342e3e2..5da6a01763c 100644 --- a/modules/swagger-codegen-cli/src/test/java/io/swagger/codegen/GenerateTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/DefaultGeneratorTest.java @@ -1,15 +1,13 @@ package io.swagger.codegen; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - +import io.swagger.codegen.languages.JavaClientCodegen; +import io.swagger.models.Swagger; +import io.swagger.parser.SwaggerParser; import org.apache.commons.io.FileUtils; -import org.junit.Rule; -import org.junit.Test; import org.junit.rules.TemporaryFolder; - -import static java.nio.charset.StandardCharsets.UTF_8; -import static org.junit.Assert.fail; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; import java.io.BufferedWriter; import java.io.File; @@ -20,34 +18,53 @@ import java.io.Writer; import java.nio.charset.StandardCharsets; import java.util.Arrays; -public class GenerateTest { +import static java.nio.charset.StandardCharsets.UTF_8; +import static org.junit.Assert.fail; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertTrue; + +/** + * Tests for DefaultGenerator logic + */ +public class DefaultGeneratorTest { private static final String TEST_SKIP_OVERWRITE = "testSkipOverwrite"; private static final String POM_FILE = "pom.xml"; private static final String MODEL_ORDER_FILE = "/src/main/java/io/swagger/client/model/Order.java"; - @Rule public TemporaryFolder folder = new TemporaryFolder(); + @BeforeMethod + public void setUp() throws Exception { + folder.create(); + } + + @AfterMethod + public void tearDown() throws Exception { + folder.delete(); + } + @Test - public void testSkipOverwrite() throws IOException { + public void testSkipOverwrite() throws Exception { final File output = folder.getRoot(); - String[] args = {"generate", "-i", "src/test/resources/petstore.json", "-l", "java", "-o", output.getAbsolutePath()}; - String[] argsWithSparam = Arrays.copyOf(args, args.length + 1); - argsWithSparam[args.length] = "-s"; + final Swagger swagger = new SwaggerParser().read("src/test/resources/petstore.json"); + CodegenConfig codegenConfig = new JavaClientCodegen(); + codegenConfig.setOutputDir(output.getAbsolutePath()); - //generate content first time without -s flag, so all generated files should be recorded - SwaggerCodegen.main(args); + ClientOptInput clientOptInput = new ClientOptInput().opts(new ClientOpts()).swagger(swagger).config(codegenConfig); + + //generate content first time without skipOverwrite flag, so all generated files should be recorded + new DefaultGenerator().opts(clientOptInput).generate(); final File order = new File(output, MODEL_ORDER_FILE); assertTrue(order.exists()); //change content of one file changeContent(order); - //generate content second time without -s flag, so changed file should be rewritten - SwaggerCodegen.main(args); - //order = new File(output, MODEL_ORDER_FILE); + //generate content second time without skipOverwrite flag, so changed file should be rewritten + new DefaultGenerator().opts(clientOptInput).generate(); + assertTrue(!TEST_SKIP_OVERWRITE.equals(FileUtils.readFileToString(order, StandardCharsets.UTF_8))); //change content again @@ -58,9 +75,10 @@ public class GenerateTest { fail(); } - //generate content third time with -s flag, so changed file should not be rewritten + //generate content third time with skipOverwrite flag, so changed file should not be rewritten //and deleted file should be recorded - SwaggerCodegen.main(argsWithSparam); + codegenConfig.setSkipOverwrite(true); + new DefaultGenerator().opts(clientOptInput).generate(); assertEquals(FileUtils.readFileToString(order, StandardCharsets.UTF_8), TEST_SKIP_OVERWRITE); assertTrue(pom.exists()); } @@ -70,4 +88,5 @@ public class GenerateTest { out.write(TEST_SKIP_OVERWRITE); out.close(); } + } diff --git a/modules/swagger-codegen-cli/src/test/resources/petstore.json b/modules/swagger-codegen/src/test/resources/petstore.json similarity index 100% rename from modules/swagger-codegen-cli/src/test/resources/petstore.json rename to modules/swagger-codegen/src/test/resources/petstore.json diff --git a/pom.xml b/pom.xml index 4baa768bd76..8a5f5eac4d1 100644 --- a/pom.xml +++ b/pom.xml @@ -68,6 +68,27 @@ target ${project.artifactId}-${project.version} + + org.apache.maven.plugins + maven-surefire-plugin + ${surefire-version} + + none:none + + + + test-testng + test + + test + + + none:none + org.testng:testng + + + + maven-dependency-plugin @@ -457,6 +478,24 @@ ${junit-version} test + + org.testng + testng + ${testng-version} + test + + + org.jmockit + jmockit + ${jmockit-version} + test + + + org.reflections + reflections + ${reflections-version} + test + @@ -482,5 +521,9 @@ 1.6.3 3.2.1 1.9 + 6.9.6 + 2.18.1 + 1.18 + 0.9.10 From cf5982d2c457b503bc1860f276f8e3c7da5990ba Mon Sep 17 00:00:00 2001 From: russellb337 Date: Wed, 26 Aug 2015 17:51:19 -0700 Subject: [PATCH 2/8] remove class comment --- .../java/io/swagger/codegen/cmd/utils/CodegenConfigLoader.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/utils/CodegenConfigLoader.java b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/utils/CodegenConfigLoader.java index 2e068bccb47..7b8e8883ca1 100644 --- a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/utils/CodegenConfigLoader.java +++ b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/utils/CodegenConfigLoader.java @@ -6,9 +6,6 @@ import java.util.ServiceLoader; import static java.util.ServiceLoader.load; -/** - * Created by russellb337 on 8/25/15. - */ public class CodegenConfigLoader { /** * Tries to load config class with SPI first, then with class name directly from classpath From 60fddcf3780e6fb4ce6a3e4d9ffc2ad18862daf2 Mon Sep 17 00:00:00 2001 From: russellb337 Date: Wed, 26 Aug 2015 17:55:02 -0700 Subject: [PATCH 3/8] adding back imports that somewhere got deleted during reformatting --- .../java/io/swagger/codegen/languages/JavaClientCodegen.java | 2 ++ 1 file changed, 2 insertions(+) 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 3150b602261..6dea59ea773 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 @@ -15,7 +15,9 @@ import io.swagger.models.properties.MapProperty; import io.swagger.models.properties.Property; 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; From 8ba4a6d7ad5cbc083948377722f61bf91ce827d8 Mon Sep 17 00:00:00 2001 From: russellb337 Date: Wed, 26 Aug 2015 18:25:23 -0700 Subject: [PATCH 4/8] downgrade reflections version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I’m guessing --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8a5f5eac4d1..4bd0dd2f382 100644 --- a/pom.xml +++ b/pom.xml @@ -524,6 +524,6 @@ 6.9.6 2.18.1 1.18 - 0.9.10 + 0.9.9 From 99ed012fc6ba73c6bb030891177503478267abaa Mon Sep 17 00:00:00 2001 From: russellb337 Date: Wed, 26 Aug 2015 18:31:29 -0700 Subject: [PATCH 5/8] trying a new version of jetty --- .../src/main/resources/JavaInflector/pom.mustache | 2 +- .../swagger-codegen/src/main/resources/JavaJaxRS/pom.mustache | 2 +- .../src/main/resources/JavaSpringMVC/pom.mustache | 2 +- modules/swagger-generator/pom.xml | 2 +- samples/server/petstore/java-inflector/pom.xml | 2 +- samples/server/petstore/jaxrs/pom.xml | 2 +- samples/server/petstore/spring-mvc/pom.xml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/JavaInflector/pom.mustache b/modules/swagger-codegen/src/main/resources/JavaInflector/pom.mustache index 20d5aaf30c6..fbdc8940b31 100644 --- a/modules/swagger-codegen/src/main/resources/JavaInflector/pom.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaInflector/pom.mustache @@ -84,7 +84,7 @@ 1.0.0 1.5.3 - 9.2.9.v20150224 + 9.3.2.v20150730 1.0.1 4.8.2 1.6.3 diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/pom.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/pom.mustache index ba58d23ca7f..9d72123595d 100644 --- a/modules/swagger-codegen/src/main/resources/JavaJaxRS/pom.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaJaxRS/pom.mustache @@ -169,7 +169,7 @@ 1.5.3 - 9.2.9.v20150224 + 9.3.2.v20150730 1.18.1 1.6.3 4.8.1 diff --git a/modules/swagger-codegen/src/main/resources/JavaSpringMVC/pom.mustache b/modules/swagger-codegen/src/main/resources/JavaSpringMVC/pom.mustache index ffbb0e43516..c8a918296e7 100644 --- a/modules/swagger-codegen/src/main/resources/JavaSpringMVC/pom.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaSpringMVC/pom.mustache @@ -151,7 +151,7 @@ 1.5.3 - 9.2.9.v20150224 + 9.3.2.v20150730 1.13 1.6.3 1.6.1 diff --git a/modules/swagger-generator/pom.xml b/modules/swagger-generator/pom.xml index dbb092e9816..cdf44031067 100644 --- a/modules/swagger-generator/pom.xml +++ b/modules/swagger-generator/pom.xml @@ -271,7 +271,7 @@ 1.0.0 2.5 1.3.2 - 9.2.9.v20150224 + 9.3.2.v20150730 2.4.1 diff --git a/samples/server/petstore/java-inflector/pom.xml b/samples/server/petstore/java-inflector/pom.xml index 7b7ec1d8b3d..e8198cc6655 100644 --- a/samples/server/petstore/java-inflector/pom.xml +++ b/samples/server/petstore/java-inflector/pom.xml @@ -84,7 +84,7 @@ 1.0.0 1.5.3 - 9.2.9.v20150224 + 9.3.2.v20150730 1.0.1 4.8.2 1.6.3 diff --git a/samples/server/petstore/jaxrs/pom.xml b/samples/server/petstore/jaxrs/pom.xml index ae9f3e06162..1ed91f0e8f7 100644 --- a/samples/server/petstore/jaxrs/pom.xml +++ b/samples/server/petstore/jaxrs/pom.xml @@ -169,7 +169,7 @@ 1.5.3 - 9.2.9.v20150224 + 9.3.2.v20150730 1.18.1 1.6.3 4.8.1 diff --git a/samples/server/petstore/spring-mvc/pom.xml b/samples/server/petstore/spring-mvc/pom.xml index ad0b2c04acf..0498d2c3baa 100644 --- a/samples/server/petstore/spring-mvc/pom.xml +++ b/samples/server/petstore/spring-mvc/pom.xml @@ -151,7 +151,7 @@ 1.5.3 - 9.2.9.v20150224 + 9.3.2.v20150730 1.13 1.6.3 1.6.1 From ccf0cc83754fbfe27d011cfe23c59d9005f037d0 Mon Sep 17 00:00:00 2001 From: russellb337 Date: Wed, 26 Aug 2015 18:35:22 -0700 Subject: [PATCH 6/8] whoops, didn't mean to upgrade the minor version --- .../src/main/resources/JavaInflector/pom.mustache | 2 +- .../swagger-codegen/src/main/resources/JavaJaxRS/pom.mustache | 2 +- .../src/main/resources/JavaSpringMVC/pom.mustache | 2 +- modules/swagger-generator/pom.xml | 2 +- samples/server/petstore/java-inflector/pom.xml | 2 +- samples/server/petstore/jaxrs/pom.xml | 2 +- samples/server/petstore/spring-mvc/pom.xml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/JavaInflector/pom.mustache b/modules/swagger-codegen/src/main/resources/JavaInflector/pom.mustache index fbdc8940b31..bfcbdfb1aa6 100644 --- a/modules/swagger-codegen/src/main/resources/JavaInflector/pom.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaInflector/pom.mustache @@ -84,7 +84,7 @@ 1.0.0 1.5.3 - 9.3.2.v20150730 + 9.2.13.v20150730 1.0.1 4.8.2 1.6.3 diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/pom.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/pom.mustache index 9d72123595d..9c881d47cc2 100644 --- a/modules/swagger-codegen/src/main/resources/JavaJaxRS/pom.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaJaxRS/pom.mustache @@ -169,7 +169,7 @@ 1.5.3 - 9.3.2.v20150730 + 9.2.13.v20150730 1.18.1 1.6.3 4.8.1 diff --git a/modules/swagger-codegen/src/main/resources/JavaSpringMVC/pom.mustache b/modules/swagger-codegen/src/main/resources/JavaSpringMVC/pom.mustache index c8a918296e7..dad6fd88846 100644 --- a/modules/swagger-codegen/src/main/resources/JavaSpringMVC/pom.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaSpringMVC/pom.mustache @@ -151,7 +151,7 @@ 1.5.3 - 9.3.2.v20150730 + 9.2.13.v20150730 1.13 1.6.3 1.6.1 diff --git a/modules/swagger-generator/pom.xml b/modules/swagger-generator/pom.xml index cdf44031067..e631cb789c1 100644 --- a/modules/swagger-generator/pom.xml +++ b/modules/swagger-generator/pom.xml @@ -271,7 +271,7 @@ 1.0.0 2.5 1.3.2 - 9.3.2.v20150730 + 9.2.13.v20150730 2.4.1 diff --git a/samples/server/petstore/java-inflector/pom.xml b/samples/server/petstore/java-inflector/pom.xml index e8198cc6655..e3bb1ba541b 100644 --- a/samples/server/petstore/java-inflector/pom.xml +++ b/samples/server/petstore/java-inflector/pom.xml @@ -84,7 +84,7 @@ 1.0.0 1.5.3 - 9.3.2.v20150730 + 9.2.13.v20150730 1.0.1 4.8.2 1.6.3 diff --git a/samples/server/petstore/jaxrs/pom.xml b/samples/server/petstore/jaxrs/pom.xml index 1ed91f0e8f7..667bbd934f1 100644 --- a/samples/server/petstore/jaxrs/pom.xml +++ b/samples/server/petstore/jaxrs/pom.xml @@ -169,7 +169,7 @@ 1.5.3 - 9.3.2.v20150730 + 9.2.13.v20150730 1.18.1 1.6.3 4.8.1 diff --git a/samples/server/petstore/spring-mvc/pom.xml b/samples/server/petstore/spring-mvc/pom.xml index 0498d2c3baa..102ebbd498e 100644 --- a/samples/server/petstore/spring-mvc/pom.xml +++ b/samples/server/petstore/spring-mvc/pom.xml @@ -151,7 +151,7 @@ 1.5.3 - 9.3.2.v20150730 + 9.2.13.v20150730 1.13 1.6.3 1.6.1 From d31013d97747900dbcbde47c98a7d4b34f93f5fd Mon Sep 17 00:00:00 2001 From: russellb337 Date: Wed, 26 Aug 2015 18:50:29 -0700 Subject: [PATCH 7/8] remove reflections from parent pom --- pom.xml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/pom.xml b/pom.xml index 4bd0dd2f382..1dd80dcb1b9 100644 --- a/pom.xml +++ b/pom.xml @@ -490,12 +490,6 @@ ${jmockit-version} test - - org.reflections - reflections - ${reflections-version} - test - From 074ba1ea546e352bc642581c4141d9f0a50b10d7 Mon Sep 17 00:00:00 2001 From: russellb337 Date: Thu, 27 Aug 2015 09:11:49 -0700 Subject: [PATCH 8/8] undo some of the debugging changes I made --- modules/swagger-codegen-cli/pom.xml | 6 ------ .../io/swagger/codegen/cmd/ConfigHelp.java | 6 +----- .../java/io/swagger/codegen/cmd/Generate.java | 3 +-- .../io/swagger/codegen/cmd/GenerateTest.java | 2 +- .../swagger/codegen/plugin/CodeGenMojo.java | 19 ++----------------- modules/swagger-codegen/pom.xml | 6 ++++++ .../swagger/codegen}/CodegenConfigLoader.java | 4 +--- .../main/resources/JavaInflector/pom.mustache | 2 +- .../src/main/resources/JavaJaxRS/pom.mustache | 2 +- .../main/resources/JavaSpringMVC/pom.mustache | 2 +- .../codegen}/CodegenConfigLoaderTest.java | 4 +--- modules/swagger-generator/pom.xml | 2 +- pom.xml | 2 +- .../server/petstore/java-inflector/pom.xml | 2 +- samples/server/petstore/jaxrs/pom.xml | 2 +- samples/server/petstore/spring-mvc/pom.xml | 2 +- 16 files changed, 21 insertions(+), 45 deletions(-) rename modules/{swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/utils => swagger-codegen/src/main/java/io/swagger/codegen}/CodegenConfigLoader.java (91%) rename modules/{swagger-codegen-cli/src/test/java/io/swagger/codegen/cmd/utils => swagger-codegen/src/test/java/io/swagger/codegen}/CodegenConfigLoaderTest.java (94%) diff --git a/modules/swagger-codegen-cli/pom.xml b/modules/swagger-codegen-cli/pom.xml index 9c0b6af1bcd..5193e39531a 100644 --- a/modules/swagger-codegen-cli/pom.xml +++ b/modules/swagger-codegen-cli/pom.xml @@ -98,12 +98,6 @@ ${jmockit-version} test - - org.reflections - reflections - ${reflections-version} - test - \ No newline at end of file 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 5a7c46eefeb..f7a128613b9 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 @@ -4,11 +4,7 @@ import io.airlift.airline.Command; import io.airlift.airline.Option; import io.swagger.codegen.CliOption; import io.swagger.codegen.CodegenConfig; -import io.swagger.codegen.cmd.utils.CodegenConfigLoader; - -import java.util.ServiceLoader; - -import static java.util.ServiceLoader.load; +import io.swagger.codegen.CodegenConfigLoader; @Command(name = "config-help", description = "Config help for chosen lang") public class ConfigHelp implements Runnable { 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 9e4754f9a1d..d6790a6aa8f 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 @@ -8,9 +8,9 @@ import io.swagger.codegen.CliOption; import io.swagger.codegen.ClientOptInput; import io.swagger.codegen.ClientOpts; import io.swagger.codegen.CodegenConfig; +import io.swagger.codegen.CodegenConfigLoader; import io.swagger.codegen.CodegenConstants; import io.swagger.codegen.DefaultGenerator; -import io.swagger.codegen.cmd.utils.CodegenConfigLoader; import io.swagger.codegen.cmd.utils.OptionUtils; import io.swagger.models.Swagger; import io.swagger.parser.SwaggerParser; @@ -23,7 +23,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import static java.util.ServiceLoader.load; import static org.apache.commons.lang3.StringUtils.isNotEmpty; /** diff --git a/modules/swagger-codegen-cli/src/test/java/io/swagger/codegen/cmd/GenerateTest.java b/modules/swagger-codegen-cli/src/test/java/io/swagger/codegen/cmd/GenerateTest.java index 2fc414e884e..94a397df700 100644 --- a/modules/swagger-codegen-cli/src/test/java/io/swagger/codegen/cmd/GenerateTest.java +++ b/modules/swagger-codegen-cli/src/test/java/io/swagger/codegen/cmd/GenerateTest.java @@ -8,7 +8,7 @@ import io.swagger.codegen.CodegenConfig; import io.swagger.codegen.CodegenConstants; import io.swagger.codegen.DefaultGenerator; import io.swagger.codegen.SwaggerCodegen; -import io.swagger.codegen.cmd.utils.CodegenConfigLoader; +import io.swagger.codegen.CodegenConfigLoader; import io.swagger.codegen.languages.JavaClientCodegen; import io.swagger.models.Swagger; import io.swagger.models.auth.AuthorizationValue; 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 41737ca0968..7500fcfeb39 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 @@ -20,6 +20,7 @@ import io.swagger.codegen.CliOption; import io.swagger.codegen.ClientOptInput; import io.swagger.codegen.ClientOpts; import io.swagger.codegen.CodegenConfig; +import io.swagger.codegen.CodegenConfigLoader; import io.swagger.codegen.DefaultGenerator; import io.swagger.models.Swagger; import io.swagger.parser.SwaggerParser; @@ -121,7 +122,7 @@ public class CodeGenMojo extends AbstractMojo { public void execute() throws MojoExecutionException { Swagger swagger = new SwaggerParser().read(inputSpec); - CodegenConfig config = forName(language); + CodegenConfig config = CodegenConfigLoader.forName(language); config.setOutputDir(output.getAbsolutePath()); if (null != templateDirectory) { @@ -167,20 +168,4 @@ public class CodeGenMojo extends AbstractMojo { project.addCompileSourceRoot(output.toString()); } } - - private CodegenConfig forName(String name) { - ServiceLoader loader = ServiceLoader.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/pom.xml b/modules/swagger-codegen/pom.xml index 0f640d577ad..b6caa0a684a 100644 --- a/modules/swagger-codegen/pom.xml +++ b/modules/swagger-codegen/pom.xml @@ -340,6 +340,12 @@ ${testng-version} test + + org.reflections + reflections + ${reflections-version} + test + diff --git a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/utils/CodegenConfigLoader.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfigLoader.java similarity index 91% rename from modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/utils/CodegenConfigLoader.java rename to modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfigLoader.java index 7b8e8883ca1..c578ab75912 100644 --- a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/utils/CodegenConfigLoader.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfigLoader.java @@ -1,6 +1,4 @@ -package io.swagger.codegen.cmd.utils; - -import io.swagger.codegen.CodegenConfig; +package io.swagger.codegen; import java.util.ServiceLoader; diff --git a/modules/swagger-codegen/src/main/resources/JavaInflector/pom.mustache b/modules/swagger-codegen/src/main/resources/JavaInflector/pom.mustache index bfcbdfb1aa6..20d5aaf30c6 100644 --- a/modules/swagger-codegen/src/main/resources/JavaInflector/pom.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaInflector/pom.mustache @@ -84,7 +84,7 @@ 1.0.0 1.5.3 - 9.2.13.v20150730 + 9.2.9.v20150224 1.0.1 4.8.2 1.6.3 diff --git a/modules/swagger-codegen/src/main/resources/JavaJaxRS/pom.mustache b/modules/swagger-codegen/src/main/resources/JavaJaxRS/pom.mustache index 9c881d47cc2..ba58d23ca7f 100644 --- a/modules/swagger-codegen/src/main/resources/JavaJaxRS/pom.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaJaxRS/pom.mustache @@ -169,7 +169,7 @@ 1.5.3 - 9.2.13.v20150730 + 9.2.9.v20150224 1.18.1 1.6.3 4.8.1 diff --git a/modules/swagger-codegen/src/main/resources/JavaSpringMVC/pom.mustache b/modules/swagger-codegen/src/main/resources/JavaSpringMVC/pom.mustache index dad6fd88846..ffbb0e43516 100644 --- a/modules/swagger-codegen/src/main/resources/JavaSpringMVC/pom.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaSpringMVC/pom.mustache @@ -151,7 +151,7 @@ 1.5.3 - 9.2.13.v20150730 + 9.2.9.v20150224 1.13 1.6.3 1.6.1 diff --git a/modules/swagger-codegen-cli/src/test/java/io/swagger/codegen/cmd/utils/CodegenConfigLoaderTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/CodegenConfigLoaderTest.java similarity index 94% rename from modules/swagger-codegen-cli/src/test/java/io/swagger/codegen/cmd/utils/CodegenConfigLoaderTest.java rename to modules/swagger-codegen/src/test/java/io/swagger/codegen/CodegenConfigLoaderTest.java index 0bfd6175f8d..b91e506a4f9 100644 --- a/modules/swagger-codegen-cli/src/test/java/io/swagger/codegen/cmd/utils/CodegenConfigLoaderTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/CodegenConfigLoaderTest.java @@ -1,7 +1,5 @@ -package io.swagger.codegen.cmd.utils; +package io.swagger.codegen; -import io.swagger.codegen.CodegenConfig; -import io.swagger.codegen.DefaultCodegen; import org.reflections.Reflections; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; diff --git a/modules/swagger-generator/pom.xml b/modules/swagger-generator/pom.xml index e631cb789c1..dbb092e9816 100644 --- a/modules/swagger-generator/pom.xml +++ b/modules/swagger-generator/pom.xml @@ -271,7 +271,7 @@ 1.0.0 2.5 1.3.2 - 9.2.13.v20150730 + 9.2.9.v20150224 2.4.1 diff --git a/pom.xml b/pom.xml index 1dd80dcb1b9..2ff111c5745 100644 --- a/pom.xml +++ b/pom.xml @@ -518,6 +518,6 @@ 6.9.6 2.18.1 1.18 - 0.9.9 + 0.9.10 diff --git a/samples/server/petstore/java-inflector/pom.xml b/samples/server/petstore/java-inflector/pom.xml index e3bb1ba541b..7b7ec1d8b3d 100644 --- a/samples/server/petstore/java-inflector/pom.xml +++ b/samples/server/petstore/java-inflector/pom.xml @@ -84,7 +84,7 @@ 1.0.0 1.5.3 - 9.2.13.v20150730 + 9.2.9.v20150224 1.0.1 4.8.2 1.6.3 diff --git a/samples/server/petstore/jaxrs/pom.xml b/samples/server/petstore/jaxrs/pom.xml index 667bbd934f1..ae9f3e06162 100644 --- a/samples/server/petstore/jaxrs/pom.xml +++ b/samples/server/petstore/jaxrs/pom.xml @@ -169,7 +169,7 @@ 1.5.3 - 9.2.13.v20150730 + 9.2.9.v20150224 1.18.1 1.6.3 4.8.1 diff --git a/samples/server/petstore/spring-mvc/pom.xml b/samples/server/petstore/spring-mvc/pom.xml index 102ebbd498e..ad0b2c04acf 100644 --- a/samples/server/petstore/spring-mvc/pom.xml +++ b/samples/server/petstore/spring-mvc/pom.xml @@ -151,7 +151,7 @@ 1.5.3 - 9.2.13.v20150730 + 9.2.9.v20150224 1.13 1.6.3 1.6.1