WIP: Spring-Upgrade auf 2.2.0
[facebook-errors] / src / main / java / de / juplo / facebook / errors / FacebookErrorsOAuth2AutoConfiguration.java
1 package de.juplo.facebook.errors;
2
3
4 import org.slf4j.Logger;
5 import org.slf4j.LoggerFactory;
6 import org.springframework.beans.BeansException;
7 import org.springframework.beans.factory.config.BeanPostProcessor;
8 import org.springframework.boot.autoconfigure.AutoConfigureAfter;
9 import org.springframework.boot.autoconfigure.security.oauth2.client.servlet.OAuth2ClientAutoConfiguration;
10 import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
11 import org.springframework.context.annotation.Bean;
12 import org.springframework.context.annotation.Configuration;
13
14
15 /**
16  * Automatic configuration for Srping-Security-OAuth2
17  *
18  * @author Kai Moritz
19  */
20 @Configuration
21 @AutoConfigureAfter({
22   WebMvcAutoConfiguration.class,
23   OAuth2ClientAutoConfiguration.class
24   })
25 public class FacebookErrorsOAuth2AutoConfiguration
26 {
27   private static final Logger LOG =
28       LoggerFactory.getLogger(FacebookErrorsOAuth2AutoConfiguration.class);
29
30   @Bean
31   static public BeanPostProcessor errorHandlerInjectorOAuth2()
32   {
33     LOG.info("Configuring OAuth2GraphApiErrorHandler for handling error-messages");
34
35     return new BeanPostProcessor()
36     {
37       @Override
38       public Object postProcessBeforeInitialization(
39           Object bean,
40           String beanName
41           )
42           throws
43             BeansException
44       {
45         if (bean instanceof OAuth2RestTemplate)
46         {
47           LOG.debug("Injecting OAuth2GraphApiErrorHandler in {}", bean);
48           OAuth2RestTemplate template = (OAuth2RestTemplate) bean;
49           template.setErrorHandler(
50               new OAuth2GraphApiErrorHandler(
51                   (OAuth2ErrorHandler)template.getErrorHandler()
52                   )
53               );
54         }
55
56         return bean;
57       }
58
59       @Override
60       public Object postProcessAfterInitialization(
61           Object bean,
62           String beanName
63           )
64           throws
65           BeansException
66       {
67         return bean;
68       }
69     };
70   }
71 }