1 package de.juplo.facebook;
3 import java.io.IOException;
5 import org.springframework.http.client.ClientHttpResponse;
6 import org.springframework.http.converter.HttpMessageConverter;
7 import org.springframework.http.converter.HttpMessageNotReadableException;
8 import org.springframework.security.oauth2.client.http.OAuth2ErrorHandler;
9 import org.springframework.web.client.HttpMessageConverterExtractor;
10 import org.springframework.web.client.RestClientException;
11 import org.springframework.web.client.RestTemplate;
19 public class GraphApiErrorHandler extends OAuth2ErrorHandler
21 private final OAuth2ErrorHandler errorHandler;
22 private List<HttpMessageConverter<?>> messageConverters =
23 new RestTemplate().getMessageConverters();
26 public GraphApiErrorHandler(OAuth2ErrorHandler errorHandler)
29 this.errorHandler = errorHandler;
34 * @param messageConverters the messageConverters to set
37 public void setMessageConverters(
38 List<HttpMessageConverter<?>> messageConverters
41 this.messageConverters = messageConverters;
42 errorHandler.setMessageConverters(messageConverters);
46 public boolean hasError(ClientHttpResponse response) throws IOException
48 return errorHandler.hasError(response);
52 public void handleError(ClientHttpResponse response) throws IOException
54 HttpMessageConverterExtractor<GraphApiException> extractor =
55 new HttpMessageConverterExtractor<>(
56 GraphApiException.class,
62 GraphApiException body = extractor.extractData(response);
65 // If we can get an OAuth2Exception already from the body, it is likely
66 // to have more information than the header does, so just re-throw it
68 body.setHttpErrorCode(response.getRawStatusCode());
72 catch (RestClientException|HttpMessageNotReadableException e)
77 errorHandler.handleError(response);