From f812bfc3882fa5f7d0342b59b6d302cd06d20142 Mon Sep 17 00:00:00 2001 From: Sorin Florea Date: Tue, 15 Nov 2022 08:54:10 +0100 Subject: [PATCH 1/2] Fix apache http client query parameters --- .../libraries/apache-httpclient/api.mustache | 23 ++++- .../ApacheHttpClientCodegenTest.java | 94 +++++++++++++++++++ 2 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 modules/openapi-generator/src/test/java/org/openapitools/codegen/java/apachehttpclient/ApacheHttpClientCodegenTest.java diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/apache-httpclient/api.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/apache-httpclient/api.mustache index 44122a1e0693..5e6ec0b0b2fc 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/apache-httpclient/api.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/apache-httpclient/api.mustache @@ -83,9 +83,30 @@ public class {{classname}} { {{javaUtilPrefix}}Map localVarFormParams = new {{javaUtilPrefix}}HashMap(); {{#queryParams}} + {{#isDeepObject}} {{#collectionFormat}}localVarCollectionQueryParams.addAll(apiClient.parameterToPairs("{{{collectionFormat}}}", {{/collectionFormat}}{{^collectionFormat}}localVarQueryParams.addAll(apiClient.parameterToPair({{/collectionFormat}}"{{baseName}}", {{paramName}})); + {{/isDeepObject}} + {{^isDeepObject}} + {{#isExplode}} + {{#hasVars}} + {{#vars}} + {{#isArray}} + localVarQueryParams.addAll(apiClient.parameterToPair("multi", "{{baseName}}", {{paramName}}.{{getter}}())); + {{/isArray}} + {{^isArray}} + localVarQueryParams.addAll(apiClient.parameterToPair("{{baseName}}", {{paramName}}.{{getter}}())); + {{/isArray}} + {{/vars}} + {{/hasVars}} + {{^hasVars}} + {{#collectionFormat}}localVarCollectionQueryParams.addAll(apiClient.parameterToPairs("{{{collectionFormat}}}", {{/collectionFormat}}{{^collectionFormat}}localVarQueryParams.addAll(apiClient.parameterToPair({{/collectionFormat}}"{{baseName}}", {{paramName}})); + {{/hasVars}} + {{/isExplode}} + {{^isExplode}} + {{#collectionFormat}}localVarCollectionQueryParams.addAll(apiClient.parameterToPairs("{{{collectionFormat}}}", {{/collectionFormat}}{{^collectionFormat}}localVarQueryParams.addAll(apiClient.parameterToPair({{/collectionFormat}}"{{baseName}}", {{paramName}})); + {{/isExplode}} + {{/isDeepObject}} {{/queryParams}} - {{#headerParams}}if ({{paramName}} != null) localVarHeaderParams.put("{{baseName}}", apiClient.parameterToString({{paramName}})); {{/headerParams}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/apachehttpclient/ApacheHttpClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/apachehttpclient/ApacheHttpClientCodegenTest.java new file mode 100644 index 000000000000..8ec55391db14 --- /dev/null +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/apachehttpclient/ApacheHttpClientCodegenTest.java @@ -0,0 +1,94 @@ +/* + * Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech) + * Copyright 2018 SmartBear Software + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openapitools.codegen.java.apachehttpclient; + +import org.openapitools.codegen.ClientOptInput; +import org.openapitools.codegen.CodegenConstants; +import org.openapitools.codegen.DefaultGenerator; +import org.openapitools.codegen.TestUtils; +import org.openapitools.codegen.config.CodegenConfigurator; +import org.openapitools.codegen.languages.JavaClientCodegen; +import org.testng.Assert; +import org.testng.annotations.Test; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.openapitools.codegen.TestUtils.validateJavaSourceFiles; + +public class ApacheHttpClientCodegenTest { + + @Test + public void testApacheHttpClientExplodedQueryParamObject() throws IOException { + Map properties = new HashMap<>(); + properties.put(CodegenConstants.API_PACKAGE, "xyz.abcdef.api"); + + File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("java") + .setLibrary(JavaClientCodegen.APACHE) + .setAdditionalProperties(properties) + .setInputSpec("src/test/resources/3_0/issue4808.yaml") + .setOutputDir(output.getAbsolutePath().replace("\\", "/")); + + final ClientOptInput clientOptInput = configurator.toClientOptInput(); + DefaultGenerator generator = new DefaultGenerator(); + List files = generator.opts(clientOptInput).generate(); + + Assert.assertEquals(files.size(), 41); + validateJavaSourceFiles(files); + + TestUtils.assertFileContains(Paths.get(output + "/src/main/java/xyz/abcdef/api/DefaultApi.java"), + "localVarQueryParams.addAll(apiClient.parameterToPair(\"since\", queryObject.getSince()));", + "localVarQueryParams.addAll(apiClient.parameterToPair(\"sinceBuild\", queryObject.getSinceBuild()));", + "localVarQueryParams.addAll(apiClient.parameterToPair(\"maxBuilds\", queryObject.getMaxBuilds()));", + "localVarQueryParams.addAll(apiClient.parameterToPair(\"maxWaitSecs\", queryObject.getMaxWaitSecs()));" + ); + } + + @Test + public void testApacheHttpClientExplodedQueryParamWithArrayProperty() throws IOException { + Map properties = new HashMap<>(); + properties.put(CodegenConstants.API_PACKAGE, "xyz.abcdef.api"); + + File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("java") + .setLibrary(JavaClientCodegen.APACHE) + .setAdditionalProperties(properties) + .setInputSpec("src/test/resources/3_0/exploded-query-param-array.yaml") + .setOutputDir(output.getAbsolutePath().replace("\\", "/")); + + final ClientOptInput clientOptInput = configurator.toClientOptInput(); + DefaultGenerator generator = new DefaultGenerator(); + generator.opts(clientOptInput).generate(); + + TestUtils.assertFileContains(Paths.get(output + "/src/main/java/xyz/abcdef/api/DefaultApi.java"), + "localVarQueryParams.addAll(apiClient.parameterToPair(\"multi\", \"values\", queryObject.getValues()))" + ); + } +} From 885b6f0a48ff7691893bdb7c225e027bfb87ddd1 Mon Sep 17 00:00:00 2001 From: Sorin Florea Date: Tue, 15 Nov 2022 09:27:24 +0100 Subject: [PATCH 2/2] Update samples --- .../openapitools/client/api/AnotherFakeApi.java | 1 - .../java/org/openapitools/client/api/FakeApi.java | 14 -------------- .../client/api/FakeClassnameTags123Api.java | 1 - .../java/org/openapitools/client/api/PetApi.java | 9 --------- .../java/org/openapitools/client/api/StoreApi.java | 4 ---- .../java/org/openapitools/client/api/UserApi.java | 8 -------- 6 files changed, 37 deletions(-) diff --git a/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/AnotherFakeApi.java b/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/AnotherFakeApi.java index ff037abf4ae5..8077d1f92d15 100644 --- a/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/AnotherFakeApi.java +++ b/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/AnotherFakeApi.java @@ -73,7 +73,6 @@ public Client call123testSpecialTags(Client body) throws ApiException { Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - diff --git a/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/FakeApi.java b/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/FakeApi.java index 746ca46f6154..9b1ca28923dd 100644 --- a/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/FakeApi.java +++ b/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/FakeApi.java @@ -80,7 +80,6 @@ public void createXmlItem(XmlItem xmlItem) throws ApiException { Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - @@ -131,7 +130,6 @@ public Boolean fakeOuterBooleanSerialize(Boolean body) throws ApiException { Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - @@ -183,7 +181,6 @@ public OuterComposite fakeOuterCompositeSerialize(OuterComposite body) throws Ap Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - @@ -235,7 +232,6 @@ public BigDecimal fakeOuterNumberSerialize(BigDecimal body) throws ApiException Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - @@ -287,7 +283,6 @@ public String fakeOuterStringSerialize(String body) throws ApiException { Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - @@ -343,7 +338,6 @@ public void testBodyWithFileSchema(FileSchemaTestClass body) throws ApiException Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - @@ -405,7 +399,6 @@ public void testBodyWithQueryParams(String query, User body) throws ApiException Map localVarFormParams = new HashMap(); localVarQueryParams.addAll(apiClient.parameterToPair("query", query)); - @@ -461,7 +454,6 @@ public Client testClientModel(Client body) throws ApiException { Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - @@ -545,7 +537,6 @@ public void testEndpointParameters(BigDecimal number, Double _double, String pat Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - if (integer != null) @@ -634,7 +625,6 @@ public void testEnumParameters(List enumHeaderStringArray, String enumHe localVarQueryParams.addAll(apiClient.parameterToPair("enum_query_string", enumQueryString)); localVarQueryParams.addAll(apiClient.parameterToPair("enum_query_integer", enumQueryInteger)); localVarQueryParams.addAll(apiClient.parameterToPair("enum_query_double", enumQueryDouble)); - if (enumHeaderStringArray != null) localVarHeaderParams.put("enum_header_string_array", apiClient.parameterToString(enumHeaderStringArray)); if (enumHeaderString != null) @@ -716,7 +706,6 @@ public void testGroupParameters(Integer requiredStringGroup, Boolean requiredBoo localVarQueryParams.addAll(apiClient.parameterToPair("required_int64_group", requiredInt64Group)); localVarQueryParams.addAll(apiClient.parameterToPair("string_group", stringGroup)); localVarQueryParams.addAll(apiClient.parameterToPair("int64_group", int64Group)); - if (requiredBooleanGroup != null) localVarHeaderParams.put("required_boolean_group", apiClient.parameterToString(requiredBooleanGroup)); if (booleanGroup != null) @@ -775,7 +764,6 @@ public void testInlineAdditionalProperties(Map param) throws Api Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - @@ -836,7 +824,6 @@ public void testJsonFormData(String param, String param2) throws ApiException { Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - if (param != null) @@ -924,7 +911,6 @@ public void testQueryParameterCollectionFormat(List pipe, List i localVarCollectionQueryParams.addAll(apiClient.parameterToPairs("ssv", "http", http)); localVarCollectionQueryParams.addAll(apiClient.parameterToPairs("csv", "url", url)); localVarCollectionQueryParams.addAll(apiClient.parameterToPairs("multi", "context", context)); - diff --git a/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java b/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java index 26c7960f5c79..35140333246b 100644 --- a/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java +++ b/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java @@ -73,7 +73,6 @@ public Client testClassname(Client body) throws ApiException { Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - diff --git a/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/PetApi.java b/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/PetApi.java index d0df79262eb1..e905e029279c 100644 --- a/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/PetApi.java +++ b/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/PetApi.java @@ -75,7 +75,6 @@ public void addPet(Pet body) throws ApiException { Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - @@ -132,7 +131,6 @@ public void deletePet(Long petId, String apiKey) throws ApiException { Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - if (apiKey != null) localVarHeaderParams.put("api_key", apiClient.parameterToString(apiKey)); @@ -191,7 +189,6 @@ public List findPetsByStatus(List status) throws ApiException { Map localVarFormParams = new HashMap(); localVarCollectionQueryParams.addAll(apiClient.parameterToPairs("csv", "status", status)); - @@ -251,7 +248,6 @@ public Set findPetsByTags(Set tags) throws ApiException { Map localVarFormParams = new HashMap(); localVarCollectionQueryParams.addAll(apiClient.parameterToPairs("csv", "tags", tags)); - @@ -309,7 +305,6 @@ public Pet getPetById(Long petId) throws ApiException { Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - @@ -365,7 +360,6 @@ public void updatePet(Pet body) throws ApiException { Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - @@ -423,7 +417,6 @@ public void updatePetWithForm(Long petId, String name, String status) throws Api Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - if (name != null) @@ -486,7 +479,6 @@ public ModelApiResponse uploadFile(Long petId, String additionalMetadata, File _ Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - if (additionalMetadata != null) @@ -555,7 +547,6 @@ public ModelApiResponse uploadFileWithRequiredFile(Long petId, File requiredFile Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - if (additionalMetadata != null) diff --git a/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/StoreApi.java b/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/StoreApi.java index 29b92b46e2bb..2ea892fb8df7 100644 --- a/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/StoreApi.java +++ b/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/StoreApi.java @@ -73,7 +73,6 @@ public void deleteOrder(String orderId) throws ApiException { Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - @@ -123,7 +122,6 @@ public Map getInventory() throws ApiException { Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - @@ -181,7 +179,6 @@ public Order getOrderById(Long orderId) throws ApiException { Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - @@ -238,7 +235,6 @@ public Order placeOrder(Order body) throws ApiException { Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - diff --git a/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/UserApi.java b/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/UserApi.java index 93653ea5824b..421e9604112b 100644 --- a/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/UserApi.java +++ b/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/api/UserApi.java @@ -73,7 +73,6 @@ public void createUser(User body) throws ApiException { Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - @@ -128,7 +127,6 @@ public void createUsersWithArrayInput(List body) throws ApiException { Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - @@ -183,7 +181,6 @@ public void createUsersWithListInput(List body) throws ApiException { Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - @@ -239,7 +236,6 @@ public void deleteUser(String username) throws ApiException { Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - @@ -296,7 +292,6 @@ public User getUserByName(String username) throws ApiException { Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - @@ -361,7 +356,6 @@ public String loginUser(String username, String password) throws ApiException { localVarQueryParams.addAll(apiClient.parameterToPair("username", username)); localVarQueryParams.addAll(apiClient.parameterToPair("password", password)); - @@ -411,7 +405,6 @@ public void logoutUser() throws ApiException { Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - @@ -473,7 +466,6 @@ public void updateUser(String username, User body) throws ApiException { Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); -