package org.jooby.issues;
import java.util.List;
import java.util.Optional;
import org.jooby.Parser;
import org.jooby.test.ServerFeature;
import org.junit.Test;
public class Issue483 extends ServerFeature {
public static class Member {
String firstname;
String lastname;
@Override
public String toString() {
return firstname + " " + lastname;
}
}
public static class Group {
List<Member> members;
@Override
public String toString() {
return Optional.ofNullable(members).map(it -> it.toString()).orElse("[]");
}
}
public static class NullableBean {
String foo;
Optional<String> bar;
@Override
public String toString() {
return foo + bar;
}
}
{
parser(Parser.bean(true));
get("/483/dot", req -> {
return req.params().toList(Member.class);
});
get("/483/nested", req -> {
return req.params(Group.class);
});
get("/483/null", req -> {
return req.params(NullableBean.class).toString();
});
}
@Test
public void dotNotation() throws Exception {
request()
.get("/483/dot?0.firstname=Pedro&0.lastname=PicaPiedra")
.expect("[Pedro PicaPiedra]");
request()
.get("/483/nested?members.0.firstname=Pedro&members.0.lastname=PicaPiedra")
.expect("[Pedro PicaPiedra]");
request()
.get("/483/nested?members[0]firstname=Pedro&members[0]lastname=PicaPiedra")
.expect("[Pedro PicaPiedra]");
}
@Test
public void documentNullBeanInjection() throws Exception {
request()
.get("/483/null?foo=foo")
.expect("foonull");
request()
.get("/483/null?foo=foo&bar")
.expect("fooOptional[]");
request()
.get("/483/null?foo=foo&bar=bar")
.expect("fooOptional[bar]");
}
}