|
|
|
@ -1,5 +1,5 @@ |
|
|
|
/* |
|
|
|
/* |
|
|
|
* Copyright 2002-2013 the original author or authors. |
|
|
|
* Copyright 2002-2016 the original author or authors. |
|
|
|
* |
|
|
|
* |
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
@ -29,12 +29,14 @@ import org.springframework.http.ResponseEntity; |
|
|
|
import org.springframework.util.concurrent.ListenableFuture; |
|
|
|
import org.springframework.util.concurrent.ListenableFuture; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Interface specifying a basic set of asynchronous RESTful operations. Implemented by |
|
|
|
* Interface specifying a basic set of asynchronous RESTful operations. |
|
|
|
* {@link AsyncRestTemplate}. Not often used directly, but a useful option to enhance |
|
|
|
* Implemented by {@link AsyncRestTemplate}. Not often used directly, but a useful |
|
|
|
* testability, as it can easily be mocked or stubbed. |
|
|
|
* option to enhance testability, as it can easily be mocked or stubbed. |
|
|
|
* |
|
|
|
* |
|
|
|
* @author Arjen Poutsma |
|
|
|
* @author Arjen Poutsma |
|
|
|
* @since 4.0 |
|
|
|
* @since 4.0 |
|
|
|
|
|
|
|
* @see AsyncRestTemplate |
|
|
|
|
|
|
|
* @see RestOperations |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public interface AsyncRestOperations { |
|
|
|
public interface AsyncRestOperations { |
|
|
|
|
|
|
|
|
|
|
|
@ -47,8 +49,8 @@ public interface AsyncRestOperations { |
|
|
|
// GET
|
|
|
|
// GET
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Asynchronously retrieve an entity by doing a GET on the specified URL. The response is |
|
|
|
* Asynchronously retrieve an entity by doing a GET on the specified URL. |
|
|
|
* converted and stored in an {@link ResponseEntity}. |
|
|
|
* The response is converted and stored in an {@link ResponseEntity}. |
|
|
|
* <p>URI Template variables are expanded using the given URI variables, if any. |
|
|
|
* <p>URI Template variables are expanded using the given URI variables, if any. |
|
|
|
* @param url the URL |
|
|
|
* @param url the URL |
|
|
|
* @param responseType the type of the return value |
|
|
|
* @param responseType the type of the return value |
|
|
|
@ -59,8 +61,8 @@ public interface AsyncRestOperations { |
|
|
|
Object... uriVariables) throws RestClientException; |
|
|
|
Object... uriVariables) throws RestClientException; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Asynchronously retrieve a representation by doing a GET on the URI template. The |
|
|
|
* Asynchronously retrieve a representation by doing a GET on the URI template. |
|
|
|
* response is converted and stored in an {@link ResponseEntity}. |
|
|
|
* The response is converted and stored in an {@link ResponseEntity}. |
|
|
|
* <p>URI Template variables are expanded using the given map. |
|
|
|
* <p>URI Template variables are expanded using the given map. |
|
|
|
* @param url the URL |
|
|
|
* @param url the URL |
|
|
|
* @param responseType the type of the return value |
|
|
|
* @param responseType the type of the return value |
|
|
|
@ -80,6 +82,7 @@ public interface AsyncRestOperations { |
|
|
|
<T> ListenableFuture<ResponseEntity<T>> getForEntity(URI url, Class<T> responseType) |
|
|
|
<T> ListenableFuture<ResponseEntity<T>> getForEntity(URI url, Class<T> responseType) |
|
|
|
throws RestClientException; |
|
|
|
throws RestClientException; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// HEAD
|
|
|
|
// HEAD
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
@ -109,6 +112,7 @@ public interface AsyncRestOperations { |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
ListenableFuture<HttpHeaders> headForHeaders(URI url) throws RestClientException; |
|
|
|
ListenableFuture<HttpHeaders> headForHeaders(URI url) throws RestClientException; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// POST
|
|
|
|
// POST
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
@ -117,7 +121,7 @@ public interface AsyncRestOperations { |
|
|
|
* typically indicates where the new resource is stored. |
|
|
|
* typically indicates where the new resource is stored. |
|
|
|
* <p>URI Template variables are expanded using the given URI variables, if any. |
|
|
|
* <p>URI Template variables are expanded using the given URI variables, if any. |
|
|
|
* @param url the URL |
|
|
|
* @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 |
|
|
|
* @param uriVariables the variables to expand the template |
|
|
|
* @return the value for the {@code Location} header wrapped in a {@link Future} |
|
|
|
* @return the value for the {@code Location} header wrapped in a {@link Future} |
|
|
|
* @see org.springframework.http.HttpEntity |
|
|
|
* @see org.springframework.http.HttpEntity |
|
|
|
@ -131,7 +135,7 @@ public interface AsyncRestOperations { |
|
|
|
* typically indicates where the new resource is stored. |
|
|
|
* typically indicates where the new resource is stored. |
|
|
|
* <p>URI Template variables are expanded using the given map. |
|
|
|
* <p>URI Template variables are expanded using the given map. |
|
|
|
* @param url the URL |
|
|
|
* @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 |
|
|
|
* @param uriVariables the variables to expand the template |
|
|
|
* @return the value for the {@code Location} header wrapped in a {@link Future} |
|
|
|
* @return the value for the {@code Location} header wrapped in a {@link Future} |
|
|
|
* @see org.springframework.http.HttpEntity |
|
|
|
* @see org.springframework.http.HttpEntity |
|
|
|
@ -144,7 +148,7 @@ public interface AsyncRestOperations { |
|
|
|
* returns the value of the {@code Location} header. This header typically indicates |
|
|
|
* returns the value of the {@code Location} header. This header typically indicates |
|
|
|
* where the new resource is stored. |
|
|
|
* where the new resource is stored. |
|
|
|
* @param url the URL |
|
|
|
* @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 wrapped in a {@link Future} |
|
|
|
* @return the value for the {@code Location} header wrapped in a {@link Future} |
|
|
|
* @see org.springframework.http.HttpEntity |
|
|
|
* @see org.springframework.http.HttpEntity |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
@ -155,7 +159,7 @@ public interface AsyncRestOperations { |
|
|
|
* and asynchronously returns the response as {@link ResponseEntity}. |
|
|
|
* and asynchronously returns the response as {@link ResponseEntity}. |
|
|
|
* <p>URI Template variables are expanded using the given URI variables, if any. |
|
|
|
* <p>URI Template variables are expanded using the given URI variables, if any. |
|
|
|
* @param url the URL |
|
|
|
* @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 |
|
|
|
* @param uriVariables the variables to expand the template |
|
|
|
* @return the entity wrapped in a {@link Future} |
|
|
|
* @return the entity wrapped in a {@link Future} |
|
|
|
* @see org.springframework.http.HttpEntity |
|
|
|
* @see org.springframework.http.HttpEntity |
|
|
|
@ -168,26 +172,26 @@ public interface AsyncRestOperations { |
|
|
|
* and asynchronously returns the response as {@link ResponseEntity}. |
|
|
|
* and asynchronously returns the response as {@link ResponseEntity}. |
|
|
|
* <p>URI Template variables are expanded using the given map. |
|
|
|
* <p>URI Template variables are expanded using the given map. |
|
|
|
* @param url the URL |
|
|
|
* @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 |
|
|
|
* @param uriVariables the variables to expand the template |
|
|
|
* @return the entity wrapped in a {@link Future} |
|
|
|
* @return the entity wrapped in a {@link Future} |
|
|
|
* @see org.springframework.http.HttpEntity |
|
|
|
* @see org.springframework.http.HttpEntity |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
<T> ListenableFuture<ResponseEntity<T>> postForEntity(String url, HttpEntity<?> request, |
|
|
|
<T> ListenableFuture<ResponseEntity<T>> postForEntity(String url, HttpEntity<?> request, |
|
|
|
Class<T> responseType, Map<String, ?> uriVariables) |
|
|
|
Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException; |
|
|
|
throws RestClientException; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Create a new resource by POSTing the given object to the URL, |
|
|
|
* Create a new resource by POSTing the given object to the URL, |
|
|
|
* and asynchronously returns the response as {@link ResponseEntity}. |
|
|
|
* and asynchronously returns the response as {@link ResponseEntity}. |
|
|
|
* @param url the URL |
|
|
|
* @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 entity wrapped in a {@link Future} |
|
|
|
* @return the entity wrapped in a {@link Future} |
|
|
|
* @see org.springframework.http.HttpEntity |
|
|
|
* @see org.springframework.http.HttpEntity |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
<T> ListenableFuture<ResponseEntity<T>> postForEntity(URI url, HttpEntity<?> request, |
|
|
|
<T> ListenableFuture<ResponseEntity<T>> postForEntity(URI url, HttpEntity<?> request, |
|
|
|
Class<T> responseType) throws RestClientException; |
|
|
|
Class<T> responseType) throws RestClientException; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// PUT
|
|
|
|
// PUT
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
@ -195,7 +199,7 @@ public interface AsyncRestOperations { |
|
|
|
* <p>URI Template variables are expanded using the given URI variables, if any. |
|
|
|
* <p>URI Template variables are expanded using the given URI variables, if any. |
|
|
|
* <p>The Future will return a {@code null} result upon completion. |
|
|
|
* <p>The Future will return a {@code null} result upon completion. |
|
|
|
* @param url the URL |
|
|
|
* @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 |
|
|
|
* @param uriVariables the variables to expand the template |
|
|
|
* @see HttpEntity |
|
|
|
* @see HttpEntity |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
@ -207,7 +211,7 @@ public interface AsyncRestOperations { |
|
|
|
* <p>URI Template variables are expanded using the given map. |
|
|
|
* <p>URI Template variables are expanded using the given map. |
|
|
|
* <p>The Future will return a {@code null} result upon completion. |
|
|
|
* <p>The Future will return a {@code null} result upon completion. |
|
|
|
* @param url the URL |
|
|
|
* @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 |
|
|
|
* @param uriVariables the variables to expand the template |
|
|
|
* @see HttpEntity |
|
|
|
* @see HttpEntity |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
@ -218,11 +222,12 @@ public interface AsyncRestOperations { |
|
|
|
* Creates a new resource by PUTting the given object to URL. |
|
|
|
* Creates a new resource by PUTting the given object to URL. |
|
|
|
* <p>The Future will return a {@code null} result upon completion. |
|
|
|
* <p>The Future will return a {@code null} result upon completion. |
|
|
|
* @param url the URL |
|
|
|
* @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 |
|
|
|
* @see HttpEntity |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
ListenableFuture<?> put(URI url, HttpEntity<?> request) throws RestClientException; |
|
|
|
ListenableFuture<?> put(URI url, HttpEntity<?> request) throws RestClientException; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// DELETE
|
|
|
|
// DELETE
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
@ -251,6 +256,7 @@ public interface AsyncRestOperations { |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
ListenableFuture<?> delete(URI url) throws RestClientException; |
|
|
|
ListenableFuture<?> delete(URI url) throws RestClientException; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// OPTIONS
|
|
|
|
// OPTIONS
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
@ -344,7 +350,7 @@ public interface AsyncRestOperations { |
|
|
|
* @param url the URL |
|
|
|
* @param url the URL |
|
|
|
* @param method the HTTP method (GET, POST, etc) |
|
|
|
* @param method the HTTP method (GET, POST, etc) |
|
|
|
* @param requestEntity the entity (headers and/or body) to write to the |
|
|
|
* @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 responseType the type of the return value |
|
|
|
* @param uriVariables the variables to expand in the template |
|
|
|
* @param uriVariables the variables to expand in the template |
|
|
|
* @return the response as entity wrapped in a {@link Future} |
|
|
|
* @return the response as entity wrapped in a {@link Future} |
|
|
|
@ -364,7 +370,8 @@ public interface AsyncRestOperations { |
|
|
|
* </pre> |
|
|
|
* </pre> |
|
|
|
* @param url the URL |
|
|
|
* @param url the URL |
|
|
|
* @param method the HTTP method (GET, POST, etc) |
|
|
|
* @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 responseType the type of the return value |
|
|
|
* @param uriVariables the variables to expand in the template |
|
|
|
* @param uriVariables the variables to expand in the template |
|
|
|
* @return the response as entity wrapped in a {@link Future} |
|
|
|
* @return the response as entity wrapped in a {@link Future} |
|
|
|
@ -384,7 +391,8 @@ public interface AsyncRestOperations { |
|
|
|
* </pre> |
|
|
|
* </pre> |
|
|
|
* @param url the URL |
|
|
|
* @param url the URL |
|
|
|
* @param method the HTTP method (GET, POST, etc) |
|
|
|
* @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 responseType the type of the return value |
|
|
|
* @return the response as entity wrapped in a {@link Future} |
|
|
|
* @return the response as entity wrapped in a {@link Future} |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
|