Modifier and Type | Class and Description |
---|---|
static class |
QueryTreeWalker.QueryWalkContext |
Constructor and Description |
---|
QueryTreeWalker() |
Modifier and Type | Method and Description |
---|---|
static Stream<QueryTreeWalker.QueryWalkContext> |
contextStream(QueryDefinition qd)
Creates a stream populated by a depth-first walk of the query-tree
Callers should beware using the
QueryTreeWalker.QueryWalkContext to modify the links between queries as tree branches may
be orphaned or dropped from iteration as a result. |
void |
depthFirstWalk(QueryDefinition queryDefinition,
Function<QueryTreeWalker.QueryWalkContext,QueryTreeAction> perNodeAction)
Performs a depth-first walk of the main query in the specified
QueryDefinition
Our walk processes the whole tree by default. |
public void depthFirstWalk(QueryDefinition queryDefinition, Function<QueryTreeWalker.QueryWalkContext,QueryTreeAction> perNodeAction)
QueryDefinition
Our walk processes the whole tree by default. However, if the provided callback replaces the Query currently being
processed, the walk skips over any children in that subtree to limit the risk of accidental infinite-recursion or
double-visiting.queryDefinition
- the DSL definition containing the query-tree to walkperNodeAction
- a Function to process each node as it's visited. If any modifications are being made to the
node (or its children), the Function can return a new query object which should replace the
current query's position within the tree. Function's that don't modify the tree in any way
can return the Query object attached to the current QueryWalkContextpublic static Stream<QueryTreeWalker.QueryWalkContext> contextStream(QueryDefinition qd)
QueryTreeWalker.QueryWalkContext
to modify the links between queries as tree branches may
be orphaned or dropped from iteration as a result.