Class ExecutionStepInfo

java.lang.Object
graphql.execution.ExecutionStepInfo

@PublicApi public class ExecutionStepInfo extends 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 Details

    • 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
    • getField

      public MergedField getField()
      This returns the AST fields that matches the getFieldDefinition() during execution
      Returns:
      the merged fields
    • getPath

      public ResultPath getPath()
      Returns:
      the ResultPath to this info
    • 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 Map<String,Object> getArguments()
      Returns:
      the resolved arguments that have been passed to this field
    • getArgument

      public <T> T getArgument(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 String simplePrint()
      Returns:
      the type in graphql SDL format, eg [typeName!]!
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • transform

      public ExecutionStepInfo transform(Consumer<ExecutionStepInfo.Builder> builderConsumer)
    • getResultKey

      public String getResultKey()
    • newExecutionStepInfo

      public static ExecutionStepInfo.Builder newExecutionStepInfo()
      Returns:
      a builder of type info
    • newExecutionStepInfo

      public static ExecutionStepInfo.Builder newExecutionStepInfo(ExecutionStepInfo existing)