Skip to content

Commit d74cefb

Browse files
authored
[JAVA][APACHE] Fix apache http client query parameters (#14020)
* Fix apache http client query parameters * Update samples
1 parent 906ec5d commit d74cefb

8 files changed

Lines changed: 116 additions & 38 deletions

File tree

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

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,30 @@ public class {{classname}} {
8383
{{javaUtilPrefix}}Map<String, Object> localVarFormParams = new {{javaUtilPrefix}}HashMap<String, Object>();
8484

8585
{{#queryParams}}
86+
{{#isDeepObject}}
8687
{{#collectionFormat}}localVarCollectionQueryParams.addAll(apiClient.parameterToPairs("{{{collectionFormat}}}", {{/collectionFormat}}{{^collectionFormat}}localVarQueryParams.addAll(apiClient.parameterToPair({{/collectionFormat}}"{{baseName}}", {{paramName}}));
88+
{{/isDeepObject}}
89+
{{^isDeepObject}}
90+
{{#isExplode}}
91+
{{#hasVars}}
92+
{{#vars}}
93+
{{#isArray}}
94+
localVarQueryParams.addAll(apiClient.parameterToPair("multi", "{{baseName}}", {{paramName}}.{{getter}}()));
95+
{{/isArray}}
96+
{{^isArray}}
97+
localVarQueryParams.addAll(apiClient.parameterToPair("{{baseName}}", {{paramName}}.{{getter}}()));
98+
{{/isArray}}
99+
{{/vars}}
100+
{{/hasVars}}
101+
{{^hasVars}}
102+
{{#collectionFormat}}localVarCollectionQueryParams.addAll(apiClient.parameterToPairs("{{{collectionFormat}}}", {{/collectionFormat}}{{^collectionFormat}}localVarQueryParams.addAll(apiClient.parameterToPair({{/collectionFormat}}"{{baseName}}", {{paramName}}));
103+
{{/hasVars}}
104+
{{/isExplode}}
105+
{{^isExplode}}
106+
{{#collectionFormat}}localVarCollectionQueryParams.addAll(apiClient.parameterToPairs("{{{collectionFormat}}}", {{/collectionFormat}}{{^collectionFormat}}localVarQueryParams.addAll(apiClient.parameterToPair({{/collectionFormat}}"{{baseName}}", {{paramName}}));
107+
{{/isExplode}}
108+
{{/isDeepObject}}
87109
{{/queryParams}}
88-
89110
{{#headerParams}}if ({{paramName}} != null)
90111
localVarHeaderParams.put("{{baseName}}", apiClient.parameterToString({{paramName}}));
91112
{{/headerParams}}
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
/*
2+
* Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech)
3+
* Copyright 2018 SmartBear Software
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License");
6+
* you may not use this file except in compliance with the License.
7+
* You may obtain a copy of the License at
8+
*
9+
* https://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
package org.openapitools.codegen.java.apachehttpclient;
19+
20+
import org.openapitools.codegen.ClientOptInput;
21+
import org.openapitools.codegen.CodegenConstants;
22+
import org.openapitools.codegen.DefaultGenerator;
23+
import org.openapitools.codegen.TestUtils;
24+
import org.openapitools.codegen.config.CodegenConfigurator;
25+
import org.openapitools.codegen.languages.JavaClientCodegen;
26+
import org.testng.Assert;
27+
import org.testng.annotations.Test;
28+
29+
import java.io.File;
30+
import java.io.IOException;
31+
import java.nio.file.Files;
32+
import java.nio.file.Paths;
33+
import java.util.HashMap;
34+
import java.util.List;
35+
import java.util.Map;
36+
37+
import static org.openapitools.codegen.TestUtils.validateJavaSourceFiles;
38+
39+
public class ApacheHttpClientCodegenTest {
40+
41+
@Test
42+
public void testApacheHttpClientExplodedQueryParamObject() throws IOException {
43+
Map<String, Object> properties = new HashMap<>();
44+
properties.put(CodegenConstants.API_PACKAGE, "xyz.abcdef.api");
45+
46+
File output = Files.createTempDirectory("test").toFile();
47+
output.deleteOnExit();
48+
49+
final CodegenConfigurator configurator = new CodegenConfigurator()
50+
.setGeneratorName("java")
51+
.setLibrary(JavaClientCodegen.APACHE)
52+
.setAdditionalProperties(properties)
53+
.setInputSpec("src/test/resources/3_0/issue4808.yaml")
54+
.setOutputDir(output.getAbsolutePath().replace("\\", "/"));
55+
56+
final ClientOptInput clientOptInput = configurator.toClientOptInput();
57+
DefaultGenerator generator = new DefaultGenerator();
58+
List<File> files = generator.opts(clientOptInput).generate();
59+
60+
Assert.assertEquals(files.size(), 41);
61+
validateJavaSourceFiles(files);
62+
63+
TestUtils.assertFileContains(Paths.get(output + "/src/main/java/xyz/abcdef/api/DefaultApi.java"),
64+
"localVarQueryParams.addAll(apiClient.parameterToPair(\"since\", queryObject.getSince()));",
65+
"localVarQueryParams.addAll(apiClient.parameterToPair(\"sinceBuild\", queryObject.getSinceBuild()));",
66+
"localVarQueryParams.addAll(apiClient.parameterToPair(\"maxBuilds\", queryObject.getMaxBuilds()));",
67+
"localVarQueryParams.addAll(apiClient.parameterToPair(\"maxWaitSecs\", queryObject.getMaxWaitSecs()));"
68+
);
69+
}
70+
71+
@Test
72+
public void testApacheHttpClientExplodedQueryParamWithArrayProperty() throws IOException {
73+
Map<String, Object> properties = new HashMap<>();
74+
properties.put(CodegenConstants.API_PACKAGE, "xyz.abcdef.api");
75+
76+
File output = Files.createTempDirectory("test").toFile();
77+
output.deleteOnExit();
78+
79+
final CodegenConfigurator configurator = new CodegenConfigurator()
80+
.setGeneratorName("java")
81+
.setLibrary(JavaClientCodegen.APACHE)
82+
.setAdditionalProperties(properties)
83+
.setInputSpec("src/test/resources/3_0/exploded-query-param-array.yaml")
84+
.setOutputDir(output.getAbsolutePath().replace("\\", "/"));
85+
86+
final ClientOptInput clientOptInput = configurator.toClientOptInput();
87+
DefaultGenerator generator = new DefaultGenerator();
88+
generator.opts(clientOptInput).generate();
89+
90+
TestUtils.assertFileContains(Paths.get(output + "/src/main/java/xyz/abcdef/api/DefaultApi.java"),
91+
"localVarQueryParams.addAll(apiClient.parameterToPair(\"multi\", \"values\", queryObject.getValues()))"
92+
);
93+
}
94+
}

samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/AnotherFakeApi.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ public Client call123testSpecialTags(Client body) throws ApiException {
7373
Map<String, String> localVarCookieParams = new HashMap<String, String>();
7474
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
7575

76-
7776

7877

7978

samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/FakeApi.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ public void createXmlItem(XmlItem xmlItem) throws ApiException {
8080
Map<String, String> localVarCookieParams = new HashMap<String, String>();
8181
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
8282

83-
8483

8584

8685

@@ -131,7 +130,6 @@ public Boolean fakeOuterBooleanSerialize(Boolean body) throws ApiException {
131130
Map<String, String> localVarCookieParams = new HashMap<String, String>();
132131
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
133132

134-
135133

136134

137135

@@ -183,7 +181,6 @@ public OuterComposite fakeOuterCompositeSerialize(OuterComposite body) throws Ap
183181
Map<String, String> localVarCookieParams = new HashMap<String, String>();
184182
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
185183

186-
187184

188185

189186

@@ -235,7 +232,6 @@ public BigDecimal fakeOuterNumberSerialize(BigDecimal body) throws ApiException
235232
Map<String, String> localVarCookieParams = new HashMap<String, String>();
236233
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
237234

238-
239235

240236

241237

@@ -287,7 +283,6 @@ public String fakeOuterStringSerialize(String body) throws ApiException {
287283
Map<String, String> localVarCookieParams = new HashMap<String, String>();
288284
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
289285

290-
291286

292287

293288

@@ -343,7 +338,6 @@ public void testBodyWithFileSchema(FileSchemaTestClass body) throws ApiException
343338
Map<String, String> localVarCookieParams = new HashMap<String, String>();
344339
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
345340

346-
347341

348342

349343

@@ -405,7 +399,6 @@ public void testBodyWithQueryParams(String query, User body) throws ApiException
405399
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
406400

407401
localVarQueryParams.addAll(apiClient.parameterToPair("query", query));
408-
409402

410403

411404

@@ -461,7 +454,6 @@ public Client testClientModel(Client body) throws ApiException {
461454
Map<String, String> localVarCookieParams = new HashMap<String, String>();
462455
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
463456

464-
465457

466458

467459

@@ -545,7 +537,6 @@ public void testEndpointParameters(BigDecimal number, Double _double, String pat
545537
Map<String, String> localVarCookieParams = new HashMap<String, String>();
546538
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
547539

548-
549540

550541

551542
if (integer != null)
@@ -634,7 +625,6 @@ public void testEnumParameters(List<String> enumHeaderStringArray, String enumHe
634625
localVarQueryParams.addAll(apiClient.parameterToPair("enum_query_string", enumQueryString));
635626
localVarQueryParams.addAll(apiClient.parameterToPair("enum_query_integer", enumQueryInteger));
636627
localVarQueryParams.addAll(apiClient.parameterToPair("enum_query_double", enumQueryDouble));
637-
638628
if (enumHeaderStringArray != null)
639629
localVarHeaderParams.put("enum_header_string_array", apiClient.parameterToString(enumHeaderStringArray));
640630
if (enumHeaderString != null)
@@ -716,7 +706,6 @@ public void testGroupParameters(Integer requiredStringGroup, Boolean requiredBoo
716706
localVarQueryParams.addAll(apiClient.parameterToPair("required_int64_group", requiredInt64Group));
717707
localVarQueryParams.addAll(apiClient.parameterToPair("string_group", stringGroup));
718708
localVarQueryParams.addAll(apiClient.parameterToPair("int64_group", int64Group));
719-
720709
if (requiredBooleanGroup != null)
721710
localVarHeaderParams.put("required_boolean_group", apiClient.parameterToString(requiredBooleanGroup));
722711
if (booleanGroup != null)
@@ -775,7 +764,6 @@ public void testInlineAdditionalProperties(Map<String, String> param) throws Api
775764
Map<String, String> localVarCookieParams = new HashMap<String, String>();
776765
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
777766

778-
779767

780768

781769

@@ -836,7 +824,6 @@ public void testJsonFormData(String param, String param2) throws ApiException {
836824
Map<String, String> localVarCookieParams = new HashMap<String, String>();
837825
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
838826

839-
840827

841828

842829
if (param != null)
@@ -924,7 +911,6 @@ public void testQueryParameterCollectionFormat(List<String> pipe, List<String> i
924911
localVarCollectionQueryParams.addAll(apiClient.parameterToPairs("ssv", "http", http));
925912
localVarCollectionQueryParams.addAll(apiClient.parameterToPairs("csv", "url", url));
926913
localVarCollectionQueryParams.addAll(apiClient.parameterToPairs("multi", "context", context));
927-
928914

929915

930916

samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ public Client testClassname(Client body) throws ApiException {
7373
Map<String, String> localVarCookieParams = new HashMap<String, String>();
7474
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
7575

76-
7776

7877

7978

samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/PetApi.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ public void addPet(Pet body) throws ApiException {
7575
Map<String, String> localVarCookieParams = new HashMap<String, String>();
7676
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
7777

78-
7978

8079

8180

@@ -132,7 +131,6 @@ public void deletePet(Long petId, String apiKey) throws ApiException {
132131
Map<String, String> localVarCookieParams = new HashMap<String, String>();
133132
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
134133

135-
136134
if (apiKey != null)
137135
localVarHeaderParams.put("api_key", apiClient.parameterToString(apiKey));
138136

@@ -191,7 +189,6 @@ public List<Pet> findPetsByStatus(List<String> status) throws ApiException {
191189
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
192190

193191
localVarCollectionQueryParams.addAll(apiClient.parameterToPairs("csv", "status", status));
194-
195192

196193

197194

@@ -251,7 +248,6 @@ public Set<Pet> findPetsByTags(Set<String> tags) throws ApiException {
251248
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
252249

253250
localVarCollectionQueryParams.addAll(apiClient.parameterToPairs("csv", "tags", tags));
254-
255251

256252

257253

@@ -309,7 +305,6 @@ public Pet getPetById(Long petId) throws ApiException {
309305
Map<String, String> localVarCookieParams = new HashMap<String, String>();
310306
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
311307

312-
313308

314309

315310

@@ -365,7 +360,6 @@ public void updatePet(Pet body) throws ApiException {
365360
Map<String, String> localVarCookieParams = new HashMap<String, String>();
366361
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
367362

368-
369363

370364

371365

@@ -423,7 +417,6 @@ public void updatePetWithForm(Long petId, String name, String status) throws Api
423417
Map<String, String> localVarCookieParams = new HashMap<String, String>();
424418
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
425419

426-
427420

428421

429422
if (name != null)
@@ -486,7 +479,6 @@ public ModelApiResponse uploadFile(Long petId, String additionalMetadata, File _
486479
Map<String, String> localVarCookieParams = new HashMap<String, String>();
487480
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
488481

489-
490482

491483

492484
if (additionalMetadata != null)
@@ -555,7 +547,6 @@ public ModelApiResponse uploadFileWithRequiredFile(Long petId, File requiredFile
555547
Map<String, String> localVarCookieParams = new HashMap<String, String>();
556548
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
557549

558-
559550

560551

561552
if (additionalMetadata != null)

samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/StoreApi.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ public void deleteOrder(String orderId) throws ApiException {
7373
Map<String, String> localVarCookieParams = new HashMap<String, String>();
7474
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
7575

76-
7776

7877

7978

@@ -123,7 +122,6 @@ public Map<String, Integer> getInventory() throws ApiException {
123122
Map<String, String> localVarCookieParams = new HashMap<String, String>();
124123
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
125124

126-
127125

128126

129127

@@ -181,7 +179,6 @@ public Order getOrderById(Long orderId) throws ApiException {
181179
Map<String, String> localVarCookieParams = new HashMap<String, String>();
182180
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
183181

184-
185182

186183

187184

@@ -238,7 +235,6 @@ public Order placeOrder(Order body) throws ApiException {
238235
Map<String, String> localVarCookieParams = new HashMap<String, String>();
239236
Map<String, Object> localVarFormParams = new HashMap<String, Object>();
240237

241-
242238

243239

244240

0 commit comments

Comments
 (0)