Use context.getBean() for ClientRegistrationRepository

Fixes gh-5538
This commit is contained in:
Joe Grandja 2018-07-20 09:41:56 -04:00
parent 9a144d742e
commit a4fdc28b27
2 changed files with 2 additions and 13 deletions

View File

@ -16,7 +16,6 @@
package org.springframework.security.config.annotation.web.configurers.oauth2.client;
import org.springframework.beans.factory.BeanFactoryUtils;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.NoUniqueBeanDefinitionException;
import org.springframework.context.ApplicationContext;
import org.springframework.security.config.annotation.web.HttpSecurityBuilder;
@ -51,16 +50,7 @@ final class OAuth2ClientConfigurerUtils {
}
private static <B extends HttpSecurityBuilder<B>> ClientRegistrationRepository getClientRegistrationRepositoryBean(B builder) {
Map<String, ClientRegistrationRepository> clientRegistrationRepositoryMap = BeanFactoryUtils.beansOfTypeIncludingAncestors(
builder.getSharedObject(ApplicationContext.class), ClientRegistrationRepository.class);
if (clientRegistrationRepositoryMap.isEmpty()) {
throw new NoSuchBeanDefinitionException(ClientRegistrationRepository.class);
} else if (clientRegistrationRepositoryMap.size() > 1) {
throw new NoUniqueBeanDefinitionException(ClientRegistrationRepository.class, clientRegistrationRepositoryMap.size(),
"Expected single matching bean of type '" + ClientRegistrationRepository.class.getName() + "' but found " +
clientRegistrationRepositoryMap.size() + ": " + StringUtils.collectionToCommaDelimitedString(clientRegistrationRepositoryMap.keySet()));
}
return clientRegistrationRepositoryMap.values().iterator().next();
return builder.getSharedObject(ApplicationContext.class).getBean(ClientRegistrationRepository.class);
}
static <B extends HttpSecurityBuilder<B>> OAuth2AuthorizedClientRepository getAuthorizedClientRepository(B builder) {

View File

@ -171,8 +171,7 @@ public class OAuth2ClientConfigurationTests {
public void loadContextWhenClientRegistrationRepositoryRegisteredTwiceThenThrowNoUniqueBeanDefinitionException() {
assertThatThrownBy(() -> this.spring.register(ClientRegistrationRepositoryRegisteredTwiceConfig.class).autowire())
.hasRootCauseInstanceOf(NoUniqueBeanDefinitionException.class)
.hasMessageContaining("Expected single matching bean of type '" + ClientRegistrationRepository.class.getName() +
"' but found 2: clientRegistrationRepository1,clientRegistrationRepository2");
.hasMessageContaining("expected single matching bean but found 2: clientRegistrationRepository1,clientRegistrationRepository2");
}
@EnableWebMvc