Package graphql.schema
Class GraphQLInterfaceType
- java.lang.Object
-
- graphql.schema.GraphQLInterfaceType
-
- All Implemented Interfaces:
GraphQLCompositeType,GraphQLDirectiveContainer,GraphQLFieldsContainer,GraphQLImplementingType,GraphQLNamedOutputType,GraphQLNamedSchemaElement,GraphQLNamedType,GraphQLNullableType,GraphQLOutputType,GraphQLSchemaElement,GraphQLType,GraphQLUnmodifiedType
@PublicApi public class GraphQLInterfaceType extends java.lang.Object implements GraphQLNamedType, GraphQLCompositeType, GraphQLUnmodifiedType, GraphQLNullableType, GraphQLDirectiveContainer, GraphQLImplementingType
In graphql, an interface is an abstract type that defines the set of fields that a type must include to implement that interface.At runtime a
TypeResolveris used to take an interface object value and decide whatGraphQLObjectTyperepresents this interface type.See https://graphql.org/learn/schema/#interfaces for more details on the concept.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classGraphQLInterfaceType.Builder
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringCHILD_FIELD_DEFINITIONSstatic java.lang.StringCHILD_INTERFACES-
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 TraversalControlaccept(TraverserContext<GraphQLSchemaElement> context, GraphQLTypeVisitor visitor)GraphQLSchemaElementcopy()Each GraphQLSchemaElement should make a copy of itself when this is called.booleanequals(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.GraphQLAppliedDirectivegetAppliedDirective(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 onGraphQLNamedSchemaElementas a flat list, which may contain repeatable and non-repeatable directives.java.util.List<GraphQLSchemaElement>getChildren()SchemaElementChildrenContainergetChildrenWithTypeReferences()InterfaceTypeDefinitiongetDefinition()The ASTNodethis schema element is based on.java.lang.StringgetDescription()GraphQLDirectivegetDirective(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 onGraphQLNamedSchemaElementas 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<InterfaceTypeExtensionDefinition>getExtensionDefinitions()GraphQLFieldDefinitiongetFieldDefinition(java.lang.String name)java.util.List<GraphQLFieldDefinition>getFieldDefinitions()java.util.List<GraphQLNamedOutputType>getInterfaces()java.lang.StringgetName()inthashCode()No GraphQLSchemaElement implements `equals/hashCode` because we need object identity to treat a GraphQLSchema as an abstract graph.static GraphQLInterfaceType.BuildernewInterface()static GraphQLInterfaceType.BuildernewInterface(GraphQLInterfaceType existing)java.lang.StringtoString()GraphQLInterfaceTypetransform(java.util.function.Consumer<GraphQLInterfaceType.Builder> builderConsumer)This helps you transform the current GraphQLInterfaceType into another one by starting a builder with all the current values and allows you to transform it how you want.GraphQLInterfaceTypewithNewChildren(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
-
Methods inherited from interface graphql.schema.GraphQLFieldsContainer
getField, getFields
-
-
-
-
Field Detail
-
CHILD_FIELD_DEFINITIONS
public static final java.lang.String CHILD_FIELD_DEFINITIONS
- See Also:
- Constant Field Values
-
CHILD_INTERFACES
public static final java.lang.String CHILD_INTERFACES
- See Also:
- Constant Field Values
-
-
Method Detail
-
getFieldDefinition
public GraphQLFieldDefinition getFieldDefinition(java.lang.String name)
- Specified by:
getFieldDefinitionin interfaceGraphQLFieldsContainer
-
getFieldDefinitions
public java.util.List<GraphQLFieldDefinition> getFieldDefinitions()
- Specified by:
getFieldDefinitionsin interfaceGraphQLFieldsContainer
-
getName
public java.lang.String getName()
- Specified by:
getNamein interfaceGraphQLNamedSchemaElement- Returns:
- the name of this element. This cant be null
-
getDescription
public java.lang.String getDescription()
- Specified by:
getDescriptionin interfaceGraphQLNamedSchemaElement- Returns:
- the description of this element. This can be null
-
getDefinition
public InterfaceTypeDefinition getDefinition()
Description copied from interface:GraphQLNamedSchemaElementThe ASTNodethis 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:
getDefinitionin interfaceGraphQLNamedSchemaElement- Returns:
- Node which this element is based on. Can be null.
-
getExtensionDefinitions
public java.util.List<InterfaceTypeExtensionDefinition> getExtensionDefinitions()
-
getDirectives
public java.util.List<GraphQLDirective> getDirectives()
Description copied from interface:GraphQLDirectiveContainerThis will return a list of all the directives that have been put onGraphQLNamedSchemaElementas a flat list, which may contain repeatable and non-repeatable directives.- Specified by:
getDirectivesin 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:GraphQLDirectiveContainerThis 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:
getDirectivesByNamein 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:GraphQLDirectiveContainerThis will return a Map of the all directives that are associated with aGraphQLNamedSchemaElement, including both repeatable and non repeatable directives.- Specified by:
getAllDirectivesByNamein interfaceGraphQLDirectiveContainer- Returns:
- a map of all directives by directive name
-
getDirective
public GraphQLDirective getDirective(java.lang.String directiveName)
Description copied from interface:GraphQLDirectiveContainerReturns a non-repeatable directive with the provided name. This will throw aAssertExceptionif the directive is a repeatable directive that has more then one instance.- Specified by:
getDirectivein 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:GraphQLDirectiveContainerThis will return a list of all the directives that have been put onGraphQLNamedSchemaElementas a flat list, which may contain repeatable and non-repeatable directives.- Specified by:
getAppliedDirectivesin 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:GraphQLDirectiveContainerThis will return a Map of the all directives that are associated with aGraphQLNamedSchemaElement, including both repeatable and non-repeatable directives.- Specified by:
getAllAppliedDirectivesByNamein interfaceGraphQLDirectiveContainer- Returns:
- a map of all directives by directive name
-
getAppliedDirective
public GraphQLAppliedDirective getAppliedDirective(java.lang.String directiveName)
Description copied from interface:GraphQLDirectiveContainerReturns a non-repeatable directive with the provided name.- Specified by:
getAppliedDirectivein interfaceGraphQLDirectiveContainer- Parameters:
directiveName- the name of the directive to retrieve- Returns:
- the directive or null if there is not one with that name
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
transform
public GraphQLInterfaceType transform(java.util.function.Consumer<GraphQLInterfaceType.Builder> builderConsumer)
This helps you transform the current GraphQLInterfaceType 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:GraphQLSchemaElementEach 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:
copyin interfaceGraphQLSchemaElement- Returns:
- a copy of this element
-
accept
public TraversalControl accept(TraverserContext<GraphQLSchemaElement> context, GraphQLTypeVisitor visitor)
- Specified by:
acceptin interfaceGraphQLSchemaElement
-
getChildren
public java.util.List<GraphQLSchemaElement> getChildren()
- Specified by:
getChildrenin interfaceGraphQLSchemaElement
-
getChildrenWithTypeReferences
public SchemaElementChildrenContainer getChildrenWithTypeReferences()
- Specified by:
getChildrenWithTypeReferencesin interfaceGraphQLSchemaElement
-
withNewChildren
public GraphQLInterfaceType withNewChildren(SchemaElementChildrenContainer newChildren)
- Specified by:
withNewChildrenin interfaceGraphQLSchemaElement
-
getInterfaces
public java.util.List<GraphQLNamedOutputType> getInterfaces()
- Specified by:
getInterfacesin interfaceGraphQLImplementingType- Returns:
- This returns GraphQLInterface or GraphQLTypeReference instances, if the type references are not resolved yet. After they are resolved it contains only GraphQLInterface. Reference resolving happens when a full schema is built.
-
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:
equalsin interfaceGraphQLSchemaElement- Overrides:
equalsin classjava.lang.Object- Parameters:
o- the reference object with which to compare.- Returns:
trueif this object is the same as the obj argument;falseotherwise.
-
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:
hashCodein interfaceGraphQLSchemaElement- Overrides:
hashCodein classjava.lang.Object- Returns:
- a hash code value for this object.
-
newInterface
public static GraphQLInterfaceType.Builder newInterface()
-
newInterface
public static GraphQLInterfaceType.Builder newInterface(GraphQLInterfaceType existing)
-
-