Skip to content

Commit cee8c38

Browse files
committed
Merge branch '6.19.x' into 7.0.x
2 parents 6d16e2d + f72f3b6 commit cee8c38

File tree

24 files changed

+1340
-150
lines changed

24 files changed

+1340
-150
lines changed

gradle/libs.versions.toml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[versions]
2-
managed-swagger = "2.2.38"
2+
managed-swagger = "2.2.39"
33
managed-javadoc-parser = "0.3.1"
44
managed-jsoup = "1.21.2"
55
# deprecated, use managed-flexmark
@@ -12,10 +12,10 @@ managed-evo-inflector = "1.3"
1212
jspecify = "1.0.0"
1313
jdt-annotation = "2.4.0"
1414
android-annotation = "1.9.1"
15-
spotbugs-annotations = "4.9.6"
15+
spotbugs-annotations = "4.9.8"
1616
openapi-generator = "7.16.0"
1717
swagger-parser = "1.0.75"
18-
swagger-parser-v3 = "2.1.34"
18+
swagger-parser-v3 = "2.1.35"
1919
javaparser = "3.27.1"
2020
commons-lang3 = "3.19.0"
2121
commons-codec = "1.19.0"
@@ -47,12 +47,12 @@ micronaut-docs = "3.0.0"
4747
micronaut-shared-settings = "8.0.0-M9"
4848

4949
# javascript libraries
50-
js-swagger-ui = "5.29.3"
51-
js-openapi-explorer = "2.2.776"
50+
js-swagger-ui = "5.29.5"
51+
js-openapi-explorer = "2.2.780"
5252
js-redoc = "2.5.1"
5353
js-rapidoc = "9.3.8"
5454
js-rapipdf = "2.2.1"
55-
js-scalar = "1.37.0"
55+
js-scalar = "1.38.1"
5656

5757
[libraries]
5858
# Managed

openapi-generator/src/main/java/io/micronaut/openapi/generator/AbstractMicronautJavaCodegen.java

Lines changed: 161 additions & 43 deletions
Large diffs are not rendered by default.

openapi-generator/src/main/java/io/micronaut/openapi/generator/AbstractMicronautKotlinCodegen.java

Lines changed: 143 additions & 52 deletions
Large diffs are not rendered by default.

openapi-generator/src/main/java/io/micronaut/openapi/generator/MnSchemaTypeUtil.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public final class MnSchemaTypeUtil {
3434
public static final String FORMAT_INT8 = "int8";
3535
public static final String FORMAT_INT16 = "int16";
3636
public static final String FORMAT_SHORT = "short";
37+
public static final String FORMAT_LONG = "long";
3738

3839
private MnSchemaTypeUtil() {
3940
}

openapi-generator/src/main/java/io/micronaut/openapi/generator/Utils.java

Lines changed: 77 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,6 @@ public static void processDuplicateVars(List<CodegenProperty> vars) {
645645

646646
public static void addEnumParamsForConverters(
647647
String modelPackage,
648-
CodegenModel enumModel,
649648
CodegenParameter param,
650649
Map<String, Integer> converterCounters,
651650
List<CodegenParameter> enumParams,
@@ -664,15 +663,20 @@ public static void addEnumParamsForConverters(
664663
return;
665664
}
666665

666+
var enumValueType = (String) param.vendorExtensions.get("enumValueType");
667+
if (enumValueType == null) {
668+
return;
669+
}
670+
var isNullable = param.vendorExtensions.containsKey("enumValueIsNullable");
667671
var counter = converterCounters.get(converterName);
668672
converterCounters.put(converterName, counter == null ? 0 : counter + 1);
669673
param.vendorExtensions.put("converterName", converterName + (counter != null ? counter : ""));
670674

671-
var convertFun = (enumModel.isNullable ? "Optional.ofNullable(" : "Optional.of(")
672-
+ param.dataType + ".fromValue(" + (isKotlin ? getKotlinEnumConvertFun(enumModel.dataType) : getJavaEnumConvertFun(enumModel.dataType, enumImports)) + "))";
675+
var convertFun = (isNullable ? "Optional.ofNullable(" : "Optional.of(")
676+
+ param.dataType + ".fromValue(" + (isKotlin ? getKotlinEnumConvertFun(enumValueType) : getJavaEnumConvertFun(enumValueType, enumImports)) + "))";
673677

674678
param.vendorExtensions.put("convertFun", convertFun);
675-
param.vendorExtensions.put("convertToStrFun", isKotlin ? getKotlinEnumConvertToStrFun(enumModel.dataType) : getJavaEnumConvertToStrFun((String) enumModel.vendorExtensions.get("baseType")));
679+
param.vendorExtensions.put("convertToStrFun", isKotlin ? getKotlinEnumConvertToStrFun(enumValueType) : getJavaEnumConvertToStrFun(enumValueType));
676680
enumParams.add(param);
677681
enumImports.add(modelPackage + "." + param.dataType);
678682
}
@@ -779,4 +783,73 @@ public static boolean addUserParameter(CodegenOperation op, UserParameterMode us
779783

780784
return true;
781785
}
786+
787+
public static void processEnumExt(List<Map<String, Object>> enumVars, Map<String, Object> vendorExtensions, String key, List<String> extensionKeys) {
788+
processEnumExt(enumVars, vendorExtensions, key, extensionKeys, false);
789+
}
790+
791+
public static void processEnumExt(List<Map<String, Object>> enumVars, Map<String, Object> vendorExtensions, String key, List<String> extensionKeys, boolean withNormalization) {
792+
Object value = null;
793+
for (var extKey : extensionKeys) {
794+
value = vendorExtensions.get(extKey);
795+
if (value != null) {
796+
break;
797+
}
798+
}
799+
if (value instanceof List<?> valuesList) {
800+
int size = Math.min(enumVars.size(), valuesList.size());
801+
for (int i = 0; i < size; i++) {
802+
enumVars.get(i).put(key, valuesList.get(i));
803+
if (withNormalization) {
804+
enumVars.get(i).put(key + "Normalized", normalizeStr(valuesList.get(i).toString()));
805+
}
806+
}
807+
} else if (value instanceof Map<?, ?> valuesMap) {
808+
for (var entry : valuesMap.entrySet()) {
809+
Map<String, Object> foundEnumVar = findEnumVar(entry.getKey().toString(), enumVars);
810+
if (foundEnumVar == null) {
811+
continue;
812+
}
813+
foundEnumVar.put(key, entry.getValue().toString());
814+
if (withNormalization) {
815+
foundEnumVar.put(key + "Normalized", normalizeStr(entry.getValue().toString()));
816+
}
817+
}
818+
}
819+
}
820+
821+
public static Map<String, Object> findEnumVar(String enumConstName, List<Map<String, Object>> enumVars) {
822+
for (var enumVar : enumVars) {
823+
var isString = (boolean) enumVar.get("isString");
824+
var value = (String) enumVar.get("value");
825+
if (!isString) {
826+
if (value.startsWith("(short)")) {
827+
value = value.replace("(short) ", "");
828+
} else if (value.startsWith("(byte)")) {
829+
value = value.replace("(byte) ", "");
830+
}
831+
var argPos = value.indexOf('(');
832+
// case for BigDecimal
833+
if (argPos >= 0) {
834+
value = value.substring(argPos + 1, value.indexOf(')'));
835+
}
836+
var upperValue = value.toUpperCase(Locale.ENGLISH);
837+
if (upperValue.endsWith("F")
838+
|| upperValue.endsWith("L")
839+
|| upperValue.endsWith("D")) {
840+
value = value.substring(0, value.length() - 1);
841+
}
842+
if (!value.contains("'")) {
843+
value = value.replace("'", "");
844+
}
845+
if (!value.contains("\"")) {
846+
value = "\"" + value + "\"";
847+
}
848+
}
849+
if (value.equals("\"" + enumConstName + '"')) {
850+
return enumVar;
851+
}
852+
}
853+
return null;
854+
}
782855
}

openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1596,7 +1596,9 @@ private void processOperation(String resourcePath, String httpMethod, Operation
15961596
}
15971597

15981598
if (tags.isEmpty()) {
1599-
tags.add(new Tag().name("default"));
1599+
var defaultTag = new Tag().name("default");
1600+
defaultTag.addExtension("x-autogenerated", true);
1601+
tags.add(defaultTag);
16001602
}
16011603

16021604
/*

openapi-generator/src/main/resources/templates/java-micronaut/common/model/enum.mustache

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,21 @@
3131
{{#formatSingleLine}}public enum {{>common/model/enumName}}{{#vendorExtensions.x-implements}}{{#-first}} implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}}{{/formatSingleLine}} {
3232
3333
{{#allowableValues}}
34-
{{#enumVars}}
34+
{{#enumVars}}{{#formatNoEmptyLines}}
3535
{{#enumDescription}}
3636
/**
3737
* {{{enumDescription}}}
38+
{{#deprecated}}
39+
*
40+
* @deprecated{{#enumDeprecatedMessage}} {{{.}}}{{/enumDeprecatedMessage}}{{/deprecated}}
3841
*/
3942
{{/enumDescription}}
43+
{{^enumDescription}}{{#deprecated}}
44+
/**
45+
*
46+
* @deprecated{{#enumDeprecatedMessage}} {{{.}}}{{/enumDeprecatedMessage}}
47+
*/
48+
{{/deprecated}}{{/enumDescription}}
4049
{{#withXml}}
4150
@XmlEnumValue({{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isLong}}"{{/isLong}}{{#isFloat}}"{{/isFloat}}{{{value}}}{{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isLong}}"{{/isLong}}{{#isFloat}}"{{/isFloat}})
4251
{{/withXml}}
@@ -46,6 +55,7 @@
4655
@JsonProperty({{{strValue}}})
4756
{{{name}}}({{{value}}}),{{#-last}}
4857
;{{/-last}}
58+
{{/formatNoEmptyLines}}
4959
{{/enumVars}}
5060
{{/allowableValues}}
5161

openapi-generator/src/main/resources/templates/java-micronaut/server/controller-interface.mustache

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,18 +38,21 @@ import io.swagger.v3.oas.annotations.tags.Tag;
3838
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
3939
{{/generateSwagger2Annotations}}
4040
{{/formatNoEmptyLines}}
41-
4241
{{#formatOneEmptyLine}}
42+
{{#formatNoEmptyLines}}
4343
{{#generatedAnnotation}}
4444
{{>common/generatedAnnotation}}
4545
{{/generatedAnnotation}}
4646
{{^generateControllerAsAbstract}}
4747
@Controller
4848
{{/generateControllerAsAbstract}}
4949
{{#generateSwagger2Annotations}}
50-
@Tag(name = "{{{vendorExtensions.normalizedBaseTag}}}"{{#vendorExtensions.normalizedTagDesc}}, description = "{{{.}}}"{{/vendorExtensions.normalizedTagDesc}})
50+
{{#normalizedBaseTag}}
51+
@Tag(name = "{{{normalizedBaseTag}}}"{{#normalizedTagDesc}}, description = "{{{.}}}"{{/normalizedTagDesc}})
52+
{{/normalizedBaseTag}}
5153
{{/generateSwagger2Annotations}}
5254
public interface {{classname}} {
55+
{{/formatNoEmptyLines}}
5356

5457
{{#operations}}
5558
{{#operation}}

openapi-generator/src/main/resources/templates/kotlin-micronaut/common/model/enum.mustache

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* @param value The value represented by this enum
55
{{#isDeprecated}}
66
*
7-
* @deprecated {{#vendorExtensions.x-deprecated-message}} {{{.}}}{{/vendorExtensions.x-deprecated-message}}
7+
* @deprecated{{#vendorExtensions.x-deprecated-message}} {{{.}}}{{/vendorExtensions.x-deprecated-message}}
88
{{/isDeprecated}}
99
*/
1010
{{#isDeprecated}}
@@ -32,21 +32,31 @@
3232
){{#vendorExtensions.x-implements}}{{#-first}} : {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
3333
3434
{{#allowableValues}}
35-
{{#enumVars}}
35+
{{#enumVars}}{{#formatNoEmptyLines}}
3636
{{#enumDescription}}
3737
/**
38-
* {{enumDescription}}
38+
* {{{enumDescription}}}
39+
{{#deprecated}}
40+
*
41+
* @deprecated{{#enumDeprecatedMessage}} {{{.}}}{{/enumDeprecatedMessage}}{{/deprecated}}
3942
*/
4043
{{/enumDescription}}
44+
{{^enumDescription}}{{#deprecated}}
45+
/**
46+
*
47+
* @deprecated{{#enumDeprecatedMessage}} {{{.}}}{{/enumDeprecatedMessage}}
48+
*/
49+
{{/deprecated}}{{/enumDescription}}
4150
{{#withXml}}
4251
@XmlEnumValue({{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isLong}}"{{/isLong}}{{#isFloat}}"{{/isFloat}}{{{value}}}{{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isLong}}"{{/isLong}}{{#isFloat}}"{{/isFloat}})
4352
{{/withXml}}
4453
{{#deprecated}}
45-
@Deprecated("")
54+
@Deprecated("{{#enumDeprecatedMessageNormalized}}{{{.}}}{{/enumDeprecatedMessageNormalized}}")
4655
{{/deprecated}}
4756
@JsonProperty({{{strValueNormalized}}})
4857
{{{name}}}({{{valueNormalized}}}),{{#-last}}
4958
;{{/-last}}
59+
{{/formatNoEmptyLines}}
5060
{{/enumVars}}
5161
{{/allowableValues}}
5262

openapi-generator/src/main/resources/templates/kotlin-micronaut/common/operationAnnotations.mustache

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,21 @@
1414
{{#-first}}
1515
*
1616
{{/-first}}
17-
* @param {{paramName}}{{#description}} {{{description}}}{{/description}}{{#required}} (required){{/required}}{{^required}} (optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}{{#vendorExtensions.x-deprecated-message}}
17+
* @param {{{vendorExtensions.realName}}}{{#description}} {{{description}}}{{/description}}{{#required}} (required){{/required}}{{^required}} (optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}{{#vendorExtensions.x-deprecated-message}}
1818
* Deprecated: {{{.}}}{{/vendorExtensions.x-deprecated-message}}
1919
{{/vendorExtensions.originalParams}}
20-
{{#returnType}}
20+
{{#returnType}}
2121
*
2222
* @return {{#responses}}{{{message}}} (status code {{code}}){{^-last}}
2323
* or {{/-last}}{{/responses}}
24-
{{/returnType}}
24+
{{/returnType}}
2525
{{#isDeprecated}}
2626
*
27-
* @deprecated{{#vendorExtensions.x-deprecated-message}} {{{.}}}{{/vendorExtensions.x-deprecated-message}}
28-
{{/isDeprecated}}
27+
* @deprecated{{#vendorExtensions.x-deprecated-message}} {{{.}}}{{/vendorExtensions.x-deprecated-message}}{{/isDeprecated}}
2928
{{#externalDocs}}{{#description}}
3029
* {{{description}}}{{/description}}
3130
*
32-
* @see <a href="{{url}}">{{{summary}}} Documentation</a>
33-
{{/externalDocs}}
31+
* @see <a href="{{url}}">{{{summary}}} Documentation</a>{{/externalDocs}}
3432
*/
3533
{{#isDeprecated}}
3634
@Deprecated("{{#vendorExtensions.x-deprecated-message-normalized}}{{{.}}}{{/vendorExtensions.x-deprecated-message-normalized}}")

0 commit comments

Comments
 (0)