Example usage for org.aspectj.weaver.patterns ThisOrTargetPointcut ThisOrTargetPointcut

List of usage examples for org.aspectj.weaver.patterns ThisOrTargetPointcut ThisOrTargetPointcut

Introduction

In this page you can find the example usage for org.aspectj.weaver.patterns ThisOrTargetPointcut ThisOrTargetPointcut.

Prototype

public ThisOrTargetPointcut(boolean isThis, TypePattern type) 

Source Link

Usage

From source file:org.caesarj.compiler.aspectj.CaesarWrapperPatternParser.java

License:Open Source License

/**
 * Method parseThisOrTargetPointcut./*  www .  j  a  va2 s.  co m*/
 * @return Pointcut
 */
private CaesarPointcutWrapper parseThisOrTargetPointcut() {
    String kind = parseIdentifier();
    eat("(");
    TypePattern type = parseTypePattern();
    eat(")");

    // Creates the wrapper 
    ThisOrTargetPointcut p = new ThisOrTargetPointcut(kind.equals("this"), type);
    CaesarPointcutWrapper wrapper = new CaesarPointcutWrapper(p);
    return wrapper;
}

From source file:org.caesarj.compiler.joinpoint.PerObjectDeploymentVisitor.java

License:Open Source License

public boolean visit(CjAdviceDeclaration adviceDec) {
    //include the old parameters
    List adviceParameters = new ArrayList();

    for (int i = 0; i < adviceDec.getParameters().length; i++) {
        adviceParameters.add(adviceDec.getParameters()[i]);
    }//from   w  w w .j a v  a 2 s .c o m

    /* add additiona parameter JOINPOINT_THIS_PARAM to the advice */
    adviceDec.setExtraArgumentFlag(CaesarConstants.JoinPointThis);

    JFormalParameter extraParameter = new JFormalParameter(adviceDec.getTokenReference(),
            JFormalParameter.DES_PARAMETER, new CClassNameType(Constants.JAV_OBJECT),
            CaesarConstants.JOINPOINT_THIS_PARAM, false);
    adviceParameters.add(extraParameter);

    adviceDec.setParameters((JFormalParameter[]) adviceParameters.toArray(new JFormalParameter[0]));

    /* transform the advice poincut from a() to (a() && this(JOINPOINT_THIS_PARAM)) */
    ArrayList<NamePattern> names = new ArrayList<NamePattern>();
    names.add(new NamePattern(CaesarConstants.JOINPOINT_THIS_PARAM));

    CaesarWildTypePattern pattern = new CaesarWildTypePattern(names, false, 0);

    Pointcut origPointcut = adviceDec.getPointcut().wrappee();
    Pointcut newPointcut = new AndPointcut(origPointcut, new ThisOrTargetPointcut(true, pattern));
    adviceDec.getPointcut().replacePointcut(newPointcut);

    return false;
}