Example usage for org.springframework.aop.config AopNamespaceUtils registerAutoProxyCreatorIfNecessary

List of usage examples for org.springframework.aop.config AopNamespaceUtils registerAutoProxyCreatorIfNecessary

Introduction

In this page you can find the example usage for org.springframework.aop.config AopNamespaceUtils registerAutoProxyCreatorIfNecessary.

Prototype

public static void registerAutoProxyCreatorIfNecessary(ParserContext parserContext, Element sourceElement) 

Source Link

Usage

From source file:com.github.spring.mvc.util.handler.config.UriMatchingAnnotationDrivenBeanDefinitionParser.java

/**
 * @see org.springframework.beans.factory.xml.BeanDefinitionParser#parse(org.w3c.dom.Element, org.springframework.beans.factory.xml.ParserContext)
 *//*from  w w w  .  java 2 s . co  m*/
@Override
public BeanDefinition parse(Element element, ParserContext parserContext) {

    AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(parserContext, element);

    if (!parserContext.getRegistry().containsBeanDefinition(CACHING_ADVISOR_BEAN_NAME)) {
        log.info("configuring annotation-driven throttling");
        final Object elementSource = parserContext.extractSource(element);
        final RuntimeBeanReference pointcutReference = setupPointcut(element, parserContext, elementSource);
        final RuntimeBeanReference interceptorReference = setupInterceptor(element, parserContext,
                elementSource);
        setupPointcutAdvisor(element, parserContext, elementSource, pointcutReference, interceptorReference);
    }

    return null;
}

From source file:org.jsr107.ri.annotations.spring.config.AnnotationDrivenJCacheBeanDefinitionParser.java

@Override
public BeanDefinition parse(Element element, ParserContext parserContext) {
    AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(parserContext, element);

    final BeanDefinitionRegistry registry = parserContext.getRegistry();
    if (!registry.containsBeanDefinition(JCACHE_CACHE_OPERATION_SOURCE_BEAN_NAME)) {
        final Object elementSource = parserContext.extractSource(element);

        final RuntimeBeanReference cacheOperationSourceReference = this.setupCacheOperationSource(element,
                parserContext, elementSource);

        this.setupPointcutAdvisor(CacheResultInterceptor.class, element, parserContext, elementSource,
                cacheOperationSourceReference);

        this.setupPointcutAdvisor(CachePutInterceptor.class, element, parserContext, elementSource,
                cacheOperationSourceReference);

        this.setupPointcutAdvisor(CacheRemoveEntryInterceptor.class, element, parserContext, elementSource,
                cacheOperationSourceReference);

        this.setupPointcutAdvisor(CacheRemoveAllInterceptor.class, element, parserContext, elementSource,
                cacheOperationSourceReference);

        return registry.getBeanDefinition(JCACHE_CACHE_OPERATION_SOURCE_BEAN_NAME);
    }/*from  w  w w.  ja  va 2 s .com*/

    return null;
}

From source file:net.sourceforge.safr.core.spring.config.SecurityAnnotationDrivenBeanDefinitionParser.java

@Override
protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) {
    AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(parserContext, element);

    String accessManagerName = element.getAttribute(ACCESS_MANAGER_ATTRIBUTE);
    String cryptoProviderName = element.getAttribute(CRYPTO_PROVIDER_ATTRIBUTE);
    String interceptorOrder = element.getAttribute(INTERCEPTOR_ORDER_ATTRIBUTE);
    String useAspectJ = element.getAttribute(SUPPORT_ASPECTJ_ATTRIBUTE);

    RootBeanDefinition removeFilterFactoryDefinition = new RootBeanDefinition(RemoveFilterFactory.class);
    removeFilterFactoryDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
    removeFilterFactoryDefinition.setSource(parserContext.extractSource(element));
    setConstructorArgument(removeFilterFactoryDefinition, createAccessManagerValue(accessManagerName));

    RootBeanDefinition copyFilterFactoryDefinition = new RootBeanDefinition(CopyFilterFactory.class);
    copyFilterFactoryDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
    copyFilterFactoryDefinition.setSource(parserContext.extractSource(element));
    setConstructorArgument(copyFilterFactoryDefinition, createAccessManagerValue(accessManagerName));

    RootBeanDefinition interceptorDefinition = new RootBeanDefinition(SecurityInterceptor.class);
    interceptorDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
    interceptorDefinition.setSource(parserContext.extractSource(element));
    interceptorDefinition.getPropertyValues().addPropertyValue(REMOVE_FILTER_FACTORY_PROPERTY,
            removeFilterFactoryDefinition);
    interceptorDefinition.getPropertyValues().addPropertyValue(COPY_FILTER_FACTORY_PROPERTY,
            copyFilterFactoryDefinition);
    setPropertyValue(interceptorDefinition, SECURITY_ATTRIBUTE_SOURCE_PROPERTY,
            createSecurityAttributeSourceValue());
    setPropertyValue(interceptorDefinition, ACCESS_MANAGER_PROPERTY,
            createAccessManagerValue(accessManagerName));
    setPropertyValue(interceptorDefinition, CRYPTO_PROVIDER_PROPERTY,
            createCryptoProviderValue(cryptoProviderName));

    RootBeanDefinition advisorDefinition = new RootBeanDefinition(SecurityAttributeSourceAdvisor.class);
    advisorDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
    advisorDefinition.setSource(parserContext.extractSource(element));
    advisorDefinition.getPropertyValues().addPropertyValue(SECURITY_INTERCEPTOR_PROPERTY,
            interceptorDefinition);/* ww  w.ja v  a  2 s .  c om*/
    advisorDefinition.getPropertyValues().addPropertyValue(ORDER_PROPERTY, interceptorOrder);

    if (Boolean.parseBoolean(useAspectJ)) {
        RootBeanDefinition aspectDefinition = new RootBeanDefinition(SecurityAspect.class);
        aspectDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
        aspectDefinition.setSource(parserContext.extractSource(element));
        aspectDefinition.setFactoryMethodName("aspectOf");
        aspectDefinition.getPropertyValues().addPropertyValue(REMOVE_FILTER_FACTORY_PROPERTY,
                removeFilterFactoryDefinition);
        aspectDefinition.getPropertyValues().addPropertyValue(COPY_FILTER_FACTORY_PROPERTY,
                copyFilterFactoryDefinition);
        setPropertyValue(aspectDefinition, SECURITY_ATTRIBUTE_SOURCE_PROPERTY,
                createSecurityAttributeSourceValue());
        setPropertyValue(aspectDefinition, ACCESS_MANAGER_PROPERTY,
                createAccessManagerValue(accessManagerName));
        setPropertyValue(aspectDefinition, CRYPTO_PROVIDER_PROPERTY,
                createCryptoProviderValue(cryptoProviderName));
        parserContext.getRegistry().registerBeanDefinition(SecurityAspect.class.getName(), aspectDefinition);
    }

    return advisorDefinition;
}

From source file:com.inspiresoftware.lib.dto.geda.config.AnnotationDrivenGeDABeanDefinitionParser.java

public BeanDefinition parse(final Element element, final ParserContext parserContext) {

    AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(parserContext, element);
    if (!parserContext.getRegistry().containsBeanDefinition(ADVISOR_BEAN_NAME)) {

        final Boolean usePreprocessor = Boolean.valueOf(element.getAttribute(XSD_ATTR__USE_PREPROCESSOR));
        final String dtoSupportBeanName = element.getAttribute(XSD_ATTR__DTO_SUPPORT);

        final BeanDefinitionRegistry registry = parserContext.getRegistry();
        final Object elementSource = parserContext.extractSource(element);

        final RuntimeBeanReference dtoSupportDef;

        if (!registry.containsBeanDefinition(dtoSupportBeanName)) {

            final String dtoFactoryBeanName = element.getAttribute(XSD_ATTR__DTO_FACTORY);
            final RuntimeBeanReference dtoFactoryRef = new RuntimeBeanReference(dtoFactoryBeanName);

            final String dtoVcrBeanName = element.getAttribute(XSD_ATTR__DTO_ADAPTERS_REGISTRAR);
            final RuntimeBeanReference dtoVcrRef;
            if (StringUtils.hasLength(dtoVcrBeanName)) {
                dtoVcrRef = new RuntimeBeanReference(dtoVcrBeanName);
            } else {
                dtoVcrRef = null;//w  w  w .j a  va2s .c  om
            }

            final String dtoDslBeanName = element.getAttribute(XSD_ATTR__DTO_DSL_REGISTRAR);
            final RuntimeBeanReference dtoDslRef;
            if (StringUtils.hasLength(dtoDslBeanName)) {
                dtoDslRef = new RuntimeBeanReference(dtoDslBeanName);
            } else {
                dtoDslRef = null;
            }

            dtoSupportDef = this.setupDtoSupport(element, dtoSupportBeanName, registry, elementSource,
                    dtoFactoryRef, dtoVcrRef, dtoDslRef);

        } else {

            dtoSupportDef = new RuntimeBeanReference(dtoSupportBeanName);

        }

        if (usePreprocessor) {
            // bean pre processor version of configuration
            this.setupBootstapBeanPostprocessor(element, parserContext, elementSource);

            final RuntimeBeanReference defaultCfgAdvice = this.setupTransferableAdviceConfigResolver(
                    parserContext, elementSource, BootstrapAdviceConfigResolverImpl.class);

            final String[] matchRegEx = this.getPointcutRegex(element, XSD_ATTR__POINTCUT_MATCH_REGEX);
            final String[] noMatchRegEx = this.getPointcutRegex(element, XSD_ATTR__POINTCUT_NOMATCH_REGEX);

            final RuntimeBeanReference pointcut = this.setupPointcut(parserContext, elementSource,
                    defaultCfgAdvice, matchRegEx, noMatchRegEx);

            final RuntimeBeanReference defaultInterceptor = this.setupGeDAInterceptor(parserContext,
                    elementSource, dtoSupportDef, defaultCfgAdvice);

            this.setupPointcutAdvisor(element, parserContext, elementSource, pointcut, defaultInterceptor);

        } else {
            // runtime advice discovery
            final RuntimeBeanReference defaultCfgAdvice = this.setupTransferableAdviceConfigResolver(
                    parserContext, elementSource, RuntimeAdviceConfigResolverImpl.class);

            final String[] matchRegEx = this.getPointcutRegex(element, XSD_ATTR__POINTCUT_MATCH_REGEX);
            final String[] noMatchRegEx = this.getPointcutRegex(element, XSD_ATTR__POINTCUT_NOMATCH_REGEX);

            final RuntimeBeanReference pointcut = this.setupPointcut(parserContext, elementSource,
                    defaultCfgAdvice, matchRegEx, noMatchRegEx);

            final RuntimeBeanReference defaultInterceptor = this.setupGeDAInterceptor(parserContext,
                    elementSource, dtoSupportDef, defaultCfgAdvice);

            this.setupPointcutAdvisor(element, parserContext, elementSource, pointcut, defaultInterceptor);
        }
    }
    return null;
}

From source file:com.googlecode.ehcache.annotations.config.AnnotationDrivenEhCacheBeanDefinitionParser.java

private void registerAdvisor(Element element, ParserContext parserContext) {
    AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(parserContext, element);
    if (!parserContext.getRegistry().containsBeanDefinition(EHCACHE_CACHING_ADVISOR_BEAN_NAME)) {
        final Object elementSource = parserContext.extractSource(element);

        final RuntimeBeanReference cacheAttributeSourceReference = this.setupCacheAttributeSource(element,
                parserContext, elementSource);

        final RuntimeBeanReference pointcutReference = this.setupPointcut(element, parserContext, elementSource,
                cacheAttributeSourceReference);

        final RuntimeBeanReference interceptorReference = this.setupInterceptor(element, parserContext,
                elementSource, cacheAttributeSourceReference);

        this.setupPointcutAdvisor(element, parserContext, elementSource, pointcutReference,
                interceptorReference);//from   www  .  ja v  a  2 s.co  m

    }
}

From source file:org.springframework.security.config.method.GlobalMethodSecurityBeanDefinitionParser.java

public BeanDefinition parse(Element element, ParserContext pc) {
    CompositeComponentDefinition compositeDef = new CompositeComponentDefinition(element.getTagName(),
            pc.extractSource(element));/*from ww  w .  jav  a2 s . co m*/
    pc.pushContainingComponent(compositeDef);

    Object source = pc.extractSource(element);
    // The list of method metadata delegates
    ManagedList<BeanMetadataElement> delegates = new ManagedList<>();

    boolean jsr250Enabled = "enabled".equals(element.getAttribute(ATT_USE_JSR250));
    boolean useSecured = "enabled".equals(element.getAttribute(ATT_USE_SECURED));
    boolean prePostAnnotationsEnabled = "enabled".equals(element.getAttribute(ATT_USE_PREPOST));
    boolean useAspectJ = "aspectj".equals(element.getAttribute(ATT_MODE));

    BeanDefinition preInvocationVoter = null;
    ManagedList<BeanMetadataElement> afterInvocationProviders = new ManagedList<>();

    // 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) {
        Element prePostElt = DomUtils.getChildElementByTagName(element, INVOCATION_HANDLING);
        Element expressionHandlerElt = DomUtils.getChildElementByTagName(element, EXPRESSION_HANDLER);

        if (prePostElt != null && expressionHandlerElt != null) {
            pc.getReaderContext().error(
                    INVOCATION_HANDLING + " and " + EXPRESSION_HANDLER + " cannot be used together ", source);
        }

        BeanDefinitionBuilder preInvocationVoterBldr = BeanDefinitionBuilder
                .rootBeanDefinition(PreInvocationAuthorizationAdviceVoter.class);
        // After-invocation provider to handle post-invocation filtering and
        // authorization expression annotations.
        BeanDefinitionBuilder afterInvocationBldr = BeanDefinitionBuilder
                .rootBeanDefinition(PostInvocationAdviceProvider.class);
        // The metadata source for the security interceptor
        BeanDefinitionBuilder mds = BeanDefinitionBuilder
                .rootBeanDefinition(PrePostAnnotationSecurityMetadataSource.class);

        if (prePostElt != null) {
            // Customized override of expression handling system
            String attributeFactoryRef = DomUtils
                    .getChildElementByTagName(prePostElt, INVOCATION_ATTRIBUTE_FACTORY).getAttribute("ref");
            String preAdviceRef = DomUtils.getChildElementByTagName(prePostElt, PRE_INVOCATION_ADVICE)
                    .getAttribute("ref");
            String postAdviceRef = DomUtils.getChildElementByTagName(prePostElt, POST_INVOCATION_ADVICE)
                    .getAttribute("ref");

            mds.addConstructorArgReference(attributeFactoryRef);
            preInvocationVoterBldr.addConstructorArgReference(preAdviceRef);
            afterInvocationBldr.addConstructorArgReference(postAdviceRef);
        } else {
            // The default expression-based system
            String expressionHandlerRef = expressionHandlerElt == null ? null
                    : expressionHandlerElt.getAttribute("ref");

            if (StringUtils.hasText(expressionHandlerRef)) {
                logger.info(
                        "Using bean '" + expressionHandlerRef + "' as method ExpressionHandler implementation");
                RootBeanDefinition lazyInitPP = new RootBeanDefinition(
                        LazyInitBeanDefinitionRegistryPostProcessor.class);
                lazyInitPP.getConstructorArgumentValues().addGenericArgumentValue(expressionHandlerRef);
                pc.getReaderContext().registerWithGeneratedName(lazyInitPP);

                BeanDefinitionBuilder lazyMethodSecurityExpressionHandlerBldr = BeanDefinitionBuilder
                        .rootBeanDefinition(LazyInitTargetSource.class);
                lazyMethodSecurityExpressionHandlerBldr.addPropertyValue("targetBeanName",
                        expressionHandlerRef);

                BeanDefinitionBuilder expressionHandlerProxyBldr = BeanDefinitionBuilder
                        .rootBeanDefinition(ProxyFactoryBean.class);
                expressionHandlerProxyBldr.addPropertyValue("targetSource",
                        lazyMethodSecurityExpressionHandlerBldr.getBeanDefinition());
                expressionHandlerProxyBldr.addPropertyValue("proxyInterfaces",
                        MethodSecurityExpressionHandler.class);

                expressionHandlerRef = pc.getReaderContext()
                        .generateBeanName(expressionHandlerProxyBldr.getBeanDefinition());

                pc.registerBeanComponent(new BeanComponentDefinition(
                        expressionHandlerProxyBldr.getBeanDefinition(), expressionHandlerRef));
            } else {
                RootBeanDefinition expressionHandler = registerWithDefaultRolePrefix(pc,
                        DefaultMethodSecurityExpressionHandlerBeanFactory.class);

                expressionHandlerRef = pc.getReaderContext().generateBeanName(expressionHandler);
                pc.registerBeanComponent(new BeanComponentDefinition(expressionHandler, expressionHandlerRef));
                logger.info(
                        "Expressions were enabled for method security but no SecurityExpressionHandler was configured. "
                                + "All hasPermision() expressions will evaluate to false.");
            }

            BeanDefinitionBuilder expressionPreAdviceBldr = BeanDefinitionBuilder
                    .rootBeanDefinition(ExpressionBasedPreInvocationAdvice.class);
            expressionPreAdviceBldr.addPropertyReference("expressionHandler", expressionHandlerRef);
            preInvocationVoterBldr.addConstructorArgValue(expressionPreAdviceBldr.getBeanDefinition());

            BeanDefinitionBuilder expressionPostAdviceBldr = BeanDefinitionBuilder
                    .rootBeanDefinition(ExpressionBasedPostInvocationAdvice.class);
            expressionPostAdviceBldr.addConstructorArgReference(expressionHandlerRef);
            afterInvocationBldr.addConstructorArgValue(expressionPostAdviceBldr.getBeanDefinition());

            BeanDefinitionBuilder annotationInvocationFactory = BeanDefinitionBuilder
                    .rootBeanDefinition(ExpressionBasedAnnotationAttributeFactory.class);
            annotationInvocationFactory.addConstructorArgReference(expressionHandlerRef);
            mds.addConstructorArgValue(annotationInvocationFactory.getBeanDefinition());
        }

        preInvocationVoter = preInvocationVoterBldr.getBeanDefinition();
        afterInvocationProviders.add(afterInvocationBldr.getBeanDefinition());
        delegates.add(mds.getBeanDefinition());
    }

    if (useSecured) {
        delegates.add(BeanDefinitionBuilder.rootBeanDefinition(SecuredAnnotationSecurityMetadataSource.class)
                .getBeanDefinition());
    }

    if (jsr250Enabled) {
        RootBeanDefinition jsrMetadataSource = registerWithDefaultRolePrefix(pc,
                Jsr250MethodSecurityMetadataSourceBeanFactory.class);
        delegates.add(jsrMetadataSource);
    }

    // Now create a Map<String, ConfigAttribute> for each <protect-pointcut>
    // sub-element
    Map<String, List<ConfigAttribute>> pointcutMap = parseProtectPointcuts(pc,
            DomUtils.getChildElementsByTagName(element, PROTECT_POINTCUT));

    if (pointcutMap.size() > 0) {
        if (useAspectJ) {
            pc.getReaderContext().error("You can't use AspectJ mode with protect-pointcut definitions", source);
        }
        // Only add it if there are actually any pointcuts defined.
        BeanDefinition mapBasedMetadataSource = new RootBeanDefinition(
                MapBasedMethodSecurityMetadataSource.class);
        BeanReference ref = new RuntimeBeanReference(
                pc.getReaderContext().generateBeanName(mapBasedMetadataSource));

        delegates.add(ref);
        pc.registerBeanComponent(new BeanComponentDefinition(mapBasedMetadataSource, ref.getBeanName()));
        registerProtectPointcutPostProcessor(pc, pointcutMap, ref, source);
    }

    BeanReference metadataSource = registerDelegatingMethodSecurityMetadataSource(pc, delegates, source);

    // Check for additional after-invocation-providers..
    List<Element> afterInvocationElts = DomUtils.getChildElementsByTagName(element,
            Elements.AFTER_INVOCATION_PROVIDER);

    for (Element elt : afterInvocationElts) {
        afterInvocationProviders.add(new RuntimeBeanReference(elt.getAttribute(ATT_REF)));
    }

    String accessManagerId = element.getAttribute(ATT_ACCESS_MGR);

    if (!StringUtils.hasText(accessManagerId)) {
        accessManagerId = registerAccessManager(pc, jsr250Enabled, preInvocationVoter);
    }

    String authMgrRef = element.getAttribute(ATT_AUTHENTICATION_MANAGER_REF);

    String runAsManagerId = element.getAttribute(ATT_RUN_AS_MGR);
    BeanReference interceptor = registerMethodSecurityInterceptor(pc, authMgrRef, accessManagerId,
            runAsManagerId, metadataSource, afterInvocationProviders, source, useAspectJ);

    if (useAspectJ) {
        BeanDefinitionBuilder aspect = BeanDefinitionBuilder.rootBeanDefinition(
                "org.springframework.security.access.intercept.aspectj.aspect.AnnotationSecurityAspect");
        aspect.setFactoryMethod("aspectOf");
        aspect.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
        aspect.addPropertyValue("securityInterceptor", interceptor);
        String id = pc.getReaderContext().registerWithGeneratedName(aspect.getBeanDefinition());
        pc.registerBeanComponent(new BeanComponentDefinition(aspect.getBeanDefinition(), id));
    } else {
        registerAdvisor(pc, interceptor, metadataSource, source, element.getAttribute(ATT_ADVICE_ORDER));
        AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(pc, element);
    }

    pc.popAndRegisterContainingComponent();

    return null;
}