From 1b14c24ff44bfe1c60c03f2614efb5b4bc273e43 Mon Sep 17 00:00:00 2001 From: "akihito.nakano" Date: Thu, 3 Oct 2019 21:13:52 +0900 Subject: [PATCH 1/8] Add parameter --- .../java/org/openapitools/codegen/CodegenParameter.java | 4 ++-- .../main/java/org/openapitools/codegen/DefaultCodegen.java | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java index 5963b8791b03..552b5b3d879d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java @@ -26,9 +26,9 @@ public class CodegenParameter { public boolean isFormParam, isQueryParam, isPathParam, isHeaderParam, isCookieParam, isBodyParam, hasMore, isContainer, - secondaryParam, isCollectionFormatMulti, isPrimitiveType, isModel; + secondaryParam, isCollectionFormatMulti, isPrimitiveType, isModel, shouldExplode; public String baseName, paramName, dataType, datatypeWithEnum, dataFormat, - collectionFormat, description, unescapedDescription, baseType, defaultValue, enumName; + collectionFormat, description, unescapedDescription, baseType, defaultValue, enumName, style; public String example; // example value (x-example) public String jsonSchema; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 9a410941b016..76b7a4f982bb 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -17,7 +17,6 @@ package org.openapitools.codegen; -import com.fasterxml.jackson.core.JsonProcessingException; import com.google.common.base.CaseFormat; import com.google.common.collect.ImmutableMap; import com.samskivert.mustache.Mustache; @@ -3093,6 +3092,12 @@ public CodegenParameter fromParameter(Parameter parameter, Set imports) // set default value codegenParameter.defaultValue = toDefaultValue(parameterSchema); + if (parameter.getStyle() != null) { + codegenParameter.style = parameter.getStyle().toString(); + } + + codegenParameter.shouldExplode = parameter.getExplode(); + // TDOO revise collectionFormat String collectionFormat = null; if (ModelUtils.isArraySchema(parameterSchema)) { // for array parameter From f02c07f94b7558312c7090103b462ce1a260c1e8 Mon Sep 17 00:00:00 2001 From: "akihito.nakano" Date: Sun, 13 Oct 2019 10:08:39 +0900 Subject: [PATCH 2/8] Set default value as Parameter.explode could be null --- .../src/main/java/org/openapitools/codegen/DefaultCodegen.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index d58dc2eb2136..8104e7d1161e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -3097,7 +3097,8 @@ public CodegenParameter fromParameter(Parameter parameter, Set imports) codegenParameter.style = parameter.getStyle().toString(); } - codegenParameter.shouldExplode = parameter.getExplode(); + // the default value is false + codegenParameter.shouldExplode = parameter.getExplode() == null ? false : parameter.getExplode(); // TDOO revise collectionFormat String collectionFormat = null; From aa18ebe7c13d61958a771a20185d9f98394d8c2b Mon Sep 17 00:00:00 2001 From: "akihito.nakano" Date: Sun, 13 Oct 2019 10:11:00 +0900 Subject: [PATCH 3/8] Fix typo --- .../src/main/java/org/openapitools/codegen/DefaultCodegen.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 8104e7d1161e..5cabde28b2a1 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -3100,7 +3100,7 @@ public CodegenParameter fromParameter(Parameter parameter, Set imports) // the default value is false codegenParameter.shouldExplode = parameter.getExplode() == null ? false : parameter.getExplode(); - // TDOO revise collectionFormat + // TODO revise collectionFormat String collectionFormat = null; if (ModelUtils.isArraySchema(parameterSchema)) { // for array parameter final ArraySchema arraySchema = (ArraySchema) parameterSchema; From 4ae6b6eb4ecdfc6e09b1f4285f1c69496cafb568 Mon Sep 17 00:00:00 2001 From: "akihito.nakano" Date: Sun, 13 Oct 2019 10:12:37 +0900 Subject: [PATCH 4/8] Add a link to the spec --- .../src/main/java/org/openapitools/codegen/DefaultCodegen.java | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 5cabde28b2a1..334724242b65 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -3098,6 +3098,7 @@ public CodegenParameter fromParameter(Parameter parameter, Set imports) } // the default value is false + // https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#user-content-parameterexplode codegenParameter.shouldExplode = parameter.getExplode() == null ? false : parameter.getExplode(); // TODO revise collectionFormat From 9a1a720e0afc48d3ff84b492eb7bd232ee4e76ab Mon Sep 17 00:00:00 2001 From: "akihito.nakano" Date: Sun, 13 Oct 2019 11:04:24 +0900 Subject: [PATCH 5/8] Add tests --- .../codegen/DefaultCodegenTest.java | 37 +++++++++++++++++-- .../src/test/resources/3_0/fromParameter.yaml | 35 ++++++++++++++++++ 2 files changed, 68 insertions(+), 4 deletions(-) create mode 100644 modules/openapi-generator/src/test/resources/3_0/fromParameter.yaml diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java index 8c00cbc28115..aab8023e635c 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java @@ -43,13 +43,11 @@ import org.testng.Assert; import org.testng.annotations.Test; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertTrue; - import java.util.*; import java.util.stream.Collectors; +import static org.testng.Assert.*; + public class DefaultCodegenTest { @@ -984,4 +982,35 @@ public void convertApiNameWithSuffix() { assertEquals(codegen.toApiName(""), "DefaultApi"); } + public static class FromParameter { + private CodegenParameter codegenParameter(String path) { + final OpenAPI openAPI = TestUtils.parseSpec("src/test/resources/3_0/fromParameter.yaml"); + new InlineModelResolver().flatten(openAPI); + final DefaultCodegen codegen = new DefaultCodegen(); + codegen.setOpenAPI(openAPI); + + return codegen + .fromParameter( + openAPI + .getPaths() + .get(path) + .getGet() + .getParameters() + .get(0), + new HashSet<>() + ); + } + + @Test + public void setStyle() { + CodegenParameter parameter = codegenParameter("/set_style"); + assertEquals("form", parameter.style); + } + + @Test + public void setShouldExplode() { + CodegenParameter parameter = codegenParameter("/set_should_explode"); + assertTrue(parameter.shouldExplode); + } + } } diff --git a/modules/openapi-generator/src/test/resources/3_0/fromParameter.yaml b/modules/openapi-generator/src/test/resources/3_0/fromParameter.yaml new file mode 100644 index 000000000000..7977bee3bec3 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/fromParameter.yaml @@ -0,0 +1,35 @@ +openapi: 3.0.0 +servers: + - url: 'localhost:8080' +info: + version: 1.0.0 + title: OpenAPI Petstore + license: + name: Apache-2.0 + url: 'http://www.apache.org/licenses/LICENSE-2.0.html' +paths: + /set_style: + get: + operationId: setStyle + parameters: + - in: query + name: setStyleQuery + style: form + schema: + type: object + properties: + setStyleQueryParam: + type: string + /set_should_explode: + get: + operationId: setShouldExplode + parameters: + - in: query + name: setShouldExplodeQuery + style: form + explode: true + schema: + type: object + properties: + setShouldExplodeQueryParam: + type: string From df8d9d1188a117ec71af88790036c07d26179de6 Mon Sep 17 00:00:00 2001 From: "akihito.nakano" Date: Sun, 13 Oct 2019 11:05:52 +0900 Subject: [PATCH 6/8] Delete unused import --- .../test/java/org/openapitools/codegen/DefaultCodegenTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java index aab8023e635c..319664d2267a 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java @@ -27,7 +27,6 @@ import io.swagger.v3.oas.models.PathItem; import io.swagger.v3.oas.models.headers.Header; import io.swagger.v3.oas.models.media.*; -import io.swagger.v3.oas.models.parameters.Parameter; import io.swagger.v3.oas.models.parameters.QueryParameter; import io.swagger.v3.oas.models.parameters.RequestBody; import io.swagger.v3.oas.models.responses.ApiResponse; From fad79f1a53c17f5bed77e5d12eac4c719146d7bf Mon Sep 17 00:00:00 2001 From: "akihito.nakano" Date: Thu, 17 Oct 2019 20:19:57 +0900 Subject: [PATCH 7/8] Rename: shouldExplode -> isExplode --- .../main/java/org/openapitools/codegen/CodegenParameter.java | 2 +- .../src/main/java/org/openapitools/codegen/DefaultCodegen.java | 2 +- .../test/java/org/openapitools/codegen/DefaultCodegenTest.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java index 552b5b3d879d..9c5b7bf7a579 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java @@ -26,7 +26,7 @@ public class CodegenParameter { public boolean isFormParam, isQueryParam, isPathParam, isHeaderParam, isCookieParam, isBodyParam, hasMore, isContainer, - secondaryParam, isCollectionFormatMulti, isPrimitiveType, isModel, shouldExplode; + secondaryParam, isCollectionFormatMulti, isPrimitiveType, isModel, isExplode; public String baseName, paramName, dataType, datatypeWithEnum, dataFormat, collectionFormat, description, unescapedDescription, baseType, defaultValue, enumName, style; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 334724242b65..d845e9a1aab7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -3099,7 +3099,7 @@ public CodegenParameter fromParameter(Parameter parameter, Set imports) // the default value is false // https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#user-content-parameterexplode - codegenParameter.shouldExplode = parameter.getExplode() == null ? false : parameter.getExplode(); + codegenParameter.isExplode = parameter.getExplode() == null ? false : parameter.getExplode(); // TODO revise collectionFormat String collectionFormat = null; diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java index 319664d2267a..82a7b4e78348 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java @@ -1009,7 +1009,7 @@ public void setStyle() { @Test public void setShouldExplode() { CodegenParameter parameter = codegenParameter("/set_should_explode"); - assertTrue(parameter.shouldExplode); + assertTrue(parameter.isExplode); } } } From a30b81534669fd2cb8406a95a0e2964b6d66e6aa Mon Sep 17 00:00:00 2001 From: "akihito.nakano" Date: Thu, 17 Oct 2019 20:25:21 +0900 Subject: [PATCH 8/8] Include the new property --- .../java/org/openapitools/codegen/CodegenParameter.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java index 9c5b7bf7a579..b42f6119996a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java @@ -173,6 +173,7 @@ public CodegenParameter copy() { output.isFreeFormObject = this.isFreeFormObject; output.isListContainer = this.isListContainer; output.isMapContainer = this.isMapContainer; + output.isExplode = this.isExplode; return output; } @@ -247,7 +248,8 @@ public boolean equals(Object o) { Objects.equals(maxItems, that.maxItems) && Objects.equals(minItems, that.minItems) && Objects.equals(uniqueItems, that.uniqueItems) && - Objects.equals(multipleOf, that.multipleOf); + Objects.equals(multipleOf, that.multipleOf) && + Objects.equals(isExplode, that.isExplode); } @Override @@ -316,7 +318,8 @@ public int hashCode() { maxItems, minItems, uniqueItems, - multipleOf); + multipleOf, + isExplode); } @java.lang.Override @@ -386,6 +389,7 @@ public java.lang.String toString() { ", minItems=" + minItems + ", uniqueItems=" + uniqueItems + ", multipleOf=" + multipleOf + + ", isExplode=" + isExplode + '}'; } }