From c33547e0f11f60f1850bbf299fcec3f1fbf2c6da Mon Sep 17 00:00:00 2001 From: Vincent Devos <46601673+karismann@users.noreply.github.com> Date: Sun, 5 May 2019 11:41:06 +0200 Subject: [PATCH] [JAVA][KOTLIN] fix var Naming for all uppercase with Numbers (#2794) --- .../languages/AbstractJavaCodegen.java | 2 +- .../languages/AbstractKotlinCodegen.java | 2 +- .../codegen/java/AbstractJavaCodegenTest.java | 24 +++++++++------- .../codegen/java/JavaModelTest.java | 28 +++++++++++++++++++ .../kotlin/AbstractKotlinCodegenTest.java | 4 +++ 5 files changed, 48 insertions(+), 12 deletions(-) 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 923f1653ab5..ac7b21348c9 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 @@ -607,7 +607,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code } // if it's all uppper case, do nothing - if (name.matches("^[A-Z_]*$")) { + if (name.matches("^[A-Z0-9_]*$")) { return name; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java index 98187b8a7d7..8c442b14969 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java @@ -717,7 +717,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co } // if it's all uppper case, do nothing - if (name.matches("^[A-Z_]*$")) { + if (name.matches("^[A-Z0-9_]*$")) { return name; } 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 8c2c8e047fc..5f94ca377ab 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 @@ -68,20 +68,24 @@ public class AbstractJavaCodegenTest { @Test public void convertVarName() throws Exception { - Assert.assertEquals(fakeJavaCodegen.toVarName("name"), "name"); - Assert.assertEquals(fakeJavaCodegen.toVarName("$name"), "$name"); - Assert.assertEquals(fakeJavaCodegen.toVarName("nam$$e"), "nam$$e"); - Assert.assertEquals(fakeJavaCodegen.toVarName("user-name"), "userName"); - Assert.assertEquals(fakeJavaCodegen.toVarName("user_name"), "userName"); - Assert.assertEquals(fakeJavaCodegen.toVarName("user|name"), "userName"); + Assert.assertEquals(fakeJavaCodegen.toVarName("name"), "name"); + Assert.assertEquals(fakeJavaCodegen.toVarName("$name"), "$name"); + Assert.assertEquals(fakeJavaCodegen.toVarName("nam$$e"), "nam$$e"); + Assert.assertEquals(fakeJavaCodegen.toVarName("user-name"), "userName"); + Assert.assertEquals(fakeJavaCodegen.toVarName("user_name"), "userName"); + Assert.assertEquals(fakeJavaCodegen.toVarName("user|name"), "userName"); + Assert.assertEquals(fakeJavaCodegen.toVarName("uSername"), "uSername"); + Assert.assertEquals(fakeJavaCodegen.toVarName("USERname"), "usERname"); + Assert.assertEquals(fakeJavaCodegen.toVarName("USERNAME"), "USERNAME"); + Assert.assertEquals(fakeJavaCodegen.toVarName("USER123NAME"), "USER123NAME"); } @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("name"), "Name"); + Assert.assertEquals(fakeJavaCodegen.toModelName("$name"), "Name"); + Assert.assertEquals(fakeJavaCodegen.toModelName("nam#e"), "Name"); + Assert.assertEquals(fakeJavaCodegen.toModelName("$another-fake?"), "AnotherFake"); } @Test diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelTest.java index 1744a5fd2ea..339fc73c11b 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelTest.java @@ -448,6 +448,34 @@ public class JavaModelTest { Assert.assertFalse(property.isContainer); } + @Test(description = "convert a model with upper-case property names and Numbers") + public void upperCaseNamesNumbersTest() { + final Schema schema = new Schema() + .description("a model with upper-case property names and numbers") + .addProperties("NAME1", new StringSchema()) + .addRequiredItem("NAME1"); + final DefaultCodegen codegen = new JavaClientCodegen(); + OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("sample", schema); + codegen.setOpenAPI(openAPI); + final CodegenModel cm = codegen.fromModel("sample", schema); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "Sample"); + Assert.assertEquals(cm.vars.size(), 1); + + final CodegenProperty property = cm.vars.get(0); + Assert.assertEquals(property.baseName, "NAME1"); + Assert.assertEquals(property.getter, "getNAME1"); + Assert.assertEquals(property.setter, "setNAME1"); + Assert.assertEquals(property.dataType, "String"); + Assert.assertEquals(property.name, "NAME1"); + Assert.assertEquals(property.defaultValue, null); + Assert.assertEquals(property.baseType, "String"); + Assert.assertFalse(property.hasMore); + Assert.assertTrue(property.required); + Assert.assertFalse(property.isContainer); + } + @Test(description = "convert a model with a 2nd char upper-case property names") public void secondCharUpperCaseNamesTest() { final Schema schema = new Schema() diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java index 41b99d922bb..20513e53466 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java @@ -117,6 +117,10 @@ public class AbstractKotlinCodegenTest { assertEquals(codegen.toVarName("Pony?"), "ponyQuestionMark"); assertEquals(codegen.toVarName("nam#e"), "namHashE"); assertEquals(codegen.toVarName("Pony>=>="), "ponyGreaterThanEqualGreaterThanEqual"); + assertEquals(codegen.toVarName("uSername"), "uSername"); + assertEquals(codegen.toVarName("USERname"), "usERname"); + assertEquals(codegen.toVarName("USERNAME"), "USERNAME"); + assertEquals(codegen.toVarName("USER123NAME"), "USER123NAME"); } } \ No newline at end of file