From 3648a7996593c8b00202d74e613c33fbd588cda3 Mon Sep 17 00:00:00 2001 From: Maelig Nantel Date: Fri, 15 Jan 2016 14:17:16 +0100 Subject: [PATCH] Add CXF codegen Also rename the existing JAX-RS codegen to JAX-RS-Jersey1 codegen, since JAX-RS is only a specification. Jersey and CXF are both an implementation of the JAX-RS specification. --- .../languages/JavaJaxRSCXFServerCodegen.java | 49 +++++++++++++++++++ ...ava => JavaJaxRSJersey1ServerCodegen.java} | 9 ++-- .../services/io.swagger.codegen.CodegenConfig | 3 +- .../codegen/jaxrs/JaxRSServerOptionsTest.java | 4 +- .../codegen/jaxrs/JaxrsJava8ModelTest.java | 4 +- .../codegen/jaxrs/JaxrsJodaModelTest.java | 4 +- .../options/JaxRSServerOptionsProvider.java | 3 ++ 7 files changed, 66 insertions(+), 10 deletions(-) create mode 100644 modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaJaxRSCXFServerCodegen.java rename modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/{JaxRSServerCodegen.java => JavaJaxRSJersey1ServerCodegen.java} (96%) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaJaxRSCXFServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaJaxRSCXFServerCodegen.java new file mode 100644 index 00000000000..837f61984a4 --- /dev/null +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaJaxRSCXFServerCodegen.java @@ -0,0 +1,49 @@ + +package io.swagger.codegen.languages; + +import java.io.File; + +import org.apache.commons.lang.WordUtils; + +// TODO: create an abstract JavaJAXRSServerCodegen that both Jersey1 & CXF will extends. +public class JavaJaxRSCXFServerCodegen extends JavaJaxRSJersey1ServerCodegen +{ + public JavaJaxRSCXFServerCodegen() + { + super(); + super.embeddedTemplateDir = templateDir = JAXRS_TEMPLATE_DIRECTORY_NAME + File.separator + "cxf"; + // We decided to just provide the CXF interface and let the user create his own files to implement it + super.apiTemplateFiles.remove("apiService.mustache"); + super.apiTemplateFiles.remove("apiServiceImpl.mustache"); + super.apiTemplateFiles.remove("apiServiceFactory.mustache"); + } + + @Override + public void processOpts() + { + super.processOpts(); + sourceFolder = "gen" + File.separator + "java"; + + modelTemplateFiles.clear(); + modelTemplateFiles.put("entityModel.mustache", ".java"); + + supportingFiles.clear(); + } + + @Override + public String toApiName(String name) + { + String computedName = name; + computedName = computedName.replace('-', ' '); + computedName = WordUtils.capitalize(computedName); + computedName = computedName.replaceAll("\\s", ""); + computedName = super.toApiName(computedName); + return computedName; + } + + @Override + public String getName() + { + return "cxf"; + } +} 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/JavaJaxRSJersey1ServerCodegen.java similarity index 96% rename from modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JaxRSServerCodegen.java rename to modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaJaxRSJersey1ServerCodegen.java index f681bf5ba96..b0bc3b5ad6f 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/JavaJaxRSJersey1ServerCodegen.java @@ -8,11 +8,14 @@ import io.swagger.models.Swagger; import java.io.File; import java.util.*; -public class JaxRSServerCodegen extends JavaClientCodegen { +public class JavaJaxRSJersey1ServerCodegen extends JavaClientCodegen { + protected static final String JAXRS_TEMPLATE_DIRECTORY_NAME = "JavaJaxRS"; + protected String dateLibrary = "default"; protected String title = "Swagger Server"; protected String implFolder = "src/main/java"; - public JaxRSServerCodegen() { + public static final String DATE_LIBRARY = "dateLibrary"; + public JavaJaxRSJersey1ServerCodegen() { super(); sourceFolder = "src/gen/java"; @@ -30,7 +33,7 @@ public class JaxRSServerCodegen extends JavaClientCodegen { additionalProperties.put("title", title); - embeddedTemplateDir = templateDir = "JavaJaxRS" + File.separator + "jersey1_18"; + embeddedTemplateDir = templateDir = JAXRS_TEMPLATE_DIRECTORY_NAME + File.separator + "jersey1_18"; for(int i = 0; i < cliOptions.size(); i++) { if(CodegenConstants.LIBRARY.equals(cliOptions.get(i).getOpt())) { diff --git a/modules/swagger-codegen/src/main/resources/META-INF/services/io.swagger.codegen.CodegenConfig b/modules/swagger-codegen/src/main/resources/META-INF/services/io.swagger.codegen.CodegenConfig index 87d61229936..d22a87b0a7b 100644 --- a/modules/swagger-codegen/src/main/resources/META-INF/services/io.swagger.codegen.CodegenConfig +++ b/modules/swagger-codegen/src/main/resources/META-INF/services/io.swagger.codegen.CodegenConfig @@ -7,7 +7,8 @@ io.swagger.codegen.languages.FlaskConnexionCodegen io.swagger.codegen.languages.GoClientCodegen io.swagger.codegen.languages.JavaClientCodegen io.swagger.codegen.languages.JavascriptClientCodegen -io.swagger.codegen.languages.JaxRSServerCodegen +io.swagger.codegen.languages.JavaJaxRSJersey1ServerCodegen +io.swagger.codegen.languages.JavaJaxRSCXFServerCodegen io.swagger.codegen.languages.JavaInflectorServerCodegen io.swagger.codegen.languages.JMeterCodegen io.swagger.codegen.languages.NodeJSServerCodegen diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxRSServerOptionsTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxRSServerOptionsTest.java index a441a7984d2..94ce0519a6a 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxRSServerOptionsTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxRSServerOptionsTest.java @@ -2,7 +2,7 @@ package io.swagger.codegen.jaxrs; import io.swagger.codegen.CodegenConfig; import io.swagger.codegen.java.JavaClientOptionsTest; -import io.swagger.codegen.languages.JaxRSServerCodegen; +import io.swagger.codegen.languages.JavaJaxRSJersey1ServerCodegen; import io.swagger.codegen.options.JaxRSServerOptionsProvider; import mockit.Expectations; @@ -11,7 +11,7 @@ import mockit.Tested; public class JaxRSServerOptionsTest extends JavaClientOptionsTest { @Tested - private JaxRSServerCodegen clientCodegen; + private JavaJaxRSJersey1ServerCodegen clientCodegen; public JaxRSServerOptionsTest() { super(new JaxRSServerOptionsProvider()); diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJava8ModelTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJava8ModelTest.java index b1ee5b0040a..b5ed5d1653c 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJava8ModelTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJava8ModelTest.java @@ -2,7 +2,7 @@ package io.swagger.codegen.jaxrs; import io.swagger.codegen.CodegenModel; -import io.swagger.codegen.languages.JaxRSServerCodegen; +import io.swagger.codegen.languages.JavaJaxRSJersey1ServerCodegen; import io.swagger.models.Model; import io.swagger.models.ModelImpl; import io.swagger.models.properties.DateProperty; @@ -26,7 +26,7 @@ public class JaxrsJava8ModelTest { .required("id") .required("name"); - final JaxRSServerCodegen codegen = new JaxRSServerCodegen(); + final JavaJaxRSJersey1ServerCodegen codegen = new JavaJaxRSJersey1ServerCodegen(); codegen.setDateLibrary("java8"); codegen.processOpts(); final CodegenModel cm = codegen.fromModel("sample", model); diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJodaModelTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJodaModelTest.java index c2cb65c78ca..0fe24f04af2 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJodaModelTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJodaModelTest.java @@ -1,7 +1,7 @@ package io.swagger.codegen.jaxrs; import io.swagger.codegen.CodegenModel; -import io.swagger.codegen.languages.JaxRSServerCodegen; +import io.swagger.codegen.languages.JavaJaxRSJersey1ServerCodegen; import io.swagger.models.Model; import io.swagger.models.ModelImpl; import io.swagger.models.properties.DateProperty; @@ -25,7 +25,7 @@ public class JaxrsJodaModelTest { .required("id") .required("name"); - final JaxRSServerCodegen codegen = new JaxRSServerCodegen(); + final JavaJaxRSJersey1ServerCodegen codegen = new JavaJaxRSJersey1ServerCodegen(); codegen.setDateLibrary("joda"); codegen.processOpts(); final CodegenModel cm = codegen.fromModel("sample", model); 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 b74623e8517..2a8b2a3dcfc 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JaxRSServerOptionsProvider.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JaxRSServerOptionsProvider.java @@ -1,6 +1,7 @@ package io.swagger.codegen.options; import com.google.common.collect.ImmutableMap; +import io.swagger.codegen.languages.JavaJaxRSJersey1ServerCodegen; import io.swagger.codegen.CodegenConstants; import java.util.Map; @@ -26,6 +27,8 @@ public class JaxRSServerOptionsProvider extends JavaOptionsProvider { ImmutableMap.Builder builder = new ImmutableMap.Builder(); builder.putAll(options) .put(CodegenConstants.IMPL_FOLDER, IMPL_FOLDER_VALUE); + .put(CodegenConstants.IMPL_FOLDER, IMPL_FOLDER_VALUE) + .put(JavaJaxRSJersey1ServerCodegen.DATE_LIBRARY, "joda"); return builder.build(); }