Interface LightDataFetcher<T>

Type Parameters:
T - for two
All Superinterfaces:
DataFetcher<T>, TrivialDataFetcher<T>
All Known Implementing Classes:
PropertyDataFetcher, SingletonPropertyDataFetcher

public interface LightDataFetcher<T> extends TrivialDataFetcher<T>
A LightDataFetcher is a specialised version of DataFetcher that is passed more lightweight arguments when it is asked to fetch values. The most common example of this is the PropertyDataFetcher which does not need all the DataFetchingEnvironment values to perform its duties.
  • Method Details

    • get

      T get(GraphQLFieldDefinition fieldDefinition, Object sourceObject, Supplier<DataFetchingEnvironment> environmentSupplier) throws Exception
      This is called to by the engine to get a value from the source object in a lightweight fashion. Only the field and source object are passed in a materialised way. The more heavy weight DataFetchingEnvironment is wrapped in a supplier that is only created on demand.

      If you are a lightweight data fetcher (like PropertyDataFetcher is) then you can implement this method to have a more lightweight method invocation. However, if you need field arguments etc. during fetching (most custom fetchers will) then you should use implement DataFetcher.get(DataFetchingEnvironment).

      Parameters:
      fieldDefinition - the graphql field definition
      sourceObject - the source object to get a value from
      environmentSupplier - a supplier of the DataFetchingEnvironment that creates it lazily
      Returns:
      a value of type T. May be wrapped in a DataFetcherResult
      Throws:
      Exception - to relieve the implementations from having to wrap checked exceptions. Any exception thrown from a DataFetcher will eventually be handled by the registered DataFetcherExceptionHandler and the related field will have a value of null in the result.