Skip to content

Commit

Permalink
Use bean factory method
Browse files Browse the repository at this point in the history
Closes gh-14094
  • Loading branch information
sjohnr committed Nov 6, 2023
1 parent 6e0fb2f commit 77acaaa
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ public String[] selectImports(AnnotationMetadata importingClassMetadata) {
@Configuration(proxyBeanMethods = false)
static class OAuth2AuthorizedClientManagerConfiguration {

@Bean
@Bean(name = OAuth2AuthorizedClientManagerRegistrar.BEAN_NAME)
OAuth2AuthorizedClientManagerRegistrar authorizedClientManagerRegistrar() {
return new OAuth2AuthorizedClientManagerRegistrar();
}
Expand Down Expand Up @@ -173,6 +173,10 @@ private OAuth2AuthorizedClientManager getAuthorizedClientManager() {
static final class OAuth2AuthorizedClientManagerRegistrar
implements BeanDefinitionRegistryPostProcessor, BeanFactoryAware {

static final String BEAN_NAME = "authorizedClientManagerRegistrar";

static final String FACTORY_METHOD_NAME = "getAuthorizedClientManager";

// @formatter:off
private static final Set<Class<?>> KNOWN_AUTHORIZED_CLIENT_PROVIDERS = Set.of(
AuthorizationCodeOAuth2AuthorizedClientProvider.class,
Expand All @@ -196,7 +200,8 @@ public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) t
}

BeanDefinition beanDefinition = BeanDefinitionBuilder
.genericBeanDefinition(OAuth2AuthorizedClientManager.class, this::getAuthorizedClientManager)
.rootBeanDefinition(OAuth2AuthorizedClientManager.class)
.setFactoryMethodOnBean(FACTORY_METHOD_NAME, BEAN_NAME)
.getBeanDefinition();

registry.registerBeanDefinition(this.beanNameGenerator.generateBeanName(beanDefinition, registry),
Expand All @@ -220,7 +225,7 @@ OAuth2AuthorizedClientManager getAuthorizedClientManagerIfAvailable() {
return getAuthorizedClientManager();
}

private OAuth2AuthorizedClientManager getAuthorizedClientManager() {
OAuth2AuthorizedClientManager getAuthorizedClientManager() {
ClientRegistrationRepository clientRegistrationRepository = BeanFactoryUtils
.beanOfTypeIncludingAncestors(this.beanFactory, ClientRegistrationRepository.class, true, true);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -422,7 +422,9 @@ private void registerOAuth2ClientPostProcessors() {
.registerWithGeneratedName(new RootBeanDefinition(OAuth2ClientWebMvcSecurityPostProcessor.class));
}
this.pc.getReaderContext()
.registerWithGeneratedName(new RootBeanDefinition(OAuth2AuthorizedClientManagerRegistrar.class));
.getRegistry()
.registerBeanDefinition(OAuth2AuthorizedClientManagerRegistrar.BEAN_NAME,
new RootBeanDefinition(OAuth2AuthorizedClientManagerRegistrar.class));
}

private void createSaml2LoginFilter(BeanReference authenticationManager,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,10 @@
*/
final class OAuth2AuthorizedClientManagerRegistrar implements BeanDefinitionRegistryPostProcessor, BeanFactoryAware {

static final String BEAN_NAME = "authorizedClientManagerRegistrar";

static final String FACTORY_METHOD_NAME = "getAuthorizedClientManager";

// @formatter:off
private static final Set<Class<?>> KNOWN_AUTHORIZED_CLIENT_PROVIDERS = Set.of(
AuthorizationCodeOAuth2AuthorizedClientProvider.class,
Expand All @@ -88,8 +92,8 @@ public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) t
return;
}

BeanDefinition beanDefinition = BeanDefinitionBuilder
.genericBeanDefinition(OAuth2AuthorizedClientManager.class, this::getAuthorizedClientManager)
BeanDefinition beanDefinition = BeanDefinitionBuilder.rootBeanDefinition(OAuth2AuthorizedClientManager.class)
.setFactoryMethodOnBean(FACTORY_METHOD_NAME, BEAN_NAME)
.getBeanDefinition();

registry.registerBeanDefinition(this.beanNameGenerator.generateBeanName(beanDefinition, registry),
Expand Down

0 comments on commit 77acaaa

Please sign in to comment.