Class ResponseLifecycle

java.lang.Object
io.micronaut.http.server.ResponseLifecycle

@Internal public abstract class ResponseLifecycle extends Object
This class handles encoding of the HTTP response in a server-agnostic way. Note that while this class is internal, it is used from servlet and must not be broken.
Since:
4.8.0
  • Constructor Summary

    Constructors
    Constructor
    Description
    ResponseLifecycle(RouteExecutor routeExecutor, io.micronaut.http.body.MessageBodyHandlerRegistry messageBodyHandlerRegistry, io.micronaut.core.convert.ConversionService conversionService, io.micronaut.http.body.ByteBodyFactory byteBodyFactory)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected @NonNull io.micronaut.http.body.CloseableByteBody
    concatenate(@NonNull org.reactivestreams.Publisher<io.micronaut.http.body.ByteBody> items)
     
    protected @NonNull io.micronaut.http.body.CloseableByteBody
    concatenateJson(@NonNull org.reactivestreams.Publisher<io.micronaut.http.body.ByteBody> items)
     
    final @NonNull io.micronaut.core.execution.ExecutionFlow<? extends io.micronaut.http.ByteBodyHttpResponse<?>>
    encodeHttpResponseSafe(@NonNull io.micronaut.http.HttpRequest<?> httpRequest, @NonNull io.micronaut.http.HttpResponse<?> response)
    Encode the response.
    protected io.micronaut.core.execution.ExecutionFlow<? extends io.micronaut.http.ByteBodyHttpResponse<?>>
    encodeNoBody(io.micronaut.http.HttpResponse<?> response)
    Encode the given response without body, either because it has none or because this is a HEAD response.
    protected final @NonNull io.micronaut.core.execution.ExecutionFlow<? extends io.micronaut.http.ByteBodyHttpResponse<?>>
    handleStreamingError(@NonNull io.micronaut.http.HttpRequest<?> request, @NonNull Throwable t)
    Handle an error that happened before the first item of a streaming response.
    protected abstract @NonNull Executor
    The IO executor for blocking writers.
    protected <T> @NonNull io.micronaut.http.body.ResponseBodyWriter<T>
    wrap(@NonNull io.micronaut.http.body.MessageBodyWriter<T> messageBodyWriter)
    Transform the given writer into a ResponseBodyWriter.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • ResponseLifecycle

      public ResponseLifecycle(RouteExecutor routeExecutor, io.micronaut.http.body.MessageBodyHandlerRegistry messageBodyHandlerRegistry, io.micronaut.core.convert.ConversionService conversionService, io.micronaut.http.body.ByteBodyFactory byteBodyFactory)
  • Method Details

    • ioExecutor

      @NonNull protected abstract @NonNull Executor ioExecutor()
      The IO executor for blocking writers.
      Returns:
      The blocking executor
    • wrap

      @NonNull protected <T> @NonNull io.micronaut.http.body.ResponseBodyWriter<T> wrap(@NonNull @NonNull io.micronaut.http.body.MessageBodyWriter<T> messageBodyWriter)
      Transform the given writer into a ResponseBodyWriter.
      Type Parameters:
      T - The writer type
      Parameters:
      messageBodyWriter - The writer
      Returns:
      The response writer
    • encodeHttpResponseSafe

      @NonNull public final @NonNull io.micronaut.core.execution.ExecutionFlow<? extends io.micronaut.http.ByteBodyHttpResponse<?>> encodeHttpResponseSafe(@NonNull @NonNull io.micronaut.http.HttpRequest<?> httpRequest, @NonNull @NonNull io.micronaut.http.HttpResponse<?> response)
      Encode the response.
      Parameters:
      httpRequest - The request that triggered this response
      response - The unencoded response
      Returns:
      The encoded response
    • encodeNoBody

      protected io.micronaut.core.execution.ExecutionFlow<? extends io.micronaut.http.ByteBodyHttpResponse<?>> encodeNoBody(io.micronaut.http.HttpResponse<?> response)
      Encode the given response without body, either because it has none or because this is a HEAD response.
      Parameters:
      response - The response
      Returns:
      The encoded response
    • concatenate

      @NonNull protected @NonNull io.micronaut.http.body.CloseableByteBody concatenate(@NonNull @NonNull org.reactivestreams.Publisher<io.micronaut.http.body.ByteBody> items)
      Parameters:
      items - The items
      Returns:
      The concatenated body
      See Also:
      • ConcatenatingSubscriber.concatenate(io.micronaut.http.body.ByteBodyFactory, org.reactivestreams.Publisher<io.micronaut.http.body.ByteBody>, io.micronaut.http.body.ConcatenatingSubscriber.Separators)
    • concatenateJson

      @NonNull protected @NonNull io.micronaut.http.body.CloseableByteBody concatenateJson(@NonNull @NonNull org.reactivestreams.Publisher<io.micronaut.http.body.ByteBody> items)
      Parameters:
      items - The items
      Returns:
      The concatenated body
      See Also:
      • ConcatenatingSubscriber.concatenate(io.micronaut.http.body.ByteBodyFactory, org.reactivestreams.Publisher<io.micronaut.http.body.ByteBody>, io.micronaut.http.body.ConcatenatingSubscriber.Separators)
    • handleStreamingError

      @NonNull protected final @NonNull io.micronaut.core.execution.ExecutionFlow<? extends io.micronaut.http.ByteBodyHttpResponse<?>> handleStreamingError(@NonNull @NonNull io.micronaut.http.HttpRequest<?> request, @NonNull @NonNull Throwable t)
      Handle an error that happened before the first item of a streaming response.
      Parameters:
      request - The request
      t - The error
      Returns:
      The encoded error response