Class ProblemJsonErrorResponseBodyProvider

java.lang.Object
io.micronaut.problem.ProblemJsonErrorResponseBodyProvider
All Implemented Interfaces:
io.micronaut.http.server.exceptions.response.ErrorResponseBodyProvider<org.zalando.problem.Problem>, io.micronaut.http.server.exceptions.response.JsonErrorResponseBodyProvider<org.zalando.problem.Problem>

@Singleton public class ProblemJsonErrorResponseBodyProvider extends Object implements io.micronaut.http.server.exceptions.response.JsonErrorResponseBodyProvider<org.zalando.problem.Problem>
JsonErrorResponseBodyProvider 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
    @NonNull org.zalando.problem.Problem
    body(@NonNull io.micronaut.http.server.exceptions.response.ErrorContext errorContext, @NonNull io.micronaut.http.HttpResponse<?> response)
     
     
    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.

    Methods inherited from class java.lang.Object

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

  • Constructor Details

    • ProblemJsonErrorResponseBodyProvider

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

    • contentType

      public String contentType()
      Specified by:
      contentType in interface io.micronaut.http.server.exceptions.response.ErrorResponseBodyProvider<org.zalando.problem.Problem>
      Specified by:
      contentType in interface io.micronaut.http.server.exceptions.response.JsonErrorResponseBodyProvider<org.zalando.problem.Problem>
    • body

      @NonNull public @NonNull org.zalando.problem.Problem body(@NonNull @NonNull io.micronaut.http.server.exceptions.response.ErrorContext errorContext, @NonNull @NonNull io.micronaut.http.HttpResponse<?> response)
      Specified by:
      body in interface io.micronaut.http.server.exceptions.response.ErrorResponseBodyProvider<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