46 lines
1.6 KiB
Java
Executable File
46 lines
1.6 KiB
Java
Executable File
package zw.qantra.tm.exceptions;
|
|
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.http.client.ClientHttpResponse;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.web.client.ResponseErrorHandler;
|
|
|
|
import java.io.BufferedReader;
|
|
import java.io.IOException;
|
|
import java.io.InputStreamReader;
|
|
import java.util.stream.Collectors;
|
|
|
|
@Component
|
|
public class RestTemplateResponseErrorHandler
|
|
implements ResponseErrorHandler {
|
|
private Logger logger = LoggerFactory.getLogger(this.getClass().toString());
|
|
|
|
@Override
|
|
public boolean hasError(ClientHttpResponse httpResponse)
|
|
throws IOException {
|
|
return (
|
|
httpResponse.getStatusCode().is5xxServerError()
|
|
|| httpResponse.getStatusCode().is4xxClientError());
|
|
}
|
|
|
|
@Override
|
|
public void handleError(ClientHttpResponse httpResponse)
|
|
throws IOException {
|
|
|
|
logger.info("Rest error code: " + httpResponse.getStatusCode());
|
|
|
|
if (httpResponse.getStatusCode()
|
|
.is5xxServerError()) {
|
|
// handle SERVER_ERROR
|
|
logger.info("Server Error");
|
|
} else if (httpResponse.getStatusCode().is4xxClientError()) {
|
|
// handle CLIENT_ERROR
|
|
logger.info("Client Error");
|
|
BufferedReader reader = new BufferedReader(new InputStreamReader(httpResponse.getBody()));
|
|
String httpBodyResponse = reader.lines().collect(Collectors.joining(""));
|
|
|
|
throw new RestException(httpBodyResponse, "Client Error: " + httpResponse.getStatusCode());
|
|
}
|
|
}
|
|
} |