@PublicApi public class ExecutionTypeInfo extends java.lang.Object
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.
Modifier and Type | Class and Description |
---|---|
static class |
ExecutionTypeInfo.Builder |
Modifier and Type | Method and Description |
---|---|
<T extends GraphQLType> |
castType(java.lang.Class<T> clazz)
This will cast the type to a specific graphql type such
as
GraphQLObjectType say |
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
|
ExecutionTypeInfo |
getParentTypeInfo() |
ExecutionPath |
getPath() |
GraphQLType |
getType()
This returns the type which is unwrapped if it was
GraphQLNonNull wrapped |
boolean |
hasParentType() |
boolean |
isListType() |
boolean |
isNonNullType() |
static ExecutionTypeInfo.Builder |
newTypeInfo() |
java.lang.String |
toAst() |
java.lang.String |
toString() |
ExecutionTypeInfo |
treatAs(GraphQLType 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 |
static GraphQLType |
unwrapBaseType(GraphQLType type)
graphql types can be wrapped in
GraphQLNonNull and GraphQLList type wrappers
so this method will unwrap the type down to the raw underlying type. |
static java.util.Stack<GraphQLType> |
unwrapType(GraphQLType type)
graphql types can be wrapped in
GraphQLNonNull and GraphQLList type wrappers
so this method will unwrap the type down to the raw unwrapped type and return that wrapping
as a stack, with the top of the stack being the raw underling type. |
public GraphQLType getType()
GraphQLNonNull
wrappedpublic GraphQLFieldDefinition getFieldDefinition()
public ExecutionPath getPath()
ExecutionPath
to this infopublic <T extends GraphQLType> T castType(java.lang.Class<T> clazz)
GraphQLObjectType
sayT
- the type you want to becomeclazz
- the class to cast topublic boolean isNonNullType()
public boolean isListType()
public ExecutionTypeInfo getParentTypeInfo()
public boolean hasParentType()
public ExecutionTypeInfo treatAs(GraphQLType newType)
GraphQLInterfaceType
and turning it into a specific GraphQLObjectType
after type resolution has occurrednewType
- the new type to bepublic static java.util.Stack<GraphQLType> unwrapType(GraphQLType type)
GraphQLNonNull
and GraphQLList
type wrappers
so this method will unwrap the type down to the raw unwrapped type and return that wrapping
as a stack, with the top of the stack being the raw underling type.type
- the type to unwrappublic static GraphQLType unwrapBaseType(GraphQLType type)
GraphQLNonNull
and GraphQLList
type wrappers
so this method will unwrap the type down to the raw underlying type.type
- the type to unwrapGraphQLNonNull
and GraphQLList
type wrappers removedpublic java.lang.String toAst()
public java.lang.String toString()
toString
in class java.lang.Object
public static ExecutionTypeInfo.Builder newTypeInfo()