From 1280221a42ce29343977c34f0d032b00199ffe64 Mon Sep 17 00:00:00 2001 From: Raphael Tiersch Date: Wed, 24 Jul 2019 12:06:38 +0200 Subject: [PATCH 1/3] Fix for OpenAPITools/openapi-generator#3293. Number fields in java generators are escaped now. --- .../openapitools/codegen/languages/AbstractJavaCodegen.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java index 066f424bfa16..cdad83de4d5d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java @@ -585,6 +585,11 @@ public String toVarName(String name) { name = "_u"; } + // numbers are not allowed at the beginning + if (name.matches("^\\d.*")) { + name = "_" + name; + } + // if it's all uppper case, do nothing if (name.matches("^[A-Z0-9_]*$")) { return name; From 884704634edef5b9c528c641fc08732cea2589e8 Mon Sep 17 00:00:00 2001 From: Raphael Tiersch Date: Wed, 24 Jul 2019 20:31:13 +0200 Subject: [PATCH 2/3] Added a few tests for number to varName to persist and ensure this behaviour for future breaking changes OpenAPITools/openapi-generator#3293. --- .../openapitools/codegen/java/AbstractJavaCodegenTest.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java index 3db02060a1b7..e43eb1b65cd9 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java @@ -89,6 +89,11 @@ public void convertVarName() throws Exception { Assert.assertEquals(fakeJavaCodegen.toVarName("USERname"), "usERname"); Assert.assertEquals(fakeJavaCodegen.toVarName("USERNAME"), "USERNAME"); Assert.assertEquals(fakeJavaCodegen.toVarName("USER123NAME"), "USER123NAME"); + Assert.assertEquals(fakeJavaCodegen.toVarName("1"), "_1"); + Assert.assertEquals(fakeJavaCodegen.toVarName("1a"), "_1a"); + Assert.assertEquals(fakeJavaCodegen.toVarName("1A"), "_1A"); + Assert.assertEquals(fakeJavaCodegen.toVarName("1AAAA"), "_1AAAA"); + Assert.assertEquals(fakeJavaCodegen.toVarName("1AAaa"), "_1aAaa"); } @Test From 01f52f12055cf54118fd3b6d378eb22e06aaa7ca Mon Sep 17 00:00:00 2001 From: Raphael Tiersch Date: Wed, 24 Jul 2019 20:42:30 +0200 Subject: [PATCH 3/3] I also added a few test for convertModelName to prevent similar breaking changes in the future. OpenAPITools/openapi-generator#3293. --- .../codegen/java/AbstractJavaCodegenTest.java | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java index e43eb1b65cd9..f2569fb6709a 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java @@ -94,15 +94,26 @@ public void convertVarName() throws Exception { Assert.assertEquals(fakeJavaCodegen.toVarName("1A"), "_1A"); Assert.assertEquals(fakeJavaCodegen.toVarName("1AAAA"), "_1AAAA"); Assert.assertEquals(fakeJavaCodegen.toVarName("1AAaa"), "_1aAaa"); - } + } - @Test - public void convertModelName() throws Exception { + @Test + public void convertModelName() throws Exception { Assert.assertEquals(fakeJavaCodegen.toModelName("name"), "Name"); Assert.assertEquals(fakeJavaCodegen.toModelName("$name"), "Name"); Assert.assertEquals(fakeJavaCodegen.toModelName("nam#e"), "Name"); Assert.assertEquals(fakeJavaCodegen.toModelName("$another-fake?"), "AnotherFake"); - } + Assert.assertEquals(fakeJavaCodegen.toModelName("1a"), "Model1a"); + Assert.assertEquals(fakeJavaCodegen.toModelName("1A"), "Model1A"); + Assert.assertEquals(fakeJavaCodegen.toModelName("AAAb"), "AAAb"); + Assert.assertEquals(fakeJavaCodegen.toModelName("aBB"), "ABB"); + Assert.assertEquals(fakeJavaCodegen.toModelName("AaBBa"), "AaBBa"); + Assert.assertEquals(fakeJavaCodegen.toModelName("A_B"), "AB"); + Assert.assertEquals(fakeJavaCodegen.toModelName("A-B"), "AB"); + Assert.assertEquals(fakeJavaCodegen.toModelName("Aa_Bb"), "AaBb"); + Assert.assertEquals(fakeJavaCodegen.toModelName("Aa-Bb"), "AaBb"); + Assert.assertEquals(fakeJavaCodegen.toModelName("Aa_bb"), "AaBb"); + Assert.assertEquals(fakeJavaCodegen.toModelName("Aa-bb"), "AaBb"); + } @Test public void testInitialConfigValues() throws Exception { @@ -168,7 +179,7 @@ public void testAdditionalPropertiesPutForConfigValues() throws Exception { } @Test - public void toEnumValue(){ + public void toEnumValue() { final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); Assert.assertEquals(codegen.toEnumValue("1", "Integer"), "1"); Assert.assertEquals(codegen.toEnumValue("42", "Double"), "42"); @@ -218,7 +229,7 @@ public void apiDocFileFolder() { codegen.setOutputDir("/User/open.api.tools"); Assert.assertEquals(codegen.apiDocFileFolder(), "/User/open.api.tools/docs/".replace('/', File.separatorChar)); } - + @Test(description = "tests if API version specification is used if no version is provided in additional properties") public void openApiversionTest() { final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); @@ -315,6 +326,7 @@ public String getHelp() { /** * Gets artifact version. * Only for testing purposes. + * * @return version */ public String getArtifactVersion() {