List of usage examples for org.aspectj.weaver.patterns ThisOrTargetPointcut ThisOrTargetPointcut
public ThisOrTargetPointcut(boolean isThis, TypePattern type)
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; }