From 6f4f293943e57bd0a33781f82c67182af7e44e9f Mon Sep 17 00:00:00 2001 From: evigeant Date: Wed, 16 Dec 2015 21:35:54 -0500 Subject: [PATCH 1/3] Updated jaxrs generator to use additional properties instead of java properties which are very difficult to set from maven --- bin/jaxrs-petstore-server.sh | 2 +- .../io/swagger/codegen/CodegenConstants.java | 3 ++ .../codegen/languages/JaxRSServerCodegen.java | 31 ++++++++----------- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/bin/jaxrs-petstore-server.sh b/bin/jaxrs-petstore-server.sh index 91a418d6f9a..2dd4fc03b38 100755 --- a/bin/jaxrs-petstore-server.sh +++ b/bin/jaxrs-petstore-server.sh @@ -26,6 +26,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="$@ generate -t modules/swagger-codegen/src/main/resources/JavaJaxRS -i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l jaxrs -o samples/server/petstore/jaxrs -Dswagger.codegen.jaxrs.impl.source=src/main/java" +ags="$@ generate -t modules/swagger-codegen/src/main/resources/JavaJaxRS -i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l jaxrs -o samples/server/petstore/jaxrs" java $JAVA_OPTS -jar $executable $ags diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java index 9c2711f8cad..4d0e64e19a4 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java @@ -28,6 +28,9 @@ public class CodegenConstants { public static final String SOURCE_FOLDER = "sourceFolder"; public static final String SOURCE_FOLDER_DESC = "source folder for generated code"; + public static final String IMPL_FOLDER = "implFolder"; + public static final String IMPL_FOLDER_DESC = "folder for generated implementation code"; + public static final String LOCAL_VARIABLE_PREFIX = "localVariablePrefix"; public static final String LOCAL_VARIABLE_PREFIX_DESC = "prefix for generated code members and local variables"; diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JaxRSServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JaxRSServerCodegen.java index 6bc1a392414..532abab4596 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JaxRSServerCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JaxRSServerCodegen.java @@ -5,34 +5,32 @@ import io.swagger.models.Operation; import io.swagger.models.Path; import io.swagger.models.Swagger; -import java.io.File; import java.util.*; public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConfig { protected String title = "Swagger Server"; + protected String implFolder = "src/main/java"; public JaxRSServerCodegen() { - super.processOpts(); + super(); sourceFolder = "src/gen/java"; invokerPackage = "io.swagger.api"; artifactId = "swagger-jaxrs-server"; - outputFolder = System.getProperty("swagger.codegen.jaxrs.genfolder", "generated-code/javaJaxRS"); + outputFolder = "generated-code/javaJaxRS"; modelTemplateFiles.put("model.mustache", ".java"); apiTemplateFiles.put("api.mustache", ".java"); apiTemplateFiles.put("apiService.mustache", ".java"); apiTemplateFiles.put("apiServiceImpl.mustache", ".java"); apiTemplateFiles.put("apiServiceFactory.mustache", ".java"); embeddedTemplateDir = templateDir = "JavaJaxRS"; - apiPackage = System.getProperty("swagger.codegen.jaxrs.apipackage", "io.swagger.api"); - modelPackage = System.getProperty("swagger.codegen.jaxrs.modelpackage", "io.swagger.model"); + apiPackage = "io.swagger.api"; + modelPackage = "io.swagger.model"; - additionalProperties.put(CodegenConstants.INVOKER_PACKAGE, invokerPackage); - additionalProperties.put(CodegenConstants.GROUP_ID, groupId); - additionalProperties.put(CodegenConstants.ARTIFACT_ID, artifactId); - additionalProperties.put(CodegenConstants.ARTIFACT_VERSION, artifactVersion); additionalProperties.put("title", title); + + cliOptions.add(new CliOption(CodegenConstants.IMPL_FOLDER, CodegenConstants.IMPL_FOLDER_DESC)); } public CodegenType getTag() { @@ -50,6 +48,10 @@ public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConf @Override public void processOpts() { super.processOpts(); + + if(additionalProperties.containsKey(CodegenConstants.IMPL_FOLDER)) { + implFolder = (String) additionalProperties.get(CodegenConstants.IMPL_FOLDER); + } supportingFiles.clear(); supportingFiles.add(new SupportingFile("pom.mustache", "", "pom.xml")); @@ -204,19 +206,12 @@ public class JaxRSServerCodegen extends JavaClientCodegen implements CodegenConf int ix = result.lastIndexOf('/'); result = result.substring(0, ix) + "/impl" + result.substring(ix, result.length() - 5) + "ServiceImpl.java"; - String output = System.getProperty("swagger.codegen.jaxrs.impl.source"); - if(output == null) { - output = "src" + File.separator + "main" + File.separator + "java"; - } - result = result.replace(apiFileFolder(), implFileFolder(output)); + result = result.replace(apiFileFolder(), implFileFolder(implFolder)); } else if (templateName.endsWith("Factory.mustache")) { int ix = result.lastIndexOf('/'); result = result.substring(0, ix) + "/factories" + result.substring(ix, result.length() - 5) + "ServiceFactory.java"; - String output = System.getProperty("swagger.codegen.jaxrs.impl.source"); - if (output != null) { - result = result.replace(apiFileFolder(), implFileFolder(output)); - } + result = result.replace(apiFileFolder(), implFileFolder(implFolder)); } else if (templateName.endsWith("Service.mustache")) { int ix = result.lastIndexOf('.'); result = result.substring(0, ix) + "Service.java"; From e19d4228e952108f384a7c15bcc5d818c207c885 Mon Sep 17 00:00:00 2001 From: evigeant Date: Wed, 16 Dec 2015 22:22:01 -0500 Subject: [PATCH 2/3] Fixed CodeGen tests following addition of implFolder additional property in jaxrs --- .../options/JaxRSServerOptionsProvider.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JaxRSServerOptionsProvider.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JaxRSServerOptionsProvider.java index 0b735363b77..7326eade0bf 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JaxRSServerOptionsProvider.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JaxRSServerOptionsProvider.java @@ -1,7 +1,23 @@ package io.swagger.codegen.options; +import java.util.Map; + +import com.google.common.collect.ImmutableMap; + +import io.swagger.codegen.CodegenConstants; + public class JaxRSServerOptionsProvider extends JavaOptionsProvider { + public static final String IMPL_FOLDER_VALUE = "src/main/java/impl"; + @Override + public Map createOptions() { + ImmutableMap.Builder builder = new ImmutableMap.Builder(); + return builder.putAll(super.createOptions()) + .put(CodegenConstants.IMPL_FOLDER, IMPL_FOLDER_VALUE) + .build(); + } + + @Override public boolean isServer() { return true; } From ca67e3506b4b04cf791669bed17cc8721d1284a0 Mon Sep 17 00:00:00 2001 From: evigeant Date: Sun, 3 Jan 2016 15:07:27 -0500 Subject: [PATCH 3/3] Fixed idententation to use spaces instead of tab --- .../io/swagger/codegen/options/JaxRSServerOptionsProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JaxRSServerOptionsProvider.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JaxRSServerOptionsProvider.java index 7dbc3d96f1c..e7286094564 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JaxRSServerOptionsProvider.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JaxRSServerOptionsProvider.java @@ -10,7 +10,7 @@ public class JaxRSServerOptionsProvider extends JavaOptionsProvider { public static final String JODA_DATE_LIBRARY = "joda"; public static final String IMPL_FOLDER_VALUE = "src/main/java/impl"; - @Override + @Override public boolean isServer() { return true; }