From 0a97b9c5681c28808dd9af730b7611a6930e2a15 Mon Sep 17 00:00:00 2001 From: jaz-ah Date: Wed, 30 Nov 2016 19:49:56 -0800 Subject: [PATCH] make sure to camelize properly before checking for reserved words (#4302) --- .../codegen/languages/Swift3Codegen.java | 18 +++++++++++++----- .../codegen/swift3/Swift3CodegenTest.java | 10 ++++++++++ 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/Swift3Codegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/Swift3Codegen.java index dfa7bd60a4b..95dd23e0e15 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/Swift3Codegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/Swift3Codegen.java @@ -518,25 +518,33 @@ public class Swift3Codegen extends DefaultCodegen implements CodegenConfig { return camelize(WordUtils.capitalizeFully(getSymbolName(name).toUpperCase()), true); } + // Camelize only when we have a structure defined below + Boolean camelized = false; + if (name.matches("[A-Z][a-z0-9]+[a-zA-Z0-9]*")) { + name = camelize(name, true); + camelized = true; + } + // Reserved Name if (isReservedWord(name)) { return escapeReservedWord(name); } + // Check for numerical conversions if ("Int".equals(datatype) || "Int32".equals(datatype) || "Int64".equals(datatype) || "Float".equals(datatype) || "Double".equals(datatype)) { String varName = "number" + camelize(name); varName = varName.replaceAll("-", "minus"); varName = varName.replaceAll("\\+", "plus"); varName = varName.replaceAll("\\.", "dot"); - return varName; } - // Prevent from breaking properly cased identifier - if (name.matches("[A-Z][a-z0-9]+[a-zA-Z0-9]*")) { - return camelize(name, true); - } + // If we have already camelized the word, don't progress + // any further + if (camelized) { + return name; + } char[] separators = {'-', '_', ' ', ':', '(', ')'}; return camelize(WordUtils.capitalizeFully(StringUtils.lowerCase(name), separators).replaceAll("[-_ :\\(\\)]", ""), true); diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/swift3/Swift3CodegenTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/swift3/Swift3CodegenTest.java index b0608b79b59..b933b064bb5 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/swift3/Swift3CodegenTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/swift3/Swift3CodegenTest.java @@ -13,6 +13,16 @@ public class Swift3CodegenTest { Swift3Codegen swiftCodegen = new Swift3Codegen(); + @Test + public void testReservedWord() throws Exception { + Assert.assertEquals(swiftCodegen.toEnumVarName("Public", null), "_public"); + } + + @Test + public void shouldNotBreakNonReservedWord() throws Exception { + Assert.assertEquals(swiftCodegen.toEnumVarName("Error", null), "error"); + } + @Test public void shouldNotBreakCorrectName() throws Exception { Assert.assertEquals(swiftCodegen.toEnumVarName("EntryName", null), "entryName");