1 24 25 package org.aspectj.compiler.crosscuts; 26 27 import org.aspectj.compiler.crosscuts.ast.*; 28 import org.aspectj.compiler.crosscuts.joinpoints.*; 29 30 import org.aspectj.compiler.base.ast.*; 31 import org.aspectj.compiler.base.*; 32 import org.aspectj.util.CollectionUtil; 33 34 import java.util.*; 35 36 public class AdvicePlannerPass extends WalkerPass { 37 List planners; 38 39 public AdvicePlannerPass(JavaCompiler compiler) { 40 super(compiler); 41 } 42 43 public String getDisplayName() { 44 return "planning advice"; 45 } 46 47 public void transformWorld() { 48 initializeJoinPointPlanners(); 49 super.transformWorld(); 50 } 51 52 void initializeJoinPointPlanners() { 53 planners = getWorld().getJpPlanners(); 54 } 55 56 protected void postProcess(ASTObject object) { 57 if (object instanceof TypeDec) plan((TypeDec)object); 58 } 59 60 public void plan(TypeDec typeDec) { 61 makePlans(typeDec.joinPoints0); 62 makePlans(typeDec.joinPoints1); 63 makePlans(typeDec.joinPoints2); 64 } 65 66 void planJoinPoint(JoinPoint jp) { 67 for (Iterator i = planners.iterator(); i.hasNext(); ) { 69 TopJpPlanner jpPlanner = (TopJpPlanner)i.next(); 70 jpPlanner.plan(jp); 71 } 72 } 74 75 void makePlans(List jps) { 76 for (Iterator i = jps.iterator(); i.hasNext(); ) { 77 JoinPoint joinPoint = (JoinPoint)i.next(); 78 planJoinPoint(joinPoint); 79 } 80 } 81 } 82 83 | Popular Tags |