Class ServerResponseBase<T extends ServerResponseBase<T>>

java.lang.Object
io.helidon.webserver.http.ServerResponseBase<T>
Type Parameters:
T - type of the response extending this class to allow fluent API
All Implemented Interfaces:
RoutingResponse, ServerResponse

public abstract class ServerResponseBase<T extends ServerResponseBase<T>> extends Object implements RoutingResponse
Base class for common server response tasks that can be shared across HTTP versions.
  • Field Details

    • STREAM_RESULT_NAME

      protected static final HeaderName STREAM_RESULT_NAME
      Stream result trailer name.
    • STREAM_TRAILERS

      protected static final Header STREAM_TRAILERS
      Stream status trailers.
  • Constructor Details

    • ServerResponseBase

      protected ServerResponseBase(ConnectionContext ctx, ServerRequest request)
      Create server response.
      Parameters:
      ctx - context
      request - server request
  • Method Details

    • status

      public T status(Status status)
      Description copied from interface: ServerResponse
      Status of the response.
      Specified by:
      status in interface ServerResponse
      Parameters:
      status - HTTP status
      Returns:
      this instance
    • status

      public Status status()
      Description copied from interface: ServerResponse
      Configured HTTP status, if not configured, returns Status.OK_200.
      Specified by:
      status in interface ServerResponse
      Returns:
      status
    • send

      public void send()
      Description copied from interface: ServerResponse
      Send a response with no entity.
      Specified by:
      send in interface ServerResponse
    • send

      public void send(Object entity)
      Description copied from interface: ServerResponse
      Send an entity, a MediaContext will be used to serialize the entity.
      Specified by:
      send in interface ServerResponse
      Parameters:
      entity - entity object
    • beforeSend

      public ServerResponse beforeSend(Runnable listener)
      Description copied from interface: ServerResponse
      Executed right before the first byte is written to the socket (including response status and headers). Response can be modified (i.e. headers, status) at this point, though modifying the entity may not be done, as this method is most likely called from within one of the ServerResponse.send() methods.

      Note: this method is implemented as a default method that does nothing, for backward compatibility.

      Specified by:
      beforeSend in interface ServerResponse
      Parameters:
      listener - lister to add to the list of listeners that will be triggered before the response is sent
      Returns:
      this instance
    • whenSent

      public T whenSent(Runnable listener)
      Description copied from interface: ServerResponse
      Completed when last byte is buffered for socket write.
      Specified by:
      whenSent in interface ServerResponse
      Parameters:
      listener - listener to add to the list of listeners that will be triggered once the response is sent
      Returns:
      this instance
    • reroute

      public T reroute(String newPath)
      Description copied from interface: ServerResponse
      Re-route using a different path.
      Specified by:
      reroute in interface ServerResponse
      Parameters:
      newPath - new path to use
      Returns:
      this instance
    • reroute

      public T reroute(String path, UriQuery query)
      Description copied from interface: ServerResponse
      Re-route using a different path and query.
      Specified by:
      reroute in interface ServerResponse
      Parameters:
      path - new path
      query - new query
      Returns:
      this instance
      See Also:
    • next

      public T next()
      Description copied from interface: ServerResponse
      Continue processing with the next route (and if none found, return a Status.NOT_FOUND_404). If any entity method was called, this method will throw an exception.
      Specified by:
      next in interface ServerResponse
      Returns:
      this instance
    • resetRouting

      public void resetRouting()
      Description copied from interface: RoutingResponse
      Reset routing information (nexted, rerouted etc.).
      Specified by:
      resetRouting in interface RoutingResponse
    • shouldReroute

      public boolean shouldReroute()
      Description copied from interface: RoutingResponse
      Should we reroute this exchange.
      Specified by:
      shouldReroute in interface RoutingResponse
      Returns:
      whether rerouting was requested
    • reroutePrologue

      public HttpPrologue reroutePrologue(HttpPrologue prologue)
      Description copied from interface: RoutingResponse
      A new, rerouted prologue.
      Specified by:
      reroutePrologue in interface RoutingResponse
      Parameters:
      prologue - current prologue
      Returns:
      prologue to use when rerouting
    • isNexted

      public boolean isNexted()
      Description copied from interface: RoutingResponse
      Whether this request is nexted (ServerResponse.next() was called).
      Specified by:
      isNexted in interface RoutingResponse
      Returns:
      if nexted
    • beforeTrailers

      public ServerResponse beforeTrailers(Consumer<ServerResponseTrailers> beforeTrailers)
      Description copied from interface: ServerResponse
      Callback to update any last minute trailers before they are written to the output stream.
      Specified by:
      beforeTrailers in interface ServerResponse
      Parameters:
      beforeTrailers - consumer of mutable trailers
      Returns:
      this instance
    • beforeTrailers

      protected Consumer<ServerResponseTrailers> beforeTrailers()
      Gets consumer for server response trailers if registered on this response.
      Returns:
      consumer if registered or null otherwise
    • mediaContext

      protected MediaContext mediaContext()
      Gets media context for this response.
      Returns:
      the media context
    • entityBytes

      protected byte[] entityBytes(byte[] configuredEntity)
      Entity bytes encoded using content encoding. Does not attempt encoding if entity is empty.
      Parameters:
      configuredEntity - plain bytes
      Returns:
      encoded bytes or same entity array if encoding is disabled
    • entityBytes

      protected byte[] entityBytes(byte[] configuredEntity, int position, int length)
      Entity bytes encoded using content encoding. Does not attempt encoding if entity is empty.
      Parameters:
      configuredEntity - plain bytes
      position - starting position
      length - number of bytes
      Returns:
      encoded bytes or same entity array if encoding is disabled
    • contentEncode

      protected OutputStream contentEncode(OutputStream outputStream)
      Encode content using requested/default content encoder.
      Parameters:
      outputStream - output stream to write encoded data to
      Returns:
      output stream to write plain data to
    • beforeSend

      protected void beforeSend()
      Execute before send runnables.
    • afterSend

      protected void afterSend()
      Execute after send runnables.