Add TEMPLATE_AND_VALUES mode to DefaultUriBuilderFactory

Issue: SPR-17039
This commit is contained in:
Rossen Stoyanchev
2018-07-16 16:09:25 -04:00
parent 75e45103b5
commit 2a0eac47f9
2 changed files with 43 additions and 7 deletions

View File

@@ -97,6 +97,22 @@ public class DefaultUriBuilderFactoryTests {
assertEquals("https://api.example.com:443/v42/customers/123", uri.toString());
}
@Test
public void encodeTemplateAndValues() {
DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory();
factory.setEncodingMode(EncodingMode.TEMPLATE_AND_VALUES);
UriBuilder uriBuilder = factory.uriString("/hotel list/{city} specials?q={value}");
String expected = "/hotel%20list/Z%C3%BCrich%20specials?q=a%2Bb";
Map<String, Object> vars = new HashMap<>();
vars.put("city", "Z\u00fcrich");
vars.put("value", "a+b");
assertEquals(expected, uriBuilder.build("Z\u00fcrich", "a+b").toString());
assertEquals(expected, uriBuilder.build(vars).toString());
}
@Test
public void encodingValuesOnly() {
DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory();