1 package de.juplo.facebook.errors;
4 import org.slf4j.Logger;
5 import org.slf4j.LoggerFactory;
6 import org.springframework.beans.BeansException;
7 import org.springframework.beans.factory.BeanCreationException;
8 import org.springframework.beans.factory.config.BeanPostProcessor;
9 import org.springframework.boot.autoconfigure.AutoConfigureAfter;
10 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
11 import org.springframework.boot.autoconfigure.social.FacebookAutoConfiguration;
12 import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration;
13 import org.springframework.context.annotation.Bean;
14 import org.springframework.context.annotation.Configuration;
15 import org.springframework.social.facebook.api.Facebook;
16 import org.springframework.social.facebook.api.impl.FacebookTemplate;
17 import org.springframework.web.client.ResponseErrorHandler;
18 import org.springframework.web.client.RestTemplate;
23 * Automatic configuration for Srping-Social-Facebook
28 @ConditionalOnClass(value = FacebookTemplate.class)
30 WebMvcAutoConfiguration.class,
31 FacebookAutoConfiguration.class
33 public class FacebookErrorsSpringSocialAutoConfiguration
35 private static final Logger LOG =
36 LoggerFactory.getLogger(FacebookErrorsSpringSocialAutoConfiguration.class);
40 static public BeanPostProcessor errorHandlerInjectorSpringSocial()
42 LOG.info("Configuring GraphApiErrorHandler for handling error-messages");
43 return new BeanPostProcessor()
46 public Object postProcessBeforeInitialization(
57 public Object postProcessAfterInitialization(
64 if (bean instanceof Facebook)
68 Facebook facebook = (Facebook) bean;
69 RestTemplate template = (RestTemplate) facebook.restOperations();
70 ResponseErrorHandler handler = template.getErrorHandler();
71 template.setErrorHandler(new GraphApiErrorHandler(handler));
72 // Be sure, that the potential exception is triggered before!
73 LOG.debug("Injecting GraphApiErrorHandler in {}", facebook);
75 catch (BeanCreationException e)
78 * This exception is called, if the BeanPostProcessor is called
79 * with a scoped bean, while the according scope is not
81 * This happens during initialization and can safely be ignored,
82 * because we only have to inject the handler for beans, that are