}.
+ * The string varargs variant expands the given template variables in order, so that
*
- * String result = restTemplate.getForObject("http://example.com/hotels/{hotel}/bookings/{booking}", String.class,"42",
+ * String result = restTemplate.getForObject("http://example.com/hotels/{hotel}/bookings/{booking}", String.class, "42",
* "21");
*
- * will perform a GET on {@code http://example.com/hotels/42/bookings/21}. The map variant expands the template based on
- * variable name, and is therefore more useful when using many variables, or when a single variable is used multiple
+ * will perform a GET on {@code http://example.com/hotels/42/bookings/21}. The map variant expands the template based
+ * on variable name, and is therefore more useful when using many variables, or when a single variable is used multiple
* times. For example:
*
* Map<String, String> vars = Collections.singletonMap("hotel", "42");
@@ -102,12 +103,13 @@ import org.springframework.web.util.UriTemplate;
* http://example.com/hotel%2520list}). If this behavior is undesirable, use the {@code URI}-argument methods, which
* will not perform any URL encoding.
*
- * Objects passed to and returned from these methods are converted to and from HTTP messages by {@link
- * HttpMessageConverter} instances. Converters for the main mime types are registered by default, but you can also write
- * your own converter and register it via the {@link #setMessageConverters messageConverters} bean property.
+ *
Objects passed to and returned from these methods are converted to and from HTTP messages by
+ * {@link HttpMessageConverter} instances. Converters for the main mime types are registered by default,
+ * but you can also write your own converter and register it via the {@link #setMessageConverters messageConverters}
+ * bean property.
*
- *
This template uses a {@link org.springframework.http.client.SimpleClientHttpRequestFactory} and a {@link
- * DefaultResponseErrorHandler} as default strategies for creating HTTP connections or handling HTTP errors,
+ *
This template uses a {@link org.springframework.http.client.SimpleClientHttpRequestFactory} and a
+ * {@link DefaultResponseErrorHandler} as default strategies for creating HTTP connections or handling HTTP errors,
* respectively. These defaults can be overridden through the {@link #setRequestFactory(ClientHttpRequestFactory)
* requestFactory} and {@link #setErrorHandler(ResponseErrorHandler) errorHandler} bean properties.
*
@@ -120,6 +122,9 @@ import org.springframework.web.util.UriTemplate;
*/
public class RestTemplate extends InterceptingHttpAccessor implements RestOperations {
+ private static boolean romePresent =
+ ClassUtils.isPresent("com.sun.syndication.feed.WireFeed", RestTemplate.class.getClassLoader());
+
private static final boolean jaxb2Present =
ClassUtils.isPresent("javax.xml.bind.Binder", RestTemplate.class.getClassLoader());
@@ -131,9 +136,6 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
ClassUtils.isPresent("org.codehaus.jackson.map.ObjectMapper", RestTemplate.class.getClassLoader()) &&
ClassUtils.isPresent("org.codehaus.jackson.JsonGenerator", RestTemplate.class.getClassLoader());
- private static boolean romePresent =
- ClassUtils.isPresent("com.sun.syndication.feed.WireFeed", RestTemplate.class.getClassLoader());
-
private final ResponseExtractor headersExtractor = new HeadersExtractor();
@@ -170,6 +172,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
* Create a new instance of the {@link RestTemplate} based on the given {@link ClientHttpRequestFactory}.
* @param requestFactory HTTP request factory to use
* @see org.springframework.http.client.SimpleClientHttpRequestFactory
+ * @see org.springframework.http.client.HttpComponentsClientHttpRequestFactory
*/
public RestTemplate(ClientHttpRequestFactory requestFactory) {
this();
@@ -178,26 +181,33 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
/**
- * Set the message body converters to use. These converters are used to convert from and to HTTP requests and
- * responses.
+ * Set the message body converters to use.
+ * These converters are used to convert from and to HTTP requests and responses.
*/
public void setMessageConverters(List> messageConverters) {
Assert.notEmpty(messageConverters, "'messageConverters' must not be empty");
this.messageConverters = messageConverters;
}
- /** Returns the message body converters. These converters are used to convert from and to HTTP requests and responses. */
+ /**
+ * Return the message body converters.
+ */
public List> getMessageConverters() {
return this.messageConverters;
}
- /** Set the error handler. */
+ /**
+ * Set the error handler.
+ * By default, RestTemplate uses a {@link DefaultResponseErrorHandler}.
+ */
public void setErrorHandler(ResponseErrorHandler errorHandler) {
Assert.notNull(errorHandler, "'errorHandler' must not be null");
this.errorHandler = errorHandler;
}
- /** Return the error handler. By default, this is the {@link DefaultResponseErrorHandler}. */
+ /**
+ * Return the error handler.
+ */
public ResponseErrorHandler getErrorHandler() {
return this.errorHandler;
}
@@ -309,17 +319,16 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
public ResponseEntity postForEntity(String url, Object request, Class responseType, Object... uriVariables)
throws RestClientException {
+
HttpEntityRequestCallback requestCallback = new HttpEntityRequestCallback(request, responseType);
ResponseEntityResponseExtractor responseExtractor =
new ResponseEntityResponseExtractor(responseType);
return execute(url, HttpMethod.POST, requestCallback, responseExtractor, uriVariables);
}
- public ResponseEntity postForEntity(String url,
- Object request,
- Class responseType,
- Map uriVariables)
+ public ResponseEntity postForEntity(String url, Object request, Class responseType, Map uriVariables)
throws RestClientException {
+
HttpEntityRequestCallback requestCallback = new HttpEntityRequestCallback(request, responseType);
ResponseEntityResponseExtractor responseExtractor =
new ResponseEntityResponseExtractor(responseType);
diff --git a/spring-web/src/main/java/org/springframework/web/util/UriTemplate.java b/spring-web/src/main/java/org/springframework/web/util/UriTemplate.java
index 5ec8988af6..48149e439f 100644
--- a/spring-web/src/main/java/org/springframework/web/util/UriTemplate.java
+++ b/spring-web/src/main/java/org/springframework/web/util/UriTemplate.java
@@ -71,6 +71,7 @@ public class UriTemplate implements Serializable {
this.uriComponents = UriComponentsBuilder.fromUriString(uriTemplate).build();
}
+
/**
* Return the names of the variables in the template, in order.
* @return the template variable names
@@ -79,8 +80,6 @@ public class UriTemplate implements Serializable {
return this.variableNames;
}
- // expanding
-
/**
* Given the Map of variables, expands this template into a URI. The Map keys represent variable names,
* the Map values variable values. The order of variables is not significant.
@@ -124,8 +123,6 @@ public class UriTemplate implements Serializable {
return encodedComponents.toUri();
}
- // matching
-
/**
* Indicate whether the given URI matches this template.
* @param uri the URI to match to
@@ -194,7 +191,8 @@ public class UriTemplate implements Serializable {
}
else {
if (colonIdx + 1 == match.length()) {
- throw new IllegalArgumentException("No custom regular expression specified after ':' in \"" + match + "\"");
+ throw new IllegalArgumentException(
+ "No custom regular expression specified after ':' in \"" + match + "\"");
}
String variablePattern = match.substring(colonIdx + 1, match.length());
this.patternBuilder.append('(');