|
8 | 8 | import io.swagger.v3.oas.models.Operation; |
9 | 9 | import io.swagger.v3.oas.models.servers.Server; |
10 | 10 | import java.io.File; |
| 11 | +import java.util.Collections; |
11 | 12 | import java.util.List; |
12 | 13 | import java.util.Map; |
13 | 14 | import java.util.logging.Logger; |
@@ -141,12 +142,49 @@ private String escapePath(String path) { |
141 | 142 | return buf.toString(); |
142 | 143 | } |
143 | 144 |
|
| 145 | + @Override |
| 146 | + protected void postProcessEnumVars(List<Map<String, Object>> enumVars) { |
| 147 | + Collections.reverse(enumVars); |
| 148 | + enumVars.forEach(v -> { |
| 149 | + String name = (String) v.get("name"); |
| 150 | + long count = enumVars.stream().filter(v1 -> ((String) v1.get("name")).equalsIgnoreCase(name)).count(); |
| 151 | + if (count > 1L) { |
| 152 | + String uniqueEnumName = this.getUniqueEnumName(name, enumVars); |
| 153 | + Object var10001 = v.get("name"); |
| 154 | + this.logger.warning("Changing duplicate enumeration name from " + var10001 + " to " + uniqueEnumName); |
| 155 | + v.put("name", uniqueEnumName); |
| 156 | + } |
| 157 | + }); |
| 158 | + Collections.reverse(enumVars); |
| 159 | + } |
| 160 | + |
| 161 | + private String getUniqueEnumName(String name, List<Map<String, Object>> enumVars) { |
| 162 | + long count = enumVars.stream().filter(v -> ((String) v.get("name")).equalsIgnoreCase(name)).count(); |
| 163 | + return count > 1L ? this.getUniqueEnumName(name + "Alt", enumVars) : name; |
| 164 | + } |
| 165 | + |
| 166 | + @Override |
| 167 | + public String toEnumVarName(String value, String datatype) { |
| 168 | + if (value.isEmpty()) { |
| 169 | + return "Empty"; |
| 170 | + } else { |
| 171 | + var var = lowerCamelCase(value); |
| 172 | + return this.reservedWords.contains(var) ? this.escapeReservedWord(var) : var; |
| 173 | + } |
| 174 | + } |
| 175 | + |
144 | 176 | @Override |
145 | 177 | public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) { |
146 | 178 | Map<String, ModelsMap> models = super.postProcessAllModels(objs); |
147 | 179 | GenericPropagator.propagateGenericsToModels(models, true); |
148 | 180 | OneOf.updateModelsOneOf(models, modelPackage); |
149 | 181 | OneOf.addOneOfMetadata(models); |
| 182 | + |
| 183 | + // Scala doesn't support sensitive casing for enums |
| 184 | + for (var model : models.values()) { |
| 185 | + this.postProcessModelsEnum(model); |
| 186 | + } |
| 187 | + |
150 | 188 | return models; |
151 | 189 | } |
152 | 190 |
|
|
0 commit comments