Class QueryTraverser


  • @PublicApi
    public class QueryTraverser
    extends java.lang.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 Detail

      • visitDepthFirst

        public java.lang.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