[ 
https://issues.apache.org/jira/browse/CXF-4496?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13464222#comment-13464222
 ] 

n0rad edited comment on CXF-4496 at 9/27/12 9:00 AM:
-----------------------------------------------------

If the user has registered a ResponseExceptionMapper for this RuntimeException 
class (or super), it will use it (exactly the same system as checked exception)

If the user has not registered a ResponseExceptionMapper for this class it will 
not found it, will return null and the caller function that is checkResponse() 
will build the ServerWebApplicationException.

It doesn't change the way its actually working until the user register an 
exceptionMapper for runtimes.


                
      was (Author: n0rad):
    If the user has registered a ResponseExceptionMapper for this 
RuntimeException class (or super), it will use it (exactly the same system as 
checked exception)

If the user has not registered a ResponseExceptionMapper for this class it will 
not found it, will return null and the caller function that is checkResponse() 
will build the ServerWebApplicationException.

It doesn't change the way its actually working until the user register an 
exceptionMapper for runtimes.

I don't see the point.

                  
> find of ResponseExceptionMapper do not handle runtime exceptions
> ----------------------------------------------------------------
>
>                 Key: CXF-4496
>                 URL: https://issues.apache.org/jira/browse/CXF-4496
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 2.6.2
>            Reporter: n0rad
>            Priority: Minor
>
> In org.apache.cxf.jaxrs.client.ClientProxyImpl.findExceptionMapper(Method, 
> Message)
> The responseExceptionMapper is selected based on exception defined in the 
> resource method signature but this method may have thrown a RuntimeException :
> {code:java} 
> @Path("/")
> public interface RestMcuBoardResource {
>     @GET
>     public RestMcuBoard getBoard();
> }
> {code} 
> does not work where this one work
> {code:java} 
> @Path("/")
> public interface RestMcuBoardResource {
>     @GET
>     public RestMcuBoard getBoard() throws runtimeException;
> }
> {code}
> a fix could be :
> {code:java} 
>     private static ResponseExceptionMapper<?> findExceptionMapper(Method m, 
> Message message) {
>         ProviderFactory pf = ProviderFactory.getInstance(message);
>         for (Class<?> exType : m.getExceptionTypes()) {
>             ResponseExceptionMapper<?> mapper = 
> pf.createResponseExceptionMapper(exType);
>             if (mapper != null) {
>                 return mapper;
>             }
>         }
> +        return pf.createResponseExceptionMapper(RuntimeException.class);
> -        return null; 
>     }
> {code} 

--
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: http://www.atlassian.com/software/jira

Reply via email to