Source:
<code>public Descriptor merge(Descriptor o) { OpenIDConnectProviderDescriptor other = (OpenIDConnectProviderDescriptor) o; OpenIDConnectProviderDescriptor merged = new OpenIDConnectProviderDescriptor(); merged.name = name; merged.enabled = other.enabled; merged.authorizationServerURL = StringUtils.isNotBlank(other.authorizationServerURL) ? other.authorizationServerURL : authorizationServerURL; merged.clientId = StringUtils.isNotBlank(other.clientId) ? other.clientId : clientId; merged.clientSecret = StringUtils.isNotBlank(other.clientSecret) ? other.clientSecret : clientSecret; merged.icon = StringUtils.isNotBlank(other.icon) ? other.icon : icon; merged.scopes = ArrayUtils.isNotEmpty(other.scopes) ? other.scopes : scopes; merged.tokenServerURL = StringUtils.isNotBlank(other.tokenServerURL) ? other.tokenServerURL : tokenServerURL; merged.userInfoURL = StringUtils.isNotBlank(other.userInfoURL) ? other.userInfoURL : userInfoURL; merged.label = StringUtils.isNotBlank(other.label) ? other.label : label; merged.description = StringUtils.isNotBlank(other.description) ? other.description : description; merged.accessTokenKey = !other.accessTokenKey.equals(DEFAULT_ACCESS_TOKEN_KEY) ? other.accessTokenKey : accessTokenKey; merged.userInfoClass = other.userInfoClass != DEFAULT_USER_INFO_CLASS ? other.userInfoClass : userInfoClass; merged.redirectUriResolver = other.redirectUriResolver != DEFAULT_REDIRECT_URI_RESOLVER_CLASS ? other.redirectUriResolver : redirectUriResolver; <START> merged.userResolverClass = other.getUserResolverClass() != DEFAULT_USER_RESOLVER_CLASS ? other.userResolverClass <END> : userResolverClass; merged.userMapper = StringUtils.isNotBlank(other.userMapper) ? other.userMapper : userMapper; merged.authenticationMethod = !other.authenticationMethod.equals(DEFAULT_AUTHENTICATION_METHOD) ? other.authenticationMethod : authenticationMethod; return merged; }</code><technical_language>strictly needed implementation of getUserResolverClass(), safer with: suggestion Class<? extends UserResolver> otherUserResolverClass = other.getUserResolverClass(); merged.userResolverClass = otherUserResolverClass != DEFAULT_USER_RESOLVER_CLASS ? otherUserResolverClass : userResolverClass;</technical_language>

Target:
public Descriptor merge(Descriptor o) { OpenIDConnectProviderDescriptor other = (OpenIDConnectProviderDescriptor) o; OpenIDConnectProviderDescriptor merged = new OpenIDConnectProviderDescriptor(); merged.name = name; merged.enabled = other.enabled; merged.authorizationServerURL = StringUtils.isNotBlank(other.authorizationServerURL) ? other.authorizationServerURL : authorizationServerURL; merged.clientId = StringUtils.isNotBlank(other.clientId) ? other.clientId : clientId; merged.clientSecret = StringUtils.isNotBlank(other.clientSecret) ? other.clientSecret : clientSecret; merged.icon = StringUtils.isNotBlank(other.icon) ? other.icon : icon; merged.scopes = ArrayUtils.isNotEmpty(other.scopes) ? other.scopes : scopes; merged.tokenServerURL = StringUtils.isNotBlank(other.tokenServerURL) ? other.tokenServerURL : tokenServerURL; merged.userInfoURL = StringUtils.isNotBlank(other.userInfoURL) ? other.userInfoURL : userInfoURL; merged.label = StringUtils.isNotBlank(other.label) ? other.label : label; merged.description = StringUtils.isNotBlank(other.description) ? other.description : description; merged.accessTokenKey = !other.accessTokenKey.equals(DEFAULT_ACCESS_TOKEN_KEY) ? other.accessTokenKey : accessTokenKey; merged.userInfoClass = other.userInfoClass != DEFAULT_USER_INFO_CLASS ? other.userInfoClass : userInfoClass; merged.redirectUriResolver = other.redirectUriResolver != DEFAULT_REDIRECT_URI_RESOLVER_CLASS ? other.redirectUriResolver : redirectUriResolver; Class<? extends UserResolver> otherUserResolverClass = other.getUserResolverClass(); merged.userResolverClass = otherUserResolverClass != DEFAULT_USER_RESOLVER_CLASS ? otherUserResolverClass : userResolverClass; merged.userMapper = StringUtils.isNotBlank(other.userMapper) ? other.userMapper : userMapper; merged.authenticationMethod = !other.authenticationMethod.equals(DEFAULT_AUTHENTICATION_METHOD) ? other.authenticationMethod : authenticationMethod; return merged; }