From 7aef0b3c3c087accc52baef61bebdb16e4ae6046 Mon Sep 17 00:00:00 2001 From: "shane.farrell" <shane.farrell@target.com> Date: Thu, 4 Apr 2019 15:55:42 -0500 Subject: [PATCH 1/6] Updated StaticHtmlGenerator to it overrides the toVarName(String name) method in DefaultCodegen and prevents underscores from being converted to the word Underscore --- .../codegen/languages/StaticHtmlGenerator.java | 15 +++++++++++++++ .../codegen/html/StaticHtmlGeneratorTest.java | 16 ++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtmlGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtmlGenerator.java index 573f29abc8f8..7386270d3f3c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtmlGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtmlGenerator.java @@ -29,6 +29,8 @@ import java.util.*; +import static org.openapitools.codegen.utils.StringUtils.escape; + public class StaticHtmlGenerator extends DefaultCodegen implements CodegenConfig { protected String invokerPackage = "org.openapitools.client"; protected String groupId = "org.openapitools"; @@ -176,6 +178,19 @@ public String toModelName(final String name) { return name; } + // DefaultCodegen converts snake_case property names to snakeUnderscorecase + // but for static HTML, we want to preserve snake_case names + @Override + public String toVarName(String name) { + if (reservedWords.contains(name)) { + return escapeReservedWord(name); + } else if (((CharSequence) name).chars().anyMatch(character -> specialCharReplacements.keySet().contains("" + ((char) character)))) { + return escape(name, specialCharReplacements, Arrays.asList("_"), null); + } else { + return name; + } + } + public void preprocessOpenAPI(OpenAPI openAPI) { Info info = openAPI.getInfo(); info.setDescription(toHtml(info.getDescription())); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/html/StaticHtmlGeneratorTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/html/StaticHtmlGeneratorTest.java index ca5f8da5fd9e..8a3ee3473d05 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/html/StaticHtmlGeneratorTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/html/StaticHtmlGeneratorTest.java @@ -23,6 +23,8 @@ import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.StringSchema; import org.openapitools.codegen.CodegenModel; +import org.openapitools.codegen.CodegenProperty; +import org.openapitools.codegen.DefaultCodegen; import org.openapitools.codegen.TestUtils; import org.openapitools.codegen.languages.StaticHtmlGenerator; import org.testng.Assert; @@ -54,4 +56,18 @@ public void testSpecWithoutSchema() throws Exception { Assert.assertEquals(openAPI.getInfo().getTitle(), "ping test"); } + @Test(description = "ensure that snake_case propery names wont be converted to snakeUnderscorecase") + public void testFromPropertyWithUnderscores() { + final Schema schema = new Schema() + .description("a sample model with property containing an underscore") + .addProperties("favorite_food", new StringSchema()); + final OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("UnderscoreTest", schema); + final DefaultCodegen codegen = new StaticHtmlGenerator(); + codegen.setOpenAPI(openAPI); + + CodegenProperty property = codegen.fromProperty("favorite_food", (Schema) openAPI.getComponents().getSchemas().get("UnderscoreTest").getProperties().get("favorite_food")); + + Assert.assertEquals(property.baseName, "favorite_food"); + Assert.assertEquals(property.name, "favorite_food"); + } } From 4b5feb039ce1098162a705b75edcd481ed3a04eb Mon Sep 17 00:00:00 2001 From: "shane.farrell" <shane.farrell@target.com> Date: Fri, 5 Apr 2019 10:47:23 -0500 Subject: [PATCH 2/6] adding model propery with a snake_case name --- modules/openapi-generator/src/test/resources/3_0/petstore.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/openapi-generator/src/test/resources/3_0/petstore.yaml b/modules/openapi-generator/src/test/resources/3_0/petstore.yaml index a89eb6532659..62c1816e39af 100644 --- a/modules/openapi-generator/src/test/resources/3_0/petstore.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/petstore.yaml @@ -701,6 +701,8 @@ components: wrapped: true items: type: string + favorite_food: + type: string tags: type: array xml: From 5ee3be6e6d5565f93ddd6b1a7b9ba2d502bb7eb7 Mon Sep 17 00:00:00 2001 From: "shane.farrell" <shane.farrell@target.com> Date: Tue, 9 Apr 2019 12:51:29 -0500 Subject: [PATCH 3/6] Reverting change to base petstore.yaml file --- modules/openapi-generator/src/test/resources/3_0/petstore.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/openapi-generator/src/test/resources/3_0/petstore.yaml b/modules/openapi-generator/src/test/resources/3_0/petstore.yaml index 62c1816e39af..a89eb6532659 100644 --- a/modules/openapi-generator/src/test/resources/3_0/petstore.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/petstore.yaml @@ -701,8 +701,6 @@ components: wrapped: true items: type: string - favorite_food: - type: string tags: type: array xml: From f0f5e421b6b46db33e845e0d1bfae2c218dcdd0d Mon Sep 17 00:00:00 2001 From: "shane.farrell" <shane.farrell@target.com> Date: Tue, 9 Apr 2019 16:43:49 -0500 Subject: [PATCH 4/6] Trying to trigger another CI build --- modules/openapi-generator/src/test/resources/3_0/petstore.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/test/resources/3_0/petstore.yaml b/modules/openapi-generator/src/test/resources/3_0/petstore.yaml index a89eb6532659..989cbfa0b3a8 100644 --- a/modules/openapi-generator/src/test/resources/3_0/petstore.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/petstore.yaml @@ -701,7 +701,7 @@ components: wrapped: true items: type: string - tags: + tags: type: array xml: name: tag From 953d9462046d92b455eeb5ecbef215122aef91d5 Mon Sep 17 00:00:00 2001 From: Shane Farrell <shane.farrell@920Solutions.com> Date: Tue, 9 Apr 2019 16:43:49 -0500 Subject: [PATCH 5/6] Trying to trigger another CI build --- modules/openapi-generator/src/test/resources/3_0/petstore.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/test/resources/3_0/petstore.yaml b/modules/openapi-generator/src/test/resources/3_0/petstore.yaml index a89eb6532659..989cbfa0b3a8 100644 --- a/modules/openapi-generator/src/test/resources/3_0/petstore.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/petstore.yaml @@ -701,7 +701,7 @@ components: wrapped: true items: type: string - tags: + tags: type: array xml: name: tag From a5f463eb3f3e2a760433fd2dd86a0053a4cfcec9 Mon Sep 17 00:00:00 2001 From: "shane.farrell" <shane.farrell@target.com> Date: Fri, 12 Apr 2019 07:30:33 -0500 Subject: [PATCH 6/6] Removing trailing space --- modules/openapi-generator/src/test/resources/3_0/petstore.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/test/resources/3_0/petstore.yaml b/modules/openapi-generator/src/test/resources/3_0/petstore.yaml index 989cbfa0b3a8..a89eb6532659 100644 --- a/modules/openapi-generator/src/test/resources/3_0/petstore.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/petstore.yaml @@ -701,7 +701,7 @@ components: wrapped: true items: type: string - tags: + tags: type: array xml: name: tag