6363import org .openapitools .codegen .model .ModelsMap ;
6464import org .openapitools .codegen .model .OperationsMap ;
6565import org .openapitools .codegen .model .WebhooksMap ;
66+ import org .openapitools .codegen .model .EnumVarMap ;
6667import org .openapitools .codegen .serializer .SerializerUtils ;
6768import org .openapitools .codegen .templating .MustacheEngineAdapter ;
6869import org .openapitools .codegen .templating .mustache .*;
9293import java .util .stream .Stream ;
9394
9495import static org .openapitools .codegen .CodegenConstants .*;
96+ import static org .openapitools .codegen .model .EnumVarMap .*;
9597import static org .openapitools .codegen .utils .CamelizeOption .LOWERCASE_FIRST_LETTER ;
9698import static org .openapitools .codegen .utils .DiscriminatorUtils .*;
9799import static org .openapitools .codegen .utils .EnumUtils .*;
@@ -901,7 +903,7 @@ public ModelsMap postProcessModelsEnum(ModelsMap objs) {
901903 // for enum model
902904 if (cm .isEnum && cm .allowableValues != null ) {
903905 List <Object > values = getEnumValues (cm .allowableValues );
904- List <Map < String , Object > > enumVars = buildEnumVars (values , cm .dataType );
906+ List <EnumVarMap > enumVars = buildEnumVars (values , cm .dataType );
905907 postProcessEnumVars (enumVars );
906908 // if "x-enum-varnames" or "x-enum-descriptions" defined, update varnames
907909 updateEnumVarsWithExtensions (enumVars , cm .getVendorExtensions (), cm .dataType );
@@ -7008,7 +7010,7 @@ public void setParameterBooleanFlagWithCodegenProperty(CodegenParameter paramete
70087010 }
70097011
70107012 /**
7011- * Update codegen property's enum by adding {@value CodegenConstants #ENUM_VARS} (with name and value)
7013+ * Update codegen property's enum by adding {@value EnumVarMap #ENUM_VARS} (with name and value)
70127014 *
70137015 * @param var list of CodegenProperty
70147016 */
@@ -7035,7 +7037,7 @@ public void updateCodegenPropertyEnum(CodegenProperty var) {
70357037 .map (Map .Entry ::getValue )
70367038 .findFirst ();
70377039 String dataType = (referencedSchema .isPresent ()) ? getTypeDeclaration (referencedSchema .get ()) : varDataType ;
7038- List <Map < String , Object > > enumVars = buildEnumVars (values , dataType );
7040+ List <EnumVarMap > enumVars = buildEnumVars (values , dataType );
70397041 postProcessEnumVars (enumVars );
70407042
70417043 // if "x-enum-varnames" or "x-enum-descriptions" defined, update varnames
@@ -7051,9 +7053,9 @@ public void updateCodegenPropertyEnum(CodegenProperty var) {
70517053 final String enumDefaultValue = getEnumDefaultValue (var .defaultValue , dataType );
70527054
70537055 String enumName = null ;
7054- for (Map < String , Object > enumVar : enumVars ) {
7055- if (enumDefaultValue .equals (enumVar .get ( ENUM_VALUE ))) {
7056- enumName = (String ) enumVar .get ( ENUM_NAME );
7056+ for (EnumVarMap enumVar : enumVars ) {
7057+ if (enumDefaultValue .equals (enumVar .getEnumValue ( ))) {
7058+ enumName = (String ) enumVar .getEnumName ( );
70577059 break ;
70587060 }
70597061 }
@@ -7073,8 +7075,8 @@ protected String getEnumDefaultValue(String defaultValue, String dataType) {
70737075 return enumDefaultValue ;
70747076 }
70757077
7076- protected List <Map < String , Object > > buildEnumVars (List <Object > values , String dataType ) {
7077- List <Map < String , Object > > enumVars = new ArrayList <>();
7078+ protected List <EnumVarMap > buildEnumVars (List <Object > values , String dataType ) {
7079+ List <EnumVarMap > enumVars = new ArrayList <>();
70787080 int truncateIdx = isRemoveEnumValuePrefix ()
70797081 ? findCommonPrefixOfVars (values ).length ()
70807082 : 0 ;
@@ -7085,7 +7087,7 @@ protected List<Map<String, Object>> buildEnumVars(List<Object> values, String da
70857087 // attributes, not actual enum values, so we remove them here
70867088 continue ;
70877089 }
7088- Map < String , Object > enumVar = new HashMap <> ();
7090+ EnumVarMap enumVar = new EnumVarMap ();
70897091 String enumName = truncateIdx == 0
70907092 ? String .valueOf (value )
70917093 : value .toString ().substring (truncateIdx );
@@ -7096,9 +7098,7 @@ protected List<Map<String, Object>> buildEnumVars(List<Object> values, String da
70967098
70977099 final String finalEnumName = toEnumVarName (enumName , dataType );
70987100
7099- enumVar .put (ENUM_NAME , finalEnumName );
7100- enumVar .put (ENUM_VALUE , toEnumValue (String .valueOf (value ), dataType ));
7101- enumVar .put (ENUM_IS_STRING , isDataTypeString (dataType ));
7101+ enumVar .enumVar (finalEnumName , toEnumValue (String .valueOf (value ), dataType ), isDataTypeString (dataType ));
71027102 // TODO: add isNumeric
71037103 enumVars .add (enumVar );
71047104 }
@@ -7117,8 +7117,8 @@ protected List<Map<String, Object>> buildEnumVars(List<Object> values, String da
71177117 * @param enumVars the enumVars
71187118 * @param dataType the data type of the enum parameter
71197119 */
7120- private void injectEnumUnknownDefaultCase (List <Map < String , Object > > enumVars , String dataType ) {
7121- Map < String , Object > enumVar = new HashMap <> ();
7120+ private void injectEnumUnknownDefaultCase (List <EnumVarMap > enumVars , String dataType ) {
7121+ EnumVarMap enumVar = new EnumVarMap ();
71227122 String enumName = enumUnknownDefaultCaseName ;
71237123
71247124 String enumValue = isDataTypeString (dataType )
@@ -7131,9 +7131,7 @@ private void injectEnumUnknownDefaultCase(List<Map<String, Object>> enumVars, St
71317131 // https://github.com/OpenAPITools/openapi-generator/pull/11013
71327132 String .valueOf (11184809 );
71337133
7134- enumVar .put (ENUM_NAME , toEnumVarName (enumName , dataType ));
7135- enumVar .put (ENUM_VALUE , toEnumValue (enumValue , dataType ));
7136- enumVar .put (ENUM_IS_STRING , isDataTypeString (dataType ));
7134+ enumVar .enumVar (toEnumVarName (enumName , dataType ), toEnumValue (enumValue , dataType ), isDataTypeString (dataType ));
71377135 // TODO: add isNumeric
71387136 enumVars .add (enumVar );
71397137 }
@@ -7148,31 +7146,31 @@ private void injectEnumUnknownDefaultCase(List<Map<String, Object>> enumVars, St
71487146 protected void removeEnumUnknownDefaultCase (CodegenOperation operation ) {
71497147 for (CodegenParameter param : operation .allParams ) {
71507148 if (!param .isBodyParam && param .isEnum && hasEnumVars (param .allowableValues )) {
7151- List <Map < String , Object > > enumVars = getEnumVars (param .allowableValues );
7149+ List <EnumVarMap > enumVars = getEnumVars (param .allowableValues );
71527150 if (enumVars != null ) {
71537151 String unknownName = toEnumVarName (enumUnknownDefaultCaseName , param .dataType );
7154- enumVars .removeIf (ev -> unknownName .equals (ev .get ( ENUM_NAME )));
7152+ enumVars .removeIf (ev -> unknownName .equals (ev .getEnumName ( )));
71557153 }
71567154 }
71577155 }
71587156 }
71597157
7160- protected void postProcessEnumVars (List <Map < String , Object > > enumVars ) {
7158+ protected void postProcessEnumVars (List <EnumVarMap > enumVars ) {
71617159 Collections .reverse (enumVars );
71627160 enumVars .forEach (v -> {
7163- String name = (String ) v .get ( ENUM_NAME );
7164- long count = enumVars .stream ().filter (v1 -> v1 .get ( ENUM_NAME ).equals (name )).count ();
7161+ String name = (String ) v .getEnumName ( );
7162+ long count = enumVars .stream ().filter (v1 -> v1 .getEnumName ( ).equals (name )).count ();
71657163 if (count > 1 ) {
71667164 String uniqueEnumName = getUniqueEnumName (name , enumVars );
7167- LOGGER .debug ("Changing duplicate enumeration name from {} to {}" , v .get ( ENUM_NAME ), uniqueEnumName );
7168- v .put ( ENUM_NAME , uniqueEnumName );
7165+ LOGGER .debug ("Changing duplicate enumeration name from {} to {}" , v .getEnumName ( ), uniqueEnumName );
7166+ v .setEnumName ( uniqueEnumName );
71697167 }
71707168 });
71717169 Collections .reverse (enumVars );
71727170 }
71737171
7174- private String getUniqueEnumName (String name , List <Map < String , Object > > enumVars ) {
7175- long count = enumVars .stream ().filter (v -> v .get ( ENUM_NAME ).equals (name )).count ();
7172+ private String getUniqueEnumName (String name , List <EnumVarMap > enumVars ) {
7173+ long count = enumVars .stream ().filter (v -> v .getEnumName ( ).equals (name )).count ();
71767174 return count > 1
71777175 ? getUniqueEnumName (name + count , enumVars )
71787176 : name ;
@@ -7185,7 +7183,7 @@ private String getUniqueEnumName(String name, List<Map<String, Object>> enumVars
71857183 * @param vendorExtensions vendor extensions
71867184 * @param dataType data type
71877185 */
7188- protected void updateEnumVarsWithExtensions (List <Map < String , Object > > enumVars , Map <String , Object > vendorExtensions , String dataType ) {
7186+ protected void updateEnumVarsWithExtensions (List <EnumVarMap > enumVars , Map <String , Object > vendorExtensions , String dataType ) {
71897187 if (vendorExtensions != null ) {
71907188 updateEnumVarsWithExtensions (enumVars , vendorExtensions , X_ENUM_VARNAMES , ENUM_NAME , dataType );
71917189 updateEnumVarsWithExtensions (enumVars , vendorExtensions , X_ENUM_DESCRIPTIONS , ENUM_DESCRIPTION , dataType );
@@ -7201,7 +7199,7 @@ protected void updateEnumVarsWithExtensions(List<Map<String, Object>> enumVars,
72017199 * @param key key
72027200 * @param dataType data type
72037201 */
7204- protected void updateEnumVarsWithExtensions (List <Map < String , Object > > enumVars , Map <String , Object > vendorExtensions , String extensionKey , String key , String dataType ) {
7202+ protected void updateEnumVarsWithExtensions (List <EnumVarMap > enumVars , Map <String , Object > vendorExtensions , String extensionKey , String key , String dataType ) {
72057203 updateEnumVarsWithExtensions (enumVars , vendorExtensions , extensionKey , key , dataType , (a , b ) -> a );
72067204 }
72077205
@@ -7214,7 +7212,7 @@ protected void updateEnumVarsWithExtensions(List<Map<String, Object>> enumVars,
72147212 * @param dataType data type
72157213 * @param enumDataTypeMapping functions that accepts 2 arguments
72167214 */
7217- protected void updateEnumVarsWithExtensions (List <Map < String , Object > > enumVars ,
7215+ protected void updateEnumVarsWithExtensions (List <EnumVarMap > enumVars ,
72187216 Map <String , Object > vendorExtensions ,
72197217 String extensionKey ,
72207218 String key ,
@@ -7230,8 +7228,8 @@ protected void updateEnumVarsWithExtensions(List<Map<String, Object>> enumVars,
72307228 }
72317229 } else if (extensionValue instanceof Map ) {
72327230 Map <String , String > valueMap = (Map <String , String >) extensionValue ;
7233- for (Map < String , Object > enumVar : enumVars ) {
7234- String enumValue = (String ) enumVar .get ( ENUM_VALUE );
7231+ for (EnumVarMap enumVar : enumVars ) {
7232+ String enumValue = (String ) enumVar .getEnumValue ( );
72357233 for (Map .Entry <String , String > entry : valueMap .entrySet ()) {
72367234 if (toEnumValue (entry .getKey (), dataType ).equals (enumValue )) {
72377235 enumVar .put (key , enumDataTypeMapping .apply (entry .getValue (), dataType ));
0 commit comments