Support {/var} syntax in UriComponentsBuilder

Issue: SPR-12750
This commit is contained in:
Rossen Stoyanchev
2015-03-20 15:33:56 -04:00
parent 6a96c26dd4
commit a57d42829c
3 changed files with 52 additions and 12 deletions

View File

@@ -195,6 +195,16 @@ public class UriComponentsBuilderTests {
assertEquals("1USD=?EUR", result.getQueryParams().getFirst("q"));
}
//SPR-12750
@Test
public void fromUriStringWithVariablesRfc6570() {
String url = "http://example.com/part1/{/part2}/{var1}/url/{/urlvar}/";
UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(url);
UriComponents uriComponents = builder.build().expand("part/2", "var/1", "url/var").encode();
assertEquals("/part1/part%2F2/var/1/url/url%2Fvar/", uriComponents.getPath());
}
// SPR-10779
@Test

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2012 the original author or authors.
* Copyright 2002-2015 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -98,6 +98,19 @@ public class UriTemplateTests {
template.expand(uriVariables);
}
//SPR-12750
@Test
public void expandMapForRFC6570() throws Exception {
Map<String, String> uriVariables = new HashMap<String, String>(2);
uriVariables.put("hotel", "1");
uriVariables.put("publicpath", "pics/logo.png");
uriVariables.put("scale", "150x150");
UriTemplate template = new UriTemplate("/hotels/{hotel}/pic/{/publicpath}/size/{scale}");
URI result = template.expand(uriVariables);
assertEquals("Invalid expanded template", new URI("/hotels/1/pic/pics%2Flogo.png/size/150x150"), result);
}
@Test
public void expandEncoded() throws Exception {
UriTemplate template = new UriTemplate("http://example.com/hotel list/{hotel}");