Class Response

  • All Implemented Interfaces:
    com.yahoo.component.provider.Freezable, com.yahoo.component.provider.ListenableFreezable

    public class Response
    extends com.yahoo.component.provider.ListenableFreezableClass
    A Response to a Request.

    A Response contains a list of Data items, which may (through Data implementations) contain payload data and/or further nested data lists.

    Frameworks built on top of processing may subclass this to create a stricter definition of a response. Processors producing Responses should not create subclasses but should instead create additional instances/subclasses of Data. Such Processors should always create Response instances by calling execution.process(request), which will return an empty Response if there are no further processors in the chain.

    Author:
    bratseth
    • Constructor Summary

      Constructors 
      Constructor Description
      Response​(Request request)
      Creates a request containing an empty array data list
      Response​(Request request, ErrorMessage errorMessage)
      Convenience constructor which adds the given error message to the given request
      Response​(DataList<?> data)
      Creates a response containing a list of data
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      DataList data()
      Returns the top level list of data items of this response
      void mergeWith​(Response other)
      Processors which merges another request into this must call this method to notify the response.
      static <D extends Data>
      com.google.common.util.concurrent.ListenableFuture<DataList<D>>
      recursiveComplete​(DataList<D> rootDataList)
      Returns a future in which the given data list and all lists nested within it are completed.
      • Methods inherited from class com.yahoo.component.provider.ListenableFreezableClass

        addFreezeListener, clone, freeze
      • Methods inherited from class com.yahoo.component.provider.FreezableClass

        ensureNotFrozen, isFrozen
      • Methods inherited from class java.lang.Object

        equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface com.yahoo.component.provider.Freezable

        isFrozen
    • Constructor Detail

      • Response

        public Response​(Request request)
        Creates a request containing an empty array data list
      • Response

        public Response​(DataList<?> data)
        Creates a response containing a list of data
      • Response

        public Response​(Request request,
                        ErrorMessage errorMessage)
        Convenience constructor which adds the given error message to the given request
    • Method Detail

      • mergeWith

        public void mergeWith​(Response other)
        Processors which merges another request into this must call this method to notify the response. This does not modify the data of either response.
      • data

        public DataList data()
        Returns the top level list of data items of this response
      • recursiveComplete

        public static <D extends Data> com.google.common.util.concurrent.ListenableFuture<DataList<D>> recursiveComplete​(DataList<D> rootDataList)
        Returns a future in which the given data list and all lists nested within it are completed. The only use of the returned future is to call a get() method on it to complete the given dataList and all dataLists nested below it recursively.

        Lists are completed in prefix, depth-first order. DataLists added after the point when this method is called will not be completed.

        Parameters:
        rootDataList - the list to complete recursively
        Returns:
        the future in which all data in and below this list is complete, as the given root dataList for convenience