Search in sources :

Example 1 with TemplateInflector

use of org.glassfish.jersey.server.mvc.internal.TemplateInflector 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

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