Package graphql.schema
Class GraphQLUnionType
- java.lang.Object
-
- graphql.schema.GraphQLUnionType
-
- All Implemented Interfaces:
GraphQLCompositeType
,GraphQLDirectiveContainer
,GraphQLNamedOutputType
,GraphQLNamedSchemaElement
,GraphQLNamedType
,GraphQLNullableType
,GraphQLOutputType
,GraphQLSchemaElement
,GraphQLType
,GraphQLUnmodifiedType
@PublicApi public class GraphQLUnionType extends java.lang.Object implements GraphQLNamedOutputType, GraphQLCompositeType, GraphQLUnmodifiedType, GraphQLNullableType, GraphQLDirectiveContainer
A union type is a polymorphic type that dynamically represents one of more concrete object types.At runtime a
TypeResolver
is used to take an union object value and decide whatGraphQLObjectType
represents this union of types.Note that members of a union type need to be concrete object types; you can't create a union type out of interfaces or other unions.
See https://graphql.org/learn/schema/#union-types for more details on the concept.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
GraphQLUnionType.Builder
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
CHILD_TYPES
-
Fields inherited from interface graphql.schema.GraphQLDirectiveContainer
CHILD_APPLIED_DIRECTIVES, CHILD_DIRECTIVES
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method 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 aGraphQLNamedSchemaElement
, 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 aGraphQLNamedSchemaElement
, 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 onGraphQLNamedSchemaElement
as a flat list, which may contain repeatable and non-repeatable directives.java.util.List<GraphQLSchemaElement>
getChildren()
SchemaElementChildrenContainer
getChildrenWithTypeReferences()
UnionTypeDefinition
getDefinition()
The ASTNode
this schema element is based on.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 onGraphQLNamedSchemaElement
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 aGraphQLNamedSchemaElement
.java.util.List<UnionTypeExtensionDefinition>
getExtensionDefinitions()
java.lang.String
getName()
java.util.List<GraphQLNamedOutputType>
getTypes()
int
hashCode()
No GraphQLSchemaElement implements `equals/hashCode` because we need object identity to treat a GraphQLSchema as an abstract graph.boolean
isPossibleType(GraphQLObjectType graphQLObjectType)
Returns true of the object type is a member of this Union type.static GraphQLUnionType.Builder
newUnionType()
static GraphQLUnionType.Builder
newUnionType(GraphQLUnionType existing)
java.lang.String
toString()
GraphQLUnionType
transform(java.util.function.Consumer<GraphQLUnionType.Builder> builderConsumer)
This helps you transform the current GraphQLUnionType into another one by starting a builder with all the current values and allows you to transform it how you want.GraphQLUnionType
withNewChildren(SchemaElementChildrenContainer newChildren)
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface graphql.schema.GraphQLDirectiveContainer
getAppliedDirectives, getDirectives, hasAppliedDirective, hasDirective
-
-
-
-
Field Detail
-
CHILD_TYPES
public static final java.lang.String CHILD_TYPES
- See Also:
- Constant Field Values
-
-
Method Detail
-
getTypes
public java.util.List<GraphQLNamedOutputType> getTypes()
- Returns:
- This returns GraphQLObjectType or GraphQLTypeReference instances, if the type references are not resolved yet. After they are resolved it contains only GraphQLObjectType. Reference resolving happens when a full schema is built.
-
isPossibleType
public boolean isPossibleType(GraphQLObjectType graphQLObjectType)
Returns true of the object type is a member of this Union type.- Parameters:
graphQLObjectType
- the type to check- Returns:
- true if the object type is a member of this union type.
-
getName
public java.lang.String getName()
- Specified by:
getName
in interfaceGraphQLNamedSchemaElement
- Returns:
- the name of this element. This cant be null
-
getDescription
public java.lang.String getDescription()
- Specified by:
getDescription
in interfaceGraphQLNamedSchemaElement
- Returns:
- the description of this element. This can be null
-
getDefinition
public UnionTypeDefinition getDefinition()
Description copied from interface:GraphQLNamedSchemaElement
The ASTNode
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 exampleGraphQLObjectType.getExtensionDefinitions()
- Specified by:
getDefinition
in interfaceGraphQLNamedSchemaElement
- Returns:
- Node which this element is based on. Can be null.
-
getExtensionDefinitions
public java.util.List<UnionTypeExtensionDefinition> getExtensionDefinitions()
-
getDirectives
public java.util.List<GraphQLDirective> getDirectives()
Description copied from interface:GraphQLDirectiveContainer
This will return a list of all the directives that have been put onGraphQLNamedSchemaElement
as a flat list, which may contain repeatable and non-repeatable directives.- Specified by:
getDirectives
in interfaceGraphQLDirectiveContainer
- Returns:
- a list of all the directives associated with this named schema element
-
getDirectivesByName
public java.util.Map<java.lang.String,GraphQLDirective> getDirectivesByName()
Description copied from interface:GraphQLDirectiveContainer
This will return a Map of the non repeatable directives that are associated with aGraphQLNamedSchemaElement
. Any repeatable directives will be filtered out of this map.- Specified by:
getDirectivesByName
in interfaceGraphQLDirectiveContainer
- Returns:
- a map of non repeatable directives by directive name.
-
getAllDirectivesByName
public java.util.Map<java.lang.String,java.util.List<GraphQLDirective>> getAllDirectivesByName()
Description copied from interface:GraphQLDirectiveContainer
This will return a Map of the all directives that are associated with aGraphQLNamedSchemaElement
, including both repeatable and non repeatable directives.- Specified by:
getAllDirectivesByName
in interfaceGraphQLDirectiveContainer
- Returns:
- a map of all directives by directive name
-
getDirective
public GraphQLDirective getDirective(java.lang.String directiveName)
Description copied from interface:GraphQLDirectiveContainer
Returns a non-repeatable directive with the provided name. This will throw aAssertException
if the directive is a repeatable directive that has more then one instance.- Specified by:
getDirective
in interfaceGraphQLDirectiveContainer
- Parameters:
directiveName
- the name of the directive to retrieve- Returns:
- the directive or null if there is not one with that name
-
getAppliedDirectives
public java.util.List<GraphQLAppliedDirective> getAppliedDirectives()
Description copied from interface:GraphQLDirectiveContainer
This will return a list of all the directives that have been put onGraphQLNamedSchemaElement
as a flat list, which may contain repeatable and non-repeatable directives.- Specified by:
getAppliedDirectives
in interfaceGraphQLDirectiveContainer
- Returns:
- a list of all the directives associated with this named schema element
-
getAllAppliedDirectivesByName
public java.util.Map<java.lang.String,java.util.List<GraphQLAppliedDirective>> getAllAppliedDirectivesByName()
Description copied from interface:GraphQLDirectiveContainer
This will return a Map of the all directives that are associated with aGraphQLNamedSchemaElement
, including both repeatable and non-repeatable directives.- Specified by:
getAllAppliedDirectivesByName
in interfaceGraphQLDirectiveContainer
- Returns:
- a map of all directives by directive name
-
getAppliedDirective
public GraphQLAppliedDirective getAppliedDirective(java.lang.String directiveName)
Description copied from interface:GraphQLDirectiveContainer
Returns a non-repeatable directive with the provided name.- Specified by:
getAppliedDirective
in interfaceGraphQLDirectiveContainer
- Parameters:
directiveName
- the name of the directive to retrieve- Returns:
- the directive or null if there is not one with that name
-
transform
public GraphQLUnionType transform(java.util.function.Consumer<GraphQLUnionType.Builder> builderConsumer)
This helps you transform the current GraphQLUnionType into another one by starting a builder with all the current values and allows you to transform it how you want.- Parameters:
builderConsumer
- the consumer code that will be given a builder to transform- Returns:
- a new object based on calling build on that builder
-
copy
public GraphQLSchemaElement copy()
Description copied from interface:GraphQLSchemaElement
Each GraphQLSchemaElement should make a copy of itself when this is called. The copy should be included its current contents as they currently exist into a new object.- Specified by:
copy
in interfaceGraphQLSchemaElement
- Returns:
- a copy of this element
-
accept
public TraversalControl accept(TraverserContext<GraphQLSchemaElement> context, GraphQLTypeVisitor visitor)
- Specified by:
accept
in interfaceGraphQLSchemaElement
-
getChildren
public java.util.List<GraphQLSchemaElement> getChildren()
- Specified by:
getChildren
in interfaceGraphQLSchemaElement
-
getChildrenWithTypeReferences
public SchemaElementChildrenContainer getChildrenWithTypeReferences()
- Specified by:
getChildrenWithTypeReferences
in interfaceGraphQLSchemaElement
-
withNewChildren
public GraphQLUnionType withNewChildren(SchemaElementChildrenContainer newChildren)
- Specified by:
withNewChildren
in interfaceGraphQLSchemaElement
-
equals
public final boolean equals(java.lang.Object o)
No GraphQLSchemaElement implements `equals` because we need object identity to treat a GraphQLSchema as an abstract graph.- Specified by:
equals
in interfaceGraphQLSchemaElement
- Overrides:
equals
in classjava.lang.Object
- Parameters:
o
- the reference object with which to compare.- Returns:
true
if this object is the same as the obj argument;false
otherwise.
-
hashCode
public final int hashCode()
No GraphQLSchemaElement implements `equals/hashCode` because we need object identity to treat a GraphQLSchema as an abstract graph.- Specified by:
hashCode
in interfaceGraphQLSchemaElement
- Overrides:
hashCode
in classjava.lang.Object
- Returns:
- a hash code value for this object.
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
newUnionType
public static GraphQLUnionType.Builder newUnionType()
-
newUnionType
public static GraphQLUnionType.Builder newUnionType(GraphQLUnionType existing)
-
-