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();
}
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;
}
Aggregations