|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.tromer.jie.visitor.CallingDepthFirst | +--org.tromer.jie.ContextualVisitor
Recursively visits a tree while maintaining context information.
The context is held in instances of VisitContext
,
and includes information about the current package, type and method.
This class is a descendant of CallingDepthFirst, so another visitor
can be called for further processing. That visitor is called after
the context has been updated for the current node.
Field Summary | |
protected GenericStaticFilter |
filter
Generic static filter used by this visitor to visit only interesting places. |
Fields inherited from class org.tromer.jie.visitor.CallingDepthFirst |
_callee,
visitStopper |
Method Summary | |
static java.lang.Object |
apply(CompilationUnit root,
java.lang.String filename,
GenericStaticFilter filter,
ObjectVisitor payload)
Applies a new ContextualVisitor to a compilation unit. |
java.lang.Object |
visit(AllocationExpression n,
java.lang.Object argu)
Visit allocation expression: if it includes an anonymous class declaration, update the context accordingly. |
java.lang.Object |
visit(ClassBody n,
java.lang.Object argu)
Visit class body: activate new class context (not for interfaces). |
java.lang.Object |
visit(ConstructorDeclaration n,
java.lang.Object argu)
Visit constructor declaration: save constructor data in context. |
java.lang.Object |
visit(FieldDeclaration n,
java.lang.Object argu)
Visit field declarator: update the context (some generic context parameters consider this a "method"). |
java.lang.Object |
visit(Initializer n,
java.lang.Object argu)
Visit initializer (either static or instance): we treat this as a method, so update the context. |
java.lang.Object |
visit(MethodDeclaration n,
java.lang.Object argu)
Visit method declaration: save method data in context. |
java.lang.Object |
visit(NestedClassDeclaration n,
java.lang.Object argu)
Visit NestedClassDeclaration -- record whether it's "static". |
java.lang.Object |
visit(PackageDeclaration n,
java.lang.Object argu)
Visit package declaration: save package name in context. |
java.lang.Object |
visit(TypeDeclaration n,
java.lang.Object argu)
If we reached a type declaration before seeing a package declaration, then this compilation unit is in the unnamed package. |
java.lang.Object |
visit(UnmodifiedClassDeclaration n,
java.lang.Object argu)
Visit unmodified (named) class declaration: save class name in context. |
java.lang.Object |
visit(UnmodifiedInterfaceDeclaration n,
java.lang.Object argu)
Visit unmodified interface declaration: update context, since field initializers can include code that will be instrumented. |
Methods inherited from class org.tromer.jie.visitor.CallingDepthFirst |
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit,
visit |
Methods inherited from class java.lang.Object |
|
Field Detail |
protected GenericStaticFilter filter
Method Detail |
public static java.lang.Object apply(CompilationUnit root, java.lang.String filename, GenericStaticFilter filter, ObjectVisitor payload)
public java.lang.Object visit(PackageDeclaration n, java.lang.Object argu)
nodeToken -> "package" name -> Name() nodeToken1 -> ";"
public java.lang.Object visit(TypeDeclaration n, java.lang.Object argu)
In addition, apply package filtering.
nodeChoice -> ClassDeclaration() | InterfaceDeclaration() | ";"
public java.lang.Object visit(UnmodifiedClassDeclaration n, java.lang.Object argu)
nodeToken -> "class" nodeToken1 -> <IDENTIFIER> nodeOptional -> [ "extends" Name() ] nodeOptional1 -> [ "implements" NameList() ] classBody -> ClassBody()
public java.lang.Object visit(AllocationExpression n, java.lang.Object argu)
nodeChoice -> "new" PrimitiveType() ArrayDimsAndInits() | "new" Name() ( ArrayDimsAndInits() | Arguments() [ ClassBody() ] )
public java.lang.Object visit(ClassBody n, java.lang.Object argu)
In addition, apply class filtering.
nodeToken -> "{" nodeListOptional -> ( ClassBodyDeclaration() )* nodeToken1 -> "}"
public java.lang.Object visit(NestedClassDeclaration n, java.lang.Object argu)
nodeListOptional -> ( "static" | "abstract" | "final" | "public" | "protected" | "private" | "strictfp" )* unmodifiedClassDeclaration -> UnmodifiedClassDeclaration()
public java.lang.Object visit(UnmodifiedInterfaceDeclaration n, java.lang.Object argu)
nodeToken -> "interface" nodeToken1 -> <IDENTIFIER> nodeOptional -> [ "extends" NameList() ] nodeToken2 -> "{" nodeListOptional -> ( InterfaceMemberDeclaration() )* nodeToken3 -> "}"
public java.lang.Object visit(MethodDeclaration n, java.lang.Object argu)
nodeListOptional -> ( "public" | "protected" | "private" | "static" | "abstract" | "final" | "native" | "synchronized" )* resultType -> ResultType() methodDeclarator -> MethodDeclarator() nodeOptional -> [ "throws" NameList() ] nodeChoice -> ( TopBlock() | ";" )
public java.lang.Object visit(ConstructorDeclaration n, java.lang.Object argu)
nodeOptional -> [ "public" | "protected" | "private" ] nodeToken -> <IDENTIFIER> formalParameters -> FormalParameters() nodeOptional1 -> [ "throws" NameList() ] nodeToken1 -> "{" nodeOptional2 -> [ ExplicitConstructorInvocation() ] nodeListOptional -> ( TopBlockStatement() )* nodeToken2 -> "}"
public java.lang.Object visit(Initializer n, java.lang.Object argu)
nodeOptional -> [ "static" ] block -> Block()
public java.lang.Object visit(FieldDeclaration n, java.lang.Object argu)
nodeListOptional -> ( "public" | "protected" | "private" | "static" | "final" | "transient" | "volatile" )* type -> Type() variableDeclarator -> VariableDeclarator() nodeListOptional1 -> ( "," VariableDeclarator() )* nodeToken -> ";"
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |