Hello people,

any ideas how to fix the issue below?

-- fedd

On 09.06.2023 18:15, Fyodor Kravchenko wrote:
Hello,

I've used to rely on this function in older Camel, when I was able to deserialize a regular web form POST stream into a generic java.util.Map, I mean, this used to parse the form data (not multipart, just regular) and convert into a Map:

Map map = http.getBody(Map.class);

This is my test code snippet that I compile and run on Java 19 of GraalVM:

```

                        HttpMessage http = exchange.getIn(HttpMessage.class);
                        HttpServletRequest request = http.getRequest();
                        String method = request.getMethod();
                        if ("POST".equals(method) || "PUT".equals(method)) {
                            Map map = http.getBody(Map.class);
                            String string = http.getBody(String.class);
                            http.setHeader(Exchange.CONTENT_TYPE, "text/plain");                             http.setBody("json: " + mapper.writeValueAsString(map) + ", and string:" + string);
                        } else {
                            http.setHeader(Exchange.CONTENT_TYPE, "text/html");
http.setBody(this.getClass().getResourceAsStream("form.html"));
                        }
```

I've created a test project to make sure it works on Camel 2.24 and doesn't in 3.20.4:

https://github.com/fedd/cameljettyformmap/tree/main/cameljettyformmap

I had to add `javax.activation` for the 2.24 version to run, but unfortunately that didn't fix the 3.20.4 (See the pom.xml in the github link)

What do I have to do to make it work in 3.20.4?

$ java --version
openjdk 19.0.1 2022-10-18
OpenJDK Runtime Environment GraalVM CE 22.3.0 (build 19.0.1+10-jvmci-22.3-b08) OpenJDK 64-Bit Server VM GraalVM CE 22.3.0 (build 19.0.1+10-jvmci-22.3-b08, mixed mode, sharing)

Reply via email to