浏览代码

SEC-1383: Make MethodSecurityMetadataSourceBeanDefinitionParser extend AbstractBeanDefinitionParser for automatic support of ID attribute.

Luke Taylor 15 年之前
父节点
当前提交
6a79cf7be2

+ 1 - 1
config/src/main/java/org/springframework/security/config/Elements.java

@@ -1,7 +1,7 @@
 package org.springframework.security.config;
 
 /**
- * Contains all the element names used by Spring Security 2 namespace support.
+ * Contains all the element names used by Spring Security 3 namespace support.
  *
  * @author Ben Alex
  */

+ 10 - 5
config/src/main/java/org/springframework/security/config/method/MethodSecurityMetadataSourceBeanDefinitionParser.java

@@ -4,9 +4,9 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.support.AbstractBeanDefinition;
 import org.springframework.beans.factory.support.RootBeanDefinition;
-import org.springframework.beans.factory.xml.BeanDefinitionParser;
+import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.springframework.security.access.ConfigAttribute;
 import org.springframework.security.access.SecurityConfig;
@@ -16,11 +16,16 @@ import org.springframework.util.StringUtils;
 import org.springframework.util.xml.DomUtils;
 import org.w3c.dom.Element;
 
-public class MethodSecurityMetadataSourceBeanDefinitionParser implements BeanDefinitionParser {
+/**
+ *
+ * @author Luke Taylor
+ * @since 3.1
+ */
+public class MethodSecurityMetadataSourceBeanDefinitionParser extends AbstractBeanDefinitionParser {
     static final String ATT_METHOD = "method";
     static final String ATT_ACCESS = "access";
 
-    public BeanDefinition parse(Element elt, ParserContext pc) {
+    public AbstractBeanDefinition parseInternal(Element elt, ParserContext pc) {
         // Parse the included methods
         List<Element> methods = DomUtils.getChildElementsByTagName(elt, Elements.PROTECT);
         Map<String, List<ConfigAttribute>> mappings = new LinkedHashMap<String, List<ConfigAttribute>>();
@@ -32,7 +37,7 @@ public class MethodSecurityMetadataSourceBeanDefinitionParser implements BeanDef
             mappings.put(methodName, SecurityConfig.createList(tokens));
         }
 
-        BeanDefinition metadataSource = new RootBeanDefinition(MapBasedMethodSecurityMetadataSource.class);
+        RootBeanDefinition metadataSource = new RootBeanDefinition(MapBasedMethodSecurityMetadataSource.class);
         metadataSource.getConstructorArgumentValues().addGenericArgumentValue(mappings);
 
         return metadataSource;