Skip to content

Commit 728abaf

Browse files
[Java][native] Fix: empty deepObject can produce invalid query [fix #18736] (#18737)
* fix empty query parameter string * update samples
1 parent 77365c3 commit 728abaf

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

modules/openapi-generator/src/main/resources/Java/libraries/native/api.mustache

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,10 @@ public class {{classname}} {
372372
}
373373
{{/isArray}}
374374
{{^isArray}}
375-
localVarQueryStringJoiner.add({{paramName}}.toUrlQueryString("{{baseName}}"));
375+
String queryString = {{paramName}}.toUrlQueryString("{{baseName}}");
376+
if (!queryString.isBlank()) {
377+
localVarQueryStringJoiner.add(queryString);
378+
}
376379
{{/isArray}}
377380
}
378381
{{/isDeepObject}}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,6 @@ public void deepObject() throws IOException {
5959

6060
assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/client/api/DefaultApi.java"),
6161
"options.toUrlQueryString(\"options\")",
62-
"inputOptions.toUrlQueryString(\"inputOptions\"))");
62+
"inputOptions.toUrlQueryString(\"inputOptions\")");
6363
}
6464
}

samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/QueryApi.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,10 @@ private HttpRequest.Builder testQueryStyleDeepObjectExplodeTrueObjectRequestBuil
453453
String localVarQueryParameterBaseName;
454454
localVarQueryParameterBaseName = "query_object";
455455
if (queryObject != null) {
456-
localVarQueryStringJoiner.add(queryObject.toUrlQueryString("query_object"));
456+
String queryString = queryObject.toUrlQueryString("query_object");
457+
if (!queryString.isBlank()) {
458+
localVarQueryStringJoiner.add(queryString);
459+
}
457460
}
458461

459462
if (!localVarQueryParams.isEmpty() || localVarQueryStringJoiner.length() != 0) {
@@ -546,7 +549,10 @@ private HttpRequest.Builder testQueryStyleDeepObjectExplodeTrueObjectAllOfReques
546549
String localVarQueryParameterBaseName;
547550
localVarQueryParameterBaseName = "query_object";
548551
if (queryObject != null) {
549-
localVarQueryStringJoiner.add(queryObject.toUrlQueryString("query_object"));
552+
String queryString = queryObject.toUrlQueryString("query_object");
553+
if (!queryString.isBlank()) {
554+
localVarQueryStringJoiner.add(queryString);
555+
}
550556
}
551557

552558
if (!localVarQueryParams.isEmpty() || localVarQueryStringJoiner.length() != 0) {

0 commit comments

Comments
 (0)