Package org.jboss.logging.annotations

# Annotation Type Producer

@Target(PARAMETER) @Retention(CLASS) @Documented public @interface Producer
Identifies a parameter has the ability to produce a `Throwable` or a super type of a `Throwable`. The parameter type must be a `Function` or a `BiFunction`.

For a `Function` the input parameter must be a `String` which will be the message associated with the method. The result type must `Throwable` or a super type of a `Throwable`.

For a `BiFunction` one of the input parameters must be a `String` which will be the message associated with the method. The other input parameter must be a `Throwable` or a super type of a `Throwable` and must be assignable from the parameter annotated with `Cause`. The result type must `Throwable` or a super type of a `Throwable`.

Example ``

     @Message("The operation failed due to %s")
     <T extends RuntimeException> T operationFailed(@Producer Function<String, T> function, String op);

     @Message("The operation failed due to %s")
     <T extends RuntimeException> T operationFailed(@Producer BiFunction<String, Throwable, T> function, @Cause Throwable cause, String op);

Example Usage ``

     throw Bundle.MESSAGES.operationFailed(IllegalArgumentException::new, "start");

     throw Bundle.MESSAGES.operationFailed(IllegalStateException::new, cause, "start");

Author:
  James R. Perkins