Class ProblemErrorResponseProcessor

java.lang.Object
io.micronaut.problem.ProblemErrorResponseProcessor
All Implemented Interfaces:
io.micronaut.http.server.exceptions.response.ErrorResponseProcessor<org.zalando.problem.Problem>

@Singleton public class ProblemErrorResponseProcessor extends Object implements io.micronaut.http.server.exceptions.response.ErrorResponseProcessor<org.zalando.problem.Problem>
Error Response processor to respond Problem responses.
  • Adds application/problem+json content type
  • If the cause is a ThrowableProblem, it returns as the body.
  • If the cause is not a ThrowableProblem , it generates a default Problem based on the ErrorContext and returns it as the HTTP Body.
Since:
1.0
Author:
Sergio del Amo
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected @NonNull org.zalando.problem.ThrowableProblem
    defaultProblem(@NonNull io.micronaut.http.server.exceptions.response.ErrorContext errorContext, @NonNull io.micronaut.http.HttpStatus httpStatus)
    Creates a ThrowableProblem when the root cause was not an exception of type ThrowableProblem.
    protected boolean
    includeErrorMessage(@NonNull io.micronaut.http.server.exceptions.response.ErrorContext errorContext)
    Whether ThrowableProblem, created when the root cause is not an exception of type ThrowableProblem, should contain Error::getMessage in the problem detail.
    @NonNull io.micronaut.http.MutableHttpResponse<org.zalando.problem.Problem>
    processResponse(@NonNull io.micronaut.http.server.exceptions.response.ErrorContext errorContext, @NonNull io.micronaut.http.MutableHttpResponse<?> baseResponse)
     

    Methods inherited from class java.lang.Object

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

  • Constructor Details

    • ProblemErrorResponseProcessor

      public ProblemErrorResponseProcessor(ProblemConfiguration config)
      Constructor.
      Parameters:
      config - Problem configuration
  • Method Details

    • processResponse

      @NonNull public @NonNull io.micronaut.http.MutableHttpResponse<org.zalando.problem.Problem> processResponse(@NonNull @NonNull io.micronaut.http.server.exceptions.response.ErrorContext errorContext, @NonNull @NonNull io.micronaut.http.MutableHttpResponse<?> baseResponse)
      Specified by:
      processResponse in interface io.micronaut.http.server.exceptions.response.ErrorResponseProcessor<org.zalando.problem.Problem>
    • defaultProblem

      @NonNull protected @NonNull org.zalando.problem.ThrowableProblem defaultProblem(@NonNull @NonNull io.micronaut.http.server.exceptions.response.ErrorContext errorContext, @NonNull @NonNull io.micronaut.http.HttpStatus httpStatus)
      Creates a ThrowableProblem when the root cause was not an exception of type ThrowableProblem.
      Parameters:
      errorContext - Error Context
      httpStatus - HTTP Status
      Returns:
      Default problem
    • includeErrorMessage

      protected boolean includeErrorMessage(@NonNull @NonNull io.micronaut.http.server.exceptions.response.ErrorContext errorContext)
      Whether ThrowableProblem, created when the root cause is not an exception of type ThrowableProblem, should contain Error::getMessage in the problem detail. To avoid accidental information leakage defaults to false unless the root cause is of type UnsatisfiedRouteException which contains helpful information to diagnose the issue (e.g. missing required query value) in the details.
      Parameters:
      errorContext - Error Context
      Returns:
      To avoid accidental information leakage defaults to false unless the root cause is of type UnsatisfiedRouteException