Class PersistedQuerySupport

java.lang.Object
graphql.execution.preparsed.persisted.PersistedQuerySupport
All Implemented Interfaces:
PreparsedDocumentProvider
Direct Known Subclasses:
ApolloPersistedQuerySupport

@PublicSpi public abstract class PersistedQuerySupport extends Object implements PreparsedDocumentProvider
This abstract class forms the basis for persistent query support. Derived classes need to implement the method to work out the query id and you also need a PersistedQueryCache implementation.
See Also:
  • Field Details

  • Constructor Details

    • PersistedQuerySupport

      public PersistedQuerySupport(PersistedQueryCache persistedQueryCache)
  • Method Details

    • getDocument

      public PreparsedDocumentEntry getDocument(ExecutionInput executionInput, Function<ExecutionInput,PreparsedDocumentEntry> parseAndValidateFunction)
      Description copied from interface: PreparsedDocumentProvider
      This is called to get a "cached" pre-parsed query and if it's not present, then the "parseAndValidateFunction" can be called to parse and validate the query.

      Note - the "parseAndValidateFunction" MUST be called if you don't have a per parsed version of the query because it not only parses and validates the query, it invokes Instrumentation calls as well for parsing and validation. if you don't make a call back on this then these wont happen.

      Specified by:
      getDocument in interface PreparsedDocumentProvider
      Parameters:
      executionInput - The ExecutionInput containing the query
      parseAndValidateFunction - If the query has not be pre-parsed, this function MUST be called to parse and validate it
      Returns:
      an instance of PreparsedDocumentEntry

    • getPersistedQueryId

      protected abstract Optional<Object> getPersistedQueryId(ExecutionInput executionInput)
      This method is required for concrete types to work out the query id (often a hash) that should be used to look up the persisted query in the cache.
      Parameters:
      executionInput - the execution input
      Returns:
      an optional id of the persisted query
    • persistedQueryIdIsInvalid

      protected boolean persistedQueryIdIsInvalid(Object persistedQueryId, String queryText)
    • mkMissingError

      protected PreparsedDocumentEntry mkMissingError(PersistedQueryError persistedQueryError)
      Allows you to customize the graphql error that is sent back on a missing persisted query
      Parameters:
      persistedQueryError - the missing persistent query exception
      Returns:
      a PreparsedDocumentEntry that holds an error