From 99f0ab496b52b80352c0161cd899bbd3c2d76ded Mon Sep 17 00:00:00 2001 From: Vincent Giersch Date: Mon, 10 Apr 2017 17:19:06 +0200 Subject: [PATCH] fix(php): escape reserved words in enum variables names (#5356) Signed-off-by: Vincent Giersch --- .../io/swagger/codegen/languages/PhpClientCodegen.java | 6 +++--- .../test/java/io/swagger/codegen/php/PhpModelTest.java | 10 +++++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java index d0b6589a587..b67773dcce7 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java @@ -315,7 +315,7 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public String escapeReservedWord(String name) { + public String escapeReservedWord(String name) { if(this.reservedWordsMappings().containsKey(name)) { return this.reservedWordsMappings().get(name); } @@ -679,8 +679,8 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig { enumName = enumName.replaceFirst("^_", ""); enumName = enumName.replaceFirst("_$", ""); - if (enumName.matches("\\d.*")) { // starts with number - return "_" + enumName; + if (isReservedWord(enumName) || enumName.matches("\\d.*")) { // reserved word or starts with number + return escapeReservedWord(enumName); } else { return enumName; } diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/php/PhpModelTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/php/PhpModelTest.java index 0d121315e85..d7726b0945b 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/php/PhpModelTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/php/PhpModelTest.java @@ -334,7 +334,15 @@ public class PhpModelTest { } - + @Test(description = "test enum variable names for reserved words") + public void testReservedWord() throws Exception { + final DefaultCodegen codegen = new PhpClientCodegen(); + Assert.assertEquals(codegen.toEnumVarName("public", null), "_PUBLIC"); + Assert.assertEquals(codegen.toEnumVarName("Private", null), "_PRIVATE"); + Assert.assertEquals(codegen.toEnumVarName("IF", null), "_IF"); + // should not escape non-reserved + Assert.assertEquals(codegen.toEnumVarName("hello", null), "HELLO"); + } }