Deprecate DefaultUriTemplate handler
Following on the introduction of the UriBuilderFactory and its DefaultUriBuilderFactory implementation, this commit deprecates DefaultUriTemplate (and AbstractUriTemplateHandler). The new DefaultUriBuilderFactory has comparable functionality and is more flexible but cannot be merged into the existing hierarchy and be backwards compatible with regards to protected methods. Issue: SPR-15124
This commit is contained in:
@@ -42,7 +42,7 @@ import org.springframework.http.client.ClientHttpRequestFactory;
|
||||
import org.springframework.http.client.ClientHttpResponse;
|
||||
import org.springframework.http.converter.GenericHttpMessageConverter;
|
||||
import org.springframework.http.converter.HttpMessageConverter;
|
||||
import org.springframework.web.util.DefaultUriTemplateHandler;
|
||||
import org.springframework.web.util.DefaultUriBuilderFactory;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
@@ -83,7 +83,7 @@ public class RestTemplateTests {
|
||||
response = mock(ClientHttpResponse.class);
|
||||
errorHandler = mock(ResponseErrorHandler.class);
|
||||
converter = mock(HttpMessageConverter.class);
|
||||
template = new RestTemplate(Collections.<HttpMessageConverter<?>>singletonList(converter));
|
||||
template = new RestTemplate(Collections.singletonList(converter));
|
||||
template.setRequestFactory(requestFactory);
|
||||
template.setErrorHandler(errorHandler);
|
||||
}
|
||||
@@ -273,8 +273,7 @@ public class RestTemplateTests {
|
||||
@Test
|
||||
public void getForObjectWithCustomUriTemplateHandler() throws Exception {
|
||||
|
||||
DefaultUriTemplateHandler uriTemplateHandler = new DefaultUriTemplateHandler();
|
||||
uriTemplateHandler.setParsePath(true);
|
||||
DefaultUriBuilderFactory uriTemplateHandler = new DefaultUriBuilderFactory();
|
||||
template.setUriTemplateHandler(uriTemplateHandler);
|
||||
|
||||
URI expectedUri = new URI("http://example.com/hotels/1/pic/pics%2Flogo.png/size/150x150");
|
||||
|
||||
@@ -16,12 +16,14 @@
|
||||
package org.springframework.web.util;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.web.util.DefaultUriBuilderFactory.EncodingMode;
|
||||
|
||||
import static java.util.Collections.singletonMap;
|
||||
import static junit.framework.TestCase.assertEquals;
|
||||
|
||||
/**
|
||||
@@ -30,9 +32,6 @@ import static junit.framework.TestCase.assertEquals;
|
||||
*/
|
||||
public class DefaultUriBuilderFactoryTests {
|
||||
|
||||
private static final String baseUrl = "http://foo.com/bar";
|
||||
|
||||
|
||||
@Test
|
||||
public void defaultSettings() throws Exception {
|
||||
DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory();
|
||||
@@ -57,27 +56,39 @@ public class DefaultUriBuilderFactoryTests {
|
||||
@Test
|
||||
public void defaultUriVars() throws Exception {
|
||||
DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory("http://{host}/bar");
|
||||
factory.setDefaultUriVariables(Collections.singletonMap("host", "foo.com"));
|
||||
URI uri = factory.uriString("/{id}").build(Collections.singletonMap("id", "123"));
|
||||
factory.setDefaultUriVariables(singletonMap("host", "foo.com"));
|
||||
URI uri = factory.uriString("/{id}").build(singletonMap("id", "123"));
|
||||
assertEquals("http://foo.com/bar/123", uri.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void defaultUriVarsWithOverride() throws Exception {
|
||||
DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory("http://{host}/bar");
|
||||
factory.setDefaultUriVariables(Collections.singletonMap("host", "spring.io"));
|
||||
URI uri = factory.uriString("/baz").build(Collections.singletonMap("host", "docs.spring.io"));
|
||||
factory.setDefaultUriVariables(singletonMap("host", "spring.io"));
|
||||
URI uri = factory.uriString("/baz").build(singletonMap("host", "docs.spring.io"));
|
||||
assertEquals("http://docs.spring.io/bar/baz", uri.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void defaultUriVarsWithEmptyVarArg() throws Exception {
|
||||
DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory("http://{host}/bar");
|
||||
factory.setDefaultUriVariables(Collections.singletonMap("host", "foo.com"));
|
||||
factory.setDefaultUriVariables(singletonMap("host", "foo.com"));
|
||||
URI uri = factory.uriString("/baz").build();
|
||||
assertEquals("Expected delegation to build(Map) method", "http://foo.com/bar/baz", uri.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void defaultUriVarsSpr14147() throws Exception {
|
||||
Map<String, String> defaultUriVars = new HashMap<>(2);
|
||||
defaultUriVars.put("host", "api.example.com");
|
||||
defaultUriVars.put("port", "443");
|
||||
DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory();
|
||||
factory.setDefaultUriVariables(defaultUriVars);
|
||||
|
||||
URI uri = factory.expand("https://{host}:{port}/v42/customers/{id}", singletonMap("id", 123L));
|
||||
assertEquals("https://api.example.com:443/v42/customers/123", uri.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void encodingValuesOnly() throws Exception {
|
||||
DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory();
|
||||
@@ -88,7 +99,18 @@ public class DefaultUriBuilderFactoryTests {
|
||||
String expected = "/foo/a%2Fb/c%2Fd";
|
||||
|
||||
assertEquals(expected, uriBuilder.build(id).toString());
|
||||
assertEquals(expected, uriBuilder.build(Collections.singletonMap("id", id)).toString());
|
||||
assertEquals(expected, uriBuilder.build(singletonMap("id", id)).toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void encodingValuesOnlySpr14147() throws Exception {
|
||||
DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory();
|
||||
factory.setEncodingMode(EncodingMode.VALUES_ONLY);
|
||||
factory.setDefaultUriVariables(singletonMap("host", "www.example.com"));
|
||||
UriBuilder uriBuilder = factory.uriString("http://{host}/user/{userId}/dashboard");
|
||||
|
||||
assertEquals("http://www.example.com/user/john%3Bdoe/dashboard",
|
||||
uriBuilder.build(singletonMap("userId", "john;doe")).toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -101,7 +123,7 @@ public class DefaultUriBuilderFactoryTests {
|
||||
String expected = "/foo/a%2Fb/c%2Fd";
|
||||
|
||||
assertEquals(expected, uriBuilder.build(id).toString());
|
||||
assertEquals(expected, uriBuilder.build(Collections.singletonMap("id", id)).toString());
|
||||
assertEquals(expected, uriBuilder.build(singletonMap("id", id)).toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user