Class QueryTraverser

java.lang.Object
graphql.analysis.QueryTraverser

@PublicApi public class QueryTraverser extends Object
Helps to traverse (or reduce) a Document (or parts of it) and tracks at the same time the corresponding Schema types.

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.

  • Method Details

    • visitDepthFirst

      public Object visitDepthFirst(QueryVisitor queryVisitor)
    • visitPostOrder

      public void visitPostOrder(QueryVisitor visitor)
      Visits the Document (or parts of it) in post-order.
      Parameters:
      visitor - the query visitor that will be called back
    • visitPreOrder

      public void visitPreOrder(QueryVisitor visitor)
      Visits the Document (or parts of it) in pre-order.
      Parameters:
      visitor - the query visitor that will be called back
    • reducePostOrder

      public <T> T reducePostOrder(QueryReducer<T> queryReducer, T initialValue)
      Reduces the fields of a Document (or parts of it) to a single value. The fields are visited in post-order.
      Type Parameters:
      T - the type of reduced value
      Parameters:
      queryReducer - the query reducer
      initialValue - the initial value to pass to the reducer
      Returns:
      the calculated overall value
    • reducePreOrder

      public <T> T reducePreOrder(QueryReducer<T> queryReducer, T initialValue)
      Reduces the fields of a Document (or parts of it) to a single value. The fields are visited in pre-order.
      Type Parameters:
      T - the type of reduced value
      Parameters:
      queryReducer - the query reducer
      initialValue - the initial value to pass to the reducer
      Returns:
      the calculated overall value
    • newQueryTraverser

      public static QueryTraverser.Builder newQueryTraverser()