Class ExecutionStepInfo
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.
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Supplier
<ImmutableMapWithNullValues<String, Object>> private final MergedField
field, fieldDefinition, fieldContainer and arguments differ per field StepInfo.private final GraphQLObjectType
private final GraphQLFieldDefinition
private final ExecutionStepInfo
private final ResultPath
A list element is characterized by having a path ending with an index segment.private final GraphQLOutputType
If this StepInfo represent a field the type is equal to fieldDefinition.getType() -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionThis allows you to morph a type into a more specialized form yet return the same parent and non-null ness, for example taking aGraphQLInterfaceType
and turning it into a specificGraphQLObjectType
after type resolution has occurred<T> T
getArgument
(String name) Returns the named argumentgetField()
This returns the AST fields that matches thegetFieldDefinition()
during executionDeprecated.This returns the field definition that is in play when this type info was created or null if the type is a root query typeThe GraphQLObjectType where fieldDefinition is defined.getPath()
getType()
This returns the type for the current step.This returns the type which is unwrapped if it wasGraphQLNonNull
wrappedboolean
boolean
boolean
static ExecutionStepInfo.Builder
static ExecutionStepInfo.Builder
newExecutionStepInfo
(ExecutionStepInfo existing) toString()
transform
(Consumer<ExecutionStepInfo.Builder> builderConsumer)
-
Field Details
-
type
If this StepInfo represent a field the type is equal to fieldDefinition.getType()if this StepInfo is a list element this type is the actual current list element. For example: Query.pets: [[Pet]] with Pet either a Dog or Cat and the actual result is [[Dog1],[[Cat1]] Then the type is (for a query "{pets{name}}"): [[Pet]] for /pets (representing the field Query.pets, not a list element) [Pet] fot /pets[0] [Pet] for /pets[1] Dog for /pets[0][0] Cat for /pets[1][0] String for /pets[0][0]/name (representing the field Dog.name, not a list element) String for /pets[1][0]/name (representing the field Cat.name, not a list element)
-
path
A list element is characterized by having a path ending with an index segment. (ResultPath.isListSegment()) -
parent
-
field
field, fieldDefinition, fieldContainer and arguments differ per field StepInfo.But for list StepInfos these properties are the same as the field returning the list.
-
fieldDefinition
-
fieldContainer
-
arguments
-
-
Constructor Details
-
ExecutionStepInfo
-
-
Method Details
-
getFieldContainer
Deprecated.usegetObjectType()
instead as it is named better- Returns:
- the GraphQLObjectType defining the
getFieldDefinition()
- See Also:
-
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
This returns the type for the current step.- Returns:
- the graphql type in question
-
getUnwrappedNonNullType
This returns the type which is unwrapped if it wasGraphQLNonNull
wrapped- Returns:
- the graphql type in question
-
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
This returns the AST fields that matches thegetFieldDefinition()
during execution- Returns:
- the merged fields
-
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
- Returns:
- the resolved arguments that have been passed to this field
-
getArgument
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
- Returns:
- the parent type information
-
hasParent
public boolean hasParent()- Returns:
- true if the type has a parent (most do)
-
changeTypeWithPreservedNonNull
This allows you to morph a type into a more specialized form yet return the same parent and non-null ness, for example taking aGraphQLInterfaceType
and turning it into a specificGraphQLObjectType
after type resolution has occurred- Parameters:
newType
- the new type to be- Returns:
- a new type info with the same
-
simplePrint
- Returns:
- the type in graphql SDL format, eg [typeName!]!
-
toString
-
transform
-
getResultKey
-
newExecutionStepInfo
- Returns:
- a builder of type info
-
newExecutionStepInfo
-
getObjectType()
instead as it is named better