public class TreePathCacher extends TreeScanner<TreePath,Tree>
This class replicates some logic from TreePath.getPath but also adds caching to all intermediate TreePaths that are generated. The intermediate TreePaths are reused when other targets have overlapping paths.
Constructor and Description |
---|
TreePathCacher() |
Modifier and Type | Method and Description |
---|---|
void |
addPath(Tree target,
TreePath path)
Adds the given key and value to the cache.
|
void |
clear() |
@Nullable TreePath |
getPath(CompilationUnitTree root,
Tree target)
Return the TreePath for a Tree.
|
boolean |
isCached(Tree target)
Returns true if the tree is cached.
|
TreePath |
scan(Tree tree,
Tree target)
Scan a single node.
|
reduce, scan, visitAnnotatedType, visitAnnotation, visitArrayAccess, visitArrayType, visitAssert, visitAssignment, visitBinary, visitBlock, visitBreak, visitCase, visitCatch, visitClass, visitCompilationUnit, visitCompoundAssignment, visitConditionalExpression, visitContinue, visitDoWhileLoop, visitEmptyStatement, visitEnhancedForLoop, visitErroneous, visitExports, visitExpressionStatement, visitForLoop, visitIdentifier, visitIf, visitImport, visitInstanceOf, visitIntersectionType, visitLabeledStatement, visitLambdaExpression, visitLiteral, visitMemberReference, visitMemberSelect, visitMethod, visitMethodInvocation, visitModifiers, visitModule, visitNewArray, visitNewClass, visitOpens, visitOther, visitPackage, visitParameterizedType, visitParenthesized, visitPrimitiveType, visitProvides, visitRequires, visitReturn, visitSwitch, visitSynchronized, visitThrow, visitTry, visitTypeCast, visitTypeParameter, visitUnary, visitUnionType, visitUses, visitVariable, visitWhileLoop, visitWildcard
public boolean isCached(Tree target)
target
- the tree to search forpublic void addPath(Tree target, TreePath path)
target
- the tree to addpath
- the path to cachepublic @Nullable TreePath getPath(CompilationUnitTree root, @FindDistinct Tree target)
root
- the compilation unit to search intarget
- the target tree to look forpublic void clear()