Skip to content

Commit 8b45161

Browse files
Add property for query json-serialization
1 parent 9ae0c35 commit 8b45161

File tree

3 files changed

+20
-1
lines changed

3 files changed

+20
-1
lines changed

modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ public class CodegenParameter implements IJsonSchemaValidationProperties {
4646
public boolean isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal, isByteArray, isBinary,
4747
isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isPassword, isFreeFormObject, isAnyType, isShort, isUnboundedInteger;
4848
public boolean isArray, isMap;
49+
/**
50+
* If a query parameter should be serialized as json
51+
*/
52+
public boolean queryIsJsonMimeType;
4953
/**
5054
* datatype is the generic inner parameter of a std::optional for C++, or Optional (Java)
5155
*/
@@ -265,6 +269,7 @@ public CodegenParameter copy() {
265269
output.isAnyType = this.isAnyType;
266270
output.isArray = this.isArray;
267271
output.isMap = this.isMap;
272+
output.queryIsJsonMimeType = this.queryIsJsonMimeType;
268273
output.isOptional = this.isOptional;
269274
output.isExplode = this.isExplode;
270275
output.style = this.style;
@@ -289,7 +294,7 @@ public int hashCode() {
289294
isFormStyle, isSpaceDelimited, isPipeDelimited,
290295
jsonSchema, isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal,
291296
isByteArray, isBinary, isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isPassword,
292-
isFreeFormObject, isAnyType, isArray, isMap, isOptional, isFile, isEnum, isEnumRef, _enum, allowableValues,
297+
isFreeFormObject, isAnyType, isArray, isMap, queryIsJsonMimeType, isOptional, isFile, isEnum, isEnumRef, _enum, allowableValues,
293298
items, mostInnerItems, additionalProperties, vars, requiredVars, vendorExtensions, hasValidation,
294299
getMaxProperties(), getMinProperties(), isNullable, isDeprecated, required, getMaximum(),
295300
getExclusiveMaximum(), getMinimum(), getExclusiveMinimum(), getMaxLength(), getMinLength(),
@@ -339,6 +344,7 @@ public boolean equals(Object o) {
339344
isAnyType == that.isAnyType &&
340345
isArray == that.isArray &&
341346
isMap == that.isMap &&
347+
queryIsJsonMimeType == that.queryIsJsonMimeType &&
342348
isOptional == that.isOptional &&
343349
isFile == that.isFile &&
344350
isEnum == that.isEnum &&
@@ -479,6 +485,7 @@ public String toString() {
479485
sb.append(", isAnyType=").append(isAnyType);
480486
sb.append(", isArray=").append(isArray);
481487
sb.append(", isMap=").append(isMap);
488+
sb.append(", queryIsJsonMimeType=").append(queryIsJsonMimeType);
482489
sb.append(", isOptional=").append(isOptional);
483490
sb.append(", isFile=").append(isFile);
484491
sb.append(", isEnum=").append(isEnum);

modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5359,6 +5359,7 @@ public CodegenParameter fromParameter(Parameter parameter, Set<String> imports)
53595359
if (parameter instanceof QueryParameter || "query".equalsIgnoreCase(parameter.getIn())) {
53605360
codegenParameter.isQueryParam = true;
53615361
codegenParameter.isAllowEmptyValue = parameter.getAllowEmptyValue() != null && parameter.getAllowEmptyValue();
5362+
codegenParameter.queryIsJsonMimeType = isJsonMimeType(codegenParameter.contentType);
53625363
} else if (parameter instanceof PathParameter || "path".equalsIgnoreCase(parameter.getIn())) {
53635364
codegenParameter.required = true;
53645365
codegenParameter.isPathParam = true;

modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5006,4 +5006,15 @@ public void testSingleRequestParameter_hasSingleParamTrue() {
50065006
// When & Then
50075007
assertThat(codegenOperation.getHasSingleParam()).isTrue();
50085008
}
5009+
5010+
@Test
5011+
public void testQueryIsJsonMimeType() {
5012+
DefaultCodegen codegen = new DefaultCodegen();
5013+
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/echo_api.yaml");
5014+
codegen.setOpenAPI(openAPI);
5015+
String path = "/query/style_jsonSerialization/object";
5016+
CodegenOperation codegenOperation = codegen.fromOperation(path, "GET", openAPI.getPaths().get(path).getGet(), null);
5017+
5018+
assertTrue(codegenOperation.queryParams.stream().allMatch(p -> p.queryIsJsonMimeType));
5019+
}
50095020
}

0 commit comments

Comments
 (0)