@PublicApi public class QueryTransformer extends java.lang.Object
This is an important distinction to just traversing the Document without any type information: Each field has a clearly
defined type. See QueryVisitorFieldEnvironment
.
Furthermore are the built in Directives skip/include automatically evaluated: if parts of the Document should be ignored they will not be visited. But this is not a full evaluation of a Query: every fragment will be visited/followed regardless of the type condition.
It also doesn't consider field merging, which means for example { user{firstName} user{firstName}}
will result in four
visitField calls.
Modifier and Type | Class and Description |
---|---|
static class |
QueryTransformer.Builder |
Modifier and Type | Method and Description |
---|---|
static QueryTransformer.Builder |
newQueryTransformer() |
Node |
transform(QueryVisitor queryVisitor)
Visits the Document in pre-order and allows to transform it using
TreeTransformerUtil
methods. |
public Node transform(QueryVisitor queryVisitor)
TreeTransformerUtil
methods. Please note that fragment spreads are not followed and need to be
processed explicitly by supplying them as root.queryVisitor
- the query visitor that will be called back.java.lang.IllegalArgumentException
- if there are multiple root nodes.public static QueryTransformer.Builder newQueryTransformer()