Skip to content

Commit b410298

Browse files
authored
Fix Query Param Collection Imports (#186)
* fix collection imports * move multi test * Update pom.xml
1 parent cd97fd2 commit b410298

File tree

4 files changed

+18
-13
lines changed

4 files changed

+18
-13
lines changed

http-generator-core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<artifactId>avaje-http-generator-core</artifactId>
1111

1212
<properties>
13-
<avaje.prisms.version>1.6</avaje.prisms.version>
13+
<avaje.prisms.version>1.8</avaje.prisms.version>
1414
</properties>
1515
<dependencies>
1616
<dependency>

http-generator-core/src/main/java/io/avaje/http/generator/core/ElementReader.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
import static io.avaje.http.generator.core.ProcessingContext.platform;
55
import static io.avaje.http.generator.core.ProcessingContext.typeElement;
66

7+
import java.util.HashSet;
78
import java.util.List;
8-
import java.util.Objects;
99
import java.util.Optional;
10+
import java.util.Set;
1011

1112
import javax.lang.model.element.Element;
1213
import javax.lang.model.element.ElementKind;
@@ -38,6 +39,7 @@ public class ElementReader {
3839
private boolean notNullKotlin;
3940
private boolean isParamCollection;
4041
private boolean isParamMap;
42+
private final Set<String> imports = new HashSet<>();
4143
// private boolean notNullJavax;
4244

4345
ElementReader(Element element, ParamType defaultType, boolean formMarker) {
@@ -59,6 +61,11 @@ public class ElementReader {
5961

6062
typeHandler = initTypeHandler();
6163

64+
this.imports.add(rawType);
65+
if (typeHandler != null) {
66+
this.imports.addAll(typeHandler.importTypes());
67+
}
68+
6269
this.formMarker = formMarker;
6370
this.varName = element.getSimpleName().toString();
6471
this.snakeName = Util.snakeCase(varName);
@@ -226,12 +233,8 @@ private String handlerShortType() {
226233
}
227234

228235
void addImports(ControllerReader bean) {
229-
if (typeHandler != null) {
230-
typeHandler.importTypes().stream().filter(Objects::nonNull).forEach(bean::addImportType);
231236

232-
} else {
233-
bean.addImportType(rawType);
234-
}
237+
bean.addImportTypes(imports);
235238
}
236239

237240
void writeParamName(Append writer) {

tests/test-javalin-jsonb/src/main/java/org/example/myapp/web/test/TestController.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@
88
import org.example.myapp.web.AppRoles;
99
import org.example.myapp.web.HelloDto;
1010
import org.example.myapp.web.Roles;
11+
import org.example.myapp.web.ServerType;
1112

1213
import io.avaje.http.api.Controller;
14+
import io.avaje.http.api.Default;
1315
import io.avaje.http.api.Form;
1416
import io.avaje.http.api.Get;
1517
import io.avaje.http.api.Header;
@@ -19,6 +21,7 @@
1921
import io.avaje.http.api.Post;
2022
import io.avaje.http.api.Produces;
2123
import io.avaje.http.api.Put;
24+
import io.avaje.http.api.QueryParam;
2225
import io.javalin.http.Context;
2326

2427
@Path("test/")
@@ -129,4 +132,9 @@ void neo(
129132
CompletableFuture<HelloDto> getAllAsync() {
130133
return CompletableFuture.supplyAsync(() -> new HelloDto(12, "Jim", "asd"));
131134
}
135+
136+
@Get("/enumQuery2")
137+
String enumMultiQuery(@QueryParam @Default({"FFA", "PROXY"}) Set<ServerType> type) {
138+
return type.toString();
139+
}
132140
}

tests/test-javalin-jsonb/src/main/java/org/example/myapp/web/test/TestController2.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import java.io.InputStream;
44
import java.util.List;
55
import java.util.Map;
6-
import java.util.Set;
76

87
import org.example.myapp.web.ServerType;
98

@@ -36,11 +35,6 @@ String enumQuery(@QueryParam @Default("FFA") ServerType type) {
3635
return type.name();
3736
}
3837

39-
@Get("/enumQuery2")
40-
String enumMultiQuery(@QueryParam @Default({"FFA", "PROXY"}) Set<ServerType> type) {
41-
return type.toString();
42-
}
43-
4438
@Post("/enumQueryImplied")
4539
String enumQueryImplied(String s, @QueryParam ServerType type) {
4640
return type.name();

0 commit comments

Comments
 (0)