initial commit
This commit is contained in:
46
src/main/java/zw/qantra/tm/exceptions/RestTemplateResponseErrorHandler.java
Executable file
46
src/main/java/zw/qantra/tm/exceptions/RestTemplateResponseErrorHandler.java
Executable file
@@ -0,0 +1,46 @@
|
||||
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");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user