11package org .jooby .issues ;
22
3+ import java .util .List ;
34import java .util .Optional ;
45
56import org .jooby .Parser ;
89
910public class Issue483 extends ServerFeature {
1011
12+ public static class Member {
13+ String firstname ;
14+
15+ String lastname ;
16+
17+ @ Override
18+ public String toString () {
19+ return firstname + " " + lastname ;
20+ }
21+ }
22+
23+ public static class Group {
24+
25+ List <Member > members ;
26+
27+ @ Override
28+ public String toString () {
29+ return Optional .ofNullable (members ).map (it -> it .toString ()).orElse ("[]" );
30+ }
31+
32+ }
33+
1134 public static class NullableBean {
1235
1336 String foo ;
@@ -23,24 +46,44 @@ public String toString() {
2346 {
2447 parser (Parser .bean (true ));
2548
26- get ("/483" , req -> {
49+ get ("/483/dot" , req -> {
50+ return req .params ().toList (Member .class );
51+ });
52+
53+ get ("/483/nested" , req -> {
54+ return req .params (Group .class );
55+ });
56+
57+ get ("/483/null" , req -> {
2758 return req .params (NullableBean .class ).toString ();
2859 });
2960
3061 }
3162
63+ @ Test
64+ public void dotNotation () throws Exception {
65+ request ()
66+ .get ("/483/dot?0.firstname=Pedro&0.lastname=PicaPiedra" )
67+ .expect ("[Pedro PicaPiedra]" );
68+
69+ request ()
70+ .get ("/483/nested?members.0.firstname=Pedro&members.0.lastname=PicaPiedra" )
71+ .expect ("[Pedro PicaPiedra]" );
72+
73+ }
74+
3275 @ Test
3376 public void documentNullBeanInjection () throws Exception {
3477 request ()
35- .get ("/483?foo=foo" )
78+ .get ("/483/null ?foo=foo" )
3679 .expect ("foonull" );
3780
3881 request ()
39- .get ("/483?foo=foo&bar" )
82+ .get ("/483/null ?foo=foo&bar" )
4083 .expect ("fooOptional[]" );
4184
4285 request ()
43- .get ("/483?foo=foo&bar=bar" )
86+ .get ("/483/null ?foo=foo&bar=bar" )
4487 .expect ("fooOptional[bar]" );
4588 }
4689
0 commit comments