From c3efb91e313d97b09723e05a16d5c3e08f7a4d01 Mon Sep 17 00:00:00 2001 From: Thibault Duperron Date: Wed, 15 May 2019 15:12:00 +0200 Subject: [PATCH] Disable jdk8 when using responseWrapper (#2873) Fix #2872 --- .../codegen/languages/SpringCodegen.java | 53 ++++++++++--------- .../java/spring/SpringCodegenTest.java | 12 +++++ 2 files changed, 41 insertions(+), 24 deletions(-) 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 8d315b1c2c4..fdaa2bce4e5 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 @@ -21,6 +21,7 @@ import com.samskivert.mustache.Mustache; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.Operation; import io.swagger.v3.oas.models.PathItem; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; import org.openapitools.codegen.*; import org.openapitools.codegen.languages.features.BeanValidationFeatures; @@ -36,6 +37,7 @@ import java.util.*; import java.util.regex.Matcher; import java.util.stream.Collectors; +import static org.apache.commons.lang3.StringUtils.isNotEmpty; import static org.openapitools.codegen.utils.StringUtils.camelize; public class SpringCodegen extends AbstractJavaCodegen @@ -377,7 +379,7 @@ public class SpringCodegen extends AbstractJavaCodegen if (this.java8) { additionalProperties.put("javaVersion", "1.8"); if (!SPRING_CLOUD_LIBRARY.equals(library)) { - additionalProperties.put("jdk8", "true"); + additionalProperties.put("jdk8", true); } if (this.async) { additionalProperties.put(RESPONSE_WRAPPER, "CompletableFuture"); @@ -395,29 +397,32 @@ public class SpringCodegen extends AbstractJavaCodegen // Some well-known Spring or Spring-Cloud response wrappers - switch (this.responseWrapper) { - case "Future": - case "Callable": - case "CompletableFuture": - additionalProperties.put(RESPONSE_WRAPPER, "java.util.concurrent." + this.responseWrapper); - break; - case "ListenableFuture": - additionalProperties.put(RESPONSE_WRAPPER, "org.springframework.util.concurrent.ListenableFuture"); - break; - case "DeferredResult": - additionalProperties.put(RESPONSE_WRAPPER, "org.springframework.web.context.request.async.DeferredResult"); - break; - case "HystrixCommand": - additionalProperties.put(RESPONSE_WRAPPER, "com.netflix.hystrix.HystrixCommand"); - break; - case "RxObservable": - additionalProperties.put(RESPONSE_WRAPPER, "rx.Observable"); - break; - case "RxSingle": - additionalProperties.put(RESPONSE_WRAPPER, "rx.Single"); - break; - default: - break; + if (isNotEmpty(this.responseWrapper)) { + additionalProperties.put("jdk8", false); + switch (this.responseWrapper) { + case "Future": + case "Callable": + case "CompletableFuture": + additionalProperties.put(RESPONSE_WRAPPER, "java.util.concurrent." + this.responseWrapper); + break; + case "ListenableFuture": + additionalProperties.put(RESPONSE_WRAPPER, "org.springframework.util.concurrent.ListenableFuture"); + break; + case "DeferredResult": + additionalProperties.put(RESPONSE_WRAPPER, "org.springframework.web.context.request.async.DeferredResult"); + break; + case "HystrixCommand": + additionalProperties.put(RESPONSE_WRAPPER, "com.netflix.hystrix.HystrixCommand"); + break; + case "RxObservable": + additionalProperties.put(RESPONSE_WRAPPER, "rx.Observable"); + break; + case "RxSingle": + additionalProperties.put(RESPONSE_WRAPPER, "rx.Single"); + break; + default: + break; + } } // add lambda for mustache templates 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 43bf0e830b1..8059873a453 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 @@ -25,6 +25,8 @@ import org.openapitools.codegen.languages.SpringCodegen; import org.testng.Assert; import org.testng.annotations.Test; +import static org.openapitools.codegen.languages.SpringCodegen.RESPONSE_WRAPPER; + public class SpringCodegenTest { @Test @@ -110,4 +112,14 @@ public class SpringCodegenTest { Assert.assertEquals(codegen.additionalProperties().get(SpringCodegen.TITLE), "someTest"); Assert.assertEquals(codegen.additionalProperties().get(SpringCodegen.SERVER_PORT), "8088"); } + + @Test + public void interfaceDefaultImplDisableWithReponseWrapper() { + final SpringCodegen codegen = new SpringCodegen(); + codegen.additionalProperties().put(SpringCodegen.JAVA_8, true); + codegen.additionalProperties().put(RESPONSE_WRAPPER, "aWrapper"); + codegen.processOpts(); + + Assert.assertEquals(codegen.additionalProperties().get("jdk8"), false); + } }