diff --git a/core/src/main/java/org/springframework/security/config/AbstractUserDetailsServiceBeanDefinitionParser.java b/core/src/main/java/org/springframework/security/config/AbstractUserDetailsServiceBeanDefinitionParser.java index 70ecb4dfe2..471215f99a 100644 --- a/core/src/main/java/org/springframework/security/config/AbstractUserDetailsServiceBeanDefinitionParser.java +++ b/core/src/main/java/org/springframework/security/config/AbstractUserDetailsServiceBeanDefinitionParser.java @@ -28,7 +28,7 @@ public class AbstractUserDetailsServiceBeanDefinitionParser extends AbstractSing // If top level, use the default name or throw an exception if already used if (parserContext.getRegistry().containsBeanDefinition(BeanIds.USER_DETAILS_SERVICE)) { - throw new SecurityConfigurationException("No id supplied in <" + element.getNodeName() + "> and another " + + throw new BeanDefinitionStoreException("No id supplied and another " + "bean is already registered as " + BeanIds.USER_DETAILS_SERVICE); } diff --git a/core/src/main/java/org/springframework/security/config/AuthenticationProviderBeanDefinitionParser.java b/core/src/main/java/org/springframework/security/config/AuthenticationProviderBeanDefinitionParser.java index 2faaf1c1a5..b958cbe07e 100644 --- a/core/src/main/java/org/springframework/security/config/AuthenticationProviderBeanDefinitionParser.java +++ b/core/src/main/java/org/springframework/security/config/AuthenticationProviderBeanDefinitionParser.java @@ -43,9 +43,10 @@ class AuthenticationProviderBeanDefinitionParser implements BeanDefinitionParser Element ldapUserServiceElt = DomUtils.getChildElementByTagName(element, Elements.LDAP_USER_SERVICE); if (StringUtils.hasText(ref)) { - if (userServiceElt != null || jdbcUserServiceElt != null) { - throw new SecurityConfigurationException("The ref attribute cannot be used in combination with child" + - "elements '" + Elements.USER_SERVICE + "' or '" + Elements.JDBC_USER_SERVICE + "'"); + if (userServiceElt != null || jdbcUserServiceElt != null || ldapUserServiceElt != null) { + parserContext.getReaderContext().error("The ref attribute cannot be used in combination with child" + + "elements '" + Elements.USER_SERVICE + "', '" + Elements.JDBC_USER_SERVICE + "' or '" + + Elements.LDAP_USER_SERVICE + "'", element); } authProvider.getPropertyValues().addPropertyValue("userDetailsService", new RuntimeBeanReference(ref)); @@ -54,7 +55,7 @@ class AuthenticationProviderBeanDefinitionParser implements BeanDefinitionParser } // Use the child elements to create the UserDetailsService - BeanDefinition userDetailsService; + BeanDefinition userDetailsService = null; if (userServiceElt != null) { userDetailsService = new UserServiceBeanDefinitionParser().parse(userServiceElt, parserContext); @@ -63,8 +64,7 @@ class AuthenticationProviderBeanDefinitionParser implements BeanDefinitionParser } else if (ldapUserServiceElt != null) { userDetailsService = new LdapUserServiceBeanDefinitionParser().parse(ldapUserServiceElt, parserContext); } else { - throw new SecurityConfigurationException(Elements.AUTHENTICATION_PROVIDER - + " requires a UserDetailsService" ); + parserContext.getReaderContext().error("A user-service is required", element); } authProvider.getPropertyValues().addPropertyValue("userDetailsService", userDetailsService); diff --git a/core/src/main/java/org/springframework/security/config/HttpSecurityConfigPostProcessor.java b/core/src/main/java/org/springframework/security/config/HttpSecurityConfigPostProcessor.java index b1ccec7a58..973c8bf701 100644 --- a/core/src/main/java/org/springframework/security/config/HttpSecurityConfigPostProcessor.java +++ b/core/src/main/java/org/springframework/security/config/HttpSecurityConfigPostProcessor.java @@ -155,8 +155,7 @@ public class HttpSecurityConfigPostProcessor implements BeanFactoryPostProcessor mainEntryPoint = (AuthenticationEntryPoint) entryPointMap.get(BeanIds.FORM_LOGIN_ENTRY_POINT); if (mainEntryPoint == null) { - mainEntryPoint = (AuthenticationEntryPoint) - entryPointMap.get(BeanIds.BASIC_AUTHENTICATION_ENTRY_POINT); + mainEntryPoint = (AuthenticationEntryPoint) entryPointMap.get(BeanIds.BASIC_AUTHENTICATION_ENTRY_POINT); if (mainEntryPoint == null) { throw new SecurityConfigurationException("Failed to resolve authentication entry point"); } diff --git a/core/src/main/java/org/springframework/security/config/JdbcUserServiceBeanDefinitionParser.java b/core/src/main/java/org/springframework/security/config/JdbcUserServiceBeanDefinitionParser.java index 0e3b9d6b4b..fc7077f6f6 100644 --- a/core/src/main/java/org/springframework/security/config/JdbcUserServiceBeanDefinitionParser.java +++ b/core/src/main/java/org/springframework/security/config/JdbcUserServiceBeanDefinitionParser.java @@ -2,6 +2,7 @@ package org.springframework.security.config; import org.springframework.security.userdetails.jdbc.JdbcUserDetailsManager; import org.springframework.beans.factory.support.BeanDefinitionBuilder; +import org.springframework.beans.factory.BeanDefinitionStoreException; import org.w3c.dom.Element; @@ -24,7 +25,7 @@ public class JdbcUserServiceBeanDefinitionParser extends AbstractUserDetailsServ builder.addPropertyReference("dataSource", dataSource); } else { // TODO: Have some sensible fallback if dataSource not specified, eg autowire - throw new SecurityConfigurationException(ATT_DATA_SOURCE + " is required for " + throw new BeanDefinitionStoreException(ATT_DATA_SOURCE + " is required for " + Elements.JDBC_USER_SERVICE ); } } diff --git a/core/src/main/java/org/springframework/security/config/RememberMeBeanDefinitionParser.java b/core/src/main/java/org/springframework/security/config/RememberMeBeanDefinitionParser.java index 66ba6b2c37..ed7e43b01d 100644 --- a/core/src/main/java/org/springframework/security/config/RememberMeBeanDefinitionParser.java +++ b/core/src/main/java/org/springframework/security/config/RememberMeBeanDefinitionParser.java @@ -50,7 +50,7 @@ public class RememberMeBeanDefinitionParser implements BeanDefinitionParser { boolean tokenRepoSet = StringUtils.hasText(tokenRepository); if (dataSourceSet && tokenRepoSet) { - throw new SecurityConfigurationException("Specify tokenRepository or dataSource but not both"); + parserContext.getReaderContext().error("Specify tokenRepository or dataSource but not both", element); } boolean isPersistent = dataSourceSet | tokenRepoSet;