Skip to content

Commit 4ecb9f4

Browse files
authored
[java][native] Fix urlQuery string method in oneOf (#14488)
* better tests, fix oneOf in urlquery string method * update samples * update
1 parent 6e78021 commit 4ecb9f4

File tree

230 files changed

+23702
-1749
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

230 files changed

+23702
-1749
lines changed

bin/configs/java-native-async.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
generatorName: java
22
outputDir: samples/client/petstore/java/native-async
33
library: native
4-
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
4+
inputSpec: modules/openapi-generator/src/test/resources/3_0/java/native/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml
55
templateDir: modules/openapi-generator/src/main/resources/Java
66
additionalProperties:
77
artifactId: petstore-native

bin/configs/java-native.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
generatorName: java
22
outputDir: samples/client/petstore/java/native
33
library: native
4-
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
4+
inputSpec: modules/openapi-generator/src/test/resources/3_0/java/native/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml
55
templateDir: modules/openapi-generator/src/main/resources/Java
66
additionalProperties:
77
artifactId: petstore-native

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ public class {{classname}} {
372372
{{/hasVars}}
373373
{{^hasVars}}
374374
{{#isModel}}
375-
localVarQueryStringJoiner.add({{paramName}}.toUrlQueryString(null));
375+
localVarQueryStringJoiner.add({{paramName}}.toUrlQueryString());
376376
{{/isModel}}
377377
{{^isModel}}
378378
localVarQueryParams.addAll(ApiClient.parameterToPairs("{{baseName}}", {{paramName}}));

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

Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,4 +228,166 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im
228228
}
229229

230230
{{/oneOf}}
231+
232+
{{#supportUrlQuery}}
233+
234+
/**
235+
* Convert the instance into URL query string.
236+
*
237+
* @return URL query string
238+
*/
239+
public String toUrlQueryString() {
240+
return toUrlQueryString(null);
241+
}
242+
243+
/**
244+
* Convert the instance into URL query string.
245+
*
246+
* @param prefix prefix of the query string
247+
* @return URL query string
248+
*/
249+
public String toUrlQueryString(String prefix) {
250+
String suffix = "";
251+
String containerSuffix = "";
252+
String containerPrefix = "";
253+
if (prefix == null) {
254+
// style=form, explode=true, e.g. /pet?name=cat&type=manx
255+
prefix = "";
256+
} else {
257+
// deepObject style e.g. /pet?id[name]=cat&id[type]=manx
258+
prefix = prefix + "[";
259+
suffix = "]";
260+
containerSuffix = "]";
261+
containerPrefix = "[";
262+
}
263+
264+
StringJoiner joiner = new StringJoiner("&");
265+
266+
{{#composedSchemas.oneOf}}
267+
if (getActualInstance() instanceof {{{dataType}}}) {
268+
{{#isArray}}
269+
{{#items.isPrimitiveType}}
270+
{{#uniqueItems}}
271+
if (getActualInstance() != null) {
272+
int i = 0;
273+
for ({{items.dataType}} _item : ({{{dataType}}})getActualInstance()) {
274+
joiner.add(String.format("%s{{baseName}}%s%s=%s", prefix, suffix,
275+
"".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),
276+
URLEncoder.encode(String.valueOf(_item), StandardCharsets.UTF_8).replaceAll("\\+", "%20")));
277+
}
278+
i++;
279+
}
280+
{{/uniqueItems}}
281+
{{^uniqueItems}}
282+
if (getActualInstance() != null) {
283+
for (int i = 0; i < (({{{dataType}}})getActualInstance()).size(); i++) {
284+
joiner.add(String.format("%s{{baseName}}%s%s=%s", prefix, suffix,
285+
"".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),
286+
URLEncoder.encode(String.valueOf(getActualInstance().get(i)), StandardCharsets.UTF_8).replaceAll("\\+", "%20")));
287+
}
288+
}
289+
{{/uniqueItems}}
290+
{{/items.isPrimitiveType}}
291+
{{^items.isPrimitiveType}}
292+
{{#items.isModel}}
293+
{{#uniqueItems}}
294+
if (getActualInstance() != null) {
295+
int i = 0;
296+
for ({{items.dataType}} _item : ({{{dataType}}})getActualInstance()) {
297+
if ((({{{dataType}}})getActualInstance()).get(i) != null) {
298+
joiner.add(_item.toUrlQueryString(String.format("%s{{baseName}}%s%s", prefix, suffix,
299+
"".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix))));
300+
}
301+
}
302+
i++;
303+
}
304+
{{/uniqueItems}}
305+
{{^uniqueItems}}
306+
if (getActualInstance() != null) {
307+
for (int i = 0; i < (({{{dataType}}})getActualInstance()).size(); i++) {
308+
if ((({{{dataType}}})getActualInstance()).get(i) != null) {
309+
joiner.add((({{{items.dataType}}})getActualInstance()).get(i).toUrlQueryString(String.format("%s{{baseName}}%s%s", prefix, suffix,
310+
"".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix))));
311+
}
312+
}
313+
}
314+
{{/uniqueItems}}
315+
{{/items.isModel}}
316+
{{^items.isModel}}
317+
{{#uniqueItems}}
318+
if (getActualInstance() != null) {
319+
int i = 0;
320+
for ({{items.dataType}} _item : ({{{dataType}}})getActualInstance()) {
321+
if (_item != null) {
322+
joiner.add(String.format("%s{{baseName}}%s%s=%s", prefix, suffix,
323+
"".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix)),
324+
URLEncoder.encode(String.valueOf(_item), StandardCharsets.UTF_8).replaceAll("\\+", "%20"));
325+
}
326+
i++;
327+
}
328+
}
329+
{{/uniqueItems}}
330+
{{^uniqueItems}}
331+
if (getActualInstance() != null) {
332+
for (int i = 0; i < (({{{dataType}}})getActualInstance()).size(); i++) {
333+
if (getActualInstance().get(i) != null) {
334+
joiner.add(String.format("%s{{baseName}}%s%s=%s", prefix, suffix,
335+
"".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),
336+
URLEncoder.encode(String.valueOf((({{{dataType}}})getActualInstance()).get(i)), StandardCharsets.UTF_8).replaceAll("\\+", "%20")));
337+
}
338+
}
339+
}
340+
{{/uniqueItems}}
341+
{{/items.isModel}}
342+
{{/items.isPrimitiveType}}
343+
{{/isArray}}
344+
{{^isArray}}
345+
{{#isMap}}
346+
{{#items.isPrimitiveType}}
347+
if (getActualInstance() != null) {
348+
for (String _key : (({{{dataType}}})getActualInstance()).keySet()) {
349+
joiner.add(String.format("%s{{baseName}}%s%s=%s", prefix, suffix,
350+
"".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, _key, containerSuffix),
351+
getActualInstance().get(_key), URLEncoder.encode(String.valueOf((({{{dataType}}})getActualInstance()).get(_key)), StandardCharsets.UTF_8).replaceAll("\\+", "%20")));
352+
}
353+
}
354+
{{/items.isPrimitiveType}}
355+
{{^items.isPrimitiveType}}
356+
if (getActualInstance() != null) {
357+
for (String _key : (({{{dataType}}})getActualInstance()).keySet()) {
358+
if ((({{{dataType}}})getActualInstance()).get(_key) != null) {
359+
joiner.add((({{{items.dataType}}})getActualInstance()).get(_key).toUrlQueryString(String.format("%s{{baseName}}%s%s", prefix, suffix,
360+
"".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, _key, containerSuffix))));
361+
}
362+
}
363+
}
364+
{{/items.isPrimitiveType}}
365+
{{/isMap}}
366+
{{^isMap}}
367+
{{#isPrimitiveType}}
368+
if (getActualInstance() != null) {
369+
joiner.add(String.format("%s{{{baseName}}}%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getActualInstance()), StandardCharsets.UTF_8).replaceAll("\\+", "%20")));
370+
}
371+
{{/isPrimitiveType}}
372+
{{^isPrimitiveType}}
373+
{{#isModel}}
374+
if (getActualInstance() != null) {
375+
joiner.add((({{{dataType}}})getActualInstance()).toUrlQueryString(prefix + "{{{baseName}}}" + suffix));
376+
}
377+
{{/isModel}}
378+
{{^isModel}}
379+
if (getActualInstance() != null) {
380+
joiner.add(String.format("%s{{{baseName}}}%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getActualInstance()), StandardCharsets.UTF_8).replaceAll("\\+", "%20")));
381+
}
382+
{{/isModel}}
383+
{{/isPrimitiveType}}
384+
{{/isMap}}
385+
{{/isArray}}
386+
return joiner.toString();
387+
}
388+
{{/composedSchemas.oneOf}}
389+
return null;
390+
}
391+
{{/supportUrlQuery}}
392+
231393
}

0 commit comments

Comments
 (0)