Example usage for org.springframework.security.config Elements EXPRESSION_HANDLER

List of usage examples for org.springframework.security.config Elements EXPRESSION_HANDLER

Introduction

In this page you can find the example usage for org.springframework.security.config Elements EXPRESSION_HANDLER.

Prototype

String EXPRESSION_HANDLER

To view the source code for org.springframework.security.config Elements EXPRESSION_HANDLER.

Click Source Link

Usage

From source file:org.springframework.security.config.http.FilterInvocationSecurityMetadataSourceParser.java

static RootBeanDefinition createSecurityMetadataSource(List<Element> interceptUrls, boolean addAllAuth,
        Element httpElt, ParserContext pc) {
    MatcherType matcherType = MatcherType.fromElement(httpElt);
    boolean useExpressions = isUseExpressions(httpElt);

    ManagedMap<BeanMetadataElement, BeanDefinition> requestToAttributesMap = parseInterceptUrlsForFilterInvocationRequestMap(
            matcherType, interceptUrls, useExpressions, addAllAuth, pc);
    BeanDefinitionBuilder fidsBuilder;//from  w w w .j a  va 2s .c  o m

    if (useExpressions) {
        Element expressionHandlerElt = DomUtils.getChildElementByTagName(httpElt, Elements.EXPRESSION_HANDLER);
        String expressionHandlerRef = expressionHandlerElt == null ? null
                : expressionHandlerElt.getAttribute("ref");

        if (StringUtils.hasText(expressionHandlerRef)) {
            logger.info("Using bean '" + expressionHandlerRef
                    + "' as web SecurityExpressionHandler implementation");
        } else {
            expressionHandlerRef = registerDefaultExpressionHandler(pc);
        }

        fidsBuilder = BeanDefinitionBuilder
                .rootBeanDefinition(ExpressionBasedFilterInvocationSecurityMetadataSource.class);
        fidsBuilder.addConstructorArgValue(requestToAttributesMap);
        fidsBuilder.addConstructorArgReference(expressionHandlerRef);
    } else {
        fidsBuilder = BeanDefinitionBuilder
                .rootBeanDefinition(DefaultFilterInvocationSecurityMetadataSource.class);
        fidsBuilder.addConstructorArgValue(requestToAttributesMap);
    }

    fidsBuilder.getRawBeanDefinition().setSource(pc.extractSource(httpElt));

    return (RootBeanDefinition) fidsBuilder.getBeanDefinition();
}