Interface QueryDirectives

All Known Implementing Classes:
QueryDirectivesImpl

@PublicApi public interface QueryDirectives
This gives you access to the immediate directives on a MergedField. This does not include directives on parent fields or fragment containers.

Because a MergedField can actually have multiple fields and hence directives on each field instance its possible that there is more than one directive named "foo" on the merged field. How you decide which one to use is up to your code.

NOTE: A future version of the interface will try to add access to the inherited directives from parent fields and fragments. This proved to be a non-trivial problem and hence we decide to give access to immediate field directives and provide this holder interface, so we can add the other directives in the future

See Also:
  • Method Details

    • getImmediateAppliedDirectivesByName

      Map<String,List<QueryAppliedDirective>> getImmediateAppliedDirectivesByName()
      This will return a map of the applied directives that are immediately on a merged field
      Returns:
      a map of all the applied directives immediately on this merged field
    • getImmediateAppliedDirective

      List<QueryAppliedDirective> getImmediateAppliedDirective(String directiveName)
      This will return a list of the named applied directives that are immediately on this merged field. Read above for why this is a list of applied directives and not just one
      Parameters:
      directiveName - the named directive
      Returns:
      a list of the named applied directives that are immediately on this merged field
    • getImmediateDirectivesByName

      @Deprecated(since="2022-02-24") Map<String,List<GraphQLDirective>> getImmediateDirectivesByName()
      Deprecated.
      - use the QueryAppliedDirective methods instead
      This will return a map of the directives that are immediately on a merged field
      Returns:
      a map of all the directives immediately on this merged field
    • getImmediateAppliedDirectivesByField

      Map<Field,List<QueryAppliedDirective>> getImmediateAppliedDirectivesByField()
      This will return a map of the Fields inside a MergedField and the immediate applied directives that are on each specific field
      Returns:
      a map of all directives on each field inside this
    • getNormalizedInputValueByImmediateAppliedDirectives

      Map<QueryAppliedDirective,Map<String,NormalizedInputValue>> getNormalizedInputValueByImmediateAppliedDirectives()
      This will return a map of QueryAppliedDirective to a map of their argument values in NormalizedInputValue form

      NOTE : This will only be available when ExecutableNormalizedOperationFactory is used to create the QueryAppliedDirective information

      Returns:
      a map of applied directive to named argument values
    • getImmediateDirective

      @Deprecated(since="2022-02-24") List<GraphQLDirective> getImmediateDirective(String directiveName)
      Deprecated.
      - use the QueryAppliedDirective methods instead
      This will return a list of the named directives that are immediately on this merged field. Read above for why this is a list of directives and not just one
      Parameters:
      directiveName - the named directive
      Returns:
      a list of the named directives that are immediately on this merged field
    • getImmediateDirectivesByField

      @Deprecated(since="2022-02-24") Map<Field,List<GraphQLDirective>> getImmediateDirectivesByField()
      Deprecated.
      - use the QueryAppliedDirective methods instead
      This will return a map of the Fields inside a MergedField and the immediate directives that are on each specific field
      Returns:
      a map of all directives on each field inside this
    • newQueryDirectives

      static QueryDirectives.Builder newQueryDirectives()
      Returns:
      a builder of QueryDirectives