|
@@ -9,6 +9,7 @@ import org.springframework.beans.factory.config.BeanDefinition;
|
|
import org.springframework.beans.factory.config.BeanDefinitionHolder;
|
|
import org.springframework.beans.factory.config.BeanDefinitionHolder;
|
|
import org.springframework.beans.factory.config.RuntimeBeanReference;
|
|
import org.springframework.beans.factory.config.RuntimeBeanReference;
|
|
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
|
|
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
|
|
|
|
+import org.springframework.beans.factory.support.ManagedMap;
|
|
import org.springframework.beans.factory.support.RootBeanDefinition;
|
|
import org.springframework.beans.factory.support.RootBeanDefinition;
|
|
import org.springframework.beans.factory.xml.BeanDefinitionDecorator;
|
|
import org.springframework.beans.factory.xml.BeanDefinitionDecorator;
|
|
import org.springframework.beans.factory.xml.ParserContext;
|
|
import org.springframework.beans.factory.xml.ParserContext;
|
|
@@ -64,16 +65,16 @@ class InternalInterceptMethodsBeanDefinitionDecorator extends AbstractIntercepto
|
|
interceptor.addPropertyValue("authenticationManager", new RuntimeBeanReference(BeanIds.AUTHENTICATION_MANAGER));
|
|
interceptor.addPropertyValue("authenticationManager", new RuntimeBeanReference(BeanIds.AUTHENTICATION_MANAGER));
|
|
|
|
|
|
// Lookup parent bean information
|
|
// Lookup parent bean information
|
|
- Element parent = (Element) node.getParentNode();
|
|
|
|
- String parentBeanClass = parent.getAttribute("class");
|
|
|
|
- parent = null;
|
|
|
|
|
|
+ String parentBeanClass = ((Element) node.getParentNode()).getAttribute("class");
|
|
|
|
|
|
// Parse the included methods
|
|
// Parse the included methods
|
|
List<Element> methods = DomUtils.getChildElementsByTagName(interceptMethodsElt, Elements.PROTECT);
|
|
List<Element> methods = DomUtils.getChildElementsByTagName(interceptMethodsElt, Elements.PROTECT);
|
|
- Map<String, List<ConfigAttribute>> mappings = new LinkedHashMap<String, List<ConfigAttribute>>();
|
|
|
|
|
|
+ Map<String, BeanDefinition> mappings = new ManagedMap<String, BeanDefinition>();
|
|
|
|
|
|
for (Element protectmethodElt : methods) {
|
|
for (Element protectmethodElt : methods) {
|
|
- String[] tokens = StringUtils.commaDelimitedListToStringArray(protectmethodElt.getAttribute(ATT_ACCESS));
|
|
|
|
|
|
+ BeanDefinitionBuilder attributeBuilder = BeanDefinitionBuilder.rootBeanDefinition(SecurityConfig.class);
|
|
|
|
+ attributeBuilder.setFactoryMethod("createListFromCommaDelimitedString");
|
|
|
|
+ attributeBuilder.addConstructorArgValue(protectmethodElt.getAttribute(ATT_ACCESS));
|
|
|
|
|
|
// Support inference of class names
|
|
// Support inference of class names
|
|
String methodName = protectmethodElt.getAttribute(ATT_METHOD);
|
|
String methodName = protectmethodElt.getAttribute(ATT_METHOD);
|
|
@@ -84,7 +85,7 @@ class InternalInterceptMethodsBeanDefinitionDecorator extends AbstractIntercepto
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- mappings.put(methodName, SecurityConfig.createList(tokens));
|
|
|
|
|
|
+ mappings.put(methodName, attributeBuilder.getBeanDefinition());
|
|
}
|
|
}
|
|
|
|
|
|
BeanDefinition metadataSource = new RootBeanDefinition(MapBasedMethodSecurityMetadataSource.class);
|
|
BeanDefinition metadataSource = new RootBeanDefinition(MapBasedMethodSecurityMetadataSource.class);
|