diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/client/OAuth2ClientPropertiesRegistrationAdapter.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/client/OAuth2ClientPropertiesRegistrationAdapter.java index 2c5dccfd2c1..e9c655c39e1 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/client/OAuth2ClientPropertiesRegistrationAdapter.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/client/OAuth2ClientPropertiesRegistrationAdapter.java @@ -18,12 +18,10 @@ package org.springframework.boot.autoconfigure.security.oauth2.client; import java.util.HashMap; import java.util.Map; -import java.util.function.Consumer; -import java.util.function.Function; -import java.util.function.Supplier; import org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientProperties.Provider; import org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientProperties.Registration; +import org.springframework.boot.context.properties.PropertyMapper; import org.springframework.boot.context.properties.bind.convert.BinderConversionService; import org.springframework.core.convert.ConversionException; import org.springframework.security.config.oauth2.client.CommonOAuth2Provider; @@ -56,16 +54,19 @@ final class OAuth2ClientPropertiesRegistrationAdapter { private static ClientRegistration getClientRegistration(String registrationId, Registration properties, Map providers) { Builder builder = getBuilder(registrationId, properties.getProvider(), providers); - copyIfNotNull(properties::getClientId, builder::clientId); - copyIfNotNull(properties::getClientSecret, builder::clientSecret); - copyIfNotNull(properties::getClientAuthenticationMethod, - builder::clientAuthenticationMethod, ClientAuthenticationMethod::new); - copyIfNotNull(properties::getAuthorizationGrantType, - builder::authorizationGrantType, AuthorizationGrantType::new); - copyIfNotNull(properties::getRedirectUriTemplate, builder::redirectUriTemplate); - copyIfNotNull(properties::getScope, builder::scope, - (scope) -> scope.toArray(new String[scope.size()])); - copyIfNotNull(properties::getClientName, builder::clientName); + PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull(); + map.from(properties::getClientId).to(builder::clientId); + map.from(properties::getClientSecret).to(builder::clientSecret); + map.from(properties::getClientAuthenticationMethod) + .as(ClientAuthenticationMethod::new) + .to(builder::clientAuthenticationMethod); + map.from(properties::getAuthorizationGrantType).as(AuthorizationGrantType::new) + .to(builder::authorizationGrantType); + map.from(properties::getRedirectUriTemplate).to(builder::redirectUriTemplate); + map.from(properties::getScope) + .as((scope) -> scope.toArray(new String[scope.size()])) + .to(builder::scope); + map.from(properties::getClientName).to(builder::clientName); return builder.build(); } @@ -95,11 +96,12 @@ final class OAuth2ClientPropertiesRegistrationAdapter { } private static Builder getBuilder(Builder builder, Provider provider) { - copyIfNotNull(provider::getAuthorizationUri, builder::authorizationUri); - copyIfNotNull(provider::getTokenUri, builder::tokenUri); - copyIfNotNull(provider::getUserInfoUri, builder::userInfoUri); - copyIfNotNull(provider::getJwkSetUri, builder::jwkSetUri); - copyIfNotNull(provider::getUserNameAttribute, builder::userNameAttributeName); + PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull(); + map.from(provider::getAuthorizationUri).to(builder::authorizationUri); + map.from(provider::getTokenUri).to(builder::tokenUri); + map.from(provider::getUserInfoUri).to(builder::userInfoUri); + map.from(provider::getJwkSetUri).to(builder::jwkSetUri); + map.from(provider::getUserNameAttribute).to(builder::userNameAttributeName); return builder; } @@ -113,16 +115,4 @@ final class OAuth2ClientPropertiesRegistrationAdapter { } } - private static void copyIfNotNull(Supplier supplier, Consumer consumer) { - copyIfNotNull(supplier, consumer, Function.identity()); - } - - private static void copyIfNotNull(Supplier supplier, Consumer consumer, - Function converter) { - S value = supplier.get(); - if (value != null) { - consumer.accept(converter.apply(value)); - } - } - }