Example usage for org.springframework.aop.config AdvisorComponentDefinition AdvisorComponentDefinition

List of usage examples for org.springframework.aop.config AdvisorComponentDefinition AdvisorComponentDefinition

Introduction

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

Prototype

public AdvisorComponentDefinition(String advisorBeanName, BeanDefinition advisorDefinition,
            @Nullable BeanDefinition pointcutDefinition) 

Source Link

Usage

From source file:eap.config.ConfigBeanDefinitionParser.java

/**
 * Parses the supplied {@code <advisor>} element and registers the resulting
 * {@link org.springframework.aop.Advisor} and any resulting {@link org.springframework.aop.Pointcut}
 * with the supplied {@link BeanDefinitionRegistry}.
 *///www. j  a v  a 2s .  c om
private void parseAdvisor(Element advisorElement, ParserContext parserContext) {
    AbstractBeanDefinition advisorDef = createAdvisorBeanDefinition(advisorElement, parserContext);
    String id = advisorElement.getAttribute(ID);

    try {
        this.parseState.push(new AdvisorEntry(id));
        String advisorBeanName = id;
        if (StringUtils.hasText(advisorBeanName)) {
            parserContext.getRegistry().registerBeanDefinition(advisorBeanName, advisorDef);
        } else {
            advisorBeanName = parserContext.getReaderContext().registerWithGeneratedName(advisorDef);
        }

        Object pointcut = parsePointcutProperty(advisorElement, parserContext);
        if (pointcut instanceof BeanDefinition) {
            advisorDef.getPropertyValues().add(POINTCUT, pointcut);
            parserContext.registerComponent(
                    new AdvisorComponentDefinition(advisorBeanName, advisorDef, (BeanDefinition) pointcut));
        } else if (pointcut instanceof String) {
            advisorDef.getPropertyValues().add(POINTCUT, new RuntimeBeanReference((String) pointcut));
            parserContext.registerComponent(new AdvisorComponentDefinition(advisorBeanName, advisorDef));
        }
    } finally {
        this.parseState.pop();
    }
}