@@ -7170,13 +7170,38 @@ protected String getEnumDefaultValue(String defaultValue, String dataType) {
71707170 return enumDefaultValue ;
71717171 }
71727172
7173+ /**
7174+ * Builds enum metadata using the original OpenAPI values for both generation and raw metadata.
7175+ *
7176+ * @param values original enum values from the OpenAPI schema; null entries are skipped
7177+ * @param dataType target data type of the enum
7178+ * @return enum entries containing generated names, formatted values, and original raw values
7179+ */
71737180 protected List <EnumVarMap > buildEnumVars (List <Object > values , String dataType ) {
7181+ return buildEnumVars (values , dataType , values );
7182+ }
7183+
7184+ /**
7185+ * Builds enum metadata using separate values for generation and raw metadata.
7186+ *
7187+ * @param values values used to generate enum names and formatted values; null entries are skipped
7188+ * @param dataType target data type of the enum
7189+ * @param rawValues original OpenAPI values, in the same order and with the same number of
7190+ * entries as values; each emitted entry retains its corresponding raw value and type
7191+ * @return enum entries containing generated names, formatted values, and original raw values
7192+ * @throws IllegalArgumentException if the lists have different sizes
7193+ */
7194+ protected List <EnumVarMap > buildEnumVars (List <Object > values , String dataType , List <Object > rawValues ) {
7195+ if (values .size () != rawValues .size ()) {
7196+ throw new IllegalArgumentException ("values and rawValues must have the same number of entries" );
7197+ }
71747198 List <EnumVarMap > enumVars = new ArrayList <>();
71757199 int truncateIdx = isRemoveEnumValuePrefix ()
71767200 ? findCommonPrefixOfVars (values ).length ()
71777201 : 0 ;
71787202
7179- for (Object value : values ) {
7203+ for (int i = 0 ; i < values .size (); i ++) {
7204+ Object value = values .get (i );
71807205 if (value == null ) {
71817206 // raw null values in enums are unions for nullable
71827207 // attributes, not actual enum values, so we remove them here
@@ -7194,6 +7219,7 @@ protected List<EnumVarMap> buildEnumVars(List<Object> values, String dataType) {
71947219 final String finalEnumName = toEnumVarName (enumName , dataType );
71957220
71967221 enumVar .enumVar (finalEnumName , toEnumValue (String .valueOf (value ), dataType ), isDataTypeString (dataType ));
7222+ enumVar .setEnumRawValue (rawValues .get (i ));
71977223 // TODO: add isNumeric
71987224 enumVars .add (enumVar );
71997225 }
@@ -7227,6 +7253,7 @@ private void injectEnumUnknownDefaultCase(List<EnumVarMap> enumVars, String data
72277253 String .valueOf (11184809 );
72287254
72297255 enumVar .enumVar (toEnumVarName (enumName , dataType ), toEnumValue (enumValue , dataType ), isDataTypeString (dataType ));
7256+ enumVar .setEnumRawValue (enumValue );
72307257 // TODO: add isNumeric
72317258 enumVars .add (enumVar );
72327259 }
0 commit comments