Class TypeDefinitionRegistry

    • Constructor Detail

      • TypeDefinitionRegistry

        public TypeDefinitionRegistry()
    • Method Detail

      • merge

        public TypeDefinitionRegistry merge​(TypeDefinitionRegistry typeRegistry)
                                     throws SchemaProblem
        This will merge these type registries together and return this one
        Parameters:
        typeRegistry - the registry to be merged into this one
        Returns:
        this registry
        Throws:
        SchemaProblem - if there are problems merging the types such as redefinitions
      • addAll

        public java.util.Optional<GraphQLError> addAll​(java.util.Collection<SDLDefinition> definitions)
        Adds a a collections of definitions to the registry
        Parameters:
        definitions - the definitions to add
        Returns:
        an optional error for the first problem, typically type redefinition
      • add

        public java.util.Optional<GraphQLError> add​(SDLDefinition definition)
        Adds a definition to the registry
        Parameters:
        definition - the definition to add
        Returns:
        an optional error
      • remove

        public void remove​(SDLDefinition definition)
        Removes a SDLDefinition from the definition list.
        Parameters:
        definition - the definition to remove
      • remove

        public void remove​(java.lang.String key,
                           SDLDefinition definition)
        Removes a SDLDefinition from a map.
        Parameters:
        key - the key to remove
        definition - the definition to remove
      • types

        public java.util.Map<java.lang.String,​TypeDefinition> types()
      • schemaDefinition

        public java.util.Optional<SchemaDefinition> schemaDefinition()
      • getDirectiveDefinition

        public java.util.Optional<DirectiveDefinition> getDirectiveDefinition​(java.lang.String directiveName)
      • getDirectiveDefinitions

        public java.util.Map<java.lang.String,​DirectiveDefinition> getDirectiveDefinitions()
      • hasType

        public boolean hasType​(TypeName typeName)
      • getType

        public <T extends TypeDefinition> java.util.Optional<T> getType​(Type type,
                                                                        java.lang.Class<T> ofType)
      • getType

        public java.util.Optional<TypeDefinition> getType​(java.lang.String typeName)
      • getType

        public <T extends TypeDefinition> java.util.Optional<T> getType​(java.lang.String typeName,
                                                                        java.lang.Class<T> ofType)
      • isInterfaceOrUnion

        public boolean isInterfaceOrUnion​(Type type)
        Returns true if the specified type exists in the registry and is an abstract (Interface or Union) type
        Parameters:
        type - the type to check
        Returns:
        true if its abstract
      • isObjectTypeOrInterface

        public boolean isObjectTypeOrInterface​(Type type)
        Returns true if the specified type exists in the registry and is an object type or interface
        Parameters:
        type - the type to check
        Returns:
        true if its an object type or interface
      • isObjectType

        public boolean isObjectType​(Type type)
        Returns true if the specified type exists in the registry and is an object type
        Parameters:
        type - the type to check
        Returns:
        true if its an object type
      • getTypes

        public <T extends TypeDefinition> java.util.List<T> getTypes​(java.lang.Class<T> targetClass)
        Returns a list of types in the registry of that specified class
        Type Parameters:
        T - must extend TypeDefinition
        Parameters:
        targetClass - the class to search for
        Returns:
        a list of types of the target class
      • getTypesMap

        public <T extends TypeDefinition> java.util.Map<java.lang.String,​T> getTypesMap​(java.lang.Class<T> targetClass)
        Returns a map of types in the registry of that specified class keyed by name
        Type Parameters:
        T - must extend TypeDefinition
        Parameters:
        targetClass - the class to search for
        Returns:
        a map of types
      • isPossibleType

        public boolean isPossibleType​(Type abstractType,
                                      Type possibleType)
        Returns true of the abstract type is in implemented by the object type or interface
        Parameters:
        abstractType - the abstract type to check (interface or union)
        possibleType - the object type or interface to check
        Returns:
        true if the object type or interface implements the abstract type
      • isSubTypeOf

        public boolean isSubTypeOf​(Type maybeSubType,
                                   Type superType)
        Returns true if the maybe type is either equal or a subset of the second super type (covariant).
        Parameters:
        maybeSubType - the type to check
        superType - the equality checked type
        Returns:
        true if maybeSubType is covariant or equal to superType