Search in sources :

Example 1 with ErrorTemplate

use of org.glassfish.jersey.server.mvc.ErrorTemplate in project jersey by jersey.

the class AbstractErrorTemplateMapper method toResponse.

@Override
public final Response toResponse(final T throwable) {
    final ErrorTemplate error = getErrorTemplate();
    final String templateName = "".equals(error.name()) ? "index" : error.name();
    return Response.status(getErrorStatus(throwable)).entity(new Viewable(templateName, getErrorModel(throwable))).build();
}
Also used : ErrorTemplate(org.glassfish.jersey.server.mvc.ErrorTemplate) Viewable(org.glassfish.jersey.server.mvc.Viewable)

Example 2 with ErrorTemplate

use of org.glassfish.jersey.server.mvc.ErrorTemplate in project jersey by jersey.

the class AbstractErrorTemplateMapper method getErrorTemplate.

/**
     * Get an {@link ErrorTemplate} annotation from resource method / class the throwable was raised from.
     *
     * @return an error template annotation or {@code null} if the method is not annotated.
     */
private ErrorTemplate getErrorTemplate() {
    final ExtendedUriInfo uriInfo = uriInfoProvider.get();
    final ResourceMethod matchedResourceMethod = uriInfo.getMatchedResourceMethod();
    if (matchedResourceMethod != null) {
        final Invocable invocable = matchedResourceMethod.getInvocable();
        ErrorTemplate errorTemplate = invocable.getHandlingMethod().getAnnotation(ErrorTemplate.class);
        if (errorTemplate == null) {
            Class<?> handlerClass = invocable.getHandler().getHandlerClass();
            if (invocable.isInflector() && TemplateInflector.class.isAssignableFrom(invocable.getHandler().getHandlerClass())) {
                handlerClass = ((TemplateInflector) invocable.getHandler().getInstance(null)).getModelClass();
            }
            errorTemplate = handlerClass.getAnnotation(ErrorTemplate.class);
        }
        return errorTemplate;
    }
    return null;
}
Also used : Invocable(org.glassfish.jersey.server.model.Invocable) ErrorTemplate(org.glassfish.jersey.server.mvc.ErrorTemplate) TemplateInflector(org.glassfish.jersey.server.mvc.internal.TemplateInflector) ResourceMethod(org.glassfish.jersey.server.model.ResourceMethod) ExtendedUriInfo(org.glassfish.jersey.server.ExtendedUriInfo)

Aggregations

ErrorTemplate (org.glassfish.jersey.server.mvc.ErrorTemplate)2 ExtendedUriInfo (org.glassfish.jersey.server.ExtendedUriInfo)1 Invocable (org.glassfish.jersey.server.model.Invocable)1 ResourceMethod (org.glassfish.jersey.server.model.ResourceMethod)1 Viewable (org.glassfish.jersey.server.mvc.Viewable)1 TemplateInflector (org.glassfish.jersey.server.mvc.internal.TemplateInflector)1