Class PlanWalker<O extends Operator,P extends OperatorPlan<O>>

  extended by org.apache.pig.impl.plan.PlanWalker<O,P>
Direct Known Subclasses:
DependencyOrderWalker, DependencyOrderWalkerWOSeenChk, DepthFirstWalker, PreOrderDepthFirstWalker, ReverseDependencyOrderWalker

public abstract class PlanWalker<O extends Operator,P extends OperatorPlan<O>>
extends Object

PlanWalker encapsulates the logic to traverse a plan. It is used only by visitors. All walkers must be constructed in a way that they only visit a given node once in a traversal.

Field Summary
protected  P mPlan
Constructor Summary
PlanWalker(P plan)
Method Summary
 P getPlan()
 void setPlan(P plan)
abstract  PlanWalker<O,P> spawnChildWalker(P plan)
          Return a new instance of this same type of walker for a subplan.
abstract  void walk(PlanVisitor<O,P> visitor)
          Begin traversing the graph.
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail


protected P extends OperatorPlan<O> mPlan
Constructor Detail


public PlanWalker(P plan)
plan - Plan for this walker to traverse.
Method Detail


public abstract void walk(PlanVisitor<O,P> visitor)
                   throws VisitorException
Begin traversing the graph.

visitor - Visitor this walker is being used by. This can't be set in the constructor because the visitor is constructing this class, and does not yet have a 'this' pointer to send as an argument.
VisitorException - if an error is encountered while walking.


public abstract PlanWalker<O,P> spawnChildWalker(P plan)
Return a new instance of this same type of walker for a subplan. When this method is called the same type of walker with the provided plan set as the plan, must be returned. This can then be used to walk subplans. This allows abstract visitors to clone walkers without knowning the type of walker their subclasses used.

plan - Plan for the new walker.
Instance of the same type of walker with mPlan set to plan.


public P getPlan()


public void setPlan(P plan)

Copyright © ${year} The Apache Software Foundation