diff --git a/sandbox/spring-security-config/.classpath b/sandbox/spring-security-config/.classpath index a855ebb353..1f235edf8c 100644 --- a/sandbox/spring-security-config/.classpath +++ b/sandbox/spring-security-config/.classpath @@ -5,40 +5,40 @@ - + + + + + + + + + + + + - - + + + + + + + - - - - - - - - - - + + - - + - - - - - - - - - - - - + + + + + diff --git a/sandbox/spring-security-config/.project b/sandbox/spring-security-config/.project index 2539d6ea37..929ae1551c 100644 --- a/sandbox/spring-security-config/.project +++ b/sandbox/spring-security-config/.project @@ -1,25 +1,19 @@ - - spring-security-config - Acegi Security System for Spring - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.wst.validation.validationbuilder - - - - - - org.eclipse.wst.common.project.facet.core.nature - org.eclipse.jdt.core.javanature - org.eclipse.wst.common.modulecore.ModuleCoreNature - org.eclipse.jem.workbench.JavaEMFNature - - + spring-security-config + Acegi Security System for Spring + + + + org.eclipse.jdt.core.javabuilder + + + org.eclipse.wst.validation.validationbuilder + + + + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.jdt.core.javanature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.jem.workbench.JavaEMFNature + + \ No newline at end of file diff --git a/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/AuthenticationMechanismBeanDefinitionParser.java b/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/AuthenticationMechanismBeanDefinitionParser.java index ad9a0915b6..4b5cce4e86 100644 --- a/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/AuthenticationMechanismBeanDefinitionParser.java +++ b/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/AuthenticationMechanismBeanDefinitionParser.java @@ -49,8 +49,8 @@ public class AuthenticationMechanismBeanDefinitionParser extends AbstractBeanDef // ================================================================================================ private static final String AUTHENTICATION_JDBC = "authentication-jdbc"; - - private static final String AUTHENTICATION_LDAP="authentication-ldap"; + + private static final String AUTHENTICATION_LDAP = "authentication-ldap"; private static final String REF = "ref"; @@ -76,7 +76,8 @@ public class AuthenticationMechanismBeanDefinitionParser extends AbstractBeanDef // create a beandefinition providers.add(new RuntimeBeanReference(attribute)); } - } else if (AUTHENTICATION_LDAP.equals(node.getLocalName())){ + } + else if (AUTHENTICATION_LDAP.equals(node.getLocalName())) { providers.add(createLdapAuthencticationProviderBeanDefinition(childElement, parserContext)); } } @@ -114,16 +115,17 @@ public class AuthenticationMechanismBeanDefinitionParser extends AbstractBeanDef Assert.notNull(property); parserContext.getDelegate().parsePropertyElement(property, bindAuthenticator); bindAuthenticator.getConstructorArgumentValues().addIndexedArgumentValue(0, initialDirContextFactory); - + // LdapAuthenticator ldapAuthProvider.getConstructorArgumentValues().addIndexedArgumentValue(0, bindAuthenticator); ldapAuthoritiesPopulator.getConstructorArgumentValues().addIndexedArgumentValue(0, initialDirContextFactory); BeanDefinitionParserUtils.setConstructorArgumentIfAvailable(1, element, "groupSearchBase", false, ldapAuthoritiesPopulator); - BeanDefinitionParserUtils.setPropertyIfAvailable(element, "groupRoleAttribute", "groupRoleAttribute", ldapAuthoritiesPopulator); - - //LdapAuthoritiesPopulator + BeanDefinitionParserUtils.setPropertyIfAvailable(element, "groupRoleAttribute", "groupRoleAttribute", false, + ldapAuthoritiesPopulator); + + // LdapAuthoritiesPopulator ldapAuthProvider.getConstructorArgumentValues().addIndexedArgumentValue(1, ldapAuthoritiesPopulator); return ldapAuthProvider; @@ -134,10 +136,10 @@ public class AuthenticationMechanismBeanDefinitionParser extends AbstractBeanDef RootBeanDefinition initialDirContextFactory = new RootBeanDefinition(DefaultInitialDirContextFactory.class); BeanDefinitionParserUtils.setConstructorArgumentIfAvailable(0, element, "ldapUrl", false, initialDirContextFactory); - BeanDefinitionParserUtils.setPropertyIfAvailable(element, "managerDn", "managerDn", initialDirContextFactory); - BeanDefinitionParserUtils.setPropertyIfAvailable(element, "managerPassword", "managerPassword", + BeanDefinitionParserUtils.setPropertyIfAvailable(element, "managerDn", "managerDn", false, + initialDirContextFactory); + BeanDefinitionParserUtils.setPropertyIfAvailable(element, "managerPassword", "managerPassword", false, initialDirContextFactory); return initialDirContextFactory; } - } diff --git a/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/AuthenticationRepositoryBeanDefinitionParser.java b/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/AuthenticationRepositoryBeanDefinitionParser.java index edb3212506..ac59498860 100644 --- a/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/AuthenticationRepositoryBeanDefinitionParser.java +++ b/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/AuthenticationRepositoryBeanDefinitionParser.java @@ -27,8 +27,8 @@ import org.w3c.dom.NodeList; */ public class AuthenticationRepositoryBeanDefinitionParser extends AbstractBeanDefinitionParser { - // ~ Instance fields - // ================================================================================================ + // ~ Static fields + // ===================================================================================== private static final String REPOSITORY_BEAN_REF = "repositoryBeanRef"; @@ -50,14 +50,12 @@ public class AuthenticationRepositoryBeanDefinitionParser extends AbstractBeanDe // ~ Method // ================================================================================================ - /** - * TODO: Document Me !!! - */ + public AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) { Assert.notNull(parserContext, "ParserContext must not be null"); RootBeanDefinition repositoryBeanDef = new RootBeanDefinition(DaoAuthenticationProvider.class); - + // check if saltSource is defined Element saltSourceEle = DomUtils.getChildElementByTagName(element, SALT_SOURCE_ELEMENT); setSaltSourceProperty(repositoryBeanDef, saltSourceEle); @@ -186,7 +184,7 @@ public class AuthenticationRepositoryBeanDefinitionParser extends AbstractBeanDe saltSourceTypeElement.getAttribute("systemWideSalt")); return definition; } - + protected static RootBeanDefinition createBeanDefinitionWithDefaults() { RootBeanDefinition repositoryBeanDef = new RootBeanDefinition(DaoAuthenticationProvider.class); return repositoryBeanDef; diff --git a/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/AutoConfigBeanDefinitionParser.java b/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/AutoConfigBeanDefinitionParser.java index 3a108a6b8f..6b6f430c0e 100644 --- a/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/AutoConfigBeanDefinitionParser.java +++ b/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/AutoConfigBeanDefinitionParser.java @@ -39,12 +39,18 @@ import org.w3c.dom.Element; */ public class AutoConfigBeanDefinitionParser implements BeanDefinitionParser { + // ~ instance fields + // ================================================================================================ + private RootBeanDefinition authenticationManager; private RootBeanDefinition rememberMeServices; private ManagedList decisionVoters = new ManagedList(); + // ~ Method + // ================================================================================================ + public BeanDefinition parse(Element element, ParserContext parserContext) { // authentication manager this.authenticationManager = AuthenticationMechanismBeanDefinitionParser diff --git a/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/ContextIntegrationBeanDefinitionParser.java b/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/ContextIntegrationBeanDefinitionParser.java index 3134cf2642..7b8787a929 100644 --- a/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/ContextIntegrationBeanDefinitionParser.java +++ b/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/ContextIntegrationBeanDefinitionParser.java @@ -23,6 +23,9 @@ import org.w3c.dom.NamedNodeMap; */ public class ContextIntegrationBeanDefinitionParser extends AbstractSingleBeanDefinitionParser { + // ~ Static fields/initializers + // ===================================================================================== + private static final String HTTP_SESSION_CONTEXT_INTEGRATION = "session-context-integration"; private static final String SESSION_CREATION = "sessionCreation"; @@ -35,7 +38,8 @@ public class ContextIntegrationBeanDefinitionParser extends AbstractSingleBeanDe private static final String ALLOW_SESSION_CREATION = "allowSessionCreation"; - private BeanDefinitionBuilder builder; + // ~ Methods + // ======================================================================================================== protected Class getBeanClass(Element element) { return HttpSessionContextIntegrationFilter.class; diff --git a/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/ExceptionTranslationFilterBeanDefinitionParser.java b/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/ExceptionTranslationFilterBeanDefinitionParser.java index 8f2730f9e4..b77a8c0a72 100644 --- a/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/ExceptionTranslationFilterBeanDefinitionParser.java +++ b/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/ExceptionTranslationFilterBeanDefinitionParser.java @@ -53,6 +53,9 @@ import org.w3c.dom.Element; */ public class ExceptionTranslationFilterBeanDefinitionParser extends AbstractBeanDefinitionParser { + // ~ Static fields + // ===================================================================================== + private static final String ACCESS_DENIED = "access-denied"; private static final String ACCESS_DENIED_REF = "accessDeniedBeanRef"; @@ -67,6 +70,9 @@ public class ExceptionTranslationFilterBeanDefinitionParser extends AbstractBean private static final String LOGIN_FORM_URL_VALUE = "/acegilogin.jsp"; + // ~ Method + // ================================================================================================ + protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) { RootBeanDefinition exceptionFilterDef = new RootBeanDefinition(ExceptionTranslationFilter.class); diff --git a/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/LogoutHandlerOrderResolver.java b/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/LogoutHandlerOrderResolver.java index baa3c06a3a..2fd55b5b05 100644 --- a/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/LogoutHandlerOrderResolver.java +++ b/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/LogoutHandlerOrderResolver.java @@ -70,10 +70,10 @@ public class LogoutHandlerOrderResolver implements BeanFactoryPostProcessor { if (definition.hasBeanClass()) { if (Ordered.class.isAssignableFrom(definition.getBeanClass())) { definition.getPropertyValues().addPropertyValue("order", - new Integer(getOrder(definition.getBeanClass()))); + Integer.valueOf(getOrder(definition.getBeanClass()))); } else { - definition.getPropertyValues().addPropertyValue("order", new Integer(Integer.MAX_VALUE)); + definition.getPropertyValues().addPropertyValue("order", Integer.valueOf(Integer.MAX_VALUE)); } } list.add(definition); diff --git a/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/SecurityNamespaceHandler.java b/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/SecurityNamespaceHandler.java index b148e6f669..a7bd459ce7 100644 --- a/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/SecurityNamespaceHandler.java +++ b/sandbox/spring-security-config/src/main/java/org/acegisecurity/config/SecurityNamespaceHandler.java @@ -28,6 +28,7 @@ public class SecurityNamespaceHandler extends NamespaceHandlerSupport { registerBeanDefinitionParser("logout-support", new LogoutFilterBeanDefinitionParser()); registerBeanDefinitionParser("exception-translation", new ExceptionTranslationFilterBeanDefinitionParser()); registerBeanDefinitionParser("authentication-form", new AuthenticationProcessingFilterBeanDefinitionParser()); + registerBeanDefinitionParser("authorization-http-url", new FilterSecurityInterceptorBeanDefinitionParser()); registerBeanDefinitionParser("autoconfig", new AutoConfigBeanDefinitionParser()); } diff --git a/sandbox/spring-security-config/src/main/java/org/acegisecurity/util/BeanDefinitionParserUtils.java b/sandbox/spring-security-config/src/main/java/org/acegisecurity/util/BeanDefinitionParserUtils.java index a5e599d159..aae7f7141e 100644 --- a/sandbox/spring-security-config/src/main/java/org/acegisecurity/util/BeanDefinitionParserUtils.java +++ b/sandbox/spring-security-config/src/main/java/org/acegisecurity/util/BeanDefinitionParserUtils.java @@ -14,29 +14,43 @@ import org.w3c.dom.Element; * */ public class BeanDefinitionParserUtils { + // ~ Constructor + // ================================================================================================ + /** * Prevents instantiation */ private BeanDefinitionParserUtils() { } + // ~ Method + // ================================================================================================ + public static void setConstructorArgumentIfAvailable(int index, Element element, String attribute, boolean isRunTimeBeanReference, RootBeanDefinition definition) { String propertyValue = element.getAttribute(attribute); if (StringUtils.hasText(propertyValue)) { - if(!isRunTimeBeanReference){ + if (!isRunTimeBeanReference) { definition.getConstructorArgumentValues().addIndexedArgumentValue(index, propertyValue); - } else { - definition.getConstructorArgumentValues().addIndexedArgumentValue(index, new RuntimeBeanNameReference(propertyValue)); + } + else { + definition.getConstructorArgumentValues().addIndexedArgumentValue(index, + new RuntimeBeanNameReference(propertyValue)); } } } public static void setPropertyIfAvailable(Element element, String attribute, String property, - RootBeanDefinition definition) { + boolean isRunTimeBeanReference, RootBeanDefinition definition) { String propertyValue = element.getAttribute(attribute); if (StringUtils.hasText(propertyValue)) { - definition.getPropertyValues().addPropertyValue(property, propertyValue); + if (!isRunTimeBeanReference) { + definition.getPropertyValues().addPropertyValue(property, propertyValue); + } + else { + definition.getPropertyValues().addPropertyValue(property, new RuntimeBeanNameReference(propertyValue)); + } + } } } diff --git a/sandbox/spring-security-config/src/main/java/org/acegisecurity/util/OrderedUtils.java b/sandbox/spring-security-config/src/main/java/org/acegisecurity/util/OrderedUtils.java index 0fc05337cc..4f2ef350c6 100644 --- a/sandbox/spring-security-config/src/main/java/org/acegisecurity/util/OrderedUtils.java +++ b/sandbox/spring-security-config/src/main/java/org/acegisecurity/util/OrderedUtils.java @@ -13,6 +13,7 @@ import org.springframework.util.ReflectionUtils; * {@link Ordered} interface. * * @author Ben Alex + * @author Vishal Puri */ public abstract class OrderedUtils { /** @@ -59,7 +60,7 @@ public abstract class OrderedUtils { Assert.notNull(destinationObject, "Destination object required"); Method m = ReflectionUtils.findMethod(destinationObject.getClass(), "setOrder", new Class[] {int.class}); Assert.notNull(m, "Method setOrder(int) not found on " + destinationObject.getClass()); - ReflectionUtils.invokeMethod(m, destinationObject, new Object[] {new Integer(sourceObject.getOrder())}); + ReflectionUtils.invokeMethod(m, destinationObject, new Object[] { Integer.valueOf((sourceObject.getOrder()))}); } } diff --git a/sandbox/spring-security-config/src/main/resources/org/acegisecurity/config/spring-security-2.0.xsd b/sandbox/spring-security-config/src/main/resources/org/acegisecurity/config/spring-security-2.0.xsd index 1fcb0d6f4d..25a8848d40 100644 --- a/sandbox/spring-security-config/src/main/resources/org/acegisecurity/config/spring-security-2.0.xsd +++ b/sandbox/spring-security-config/src/main/resources/org/acegisecurity/config/spring-security-2.0.xsd @@ -294,7 +294,7 @@ - + @@ -504,6 +504,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sandbox/spring-security-config/src/test/java/org/acegisecurity/config/AutoConfigBeanDefinitionParserTests.java b/sandbox/spring-security-config/src/test/java/org/acegisecurity/config/AutoConfigBeanDefinitionParserTests.java index 165cc3d45d..5a22526491 100644 --- a/sandbox/spring-security-config/src/test/java/org/acegisecurity/config/AutoConfigBeanDefinitionParserTests.java +++ b/sandbox/spring-security-config/src/test/java/org/acegisecurity/config/AutoConfigBeanDefinitionParserTests.java @@ -30,7 +30,7 @@ public class AutoConfigBeanDefinitionParserTests extends TestCase { private ApplicationContext context; - ConfigurableListableBeanFactory bf; + private ConfigurableListableBeanFactory bf; // ~ Methods // ======================================================================================================== @@ -89,7 +89,6 @@ public class AutoConfigBeanDefinitionParserTests extends TestCase { Field transactionAttributeSource = makeAccessibleAndGetFieldByName(advisor.getClass().getDeclaredFields(), "transactionAttributeSource"); assertNotNull(transactionAttributeSource); assertTrue(transactionAttributeSource.get(advisor) instanceof MethodDefinitionSource); - } private Field makeAccessibleAndGetFieldByName(Field[] declaredFields, String name) { diff --git a/sandbox/spring-security-config/src/test/resources/org/acegisecurity/config/remember-me-defaults.xml b/sandbox/spring-security-config/src/test/resources/org/acegisecurity/config/remember-me-defaults.xml index 018bfe362f..077caf79d6 100644 --- a/sandbox/spring-security-config/src/test/resources/org/acegisecurity/config/remember-me-defaults.xml +++ b/sandbox/spring-security-config/src/test/resources/org/acegisecurity/config/remember-me-defaults.xml @@ -12,7 +12,7 @@ http://www.springframework.org/schema/security http://www.springframework.org/sc - + diff --git a/sandbox/spring-security-config/src/test/resources/org/acegisecurity/config/security-namespaces.xml b/sandbox/spring-security-config/src/test/resources/org/acegisecurity/config/security-namespaces.xml index 40d8a49575..65f23cb40c 100644 --- a/sandbox/spring-security-config/src/test/resources/org/acegisecurity/config/security-namespaces.xml +++ b/sandbox/spring-security-config/src/test/resources/org/acegisecurity/config/security-namespaces.xml @@ -1,4 +1,4 @@ - + t + strategy="consensus|unanimous|affirmative" /> + t @@ -90,7 +91,7 @@ x="you can do the attributes and suitable nested elements" /> - + @@ -129,13 +130,15 @@ - + - +