Example usage for org.aspectj.weaver.tools PointcutParameter getName

List of usage examples for org.aspectj.weaver.tools PointcutParameter getName

Introduction

In this page you can find the example usage for org.aspectj.weaver.tools PointcutParameter getName.

Prototype

String getName();

Source Link

Document

The name of this parameter

Usage

From source file:org.springframework.aop.aspectj.AbstractAspectJAdvice.java

License:Apache License

/**
 * Take the arguments at the method execution join point and output a set of arguments
 * to the advice method//from w  w w  .j  a v  a  2 s . com
 * @param jp the current JoinPoint
 * @param jpMatch the join point match that matched this execution join point
 * @param returnValue the return value from the method execution (may be null)
 * @param ex the exception thrown by the method execution (may be null)
 * @return the empty array if there are no arguments
 */
protected Object[] argBinding(JoinPoint jp, JoinPointMatch jpMatch, Object returnValue, Throwable ex) {
    calculateArgumentBindings();

    // AMC start
    Object[] adviceInvocationArgs = new Object[this.adviceInvocationArgumentCount];
    int numBound = 0;

    if (this.joinPointArgumentIndex != -1) {
        adviceInvocationArgs[this.joinPointArgumentIndex] = jp;
        numBound++;
    } else if (this.joinPointStaticPartArgumentIndex != -1) {
        adviceInvocationArgs[this.joinPointStaticPartArgumentIndex] = jp.getStaticPart();
        numBound++;
    }

    if (!CollectionUtils.isEmpty(this.argumentBindings)) {
        // binding from pointcut match
        if (jpMatch != null) {
            PointcutParameter[] parameterBindings = jpMatch.getParameterBindings();
            for (PointcutParameter parameter : parameterBindings) {
                String name = parameter.getName();
                Integer index = this.argumentBindings.get(name);
                adviceInvocationArgs[index] = parameter.getBinding();
                numBound++;
            }
        }
        // binding from returning clause
        if (this.returningName != null) {
            Integer index = this.argumentBindings.get(this.returningName);
            adviceInvocationArgs[index] = returnValue;
            numBound++;
        }
        // binding from thrown exception
        if (this.throwingName != null) {
            Integer index = this.argumentBindings.get(this.throwingName);
            adviceInvocationArgs[index] = ex;
            numBound++;
        }
    }

    if (numBound != this.adviceInvocationArgumentCount) {
        throw new IllegalStateException("Required to bind " + this.adviceInvocationArgumentCount
                + " arguments, but only bound " + numBound + " (JoinPointMatch "
                + (jpMatch == null ? "was NOT" : "WAS") + " bound in invocation)");
    }

    return adviceInvocationArgs;
}