@@ -367,6 +367,39 @@ public void queryMapKeysMustBeStrings() throws Exception {
367367 }
368368 }
369369
370+ @ Test
371+ public void queryMapValueStartingWithBrace () throws Exception {
372+ TestInterface api = new TestInterfaceBuilder ().target ("http://localhost:" + server .getPort ());
373+
374+ server .enqueue (new MockResponse ());
375+ Map <String , Object > queryMap = new LinkedHashMap <String , Object >();
376+ queryMap .put ("name" , "{alice" );
377+ api .queryMap (queryMap );
378+ assertThat (server .takeRequest ())
379+ .hasPath ("/?name=%7Balice" );
380+
381+ server .enqueue (new MockResponse ());
382+ queryMap = new LinkedHashMap <String , Object >();
383+ queryMap .put ("{name" , "alice" );
384+ api .queryMap (queryMap );
385+ assertThat (server .takeRequest ())
386+ .hasPath ("/?%7Bname=alice" );
387+
388+ server .enqueue (new MockResponse ());
389+ queryMap = new LinkedHashMap <String , Object >();
390+ queryMap .put ("name" , "%7Balice" );
391+ api .queryMapEncoded (queryMap );
392+ assertThat (server .takeRequest ())
393+ .hasPath ("/?name=%7Balice" );
394+
395+ server .enqueue (new MockResponse ());
396+ queryMap = new LinkedHashMap <String , Object >();
397+ queryMap .put ("%7Bname" , "%7Balice" );
398+ api .queryMapEncoded (queryMap );
399+ assertThat (server .takeRequest ())
400+ .hasPath ("/?%7Bname=%7Balice" );
401+ }
402+
370403 @ Test
371404 public void configKeyFormatsAsExpected () throws Exception {
372405 assertEquals ("TestInterface#post()" ,
@@ -715,6 +748,9 @@ void form(
715748 @ RequestLine ("GET /" )
716749 void queryMap (@ QueryMap Map <String , Object > queryMap );
717750
751+ @ RequestLine ("GET /" )
752+ void queryMapEncoded (@ QueryMap (encoded = true ) Map <String , Object > queryMap );
753+
718754 @ RequestLine ("GET /?name={name}" )
719755 void queryMapWithQueryParams (@ Param ("name" ) String name , @ QueryMap Map <String , Object > queryMap );
720756
0 commit comments