@PublicApi public class GraphQLArgument extends java.lang.Object implements GraphQLNamedSchemaElement, GraphQLInputValueDefinition
GraphQLFieldDefinition
.
Fields can be thought of as "functions" that take arguments and return a value.
See http://graphql.org/learn/queries/#arguments for more details on the concept.
GraphQLArgument
is used in two contexts, one context is graphql queries where it represents the arguments that can be
set on a field and the other is in Schema Definition Language (SDL) where it can be used to represent the argument value instances
that have been supplied on a GraphQLDirective
.
The difference is the 'value' and 'defaultValue' properties. In a query argument, the 'value' is never in the GraphQLArgument object but rather in the AST direct or in the query variables map and the 'defaultValue' represents a value to use if both of these are not present. You can think of them like a descriptor of what shape an argument might have.
However, with directives on SDL elements, the value is specified in AST only and transferred into the GraphQLArgument object and the 'defaultValue' comes instead from the directive definition elsewhere in the SDL. You can think of them as 'instances' of arguments, their shape and their specific value on that directive.
Originally graphql-java re-used the GraphQLDirective
and GraphQLArgument
classes to do both purposes. This was a modelling mistake. New GraphQLAppliedDirective
and GraphQLAppliedDirectiveArgument
classes have been introduced to better model when a directive is applied to a schema element,
as opposed to its schema definition itself.
Modifier and Type | Class and Description |
---|---|
static class |
GraphQLArgument.Builder |
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
CHILD_TYPE |
CHILD_APPLIED_DIRECTIVES, CHILD_DIRECTIVES
Modifier and Type | Method and Description |
---|---|
TraversalControl |
accept(TraverserContext<GraphQLSchemaElement> context,
GraphQLTypeVisitor visitor) |
GraphQLSchemaElement |
copy()
Each GraphQLSchemaElement should make a copy of itself when this is called.
|
boolean |
equals(java.lang.Object o)
No GraphQLSchemaElement implements `equals` because we need object identity
to treat a GraphQLSchema as an abstract graph.
|
java.util.Map<java.lang.String,java.util.List<GraphQLAppliedDirective>> |
getAllAppliedDirectivesByName()
This will return a Map of the all directives that are associated with a
GraphQLNamedSchemaElement , including both
repeatable and non-repeatable directives. |
java.util.Map<java.lang.String,java.util.List<GraphQLDirective>> |
getAllDirectivesByName()
This will return a Map of the all directives that are associated with a
GraphQLNamedSchemaElement , including both
repeatable and non repeatable directives. |
GraphQLAppliedDirective |
getAppliedDirective(java.lang.String directiveName)
Returns a non-repeatable directive with the provided name.
|
java.util.List<GraphQLAppliedDirective> |
getAppliedDirectives()
This will return a list of all the directives that have been put on
GraphQLNamedSchemaElement as a flat list, which may contain repeatable
and non-repeatable directives. |
@NotNull InputValueWithState |
getArgumentDefaultValue()
The default value of this argument.
|
static <T> T |
getArgumentDefaultValue(GraphQLArgument argument)
This static helper method will give out a java value based on the semantics captured
in the
InputValueWithState from getArgumentDefaultValue()
Note : You MUST only call this on a GraphQLArgument that is part of a fully formed schema. |
@NotNull InputValueWithState |
getArgumentValue()
Deprecated.
use
GraphQLAppliedDirectiveArgument instead |
static <T> T |
getArgumentValue(GraphQLArgument argument)
Deprecated.
use
GraphQLAppliedDirectiveArgument instead |
java.util.List<GraphQLSchemaElement> |
getChildren() |
SchemaElementChildrenContainer |
getChildrenWithTypeReferences() |
InputValueDefinition |
getDefinition()
The AST
Node this schema element is based on. |
java.lang.String |
getDeprecationReason() |
java.lang.String |
getDescription() |
GraphQLDirective |
getDirective(java.lang.String directiveName)
Returns a non-repeatable directive with the provided name.
|
java.util.List<GraphQLDirective> |
getDirectives()
This will return a list of all the directives that have been put on
GraphQLNamedSchemaElement as a flat list, which may contain repeatable
and non-repeatable directives. |
java.util.Map<java.lang.String,GraphQLDirective> |
getDirectivesByName()
This will return a Map of the non repeatable directives that are associated with a
GraphQLNamedSchemaElement . |
java.lang.String |
getName() |
GraphQLInputType |
getType() |
int |
hashCode()
No GraphQLSchemaElement implements `equals/hashCode` because we need object identity
to treat a GraphQLSchema as an abstract graph.
|
boolean |
hasSetDefaultValue() |
boolean |
hasSetValue() |
boolean |
isDeprecated() |
static GraphQLArgument.Builder |
newArgument() |
static GraphQLArgument.Builder |
newArgument(GraphQLArgument existing) |
GraphQLAppliedDirectiveArgument |
toAppliedArgument()
This method can be used to turn an argument that was being use as an applied argument into one.
|
java.lang.String |
toString() |
GraphQLArgument |
transform(java.util.function.Consumer<GraphQLArgument.Builder> builderConsumer)
This helps you transform the current GraphQLArgument into another one by starting a builder with all
the current values and allows you to transform it how you want.
|
GraphQLArgument |
withNewChildren(SchemaElementChildrenContainer newChildren) |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
getAppliedDirectives, getDirectives, hasAppliedDirective, hasDirective
public static final java.lang.String CHILD_TYPE
public java.lang.String getName()
getName
in interface GraphQLNamedSchemaElement
public GraphQLInputType getType()
getType
in interface GraphQLInputValueDefinition
@NotNull public @NotNull InputValueWithState getArgumentDefaultValue()
InputValueWithState
that represents the arguments default valuepublic boolean hasSetDefaultValue()
public boolean hasSetValue()
@Deprecated @NotNull public @NotNull InputValueWithState getArgumentValue()
GraphQLAppliedDirectiveArgument
insteadGraphQLDirective
applied to a schema or query element@Deprecated public static <T> T getArgumentValue(GraphQLArgument argument)
GraphQLAppliedDirectiveArgument
insteadInputValueWithState
from getArgumentValue()
Note : You MUST only call this on a GraphQLArgument
that is part of a fully formed schema. We need
all of the types to be resolved in order for this work correctly.
Note: This method will return null if the value is not set or explicitly set to null. If you you to know the difference
when "not set" and "set to null" then you cant use this method. Rather you should use getArgumentValue()
and use the InputValueWithState.isNotSet()
methods to decide how to handle those values.T
- the type you want it cast asargument
- the fully formed GraphQLArgument
public static <T> T getArgumentDefaultValue(GraphQLArgument argument)
InputValueWithState
from getArgumentDefaultValue()
Note : You MUST only call this on a GraphQLArgument
that is part of a fully formed schema. We need
all of the types to be resolved in order for this work correctly.
Note: This method will return null if the value is not set or explicitly set to null. If you you to know the difference
when "not set" and "set to null" then you cant use this method. Rather you should use getArgumentDefaultValue()
and use the InputValueWithState.isNotSet()
methods to decide how to handle those values.T
- the type you want it cast asargument
- the fully formed GraphQLArgument
public java.lang.String getDescription()
getDescription
in interface GraphQLNamedSchemaElement
public java.lang.String getDeprecationReason()
public boolean isDeprecated()
public InputValueDefinition getDefinition()
GraphQLNamedSchemaElement
Node
this schema element is based on. Is null if the GraphQLSchema
is not based on a SDL document.
Some elements also have additional extension Nodes. See for example GraphQLObjectType.getExtensionDefinitions()
getDefinition
in interface GraphQLNamedSchemaElement
public java.util.List<GraphQLDirective> getDirectives()
GraphQLDirectiveContainer
GraphQLNamedSchemaElement
as a flat list, which may contain repeatable
and non-repeatable directives.getDirectives
in interface GraphQLDirectiveContainer
public java.util.Map<java.lang.String,GraphQLDirective> getDirectivesByName()
GraphQLDirectiveContainer
GraphQLNamedSchemaElement
. Any repeatable directives
will be filtered out of this map.getDirectivesByName
in interface GraphQLDirectiveContainer
public java.util.Map<java.lang.String,java.util.List<GraphQLDirective>> getAllDirectivesByName()
GraphQLDirectiveContainer
GraphQLNamedSchemaElement
, including both
repeatable and non repeatable directives.getAllDirectivesByName
in interface GraphQLDirectiveContainer
public GraphQLDirective getDirective(java.lang.String directiveName)
GraphQLDirectiveContainer
AssertException
if
the directive is a repeatable directive that has more then one instance.getDirective
in interface GraphQLDirectiveContainer
directiveName
- the name of the directive to retrievepublic java.util.List<GraphQLAppliedDirective> getAppliedDirectives()
GraphQLDirectiveContainer
GraphQLNamedSchemaElement
as a flat list, which may contain repeatable
and non-repeatable directives.getAppliedDirectives
in interface GraphQLDirectiveContainer
public java.util.Map<java.lang.String,java.util.List<GraphQLAppliedDirective>> getAllAppliedDirectivesByName()
GraphQLDirectiveContainer
GraphQLNamedSchemaElement
, including both
repeatable and non-repeatable directives.getAllAppliedDirectivesByName
in interface GraphQLDirectiveContainer
public GraphQLAppliedDirective getAppliedDirective(java.lang.String directiveName)
GraphQLDirectiveContainer
getAppliedDirective
in interface GraphQLDirectiveContainer
directiveName
- the name of the directive to retrievepublic java.util.List<GraphQLSchemaElement> getChildren()
getChildren
in interface GraphQLSchemaElement
public SchemaElementChildrenContainer getChildrenWithTypeReferences()
getChildrenWithTypeReferences
in interface GraphQLSchemaElement
public GraphQLArgument withNewChildren(SchemaElementChildrenContainer newChildren)
withNewChildren
in interface GraphQLSchemaElement
public GraphQLSchemaElement copy()
GraphQLSchemaElement
copy
in interface GraphQLSchemaElement
public final boolean equals(java.lang.Object o)
equals
in interface GraphQLSchemaElement
equals
in class java.lang.Object
o
- the reference object with which to compare.true
if this object is the same as the obj
argument; false
otherwise.public final int hashCode()
hashCode
in interface GraphQLSchemaElement
hashCode
in class java.lang.Object
public GraphQLArgument transform(java.util.function.Consumer<GraphQLArgument.Builder> builderConsumer)
builderConsumer
- the consumer code that will be given a builder to transformpublic static GraphQLArgument.Builder newArgument()
public static GraphQLArgument.Builder newArgument(GraphQLArgument existing)
public TraversalControl accept(TraverserContext<GraphQLSchemaElement> context, GraphQLTypeVisitor visitor)
accept
in interface GraphQLSchemaElement
public java.lang.String toString()
toString
in class java.lang.Object
public GraphQLAppliedDirectiveArgument toAppliedArgument()
GraphQLAppliedDirectiveArgument