From 670f1038595d5ce9d941cafa2876a3bbd3762c87 Mon Sep 17 00:00:00 2001 From: wing328 Date: Thu, 4 Aug 2016 16:37:48 +0800 Subject: [PATCH] better enum naming for symbol (java) --- .../io/swagger/codegen/DefaultCodegen.java | 46 ++++++++++++------- .../languages/AbstractJavaCodegen.java | 5 ++ .../languages/HaskellServantCodegen.java | 10 ++-- ...ith-fake-endpoints-models-for-testing.yaml | 6 +-- .../java/okhttp-gson/docs/EnumArrays.md | 10 ++-- .../io/swagger/client/model/EnumArrays.java | 40 ++++++++-------- .../lib/SwaggerPetstore/Types.hs | 2 +- 7 files changed, 70 insertions(+), 49 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java index 2af4a5f0dc1a..c3dea77c22ed 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java @@ -106,7 +106,7 @@ public class DefaultCodegen { // How to encode special characters like $ // They are translated to words like "Dollar" and prefixed with ' // Then translated back during JSON encoding and decoding - protected Map specialCharReplacements = new HashMap(); + protected Map specialCharReplacements = new HashMap(); public List cliOptions() { return cliOptions; @@ -789,21 +789,35 @@ public class DefaultCodegen { */ protected void initalizeSpecialCharacterMapping() { // Initialize special characters - specialCharReplacements.put('$', "Dollar"); - specialCharReplacements.put('^', "Caret"); - specialCharReplacements.put('|', "Pipe"); - specialCharReplacements.put('=', "Equal"); - specialCharReplacements.put('*', "Star"); - specialCharReplacements.put('-', "Minus"); - specialCharReplacements.put('&', "Ampersand"); - specialCharReplacements.put('%', "Percent"); - specialCharReplacements.put('#', "Hash"); - specialCharReplacements.put('@', "At"); - specialCharReplacements.put('!', "Exclamation"); - specialCharReplacements.put('+', "Plus"); - specialCharReplacements.put(':', "Colon"); - specialCharReplacements.put('>', "GreaterThan"); - specialCharReplacements.put('<', "LessThan"); + specialCharReplacements.put("$", "Dollar"); + specialCharReplacements.put("^", "Caret"); + specialCharReplacements.put("|", "Pipe"); + specialCharReplacements.put("=", "Equal"); + specialCharReplacements.put("*", "Star"); + specialCharReplacements.put("-", "Minus"); + specialCharReplacements.put("&", "Ampersand"); + specialCharReplacements.put("%", "Percent"); + specialCharReplacements.put("#", "Hash"); + specialCharReplacements.put("@", "At"); + specialCharReplacements.put("!", "Exclamation"); + specialCharReplacements.put("+", "Plus"); + specialCharReplacements.put(":", "Colon"); + specialCharReplacements.put(">", "Greater_Than"); + specialCharReplacements.put("<", "Less_Than"); + + specialCharReplacements.put("<=", "Less_Than_Or_Equal_To"); + specialCharReplacements.put(">=", "Greater_Than_Or_Equal_To"); + specialCharReplacements.put("!=", "Greater_Than_Or_Equal_To"); + } + + /** + * Return the symbol name of a symbol + * + * @param input Symbol (e.g. $) + * @return Symbol name (e.g. Dollar) + */ + protected String getSymbolName(String input) { + return specialCharReplacements.get(input); } /** 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 25b3beb148e8..c578acf4231e 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 @@ -729,6 +729,11 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code @Override public String toEnumVarName(String value, String datatype) { + // for symbol, e.g. $, # + if (getSymbolName(value) != null) { + return getSymbolName(value).toUpperCase(); + } + // number if ("Integer".equals(datatype) || "Long".equals(datatype) || "Float".equals(datatype) || "Double".equals(datatype)) { diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/HaskellServantCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/HaskellServantCodegen.java index f485d7c33bf7..da6642ddef9b 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/HaskellServantCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/HaskellServantCodegen.java @@ -49,8 +49,10 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf public HaskellServantCodegen() { super(); - // override the mapping for "-" (Minus) to keep the original mapping in Haskell - specialCharReplacements.put('-', "Dash"); + // override the mapping to keep the original mapping in Haskell + specialCharReplacements.put("-", "Dash"); + specialCharReplacements.put(">", "GreaterThan"); + specialCharReplacements.put("<", "LessThan"); // set the output folder here outputFolder = "generated-code/haskell-servant"; @@ -203,9 +205,9 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf List> replacements = new ArrayList<>(); Object[] replacementChars = specialCharReplacements.keySet().toArray(); for(int i = 0; i < replacementChars.length; i++) { - Character c = (Character) replacementChars[i]; + String c = (String) replacementChars[i]; Map o = new HashMap<>(); - o.put("char", Character.toString(c)); + o.put("char", c); o.put("replacement", "'" + specialCharReplacements.get(c)); o.put("hasMore", i != replacementChars.length - 1); replacements.add(o); diff --git a/modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml b/modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml index e6574f5ffd6d..8bd36d0cbb12 100644 --- a/modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml +++ b/modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml @@ -1146,11 +1146,11 @@ definitions: EnumArrays: type: object properties: - just_enum: + just_symbol: type: string enum: - - bird - - eagle + - ">=" + - "$" array_enum: type: array items: diff --git a/samples/client/petstore/java/okhttp-gson/docs/EnumArrays.md b/samples/client/petstore/java/okhttp-gson/docs/EnumArrays.md index 30d341de8a85..4dddc0bfd27b 100644 --- a/samples/client/petstore/java/okhttp-gson/docs/EnumArrays.md +++ b/samples/client/petstore/java/okhttp-gson/docs/EnumArrays.md @@ -4,16 +4,16 @@ ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**justEnum** | [**JustEnumEnum**](#JustEnumEnum) | | [optional] +**justSymbol** | [**JustSymbolEnum**](#JustSymbolEnum) | | [optional] **arrayEnum** | [**List<ArrayEnumEnum>**](#List<ArrayEnumEnum>) | | [optional] - -## Enum: JustEnumEnum + +## Enum: JustSymbolEnum Name | Value ---- | ----- -BIRD | "bird" -EAGLE | "eagle" +GREATER_THAN_OR_EQUAL_TO | ">=" +DOLLAR | "$" diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/EnumArrays.java b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/EnumArrays.java index 9745bf4a488b..aef9b16ef158 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/EnumArrays.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/model/EnumArrays.java @@ -39,18 +39,18 @@ import java.util.List; public class EnumArrays { /** - * Gets or Sets justEnum + * Gets or Sets justSymbol */ - public enum JustEnumEnum { - @SerializedName("bird") - BIRD("bird"), + public enum JustSymbolEnum { + @SerializedName(">=") + GREATER_THAN_OR_EQUAL_TO(">="), - @SerializedName("eagle") - EAGLE("eagle"); + @SerializedName("$") + DOLLAR("$"); private String value; - JustEnumEnum(String value) { + JustSymbolEnum(String value) { this.value = value; } @@ -60,8 +60,8 @@ public class EnumArrays { } } - @SerializedName("just_enum") - private JustEnumEnum justEnum = null; + @SerializedName("just_symbol") + private JustSymbolEnum justSymbol = null; /** * Gets or Sets arrayEnum @@ -88,22 +88,22 @@ public class EnumArrays { @SerializedName("array_enum") private List arrayEnum = new ArrayList(); - public EnumArrays justEnum(JustEnumEnum justEnum) { - this.justEnum = justEnum; + public EnumArrays justSymbol(JustSymbolEnum justSymbol) { + this.justSymbol = justSymbol; return this; } /** - * Get justEnum - * @return justEnum + * Get justSymbol + * @return justSymbol **/ @ApiModelProperty(example = "null", value = "") - public JustEnumEnum getJustEnum() { - return justEnum; + public JustSymbolEnum getJustSymbol() { + return justSymbol; } - public void setJustEnum(JustEnumEnum justEnum) { - this.justEnum = justEnum; + public void setJustSymbol(JustSymbolEnum justSymbol) { + this.justSymbol = justSymbol; } public EnumArrays arrayEnum(List arrayEnum) { @@ -139,13 +139,13 @@ public class EnumArrays { return false; } EnumArrays enumArrays = (EnumArrays) o; - return Objects.equals(this.justEnum, enumArrays.justEnum) && + return Objects.equals(this.justSymbol, enumArrays.justSymbol) && Objects.equals(this.arrayEnum, enumArrays.arrayEnum); } @Override public int hashCode() { - return Objects.hash(justEnum, arrayEnum); + return Objects.hash(justSymbol, arrayEnum); } @Override @@ -153,7 +153,7 @@ public class EnumArrays { StringBuilder sb = new StringBuilder(); sb.append("class EnumArrays {\n"); - sb.append(" justEnum: ").append(toIndentedString(justEnum)).append("\n"); + sb.append(" justSymbol: ").append(toIndentedString(justSymbol)).append("\n"); sb.append(" arrayEnum: ").append(toIndentedString(arrayEnum)).append("\n"); sb.append("}"); return sb.toString(); diff --git a/samples/server/petstore/haskell-servant/lib/SwaggerPetstore/Types.hs b/samples/server/petstore/haskell-servant/lib/SwaggerPetstore/Types.hs index cb88243d9572..4207fbc90c60 100644 --- a/samples/server/petstore/haskell-servant/lib/SwaggerPetstore/Types.hs +++ b/samples/server/petstore/haskell-servant/lib/SwaggerPetstore/Types.hs @@ -112,7 +112,7 @@ removeFieldLabelPrefix forParsing prefix = } where replaceSpecialChars field = foldl (&) field (map mkCharReplacement specialChars) - specialChars = [("#", "'Hash"), ("!", "'Exclamation"), ("&", "'Ampersand"), ("@", "'At"), ("$", "'Dollar"), ("%", "'Percent"), ("*", "'Star"), ("+", "'Plus"), ("-", "'Dash"), (":", "'Colon"), ("^", "'Caret"), ("|", "'Pipe"), (">", "'GreaterThan"), ("=", "'Equal"), ("<", "'LessThan")] + specialChars = [("#", "'Hash"), ("!", "'Exclamation"), ("&", "'Ampersand"), ("@", "'At"), ("$", "'Dollar"), ("%", "'Percent"), ("*", "'Star"), ("+", "'Plus"), (">=", "'Greater_Than_Or_Equal_To"), ("-", "'Dash"), ("<=", "'Less_Than_Or_Equal_To"), ("!=", "'Greater_Than_Or_Equal_To"), (":", "'Colon"), ("^", "'Caret"), ("|", "'Pipe"), (">", "'GreaterThan"), ("=", "'Equal"), ("<", "'LessThan")] mkCharReplacement (replaceStr, searchStr) = T.unpack . replacer (T.pack searchStr) (T.pack replaceStr) . T.pack replacer = if forParsing then flip T.replace else T.replace