Merge branch '1.2.x'
This commit is contained in:
@@ -86,15 +86,22 @@ public class TraceWebClientAutoConfiguration {
|
||||
}
|
||||
|
||||
@Configuration
|
||||
@ConditionalOnClass(UserInfoRestTemplateCustomizer.class)
|
||||
@ConditionalOnClass({ UserInfoRestTemplateCustomizer.class, OAuth2RestTemplate.class })
|
||||
protected static class TraceOAuthConfiguration {
|
||||
|
||||
@Autowired BeanFactory beanFactory;
|
||||
|
||||
@Bean UserInfoRestTemplateCustomizerBPP userInfoRestTemplateCustomizerBeanPostProcessor() {
|
||||
@Bean
|
||||
UserInfoRestTemplateCustomizerBPP userInfoRestTemplateCustomizerBeanPostProcessor() {
|
||||
return new UserInfoRestTemplateCustomizerBPP(this.beanFactory);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
UserInfoRestTemplateCustomizer traceUserInfoRestTemplateCustomizer() {
|
||||
return new TraceUserInfoRestTemplateCustomizer(this.beanFactory);
|
||||
}
|
||||
|
||||
private static class UserInfoRestTemplateCustomizerBPP implements BeanPostProcessor {
|
||||
|
||||
private final BeanFactory beanFactory;
|
||||
@@ -113,15 +120,9 @@ public class TraceWebClientAutoConfiguration {
|
||||
public Object postProcessAfterInitialization(final Object bean,
|
||||
String beanName) throws BeansException {
|
||||
final BeanFactory beanFactory = this.beanFactory;
|
||||
if (bean instanceof UserInfoRestTemplateCustomizer) {
|
||||
return new UserInfoRestTemplateCustomizer() {
|
||||
@Override public void customize(OAuth2RestTemplate template) {
|
||||
final TraceRestTemplateInterceptor interceptor =
|
||||
beanFactory.getBean(TraceRestTemplateInterceptor.class);
|
||||
new RestTemplateInterceptorInjector(interceptor).inject(template);
|
||||
((UserInfoRestTemplateCustomizer) bean).customize(template);
|
||||
}
|
||||
};
|
||||
if (bean instanceof UserInfoRestTemplateCustomizer &&
|
||||
!(bean instanceof TraceUserInfoRestTemplateCustomizer)) {
|
||||
return new TraceUserInfoRestTemplateCustomizer(beanFactory, bean);
|
||||
}
|
||||
return bean;
|
||||
}
|
||||
@@ -142,4 +143,28 @@ class RestTemplateInterceptorInjector {
|
||||
interceptors.add(this.interceptor);
|
||||
restTemplate.setInterceptors(interceptors);
|
||||
}
|
||||
}
|
||||
|
||||
class TraceUserInfoRestTemplateCustomizer implements UserInfoRestTemplateCustomizer {
|
||||
|
||||
private final BeanFactory beanFactory;
|
||||
private final Object delegate;
|
||||
|
||||
TraceUserInfoRestTemplateCustomizer(BeanFactory beanFactory) {
|
||||
this(beanFactory, null);
|
||||
}
|
||||
|
||||
TraceUserInfoRestTemplateCustomizer(BeanFactory beanFactory, Object bean) {
|
||||
this.beanFactory = beanFactory;
|
||||
this.delegate = bean;
|
||||
}
|
||||
|
||||
@Override public void customize(OAuth2RestTemplate template) {
|
||||
final TraceRestTemplateInterceptor interceptor =
|
||||
this.beanFactory.getBean(TraceRestTemplateInterceptor.class);
|
||||
new RestTemplateInterceptorInjector(interceptor).inject(template);
|
||||
if (this.delegate != null) {
|
||||
((UserInfoRestTemplateCustomizer) this.delegate).customize(template);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user