diff --git a/http-generator-core/src/main/java/io/avaje/http/generator/core/MethodReader.java b/http-generator-core/src/main/java/io/avaje/http/generator/core/MethodReader.java index 8215b71d3..5243eb67c 100644 --- a/http-generator-core/src/main/java/io/avaje/http/generator/core/MethodReader.java +++ b/http-generator-core/src/main/java/io/avaje/http/generator/core/MethodReader.java @@ -60,7 +60,7 @@ public class MethodReader { this.bean = bean; this.element = element; this.actualExecutable = actualExecutable; - this.actualParams = (actualExecutable == null) ? null : actualExecutable.getParameterTypes(); + this.actualParams = actualExecutable == null ? null : actualExecutable.getParameterTypes(); this.isVoid = element.getReturnType().getKind() == TypeKind.VOID; this.methodRoles = Util.findRoles(element); this.producesAnnotation = @@ -327,7 +327,7 @@ void read() { } // non-path parameters default to form or query parameters based on the // existence of @Form annotation on the method - final ParamType defaultParamType = (formMarker) ? ParamType.FORMPARAM : ParamType.QUERYPARAM; + final ParamType defaultParamType = formMarker ? ParamType.FORMPARAM : ParamType.QUERYPARAM; final List parameters = element.getParameters(); for (int i = 0; i < parameters.size(); i++) { @@ -342,6 +342,15 @@ void read() { final UType type = Util.parse(typeMirror.toString()); final MethodParam param = new MethodParam(p, type, rawType, defaultParamType, formMarker); params.add(param); + + if (CoreWebMethod.GET.equals(webMethod) + && param.isBody() + && !"java.util.Map".equals(param.utype().mainType()) + && !"ClientPlatformAdapter" + .equals(ProcessingContext.platform().getClass().getSimpleName())) { + logError(p, "Missing @BeanParam annotation"); + } + param.addImports(bean); } } diff --git a/tests/test-javalin-jsonb/src/main/java/org/example/myapp/web/test/TestController2.java b/tests/test-javalin-jsonb/src/main/java/org/example/myapp/web/test/TestController2.java index 0ae288653..a6d48fe85 100644 --- a/tests/test-javalin-jsonb/src/main/java/org/example/myapp/web/test/TestController2.java +++ b/tests/test-javalin-jsonb/src/main/java/org/example/myapp/web/test/TestController2.java @@ -49,13 +49,13 @@ String mapTest(Map> strings) { return strings.toString(); } - @Get("/inputStream") + @Post("/inputStream") @Consumes("application/bson") String stream(InputStream stream) { return stream.toString(); } - @Get("/byteArray") + @Post("/byteArray") String bytes(byte[] array) { return array.toString(); } diff --git a/tests/test-nima-jsonb/src/main/java/org/example/TestController.java b/tests/test-nima-jsonb/src/main/java/org/example/TestController.java index d3f0ceef6..bbb0db331 100644 --- a/tests/test-nima-jsonb/src/main/java/org/example/TestController.java +++ b/tests/test-nima-jsonb/src/main/java/org/example/TestController.java @@ -81,7 +81,7 @@ String enumQueryImplied(String s, @QueryParam ServerType type) { } @InstrumentServerContext - @Get(value = "/inputStream") + @Post(value = "/inputStream") InputStream stream(InputStream stream) throws Exception { return stream; }