Skip to content

Commit 57b1c91

Browse files
Munkenmmubd
andauthored
Added support for Cookie parameters (#20729)
Co-authored-by: Michael Munch <mmu@bankdata.dk>
1 parent c529b16 commit 57b1c91

File tree

6 files changed

+84
-2
lines changed

6 files changed

+84
-2
lines changed

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

+5-2
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public interface {{classname}} {
7272
@Produces({ {{#produces}}"{{{mediaType}}}"{{^-last}}, {{/-last}}{{/produces}} })
7373
{{/hasProduces}}
7474
{{^singleRequestParameter}}
75-
{{^vendorExtensions.x-java-is-response-void}}{{#microprofileServer}}{{> server_operation}}{{/microprofileServer}}{{^microprofileServer}}{{> client_operation}}{{/microprofileServer}}{{/vendorExtensions.x-java-is-response-void}}{{#vendorExtensions.x-java-is-response-void}}{{#microprofileMutiny}}Uni<Void>{{/microprofileMutiny}}{{^microprofileMutiny}}void{{/microprofileMutiny}}{{/vendorExtensions.x-java-is-response-void}} {{nickname}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{^-last}}, {{/-last}}{{/allParams}}) throws ApiException, ProcessingException;
75+
{{^vendorExtensions.x-java-is-response-void}}{{#microprofileServer}}{{> server_operation}}{{/microprofileServer}}{{^microprofileServer}}{{> client_operation}}{{/microprofileServer}}{{/vendorExtensions.x-java-is-response-void}}{{#vendorExtensions.x-java-is-response-void}}{{#microprofileMutiny}}Uni<Void>{{/microprofileMutiny}}{{^microprofileMutiny}}void{{/microprofileMutiny}}{{/vendorExtensions.x-java-is-response-void}} {{nickname}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{>cookieParams}}{{^-last}}, {{/-last}}{{/allParams}}) throws ApiException, ProcessingException;
7676
{{/singleRequestParameter}}
7777
{{#singleRequestParameter}}
7878
{{^vendorExtensions.x-java-is-response-void}}{{#microprofileMutiny}}Uni<{{{returnType}}}>{{/microprofileMutiny}}{{^microprofileMutiny}}{{{returnType}}}{{/microprofileMutiny}}{{/vendorExtensions.x-java-is-response-void}}{{#vendorExtensions.x-java-is-response-void}}{{#microprofileMutiny}}Uni<Void>{{/microprofileMutiny}}{{^microprofileMutiny}}void{{/microprofileMutiny}}{{/vendorExtensions.x-java-is-response-void}} {{nickname}}({{#hasNonBodyParams}}@BeanParam {{operationIdCamelCase}}Request request{{/hasNonBodyParams}}{{#bodyParams}}{{#hasNonBodyParams}}, {{/hasNonBodyParams}}{{>bodyParams}}{{/bodyParams}}) throws ApiException, ProcessingException;
@@ -91,6 +91,9 @@ public interface {{classname}} {
9191
{{#formParams}}
9292
private {{>formParams}};
9393
{{/formParams}}
94+
{{#cookieParams}}
95+
private {{>cookieParams}};
96+
{{/cookieParams}}
9497

9598
private {{operationIdCamelCase}}Request() {
9699
}
@@ -106,7 +109,7 @@ public interface {{classname}} {
106109
* @param {{paramName}}{{>formParamsNameSuffix}} {{description}} ({{^required}}optional{{^isContainer}}{{#defaultValue}}, default to {{.}}{{/defaultValue}}{{/isContainer}}{{/required}}{{#required}}required{{/required}})
107110
* @return {{operationIdCamelCase}}Request
108111
*/
109-
public {{operationIdCamelCase}}Request {{paramName}}{{>formParamsNameSuffix}}({{>queryParamsImpl}}{{>pathParamsImpl}}{{>headerParamsImpl}}{{>formParamsImpl}}) {
112+
public {{operationIdCamelCase}}Request {{paramName}}{{>formParamsNameSuffix}}({{>queryParamsImpl}}{{>pathParamsImpl}}{{>headerParamsImpl}}{{>formParamsImpl}}{{>cookieParamsImpl}}) {
110113
this.{{paramName}}{{>formParamsNameSuffix}} = {{paramName}}{{>formParamsNameSuffix}};
111114
return this;
112115
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{{#required}} @NotNull{{/required}}{{>beanValidationCore}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{{#isCookieParam}}@CookieParam("{{baseName}}") {{#useBeanValidation}}{{>beanValidationCookieParams}}{{/useBeanValidation}} {{{dataType}}} {{paramName}}{{/isCookieParam}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{{#isCookieParam}}{{{dataType}}} {{paramName}}{{/isCookieParam}}

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

+55
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,13 @@
1313

1414
import java.io.File;
1515
import java.nio.file.Files;
16+
import java.util.List;
1617
import java.util.Map;
1718
import java.util.function.Function;
1819
import java.util.stream.Collectors;
1920

21+
import static org.openapitools.codegen.TestUtils.validateJavaSourceFiles;
22+
2023
public class JavaMicroprofileServerCodegenTest {
2124

2225
protected JavaMicroprofileServerCodegen codegen;
@@ -72,4 +75,56 @@ public void testEnumUnknownDefaultCaseDeserializationNotSet_issue19674() throws
7275
.assertMethod("fromValue").bodyContainsLines("throw new IllegalArgumentException(\"Unexpected value '\" + text + \"'\");");
7376

7477
}
78+
79+
@Test
80+
public void testMicroprofileCanHandleCookieParams() throws Exception {
81+
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
82+
output.deleteOnExit();
83+
84+
OpenAPI openAPI = new OpenAPIParser()
85+
.readLocation("src/test/resources/bugs/microprofile_cookie.yaml", null, new ParseOptions()).getOpenAPI();
86+
87+
codegen.setOutputDir(output.getAbsolutePath());
88+
89+
ClientOptInput input = new ClientOptInput()
90+
.openAPI(openAPI)
91+
.config(codegen);
92+
93+
List<File> files = new DefaultGenerator().opts(input).generate();
94+
95+
Map<String, File> filesMap = files.stream()
96+
.collect(Collectors.toMap(File::getName, Function.identity()));
97+
98+
validateJavaSourceFiles(files);
99+
100+
JavaFileAssert.assertThat(filesMap.get("DefaultApi.java"))
101+
.assertMethod("getCustomer").assertParameter("cookieParameter");
102+
}
103+
104+
@Test
105+
public void testMicroprofileCanHandleCookieParamsSingleRequest() throws Exception {
106+
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
107+
output.deleteOnExit();
108+
109+
OpenAPI openAPI = new OpenAPIParser()
110+
.readLocation("src/test/resources/bugs/microprofile_cookie.yaml", null, new ParseOptions()).getOpenAPI();
111+
112+
codegen.setOutputDir(output.getAbsolutePath());
113+
codegen.additionalProperties().put(CodegenConstants.USE_SINGLE_REQUEST_PARAMETER, "true");
114+
115+
ClientOptInput input = new ClientOptInput()
116+
.openAPI(openAPI)
117+
.config(codegen);
118+
119+
List<File> files = new DefaultGenerator().opts(input).generate();
120+
121+
Map<String, File> filesMap = files.stream()
122+
.collect(Collectors.toMap(File::getName, Function.identity()));
123+
124+
validateJavaSourceFiles(files);
125+
126+
JavaFileAssert.assertThat(filesMap.get("DefaultApi.java"))
127+
.assertInnerClass("GetCustomerRequest")
128+
.assertMethod("cookieParameter");
129+
}
75130
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
openapi: "3.0.0"
2+
info:
3+
version: 2.0.0
4+
title: test
5+
paths:
6+
/pets:
7+
get:
8+
summary: bla
9+
operationId: getCustomer
10+
parameters:
11+
- name: first
12+
in: header
13+
schema:
14+
type: string
15+
- name: cookieParameter
16+
in: cookie
17+
schema:
18+
type: string
19+
responses:
20+
'200':
21+
description: OK

0 commit comments

Comments
 (0)