Class ServerExceptionMapperGenerator
- java.lang.Object
-
- io.quarkus.resteasy.reactive.server.deployment.ServerExceptionMapperGenerator
-
final class ServerExceptionMapperGenerator extends Object
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static Map<String,String>
generateGlobalMapper(org.jboss.jandex.MethodInfo targetMethod, io.quarkus.gizmo.ClassOutput classOutput)
Generates an implementation ofResteasyReactiveExceptionMapper
that delegates to the method annotated with@ServerExceptionMapper
.static Map<String,String>
generatePerClassMapper(org.jboss.jandex.MethodInfo targetMethod, io.quarkus.gizmo.ClassOutput classOutput)
Generates an exception mapper that delegates exception handling to a method of a Resource class.
-
-
-
Method Detail
-
generatePerClassMapper
public static Map<String,String> generatePerClassMapper(org.jboss.jandex.MethodInfo targetMethod, io.quarkus.gizmo.ClassOutput classOutput)
Generates an exception mapper that delegates exception handling to a method of a Resource class. For example, for a method like:@ServerExceptionMapper(IllegalArgumentException.class) public Response perClassMapper(IllegalArgumentException e, Request r) { }
a generated exception mapper would look like this (only the actual called method is displayed)@Singleton @Unremovable public class GreetingResource$GeneratedExceptionHandlerFor$IllegalArgumentException$OfMethod$perClassMapper implements ResteasyReactiveExceptionMapper { public Response toResponse(IllegalArgumentException e, ServerRequestContext ctx) { GreetingResource instance = (GreetingResource) ((ResteasyReactiveRequestContext) ctx).getEndpointInstance(); return instance.perClassMapper(e, ctx.getRequest()); } }
An example of a generated exception handler that returns Uni is:
@Singleton @Unremovable public class GreetingResource$GeneratedExceptionHandlerFor$IllegalArgumentException$OfMethod$perClassMapper implements ResteasyReactiveAsyncExceptionMapper { public void asyncResponse(IllegalArgumentException e, AsyncExceptionMapperContext ctx) { GreetingResource instance = (GreetingResource) ((ResteasyReactiveRequestContext) ctx).getEndpointInstance(); AsyncExceptionMappingUtil.handleUniResponse(instance.perClassMapper(e, ctx.getRequest())); } }
- Returns:
- a map containing the exception class name as the key and the generated exception mapper as the value
-
generateGlobalMapper
public static Map<String,String> generateGlobalMapper(org.jboss.jandex.MethodInfo targetMethod, io.quarkus.gizmo.ClassOutput classOutput)
Generates an implementation ofResteasyReactiveExceptionMapper
that delegates to the method annotated with@ServerExceptionMapper
.An example of the generated code is:
@Singleton @Unremovable public class CustomExceptionMapper$GeneratedExceptionHandlerFor$IllegalArgumentException$OfMethod$handle implements ResteasyReactiveExceptionMapper { private final CustomExceptionMapper delegate; @Inject public CustomExceptionMapper$GeneratedExceptionHandlerFor$IllegalArgumentException$OfMethod$handle( CustomExceptionMapper var1) { this.delegate = var1; } public Response toResponse(IllegalArgumentException e, ServerRequestContext ctx) { return delegate.handle(e, ctx.getRequest()); } }
An example of a generated exception handler that returns Uni is:
@Singleton @Unremovable public class CustomExceptionMapper$GeneratedExceptionHandlerFor$IllegalArgumentException$OfMethod$handle implements ResteasyReactiveAsyncExceptionMapper { private final CustomExceptionMapper delegate; @Inject public CustomExceptionMapper$GeneratedExceptionHandlerFor$IllegalArgumentException$OfMethod$handle( CustomExceptionMapper var1) { this.delegate = var1; } public void asyncResponse(IllegalArgumentException e, AsyncExceptionMapperContext ctx) { AsyncExceptionMappingUtil.handleUniResponse(delegate.handle(e, ctx.getRequest())); } }
Returns a map containing the handled exception name as the key and the generated class name as the value
-
-