Class DataFetcherResult<T>

  • Type Parameters:
    T - The type of the data fetched

    @PublicApi
    public class DataFetcherResult<T>
    extends java.lang.Object
    An object that can be returned from a DataFetcher that contains both data, local context and errors to be added to the final result. This is a useful when your ``DataFetcher`` retrieves data from multiple sources or from another GraphQL resource, or you want to pass extra context to lower levels.

    This also allows you to pass down new local context objects between parent and child fields. If you return a getLocalContext() value then it will be passed down into any child fields via DataFetchingEnvironment.getLocalContext() You can also have DataFetchers contribute to the ExecutionResult.getExtensions() by returning extensions maps that will be merged together via the ExtensionsBuilder and its ExtensionsMerger in place.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private T data  
      private java.util.List<GraphQLError> errors  
      private java.util.Map<java.lang.Object,​java.lang.Object> extensions  
      private java.lang.Object localContext  
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
        DataFetcherResult​(T data, java.util.List<GraphQLError> errors)
      Deprecated.
      use the newResult() builder instead
      private DataFetcherResult​(T data, java.util.List<GraphQLError> errors, java.lang.Object localContext, java.util.Map<java.lang.Object,​java.lang.Object> extensions)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      T getData()  
      java.util.List<GraphQLError> getErrors()  
      java.util.Map<java.lang.Object,​java.lang.Object> getExtensions()
      A data fetcher result can supply extension values that will be merged into the result via the ExtensionsBuilder at the end of the operation.
      java.lang.Object getLocalContext()
      A data fetcher result can supply a context object for that field that is passed down to child fields
      boolean hasErrors()  
      <R> DataFetcherResult<R> map​(java.util.function.Function<T,​R> transformation)
      Transforms the data of the current DataFetcherResult using the provided function.
      static <T> DataFetcherResult.Builder<T> newResult()
      Creates a new data fetcher result builder
      DataFetcherResult<T> transform​(java.util.function.Consumer<DataFetcherResult.Builder<T>> builderConsumer)
      This helps you transform the current DataFetcherResult into another one by starting a builder with all the current values and allows you to transform it how you want.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • data

        private final T data
      • localContext

        private final java.lang.Object localContext
      • extensions

        private final java.util.Map<java.lang.Object,​java.lang.Object> extensions
    • Constructor Detail

      • DataFetcherResult

        @Deprecated
        public DataFetcherResult​(T data,
                                 java.util.List<GraphQLError> errors)
        Deprecated.
        use the newResult() builder instead
        Creates a data fetcher result
        Parameters:
        data - the data
        errors - the errors
      • DataFetcherResult

        private DataFetcherResult​(T data,
                                  java.util.List<GraphQLError> errors,
                                  java.lang.Object localContext,
                                  java.util.Map<java.lang.Object,​java.lang.Object> extensions)
    • Method Detail

      • getData

        public T getData()
        Returns:
        The data fetched. May be null.
      • getErrors

        public java.util.List<GraphQLError> getErrors()
        Returns:
        errors encountered when fetching data. This will be non null but possibly empty.
      • hasErrors

        public boolean hasErrors()
        Returns:
        true if there are any errors present
      • getLocalContext

        public java.lang.Object getLocalContext()
        A data fetcher result can supply a context object for that field that is passed down to child fields
        Returns:
        a local context object
      • getExtensions

        public java.util.Map<java.lang.Object,​java.lang.Object> getExtensions()
        A data fetcher result can supply extension values that will be merged into the result via the ExtensionsBuilder at the end of the operation.

        The ExtensionsMerger in place inside the ExtensionsBuilder will control how these extension values get merged.

        Returns:
        a map of extension values to be merged
        See Also:
        ExtensionsBuilder, ExtensionsMerger
      • transform

        public DataFetcherResult<T> transform​(java.util.function.Consumer<DataFetcherResult.Builder<T>> builderConsumer)
        This helps you transform the current DataFetcherResult 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 instance produced by calling build on that builder
      • map

        public <R> DataFetcherResult<R> map​(java.util.function.Function<T,​R> transformation)
        Transforms the data of the current DataFetcherResult using the provided function. All other values are left unmodified.
        Type Parameters:
        R - the result type
        Parameters:
        transformation - the transformation that should be applied to the data
        Returns:
        a new instance with where the data value has been transformed
      • newResult

        public static <T> DataFetcherResult.Builder<T> newResult()
        Creates a new data fetcher result builder
        Type Parameters:
        T - the type of the result
        Returns:
        a new builder