diff --git a/spring-web/src/main/java/org/springframework/web/client/RestOperations.java b/spring-web/src/main/java/org/springframework/web/client/RestOperations.java index e684dd6aa19..36161c353cd 100644 --- a/spring-web/src/main/java/org/springframework/web/client/RestOperations.java +++ b/spring-web/src/main/java/org/springframework/web/client/RestOperations.java @@ -1,11 +1,11 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2016 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -28,9 +28,9 @@ import org.springframework.http.RequestEntity; import org.springframework.http.ResponseEntity; /** - * Interface specifying a basic set of RESTful operations. Implemented by {@link RestTemplate}. - * Not often used directly, but a useful option to enhance testability, as it can easily - * be mocked or stubbed. + * Interface specifying a basic set of RESTful operations. + * Implemented by {@link RestTemplate}. Not often used directly, but a useful + * option to enhance testability, as it can easily be mocked or stubbed. * * @author Arjen Poutsma * @author Juergen Hoeller @@ -139,13 +139,13 @@ public interface RestOperations { // POST /** - * Create a new resource by POSTing the given object to the URI template, and returns the value of the - * {@code Location} header. This header typically indicates where the new resource is stored. + * Create a new resource by POSTing the given object to the URI template, and returns the value of + * the {@code Location} header. This header typically indicates where the new resource is stored. *
URI Template variables are expanded using the given URI variables, if any. *
The {@code request} parameter can be a {@link HttpEntity} in order to * add additional HTTP headers to the request. * @param url the URL - * @param request the Object to be POSTed, may be {@code null} + * @param request the Object to be POSTed (may be {@code null}) * @param uriVariables the variables to expand the template * @return the value for the {@code Location} header * @see HttpEntity @@ -153,13 +153,13 @@ public interface RestOperations { URI postForLocation(String url, Object request, Object... uriVariables) throws RestClientException; /** - * Create a new resource by POSTing the given object to the URI template, and returns the value of the - * {@code Location} header. This header typically indicates where the new resource is stored. + * Create a new resource by POSTing the given object to the URI template, and returns the value of + * the {@code Location} header. This header typically indicates where the new resource is stored. *
URI Template variables are expanded using the given map. *
The {@code request} parameter can be a {@link HttpEntity} in order to * add additional HTTP headers to the request. * @param url the URL - * @param request the Object to be POSTed, may be {@code null} + * @param request the Object to be POSTed (may be {@code null}) * @param uriVariables the variables to expand the template * @return the value for the {@code Location} header * @see HttpEntity @@ -172,7 +172,7 @@ public interface RestOperations { *
The {@code request} parameter can be a {@link HttpEntity} in order to * add additional HTTP headers to the request. * @param url the URL - * @param request the Object to be POSTed, may be {@code null} + * @param request the Object to be POSTed (may be {@code null}) * @return the value for the {@code Location} header * @see HttpEntity */ @@ -185,7 +185,7 @@ public interface RestOperations { *
The {@code request} parameter can be a {@link HttpEntity} in order to * add additional HTTP headers to the request. * @param url the URL - * @param request the Object to be POSTed, may be {@code null} + * @param request the Object to be POSTed (may be {@code null}) * @param responseType the type of the return value * @param uriVariables the variables to expand the template * @return the converted object @@ -201,7 +201,7 @@ public interface RestOperations { *
The {@code request} parameter can be a {@link HttpEntity} in order to * add additional HTTP headers to the request. * @param url the URL - * @param request the Object to be POSTed, may be {@code null} + * @param request the Object to be POSTed (may be {@code null}) * @param responseType the type of the return value * @param uriVariables the variables to expand the template * @return the converted object @@ -216,7 +216,7 @@ public interface RestOperations { *
The {@code request} parameter can be a {@link HttpEntity} in order to * add additional HTTP headers to the request. * @param url the URL - * @param request the Object to be POSTed, may be {@code null} + * @param request the Object to be POSTed (may be {@code null}) * @param responseType the type of the return value * @return the converted object * @see HttpEntity @@ -230,11 +230,11 @@ public interface RestOperations { *
The {@code request} parameter can be a {@link HttpEntity} in order to
* add additional HTTP headers to the request.
* @param url the URL
- * @param request the Object to be POSTed, may be {@code null}
+ * @param request the Object to be POSTed (may be {@code null})
* @param uriVariables the variables to expand the template
* @return the converted object
- * @see HttpEntity
* @since 3.0.2
+ * @see HttpEntity
*/
The {@code request} parameter can be a {@link HttpEntity} in order to
* add additional HTTP headers to the request.
* @param url the URL
- * @param request the Object to be POSTed, may be {@code null}
+ * @param request the Object to be POSTed (may be {@code null})
* @param uriVariables the variables to expand the template
* @return the converted object
- * @see HttpEntity
* @since 3.0.2
+ * @see HttpEntity
*/
The {@code request} parameter can be a {@link HttpEntity} in order to
* add additional HTTP headers to the request.
* @param url the URL
- * @param request the Object to be POSTed, may be {@code null}
+ * @param request the Object to be POSTed (may be {@code null})
* @return the converted object
- * @see HttpEntity
* @since 3.0.2
+ * @see HttpEntity
*/
The {@code request} parameter can be a {@link HttpEntity} in order to
* add additional HTTP headers to the request.
* @param url the URL
- * @param request the Object to be PUT, may be {@code null}
+ * @param request the Object to be PUT (may be {@code null})
* @param uriVariables the variables to expand the template
* @see HttpEntity
*/
@@ -289,7 +289,7 @@ public interface RestOperations {
* The {@code request} parameter can be a {@link HttpEntity} in order to
* add additional HTTP headers to the request.
* @param url the URL
- * @param request the Object to be PUT, may be {@code null}
+ * @param request the Object to be PUT (may be {@code null})
* @param uriVariables the variables to expand the template
* @see HttpEntity
*/
@@ -300,12 +300,64 @@ public interface RestOperations {
* The {@code request} parameter can be a {@link HttpEntity} in order to
* add additional HTTP headers to the request.
* @param url the URL
- * @param request the Object to be PUT, may be {@code null}
+ * @param request the Object to be PUT (may be {@code null})
* @see HttpEntity
*/
void put(URI url, Object request) throws RestClientException;
+ // PATCH
+
+ /**
+ * Update a resource by PATCHing the given object to the URI template,
+ * and returns the representation found in the response.
+ * URI Template variables are expanded using the given URI variables, if any.
+ * The {@code request} parameter can be a {@link HttpEntity} in order to
+ * add additional HTTP headers to the request.
+ * @param url the URL
+ * @param request the Object to be PATCHed (may be {@code null})
+ * @param responseType the type of the return value
+ * @param uriVariables the variables to expand the template
+ * @return the converted object
+ * @since 4.3.5
+ * @see HttpEntity
+ */
+ URI Template variables are expanded using the given map.
+ * The {@code request} parameter can be a {@link HttpEntity} in order to
+ * add additional HTTP headers to the request.
+ * @param url the URL
+ * @param request the Object to be PATCHed (may be {@code null})
+ * @param responseType the type of the return value
+ * @param uriVariables the variables to expand the template
+ * @return the converted object
+ * @since 4.3.5
+ * @see HttpEntity
+ */
+ The {@code request} parameter can be a {@link HttpEntity} in order to
+ * add additional HTTP headers to the request.
+ * @param url the URL
+ * @param request the Object to be PATCHed (may be {@code null})
+ * @param responseType the type of the return value
+ * @return the converted object
+ * @since 4.3.5
+ * @see HttpEntity
+ */
+ URI Template variables are expanded using the given URI variables, if any.
* @param url the URL
* @param method the HTTP method (GET, POST, etc)
- * @param requestEntity the entity (headers and/or body) to write to the request, may be {@code null}
+ * @param requestEntity the entity (headers and/or body) to write to the request
+ * may be {@code null})
* @param responseType the type of the return value
* @param uriVariables the variables to expand in the template
* @return the response as entity
@@ -383,7 +436,8 @@ public interface RestOperations {
* URI Template variables are expanded using the given URI variables, if any.
* @param url the URL
* @param method the HTTP method (GET, POST, etc)
- * @param requestEntity the entity (headers and/or body) to write to the request, may be {@code null}
+ * @param requestEntity the entity (headers and/or body) to write to the request
+ * (may be {@code null})
* @param responseType the type of the return value
* @param uriVariables the variables to expand in the template
* @return the response as entity
@@ -397,7 +451,8 @@ public interface RestOperations {
* returns the response as {@link ResponseEntity}.
* @param url the URL
* @param method the HTTP method (GET, POST, etc)
- * @param requestEntity the entity (headers and/or body) to write to the request, may be {@code null}
+ * @param requestEntity the entity (headers and/or body) to write to the request
+ * (may be {@code null})
* @param responseType the type of the return value
* @return the response as entity
* @since 3.0.2
@@ -416,7 +471,7 @@ public interface RestOperations {
* @param url the URL
* @param method the HTTP method (GET, POST, etc)
* @param requestEntity the entity (headers and/or body) to write to the
- * request, may be {@code null}
+ * request (may be {@code null})
* @param responseType the type of the return value
* @param uriVariables the variables to expand in the template
* @return the response as entity
@@ -435,7 +490,8 @@ public interface RestOperations {
*
* @param url the URL
* @param method the HTTP method (GET, POST, etc)
- * @param requestEntity the entity (headers and/or body) to write to the request, may be {@code null}
+ * @param requestEntity the entity (headers and/or body) to write to the request
+ * (may be {@code null})
* @param responseType the type of the return value
* @param uriVariables the variables to expand in the template
* @return the response as entity
@@ -454,7 +510,8 @@ public interface RestOperations {
*
* @param url the URL
* @param method the HTTP method (GET, POST, etc)
- * @param requestEntity the entity (headers and/or body) to write to the request, may be {@code null}
+ * @param requestEntity the entity (headers and/or body) to write to the request
+ * (may be {@code null})
* @param responseType the type of the return value
* @return the response as entity
* @since 3.2
diff --git a/spring-web/src/main/java/org/springframework/web/client/RestTemplate.java b/spring-web/src/main/java/org/springframework/web/client/RestTemplate.java
index 24312094fe6..0b8734443e8 100644
--- a/spring-web/src/main/java/org/springframework/web/client/RestTemplate.java
+++ b/spring-web/src/main/java/org/springframework/web/client/RestTemplate.java
@@ -445,6 +445,39 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
}
+ // PATCH
+
+ @Override
+ public