From 45a50840a5419b3b76f5aa049fd39eb8e7ae82da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Bresson?= Date: Wed, 2 May 2018 13:39:29 +0200 Subject: [PATCH] [spring, play-framework] Handle setters for package values (#288) --- .../languages/JavaPlayFrameworkCodegen.java | 34 +++++--- .../codegen/languages/SpringCodegen.java | 23 ++++-- .../play/JavaPlayCodegenFrameworkTest.java | 79 +++++++++++++++++++ .../java/spring/SpringCodegenTest.java | 17 +++- 4 files changed, 131 insertions(+), 22 deletions(-) create mode 100644 modules/openapi-generator/src/test/java/org/openapitools/codegen/java/play/JavaPlayCodegenFrameworkTest.java diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPlayFrameworkCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPlayFrameworkCodegen.java index 4a91e9db223..493bbadbe48 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPlayFrameworkCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPlayFrameworkCodegen.java @@ -17,14 +17,16 @@ package org.openapitools.codegen.languages; -import org.openapitools.codegen.*; -import org.openapitools.codegen.languages.features.*; -import io.swagger.v3.oas.models.OpenAPI; -import io.swagger.v3.oas.models.Operation; -import io.swagger.v3.oas.models.media.*; -import io.swagger.v3.oas.models.parameters.*; -import io.swagger.v3.core.util.Json; +import io.swagger.v3.oas.models.media.Schema; +import org.openapitools.codegen.CliOption; +import org.openapitools.codegen.CodegenModel; +import org.openapitools.codegen.CodegenOperation; +import org.openapitools.codegen.CodegenParameter; +import org.openapitools.codegen.CodegenProperty; +import org.openapitools.codegen.CodegenType; +import org.openapitools.codegen.SupportingFile; +import org.openapitools.codegen.languages.features.BeanValidationFeatures; import java.io.File; import java.util.List; @@ -68,8 +70,6 @@ public class JavaPlayFrameworkCodegen extends AbstractJavaCodegen implements Bea projectTestFolder = projectFolder + File.separator + "test"; testFolder = projectTestFolder; - additionalProperties.put(CONFIG_PACKAGE, configPackage); - additionalProperties.put(BASE_PACKAGE, basePackage); additionalProperties.put("java8", true); additionalProperties.put("jackson", "true"); @@ -117,10 +117,14 @@ public class JavaPlayFrameworkCodegen extends AbstractJavaCodegen implements Bea if (additionalProperties.containsKey(CONFIG_PACKAGE)) { this.setConfigPackage((String) additionalProperties.get(CONFIG_PACKAGE)); + } else { + additionalProperties.put(CONFIG_PACKAGE, configPackage); } if (additionalProperties.containsKey(BASE_PACKAGE)) { this.setBasePackage((String) additionalProperties.get(BASE_PACKAGE)); + } else { + additionalProperties.put(BASE_PACKAGE, basePackage); } if (additionalProperties.containsKey(CONTROLLER_ONLY)) { @@ -233,12 +237,20 @@ public class JavaPlayFrameworkCodegen extends AbstractJavaCodegen implements Bea this.title = title; } + public String getConfigPackage() { + return configPackage; + } + public void setConfigPackage(String configPackage) { this.configPackage = configPackage; } - public void setBasePackage(String configPackage) { - this.basePackage = configPackage; + public String getBasePackage() { + return basePackage; + } + + public void setBasePackage(String basePackage) { + this.basePackage = basePackage; } public void setControllerOnly(boolean controllerOnly) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java index cb953d78941..2dea1254920 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java @@ -94,9 +94,6 @@ public class SpringCodegen extends AbstractJavaCodegen invokerPackage = "org.openapitools.api"; artifactId = "openapi-spring"; - additionalProperties.put(CONFIG_PACKAGE, configPackage); - additionalProperties.put(BASE_PACKAGE, basePackage); - // spring uses the jackson lib additionalProperties.put("jackson", "true"); @@ -158,8 +155,8 @@ public class SpringCodegen extends AbstractJavaCodegen } } - // set invokerPackage as basePackage - if (additionalProperties.containsKey(CodegenConstants.INVOKER_PACKAGE)) { + if (!additionalProperties.containsKey(BASE_PACKAGE) && additionalProperties.containsKey(CodegenConstants.INVOKER_PACKAGE)) { + // set invokerPackage as basePackage: this.setBasePackage((String) additionalProperties.get(CodegenConstants.INVOKER_PACKAGE)); additionalProperties.put(BASE_PACKAGE, basePackage); LOGGER.info("Set base package to invoker package (" + basePackage + ")"); @@ -179,10 +176,14 @@ public class SpringCodegen extends AbstractJavaCodegen if (additionalProperties.containsKey(CONFIG_PACKAGE)) { this.setConfigPackage((String) additionalProperties.get(CONFIG_PACKAGE)); + } else { + additionalProperties.put(CONFIG_PACKAGE, configPackage); } if (additionalProperties.containsKey(BASE_PACKAGE)) { this.setBasePackage((String) additionalProperties.get(BASE_PACKAGE)); + } else { + additionalProperties.put(BASE_PACKAGE, basePackage); } if (additionalProperties.containsKey(INTERFACE_ONLY)) { @@ -622,8 +623,16 @@ public class SpringCodegen extends AbstractJavaCodegen this.configPackage = configPackage; } - public void setBasePackage(String configPackage) { - this.basePackage = configPackage; + public String getConfigPackage() { + return this.configPackage; + } + + public void setBasePackage(String basePackage) { + this.basePackage = basePackage; + } + + public String getBasePackage() { + return this.basePackage; } public void setInterfaceOnly(boolean interfaceOnly) { this.interfaceOnly = interfaceOnly; } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/play/JavaPlayCodegenFrameworkTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/play/JavaPlayCodegenFrameworkTest.java new file mode 100644 index 00000000000..19fc685bbb4 --- /dev/null +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/play/JavaPlayCodegenFrameworkTest.java @@ -0,0 +1,79 @@ +package org.openapitools.codegen.java.play; + +import org.openapitools.codegen.CodegenConstants; +import org.openapitools.codegen.languages.JavaPlayFrameworkCodegen; +import org.testng.Assert; +import org.testng.annotations.Test; + +public class JavaPlayCodegenFrameworkTest { + + @Test + public void testInitialConfigValues() throws Exception { + final JavaPlayFrameworkCodegen codegen = new JavaPlayFrameworkCodegen(); + codegen.processOpts(); + + Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); + Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertEquals(codegen.modelPackage(), "apimodels"); + Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.MODEL_PACKAGE), "apimodels"); + Assert.assertEquals(codegen.apiPackage(), "controllers"); + Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.API_PACKAGE), "controllers"); + Assert.assertEquals(codegen.getInvokerPackage(), "io.swagger.api"); + Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.INVOKER_PACKAGE), "io.swagger.api"); + Assert.assertEquals(codegen.getBasePackage(), "io.swagger"); + Assert.assertEquals(codegen.additionalProperties().get(JavaPlayFrameworkCodegen.BASE_PACKAGE), "io.swagger"); + Assert.assertEquals(codegen.getConfigPackage(), "io.swagger.configuration"); + Assert.assertEquals(codegen.additionalProperties().get(JavaPlayFrameworkCodegen.CONFIG_PACKAGE), "io.swagger.configuration"); + } + + @Test + public void testSettersForConfigValues() throws Exception { + final JavaPlayFrameworkCodegen codegen = new JavaPlayFrameworkCodegen(); + codegen.setHideGenerationTimestamp(true); + codegen.setModelPackage("xx.yyyyyyyy.model"); + codegen.setApiPackage("xx.yyyyyyyy.api"); + codegen.setInvokerPackage("xx.yyyyyyyy.invoker"); + codegen.setBasePackage("xx.yyyyyyyy.base"); + codegen.setConfigPackage("xx.yyyyyyyy.config"); + codegen.processOpts(); + + Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); + Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertEquals(codegen.modelPackage(), "xx.yyyyyyyy.model"); + Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.MODEL_PACKAGE), "xx.yyyyyyyy.model"); + Assert.assertEquals(codegen.apiPackage(), "xx.yyyyyyyy.api"); + Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.API_PACKAGE), "xx.yyyyyyyy.api"); + Assert.assertEquals(codegen.getInvokerPackage(), "xx.yyyyyyyy.invoker"); + Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.INVOKER_PACKAGE), "xx.yyyyyyyy.invoker"); + Assert.assertEquals(codegen.getBasePackage(), "xx.yyyyyyyy.base"); + Assert.assertEquals(codegen.additionalProperties().get(JavaPlayFrameworkCodegen.BASE_PACKAGE), "xx.yyyyyyyy.base"); + Assert.assertEquals(codegen.getConfigPackage(), "xx.yyyyyyyy.config"); + Assert.assertEquals(codegen.additionalProperties().get(JavaPlayFrameworkCodegen.CONFIG_PACKAGE), "xx.yyyyyyyy.config"); + } + + @Test + public void testAdditionalPropertiesPutForConfigValues() throws Exception { + final JavaPlayFrameworkCodegen codegen = new JavaPlayFrameworkCodegen(); + codegen.additionalProperties().put(CodegenConstants.HIDE_GENERATION_TIMESTAMP, "true"); + codegen.additionalProperties().put(CodegenConstants.MODEL_PACKAGE, "xyz.yyyyy.mmmmm.model"); + codegen.additionalProperties().put(CodegenConstants.API_PACKAGE, "xyz.yyyyy.aaaaa.api"); + codegen.additionalProperties().put(CodegenConstants.INVOKER_PACKAGE,"xyz.yyyyy.iiii.invoker"); + codegen.additionalProperties().put(JavaPlayFrameworkCodegen.BASE_PACKAGE,"xyz.yyyyy.bbbb.base"); + codegen.additionalProperties().put(JavaPlayFrameworkCodegen.CONFIG_PACKAGE,"xyz.yyyyy.cccc.config"); + codegen.additionalProperties().put("serverPort","8088"); + codegen.processOpts(); + + Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); + Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertEquals(codegen.modelPackage(), "xyz.yyyyy.mmmmm.model"); + Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.MODEL_PACKAGE), "xyz.yyyyy.mmmmm.model"); + Assert.assertEquals(codegen.apiPackage(), "xyz.yyyyy.aaaaa.api"); + Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.API_PACKAGE), "xyz.yyyyy.aaaaa.api"); + Assert.assertEquals(codegen.getInvokerPackage(), "xyz.yyyyy.iiii.invoker"); + Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.INVOKER_PACKAGE), "xyz.yyyyy.iiii.invoker"); + Assert.assertEquals(codegen.getBasePackage(), "xyz.yyyyy.bbbb.base"); + Assert.assertEquals(codegen.additionalProperties().get(JavaPlayFrameworkCodegen.BASE_PACKAGE), "xyz.yyyyy.bbbb.base"); + Assert.assertEquals(codegen.getConfigPackage(), "xyz.yyyyy.cccc.config"); + Assert.assertEquals(codegen.additionalProperties().get(JavaPlayFrameworkCodegen.CONFIG_PACKAGE), "xyz.yyyyy.cccc.config"); + } +} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java index 6f3f9de949e..ae3a313b5c5 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java @@ -28,10 +28,12 @@ public class SpringCodegenTest { Assert.assertEquals(codegen.apiPackage(), "org.openapitools.api"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.API_PACKAGE), "org.openapitools.api"); Assert.assertEquals(codegen.getInvokerPackage(), "org.openapitools.api"); - Assert.assertEquals(codegen.additionalProperties().get(SpringCodegen.BASE_PACKAGE), "org.openapitools"); - Assert.assertEquals(codegen.additionalProperties().get(SpringCodegen.CONFIG_PACKAGE), "org.openapitools.configuration"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.INVOKER_PACKAGE), "org.openapitools.api"); - Assert.assertEquals(codegen.additionalProperties().get("serverPort"), "8082"); + Assert.assertEquals(codegen.getBasePackage(), "org.openapitools"); + Assert.assertEquals(codegen.additionalProperties().get(SpringCodegen.BASE_PACKAGE), "org.openapitools"); + Assert.assertEquals(codegen.getConfigPackage(), "org.openapitools.configuration"); + Assert.assertEquals(codegen.additionalProperties().get(SpringCodegen.CONFIG_PACKAGE), "org.openapitools.configuration"); + Assert.assertEquals(codegen.additionalProperties().get(SpringCodegen.SERVER_PORT), "8082"); } @Test @@ -53,6 +55,10 @@ public class SpringCodegenTest { Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.API_PACKAGE), "xx.yyyyyyyy.api"); Assert.assertEquals(codegen.getInvokerPackage(), "xx.yyyyyyyy.invoker"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.INVOKER_PACKAGE), "xx.yyyyyyyy.invoker"); + Assert.assertEquals(codegen.getBasePackage(), "xx.yyyyyyyy.base"); + Assert.assertEquals(codegen.additionalProperties().get(SpringCodegen.BASE_PACKAGE), "xx.yyyyyyyy.base"); + Assert.assertEquals(codegen.getConfigPackage(), "xx.yyyyyyyy.config"); + Assert.assertEquals(codegen.additionalProperties().get(SpringCodegen.CONFIG_PACKAGE), "xx.yyyyyyyy.config"); } @Test @@ -64,7 +70,7 @@ public class SpringCodegenTest { codegen.additionalProperties().put(CodegenConstants.INVOKER_PACKAGE,"xyz.yyyyy.iiii.invoker"); codegen.additionalProperties().put(SpringCodegen.BASE_PACKAGE,"xyz.yyyyy.bbbb.base"); codegen.additionalProperties().put(SpringCodegen.CONFIG_PACKAGE,"xyz.yyyyy.cccc.config"); - codegen.additionalProperties().put("serverPort","8088"); + codegen.additionalProperties().put(SpringCodegen.SERVER_PORT,"8088"); codegen.processOpts(); OpenAPI openAPI = new OpenAPI(); @@ -81,6 +87,9 @@ public class SpringCodegenTest { Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.API_PACKAGE), "xyz.yyyyy.aaaaa.api"); Assert.assertEquals(codegen.getInvokerPackage(), "xyz.yyyyy.iiii.invoker"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.INVOKER_PACKAGE), "xyz.yyyyy.iiii.invoker"); + Assert.assertEquals(codegen.getBasePackage(), "xyz.yyyyy.bbbb.base"); + Assert.assertEquals(codegen.additionalProperties().get(SpringCodegen.BASE_PACKAGE), "xyz.yyyyy.bbbb.base"); + Assert.assertEquals(codegen.getConfigPackage(), "xyz.yyyyy.cccc.config"); Assert.assertEquals(codegen.additionalProperties().get(SpringCodegen.CONFIG_PACKAGE), "xyz.yyyyy.cccc.config"); Assert.assertEquals(codegen.additionalProperties().get(SpringCodegen.TITLE), "someTest"); Assert.assertEquals(codegen.additionalProperties().get(SpringCodegen.SERVER_PORT), "8088");