RestTemplate avoids use of warn level for response errors

Protected handleResponse method replaces former private logResponseStatus/handleResponseError methods.

Issue: SPR-12760
(cherry picked from commit 594a14a)
This commit is contained in:
Juergen Hoeller 2015-02-27 22:28:07 +01:00
parent 0f95c81712
commit 7eb4679f28
1 changed files with 20 additions and 20 deletions

View File

@ -104,6 +104,7 @@ import org.springframework.web.util.UriTemplate;
* @author Arjen Poutsma * @author Arjen Poutsma
* @author Brian Clozel * @author Brian Clozel
* @author Roy Clarkson * @author Roy Clarkson
* @author Juergen Hoeller
* @since 3.0 * @since 3.0
* @see HttpMessageConverter * @see HttpMessageConverter
* @see RequestCallback * @see RequestCallback
@ -566,12 +567,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
requestCallback.doWithRequest(request); requestCallback.doWithRequest(request);
} }
response = request.execute(); response = request.execute();
if (!getErrorHandler().hasError(response)) { handleResponse(url, method, response);
logResponseStatus(method, url, response);
}
else {
handleResponseError(method, url, response);
}
if (responseExtractor != null) { if (responseExtractor != null) {
return responseExtractor.extractData(response); return responseExtractor.extractData(response);
} }
@ -590,29 +586,33 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
} }
} }
private void logResponseStatus(HttpMethod method, URI url, ClientHttpResponse response) { /**
* Handle the given response, performing appropriate logging and
* invoking the {@link ResponseErrorHandler} if necessary.
* <p>Can be overridden in subclasses.
* @param url the fully-expanded URL to connect to
* @param method the HTTP method to execute (GET, POST, etc.)
* @param response the resulting {@link ClientHttpResponse}
* @throws IOException if propagated from {@link ResponseErrorHandler}
* @see #setErrorHandler
* @since 4.1.6
*/
protected void handleResponse(URI url, HttpMethod method, ClientHttpResponse response) throws IOException {
ResponseErrorHandler errorHandler = getErrorHandler();
boolean hasError = errorHandler.hasError(response);
if (logger.isDebugEnabled()) { if (logger.isDebugEnabled()) {
try { try {
logger.debug(method.name() + " request for \"" + url + "\" resulted in " + logger.debug(method.name() + " request for \"" + url + "\" resulted in " +
response.getRawStatusCode() + " (" + response.getStatusText() + ")"); response.getRawStatusCode() + " (" + response.getStatusText() + ")" +
(hasError ? "; invoking error handler" : ""));
} }
catch (IOException ex) { catch (IOException ex) {
// ignore // ignore
} }
} }
} if (hasError) {
errorHandler.handleError(response);
private void handleResponseError(HttpMethod method, URI url, ClientHttpResponse response) throws IOException {
if (logger.isWarnEnabled()) {
try {
logger.warn(method.name() + " request for \"" + url + "\" resulted in " +
response.getRawStatusCode() + " (" + response.getStatusText() + "); invoking error handler");
}
catch (IOException ex) {
// ignore
}
} }
getErrorHandler().handleError(response);
} }
/** /**