Class ExecutionStepInfo


  • @PublicApi
    public class ExecutionStepInfo
    extends java.lang.Object
    As the graphql query executes, it forms a hierarchy from parent fields (and their type) to their child fields (and their type) until a scalar type is encountered; this class captures that execution type information.

    The static graphql type system (rightly) does not contain a hierarchy of child to parent types nor the nonnull ness of type instances, so this helper class adds this information during query execution.

    • Method Detail

      • getObjectType

        public GraphQLObjectType getObjectType()
        The GraphQLObjectType where fieldDefinition is defined. Note: For the Introspection field __typename the returned object type doesn't actually contain the fieldDefinition.
        Returns:
        the GraphQLObjectType defining the getFieldDefinition()
      • getType

        public GraphQLOutputType getType()
        This returns the type for the current step.
        Returns:
        the graphql type in question
      • getUnwrappedNonNullType

        public GraphQLOutputType getUnwrappedNonNullType()
        This returns the type which is unwrapped if it was GraphQLNonNull wrapped
        Returns:
        the graphql type in question
      • getFieldDefinition

        public GraphQLFieldDefinition getFieldDefinition()
        This returns the field definition that is in play when this type info was created or null if the type is a root query type
        Returns:
        the field definition or null if there is not one
      • isNonNullType

        public boolean isNonNullType()
        Returns:
        true if the type must be nonnull
      • isListType

        public boolean isListType()
        Returns:
        true if the type is a list
      • getArguments

        public java.util.Map<java.lang.String,​java.lang.Object> getArguments()
        Returns:
        the resolved arguments that have been passed to this field
      • getArgument

        public <T> T getArgument​(java.lang.String name)
        Returns the named argument
        Type Parameters:
        T - you decide what type it is
        Parameters:
        name - the name of the argument
        Returns:
        the named argument or null if it's not present
      • getParent

        public ExecutionStepInfo getParent()
        Returns:
        the parent type information
      • hasParent

        public boolean hasParent()
        Returns:
        true if the type has a parent (most do)
      • changeTypeWithPreservedNonNull

        public ExecutionStepInfo changeTypeWithPreservedNonNull​(GraphQLOutputType newType)
        This allows you to morph a type into a more specialized form yet return the same parent and non-null ness, for example taking a GraphQLInterfaceType and turning it into a specific GraphQLObjectType after type resolution has occurred
        Parameters:
        newType - the new type to be
        Returns:
        a new type info with the same
      • simplePrint

        public java.lang.String simplePrint()
        Returns:
        the type in graphql SDL format, eg [typeName!]!
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • getResultKey

        public java.lang.String getResultKey()