Skip to content

Commit 886785d

Browse files
committed
[helidon generation] Improve generated code extracting queryParams variable
1 parent 0aaa1c8 commit 886785d

File tree

4 files changed

+20
-14
lines changed

4 files changed

+20
-14
lines changed

http-generator-helidon/src/main/java/io/avaje/http/generator/helidon/nima/ControllerMethodWriter.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,9 @@ void writeHandler(boolean requestScoped) {
184184
for (final PathSegments.Segment matrixSegment : segments.matrixSegments()) {
185185
matrixSegment.writeCreateSegment(writer, platform());
186186
}
187+
if (usesQueryParams()) {
188+
writer.append(" var queryParams = req.query();").eol();
189+
}
187190
final var params = method.params();
188191
for (final MethodParam param : params) {
189192
if (!isExceptionOrFilterChain(param)) {
@@ -371,6 +374,10 @@ private boolean usesFormParams() {
371374
return method.params().stream().anyMatch(p -> p.isForm() || ParamType.FORMPARAM.equals(p.paramType()));
372375
}
373376

377+
private boolean usesQueryParams() {
378+
return method.params().stream().anyMatch(p -> ParamType.QUERYPARAM.equals(p.paramType()));
379+
}
380+
374381
private void writeContextReturn(String indent) {
375382
final var producesOp = Optional.ofNullable(method.produces());
376383
if (producesOp.isEmpty() && !useJsonB && !useJstachio) {

http-generator-helidon/src/main/java/io/avaje/http/generator/helidon/nima/NimaPlatformAdapter.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,11 @@ public void writeReadParameter(Append writer, ParamType paramType, String paramN
7171
switch (paramType) {
7272
case PATHPARAM -> writer.append("pathParams.contains(\"%s\") ? pathParams.get(\"%s\") : null", paramName, paramName);
7373

74-
case QUERYPARAM -> writer.append("req.query().contains(\"%s\") ? req.query().get(\"%s\") : null", paramName, paramName);
74+
case QUERYPARAM -> writer.append("queryParams.contains(\"%s\") ? queryParams.get(\"%s\") : null", paramName, paramName);
7575

7676
case FORMPARAM -> writer.append("formParams.contains(\"%s\") ? formParams.get(\"%s\") : null", paramName, paramName);
7777

78-
case HEADER -> writer.append(
79-
"req.headers().value(HeaderNames.create(\"%s\")).orElse(null)", paramName);
78+
case HEADER -> writer.append("req.headers().value(HeaderNames.create(\"%s\")).orElse(null)", paramName);
8079

8180
case COOKIE -> writer.append("req.headers().cookies().contains(\"%s\") ? req.headers().cookies().get(\"%s\") : null", paramName, paramName);
8281

@@ -91,7 +90,7 @@ public void writeReadParameter(Append writer, ParamType paramType, String paramN
9190
"pathParams.contains(\"%s\") ? pathParams.get(\"%s\") : \"%s\"", paramName, paramName, paramDefault);
9291

9392
case QUERYPARAM -> writer.append(
94-
"req.query().contains(\"%s\") ? req.query().get(\"%s\") : \"%s\"", paramName, paramName, paramDefault);
93+
"queryParams.contains(\"%s\") ? queryParams.get(\"%s\") : \"%s\"", paramName, paramName, paramDefault);
9594

9695
case FORMPARAM -> writer.append(
9796
"formParams.contains(\"%s\") ? formParams.get(\"%s\") : \"%s\"", paramName, paramName, paramDefault);
@@ -109,18 +108,17 @@ public void writeReadParameter(Append writer, ParamType paramType, String paramN
109108
@Override
110109
public void writeReadMapParameter(Append writer, ParamType paramType) {
111110
switch (paramType) {
112-
case QUERYPARAM -> writer.append("req.query().toMap()");
111+
case QUERYPARAM -> writer.append("queryParams.toMap()");
113112
case FORM, FORMPARAM -> writer.append("formParams.toMap()");
114113
case COOKIE -> writer.append("req.headers().cookies().toMap()");
115-
default -> throw new UnsupportedOperationException(
116-
"Only Form/Query/Cookie Multi-Value Maps are supported");
114+
default -> throw new UnsupportedOperationException("Only Form/Query/Cookie Multi-Value Maps are supported");
117115
}
118116
}
119117

120118
@Override
121119
public void writeReadCollectionParameter(Append writer, ParamType paramType, String paramName) {
122120
switch (paramType) {
123-
case QUERYPARAM -> writer.append("req.query().all(\"%s\")", paramName);
121+
case QUERYPARAM -> writer.append("queryParams.all(\"%s\")", paramName);
124122
case FORMPARAM -> writer.append("formParams.all(\"%s\")", paramName);
125123

126124
case HEADER -> writer.append(
@@ -139,7 +137,7 @@ public void writeReadCollectionParameter(
139137
Append writer, ParamType paramType, String paramName, List<String> paramDefault) {
140138
switch (paramType) {
141139
case QUERYPARAM -> writer.append(
142-
"req.query().all(\"%s\", () -> java.util.List.of(\"%s\"))",
140+
"queryParams.all(\"%s\", () -> java.util.List.of(\"%s\"))",
143141
paramName, String.join(",", paramDefault));
144142

145143
case FORMPARAM -> writer.append(

tests/test-javalin-jsonb/src/main/resources/public/openapi.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1268,7 +1268,7 @@
12681268
}
12691269
},
12701270
"/test/byteArray" : {
1271-
"get" : {
1271+
"post" : {
12721272
"tags" : [
12731273

12741274
],
@@ -1286,7 +1286,7 @@
12861286
"required" : true
12871287
},
12881288
"responses" : {
1289-
"200" : {
1289+
"201" : {
12901290
"description" : "",
12911291
"content" : {
12921292
"application/json" : {
@@ -1730,7 +1730,7 @@
17301730
}
17311731
},
17321732
"/test/inputStream" : {
1733-
"get" : {
1733+
"post" : {
17341734
"tags" : [
17351735

17361736
],
@@ -1748,7 +1748,7 @@
17481748
"required" : true
17491749
},
17501750
"responses" : {
1751-
"200" : {
1751+
"201" : {
17521752
"description" : "",
17531753
"content" : {
17541754
"application/json" : {

tests/test-nima/src/main/java/org/example/HelloController.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.example;
22

33
import io.avaje.http.api.Controller;
4+
import io.avaje.http.api.Default;
45
import io.avaje.http.api.Get;
56
import io.avaje.http.api.Produces;
67

@@ -23,7 +24,7 @@ Person person(String name, String sortBy) {
2324
@Roles({AppRoles.ADMIN, AppRoles.BASIC_USER})
2425
@Produces("text/plain")
2526
@Get("other/{name}")
26-
String name(String name) {
27+
String name(String name, String sortBy, @Default("0") long max) {
2728
return "hi " + name;
2829
}
2930
}

0 commit comments

Comments
 (0)