cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Antoine Reilles (JIRA)" <>
Subject [jira] [Commented] (CXF-4969) ExceptionMapper not used for exception in resource setter
Date Wed, 17 Apr 2013 07:23:16 GMT


Antoine Reilles commented on CXF-4969:

Checked the cxf sources, it seems that the method
    public static void injectThroughMethod(Object requestObject,
                                           Method method,
                                           Object parameterValue) {
        try {
            Method methodToInvoke = checkProxy(method, requestObject);
            methodToInvoke.invoke(requestObject, new Object[]{parameterValue});
        } catch (IllegalAccessException ex) {
            reportServerError("METHOD_ACCESS_FAILURE", method.getName());
        } catch (Exception ex) {
            reportServerError("METHOD_INJECTION_FAILURE", method.getName());
and probably its counterpart {{monospaced}}extractFromMethod{{monospaced}} could implement
something like what is done in {{monospaced}}JAXRSInvoker.invoke(Exchange exchange, final
Object serviceObject, Method m, List<Object> params){{monospaced}} and extract the cause
from any {{monospaced}}InvocationTargetException{{monospaced}} to report this instead of simply
swallowing it.

> ExceptionMapper not used for exception in resource setter
> ---------------------------------------------------------
>                 Key: CXF-4969
>                 URL:
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 2.6.7
>         Environment: tomee-1.6.0-SNAPSHOT
>            Reporter: Antoine Reilles
>         Attachments:, testexceptions.war
> I'm trying to use the cxf extension that allows to map exceptions to reponses. The issue
I have is that exceptions raised in setXX methods annontated with @PathParam for example are
caught and produce an internal server error. This prevents from performing usefull parameter
validation from the setter methods, where they could benefit to all services.
> Attached in a sample application that defines a custom mapper, and raises exceptions
either in a setter or a service method.
> Once deployed, I do get for:
> http://localhost/testexceptions/a/b/fail_in_inject
> where the exception is raised at the setter level an HTTP 500 response, with entity
> <ns1:XMLFault 
>     xmlns:ns1="">
>     <ns1:faultstring 
>         xmlns:ns1="">
>     </ns1:faultstring>
> </ns1:XMLFault>
> and a stack in the server logs, when
> http://localhost/testexceptions/a/b/fail_in_serve
> where the exception is raised at service level correctly returns HTTP 400
> One sould be able to use the setter methods (or the resource constructor) to perform
parameters validation, and property return errors.
> Tested with tomee 1.6.0, which ships with cxf-2.6.7

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:

View raw message