package org.jooby;
import java.io.IOException;
import org.jooby.mvc.POST;
import org.jooby.mvc.Path;
import org.jooby.test.ServerFeature;
import org.junit.Test;
public class BodyParamFeature extends ServerFeature {
private static class Bean {
private Object value;
public Bean(final Object value) {
this.value = value;
}
@Override
public String toString() {
return value.toString();
}
}
@Path("/r")
public static class Resource {
@Path("/body")
@POST
public Bean body(final Bean param) throws IOException {
return param;
}
}
{
parser((type, ctx) -> {
if (type.getRawType() == Bean.class) {
return ctx.param(values -> new Bean(values.get(0)));
}
return ctx.next();
});
renderer((object, ctx) -> {
if (ctx.accepts("json") && object instanceof Bean) {
ctx.send(object.toString());
}
});
post("/body", (req, resp) -> {
Bean bean = req.param("param").to(Bean.class);
resp.send(bean);
});
use(Resource.class);
}
@Test
public void multipart() throws Exception {
request()
.post("/body")
.multipart()
.add("param", "{}", "application/json")
.expect("{}");
request()
.post("/r/body")
.multipart()
.add("param", "{}", "application/json")
.expect("{}");
}
}