|
111 | 111 | import static io.micronaut.openapi.generator.Utils.addEnumParamsForConverters; |
112 | 112 | import static io.micronaut.openapi.generator.Utils.addStrValueToEnum; |
113 | 113 | import static io.micronaut.openapi.generator.Utils.calcQueryValueFormat; |
| 114 | +import static io.micronaut.openapi.generator.Utils.findEnumVar; |
114 | 115 | import static io.micronaut.openapi.generator.Utils.isDateType; |
115 | 116 | import static io.micronaut.openapi.generator.Utils.normalizeExtraAnnotations; |
116 | 117 | import static io.micronaut.openapi.generator.Utils.normalizeStr; |
117 | 118 | import static io.micronaut.openapi.generator.Utils.normalizeStrValue; |
118 | 119 | import static io.micronaut.openapi.generator.Utils.processDuplicateVars; |
| 120 | +import static io.micronaut.openapi.generator.Utils.processEnumExt; |
119 | 121 | import static io.micronaut.openapi.generator.Utils.processGenericAnnotations; |
120 | 122 | import static io.micronaut.openapi.generator.Utils.readListOfStringsProperty; |
121 | 123 | import static io.swagger.v3.parser.util.SchemaTypeUtil.BYTE_FORMAT; |
@@ -1319,8 +1321,14 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<Mo |
1319 | 1321 |
|
1320 | 1322 | private void normalizeTextsInOperation(CodegenOperation op) { |
1321 | 1323 |
|
1322 | | - if (op.vendorExtensions.containsKey("x-deprecated-message")) { |
1323 | | - op.vendorExtensions.put("x-deprecated-message-normalized", normalizeStr(op.vendorExtensions.get("x-deprecated-message").toString())); |
| 1324 | + var deprecatedMessage = op.vendorExtensions.get("x-deprecated-message"); |
| 1325 | + var xDeprecated = op.vendorExtensions.get("x-deprecated"); |
| 1326 | + if (deprecatedMessage == null && xDeprecated instanceof String xDeprecatedStr) { |
| 1327 | + deprecatedMessage = xDeprecatedStr; |
| 1328 | + op.vendorExtensions.put("x-deprecated-message", xDeprecatedStr); |
| 1329 | + } |
| 1330 | + if (deprecatedMessage != null) { |
| 1331 | + op.vendorExtensions.put("x-deprecated-message-normalized", normalizeStr(deprecatedMessage.toString())); |
1324 | 1332 | } |
1325 | 1333 |
|
1326 | 1334 | if (op.vendorExtensions.containsKey("x-roles")) { |
@@ -2357,8 +2365,14 @@ public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) |
2357 | 2365 | model.vendorExtensions.put("requiredParentVarsWithoutDiscriminator", requiredParentVarsWithoutDiscriminator); |
2358 | 2366 | } |
2359 | 2367 |
|
2360 | | - if (model.vendorExtensions.containsKey("x-deprecated-message")) { |
2361 | | - model.vendorExtensions.put("x-deprecated-message-normalized", normalizeStr((String) model.vendorExtensions.get("x-deprecated-message"))); |
| 2368 | + var deprecatedMessage = model.vendorExtensions.get("x-deprecated-message"); |
| 2369 | + var xDeprecated = model.vendorExtensions.get("x-deprecated"); |
| 2370 | + if (deprecatedMessage == null && xDeprecated instanceof String xDeprecatedStr) { |
| 2371 | + deprecatedMessage = xDeprecatedStr; |
| 2372 | + model.vendorExtensions.put("x-deprecated-message", xDeprecatedStr); |
| 2373 | + } |
| 2374 | + if (deprecatedMessage != null) { |
| 2375 | + model.vendorExtensions.put("x-deprecated-message-normalized", normalizeStr(deprecatedMessage.toString())); |
2362 | 2376 | } |
2363 | 2377 | model.vendorExtensions.put("descriptionNormalized", normalizeStr(model.description)); |
2364 | 2378 | model.vendorExtensions.put("requiredVarsWithoutDiscriminator", requiredVarsWithoutDiscriminator); |
@@ -2482,50 +2496,49 @@ public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) |
2482 | 2496 |
|
2483 | 2497 | @Override |
2484 | 2498 | protected void updateEnumVarsWithExtensions(List<Map<String, Object>> enumVars, Map<String, Object> vendorExtensions, String dataType) { |
2485 | | - super.updateEnumVarsWithExtensions(enumVars, vendorExtensions, dataType); |
2486 | 2499 | if (vendorExtensions == null) { |
2487 | 2500 | return; |
2488 | 2501 | } |
2489 | | - var xDeprecated = (List<Object>) vendorExtensions.get("x-deprecated"); |
| 2502 | + |
| 2503 | + processEnumExt(enumVars, vendorExtensions, "enumDescription", List.of("x-enum-descriptions", "x-xl4-enum-doc")); |
| 2504 | + processEnumExt(enumVars, vendorExtensions, "enumDeprecatedMessage", List.of("x-enum-deprecated-messages", "x-xl4-enum-deprecated"), true); |
| 2505 | + |
| 2506 | + var deprecatedExt = vendorExtensions.get("x-deprecated"); |
| 2507 | + List<?> xDeprecated = null; |
| 2508 | + Map<?, ?> xDeprecatedMap = null; |
| 2509 | + if (deprecatedExt instanceof List<?> deprecatedList) { |
| 2510 | + xDeprecated = deprecatedList; |
| 2511 | + } else if (deprecatedExt instanceof Map<?, ?> deprecatedMap) { |
| 2512 | + xDeprecated = new ArrayList<>(deprecatedMap.keySet()); |
| 2513 | + xDeprecatedMap = deprecatedMap; |
| 2514 | + } |
| 2515 | + var deprecatedMessagesExt = vendorExtensions.get("x-enum-deprecated-messages"); |
| 2516 | + if (deprecatedMessagesExt == null) { |
| 2517 | + deprecatedMessagesExt = vendorExtensions.get("x-xl4-enum-deprecated"); |
| 2518 | + } |
| 2519 | + if (xDeprecated == null && deprecatedMessagesExt instanceof Map<?, ?> deprecatedMap) { |
| 2520 | + xDeprecated = new ArrayList<>(deprecatedMap.keySet()); |
| 2521 | + xDeprecatedMap = deprecatedMap; |
| 2522 | + } |
2490 | 2523 | if (xDeprecated != null && !xDeprecated.isEmpty()) { |
2491 | 2524 | for (var deprecatedItem : xDeprecated) { |
2492 | | - Map<String, Object> foundEnumVar = null; |
2493 | | - for (var enumVar : enumVars) { |
2494 | | - var isString = (boolean) enumVar.get("isString"); |
2495 | | - var value = (String) enumVar.get("value"); |
2496 | | - if (!isString) { |
2497 | | - if (value.startsWith("(short)")) { |
2498 | | - value = value.replace("(short) ", ""); |
2499 | | - } |
2500 | | - var argPos = value.indexOf('('); |
2501 | | - // case for BigDecimal |
2502 | | - if (argPos >= 0) { |
2503 | | - value = value.substring(argPos + 1, value.indexOf(')')); |
2504 | | - } |
2505 | | - var upperValue = value.toUpperCase(Locale.ENGLISH); |
2506 | | - if (upperValue.endsWith("F") |
2507 | | - || upperValue.endsWith("L") |
2508 | | - || upperValue.endsWith("D")) { |
2509 | | - value = value.substring(0, value.length() - 1); |
2510 | | - } |
2511 | | - if (!value.contains("'")) { |
2512 | | - value = value.replace("'", ""); |
2513 | | - } |
2514 | | - if (!value.contains("\"")) { |
2515 | | - value = "\"" + value + "\""; |
2516 | | - } |
2517 | | - } |
2518 | | - if (value.equals("\"" + deprecatedItem + '"')) { |
2519 | | - foundEnumVar = enumVar; |
2520 | | - break; |
2521 | | - } |
| 2525 | + Map<String, Object> foundEnumVar = findEnumVar(deprecatedItem.toString(), enumVars); |
| 2526 | + if (foundEnumVar == null) { |
| 2527 | + continue; |
2522 | 2528 | } |
2523 | | - if (foundEnumVar != null) { |
2524 | | - foundEnumVar.put("deprecated", true); |
| 2529 | + foundEnumVar.put("deprecated", true); |
| 2530 | + if (xDeprecatedMap != null) { |
| 2531 | + var deprecatedMessage = xDeprecatedMap.get(deprecatedItem); |
| 2532 | + if (deprecatedMessage instanceof String deprecatedMessageStr) { |
| 2533 | + foundEnumVar.put("enumDeprecatedMessage", deprecatedMessageStr); |
| 2534 | + foundEnumVar.put("enumDeprecatedMessageNormalized", normalizeStr(deprecatedMessageStr)); |
| 2535 | + } |
2525 | 2536 | } |
2526 | 2537 | } |
2527 | 2538 | } |
2528 | 2539 |
|
| 2540 | + processEnumExt(enumVars, vendorExtensions, "name", List.of("x-enum-varnames")); |
| 2541 | + |
2529 | 2542 | var baseType = (String) vendorExtensions.get("baseType"); |
2530 | 2543 | for (var enumVar : enumVars) { |
2531 | 2544 | var value = (String) enumVar.get("value"); |
@@ -2656,8 +2669,14 @@ private void processProperty(CodegenProperty property, boolean isServer, Codegen |
2656 | 2669 | if (property.description != null) { |
2657 | 2670 | property.vendorExtensions.put("descriptionNormalized", normalizeStr(property.description)); |
2658 | 2671 | } |
2659 | | - if (property.vendorExtensions.containsKey("x-deprecated-message")) { |
2660 | | - property.vendorExtensions.put("x-deprecated-message-normalized", normalizeStr((String) property.vendorExtensions.get("x-deprecated-message"))); |
| 2672 | + var deprecatedMessage = property.vendorExtensions.get("x-deprecated-message"); |
| 2673 | + var xDeprecated = property.vendorExtensions.get("x-deprecated"); |
| 2674 | + if (deprecatedMessage == null && xDeprecated instanceof String xDeprecatedStr) { |
| 2675 | + deprecatedMessage = xDeprecatedStr; |
| 2676 | + property.vendorExtensions.put("x-deprecated-message", xDeprecatedStr); |
| 2677 | + } |
| 2678 | + if (deprecatedMessage != null) { |
| 2679 | + property.vendorExtensions.put("x-deprecated-message-normalized", normalizeStr(deprecatedMessage.toString())); |
2661 | 2680 | } |
2662 | 2681 | normalizeStrValue("x-pattern-message", property.vendorExtensions); |
2663 | 2682 | normalizeStrValue("x-size-message", property.vendorExtensions); |
|
0 commit comments