public class ExecutableNormalizedField
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static class |
ExecutableNormalizedField.Builder |
Modifier and Type | Method and Description |
---|---|
void |
addChild(ExecutableNormalizedField executableNormalizedField) |
void |
addObjectTypeNames(java.util.Collection<java.lang.String> objectTypeNames) |
void |
clearChildren() |
java.lang.String |
getAlias() |
com.google.common.collect.ImmutableList<Argument> |
getAstArguments() |
java.util.List<ExecutableNormalizedField> |
getChildren() |
java.util.List<ExecutableNormalizedField> |
getChildren(int includingRelativeLevel) |
java.util.List<ExecutableNormalizedField> |
getChildrenWithSameResultKey(java.lang.String resultKey) |
java.util.List<GraphQLFieldDefinition> |
getFieldDefinitions(GraphQLSchema schema) |
java.lang.String |
getFieldName() |
int |
getLevel() |
java.util.List<java.lang.String> |
getListOfResultKeys() |
java.lang.String |
getName()
All merged fields have the same name.
|
NormalizedInputValue |
getNormalizedArgument(java.lang.String name) |
com.google.common.collect.ImmutableMap<java.lang.String,NormalizedInputValue> |
getNormalizedArguments() |
java.util.Set<java.lang.String> |
getObjectTypeNames() |
ExecutableNormalizedField |
getParent() |
java.util.LinkedHashMap<java.lang.String,java.lang.Object> |
getResolvedArguments() |
java.lang.String |
getResultKey()
Returns the key of this MergedFieldWithType for the overall result.
|
java.lang.String |
getSingleObjectTypeName() |
GraphQLOutputType |
getType(GraphQLSchema schema) |
java.util.List<GraphQLOutputType> |
getTypes(GraphQLSchema schema) |
boolean |
hasChildren() |
boolean |
isConditional(@NotNull GraphQLSchema schema)
Determines whether this NF needs a fragment to select the field.
|
static ExecutableNormalizedField.Builder |
newNormalizedField() |
java.lang.String |
objectTypeNamesToString() |
java.lang.String |
printDetails() |
void |
replaceParent(ExecutableNormalizedField newParent) |
void |
setObjectTypeNames(java.util.Collection<java.lang.String> objectTypeNames) |
java.lang.String |
toString() |
ExecutableNormalizedField |
transform(java.util.function.Consumer<ExecutableNormalizedField.Builder> builderConsumer) |
void |
traverseSubTree(java.util.function.Consumer<ExecutableNormalizedField> consumer) |
public boolean isConditional(@NotNull @NotNull GraphQLSchema schema)
Consider the following schema
interface Animal { name: String parent: Animal } type Cat implements Animal { name: String parent: Cat } type Dog implements Animal { name: String parent: Dog isGoodBoy: Boolean } type Query { animal: Animal }
and the following query
{ animal { parent { name } } }
Then we would get the following normalized operation tree
-Query.animal: Animal --[Cat, Dog].parent: Cat, Dog ---[Cat, Dog].name: String
If we simply checked the parent
's getFieldDefinitions(GraphQLSchema)
that would
point us to Cat.parent
and Dog.parent
whose output types would incorrectly answer
our question whether this is conditional?
We MUST consider that the output type of the parent
field is Animal
and
NOT Cat
or Dog
as their respective impls would say.
schema
- - the graphql schema in playpublic boolean hasChildren()
public GraphQLOutputType getType(GraphQLSchema schema)
public java.util.List<GraphQLOutputType> getTypes(GraphQLSchema schema)
public java.util.List<GraphQLFieldDefinition> getFieldDefinitions(GraphQLSchema schema)
public void addObjectTypeNames(java.util.Collection<java.lang.String> objectTypeNames)
public void setObjectTypeNames(java.util.Collection<java.lang.String> objectTypeNames)
public void addChild(ExecutableNormalizedField executableNormalizedField)
public void clearChildren()
public java.lang.String getName()
WARNING: This is not always the key in the execution result, because of possible aliases. See getResultKey()
public java.lang.String getResultKey()
public java.lang.String getAlias()
public com.google.common.collect.ImmutableList<Argument> getAstArguments()
public NormalizedInputValue getNormalizedArgument(java.lang.String name)
public com.google.common.collect.ImmutableMap<java.lang.String,NormalizedInputValue> getNormalizedArguments()
public java.util.LinkedHashMap<java.lang.String,java.lang.Object> getResolvedArguments()
public static ExecutableNormalizedField.Builder newNormalizedField()
public java.lang.String getFieldName()
public ExecutableNormalizedField transform(java.util.function.Consumer<ExecutableNormalizedField.Builder> builderConsumer)
public java.util.Set<java.lang.String> getObjectTypeNames()
public java.lang.String getSingleObjectTypeName()
public java.lang.String printDetails()
public java.lang.String objectTypeNamesToString()
public java.util.List<java.lang.String> getListOfResultKeys()
public java.util.List<ExecutableNormalizedField> getChildren()
public java.util.List<ExecutableNormalizedField> getChildrenWithSameResultKey(java.lang.String resultKey)
public int getLevel()
public ExecutableNormalizedField getParent()
public void replaceParent(ExecutableNormalizedField newParent)
public java.lang.String toString()
toString
in class java.lang.Object
public java.util.List<ExecutableNormalizedField> getChildren(int includingRelativeLevel)
public void traverseSubTree(java.util.function.Consumer<ExecutableNormalizedField> consumer)