diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractJavaCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractJavaCodegen.java index 9bd2484b474..4e1ddab6d0a 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractJavaCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractJavaCodegen.java @@ -363,6 +363,10 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code return name; } + if(startsWithTwoUppercaseLetters(name)){ + name = name.substring(0, 2).toLowerCase() + name.substring(2); + } + // camelize (lower first character) the variable name // pet_id => petId name = camelize(name, true); @@ -375,6 +379,14 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code return name; } + private boolean startsWithTwoUppercaseLetters(String name) { + boolean startsWithTwoUppercaseLetters = false; + if(name.length() > 1) { + startsWithTwoUppercaseLetters = name.substring(0, 2).equals(name.substring(0, 2).toUpperCase()); + } + return startsWithTwoUppercaseLetters; + } + @Override public String toParamName(String name) { // to avoid conflicts with 'callback' parameter for async call @@ -935,8 +947,4 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code return sb.toString(); } - public String toRegularExpression(String pattern) { - return escapeText(pattern); - } - } diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/JavaModelTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/JavaModelTest.java index 12784d6e92c..2805d4d63c2 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/JavaModelTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/JavaModelTest.java @@ -360,6 +360,32 @@ public class JavaModelTest { Assert.assertTrue(property.isNotContainer); } + @Test(description = "convert a model starting with two upper-case letter property names") + public void firstTwoUpperCaseLetterNamesTest() { + final Model model = new ModelImpl() + .description("a model with a property name starting with two upper-case letters") + .property("ATTName", new StringProperty()) + .required("ATTName"); + final DefaultCodegen codegen = new JavaClientCodegen(); + final CodegenModel cm = codegen.fromModel("sample", model); + + 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, "ATTName"); + Assert.assertEquals(property.getter, "getAtTName"); + Assert.assertEquals(property.setter, "setAtTName"); + Assert.assertEquals(property.datatype, "String"); + Assert.assertEquals(property.name, "atTName"); + Assert.assertEquals(property.defaultValue, "null"); + Assert.assertEquals(property.baseType, "String"); + Assert.assertNull(property.hasMore); + Assert.assertTrue(property.required); + Assert.assertTrue(property.isNotContainer); + } + @Test(description = "convert hyphens per issue 503") public void hyphensTest() { final Model model = new ModelImpl()