|
@@ -79,6 +79,7 @@ public class GlobalMethodSecurityBeanDefinitionParser implements BeanDefinitionP
|
|
private static final String ATT_REF = "ref";
|
|
private static final String ATT_REF = "ref";
|
|
private static final String ATT_MODE = "mode";
|
|
private static final String ATT_MODE = "mode";
|
|
private static final String ATT_ADVICE_ORDER = "order";
|
|
private static final String ATT_ADVICE_ORDER = "order";
|
|
|
|
+ private static final String ATT_META_DATA_SOURCE_REF = "metadata-source-ref";
|
|
|
|
|
|
public BeanDefinition parse(Element element, ParserContext pc) {
|
|
public BeanDefinition parse(Element element, ParserContext pc) {
|
|
CompositeComponentDefinition compositeDef =
|
|
CompositeComponentDefinition compositeDef =
|
|
@@ -97,6 +98,13 @@ public class GlobalMethodSecurityBeanDefinitionParser implements BeanDefinitionP
|
|
BeanDefinition preInvocationVoter = null;
|
|
BeanDefinition preInvocationVoter = null;
|
|
ManagedList<BeanMetadataElement> afterInvocationProviders = new ManagedList<BeanMetadataElement>();
|
|
ManagedList<BeanMetadataElement> afterInvocationProviders = new ManagedList<BeanMetadataElement>();
|
|
|
|
|
|
|
|
+ // Check for an external SecurityMetadataSource, which takes priority over other sources
|
|
|
|
+ String metaDataSourceId = element.getAttribute(ATT_META_DATA_SOURCE_REF);
|
|
|
|
+
|
|
|
|
+ if (StringUtils.hasText(metaDataSourceId)) {
|
|
|
|
+ delegates.add(new RuntimeBeanReference(metaDataSourceId));
|
|
|
|
+ }
|
|
|
|
+
|
|
if (prePostAnnotationsEnabled) {
|
|
if (prePostAnnotationsEnabled) {
|
|
Element prePostElt = DomUtils.getChildElementByTagName(element, INVOCATION_HANDLING);
|
|
Element prePostElt = DomUtils.getChildElementByTagName(element, INVOCATION_HANDLING);
|
|
Element expressionHandlerElt = DomUtils.getChildElementByTagName(element, EXPRESSION_HANDLER);
|
|
Element expressionHandlerElt = DomUtils.getChildElementByTagName(element, EXPRESSION_HANDLER);
|