cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Frank Ittermann (JIRA)" <>
Subject [jira] Commented: (CXF-1730) The Exception handling if it is thrown from a RequestHandler is not correct i guess.
Date Sat, 02 Aug 2008 04:24:44 GMT


Frank Ittermann commented on CXF-1730:

Hello Sergey okay i will try it.  I'am also on vacation but i will take the time tomorrow
to check the trunk version. 
Great work and thanks for your fast responses.

Enjoy your holiday.

> The Exception handling if it is thrown from a RequestHandler is not correct i guess.
> ------------------------------------------------------------------------------------
>                 Key: CXF-1730
>                 URL:
>             Project: CXF
>          Issue Type: Bug
>          Components: REST
>    Affects Versions: 2.1.2
>         Environment: Windows XP,  jdk1.6, Apache Tomcat 6.0.16
>            Reporter: Frank Ittermann
> Hello again
> i' ve used an implementation of RequestHandler to perform authentication stuff. So
> if the Authentication failed a RuntimeException is thrown.  I've also wrote a ExceptionMapper
implementation to transform occurred Exception into Http Status codes. If the RuntimeException
from the Authentication was thrown than this is translated to an HTTP 403 status code.
> But this Http status code is not send as response. This sends a 200 status code. After
a time of debugging i found the code that is responsible for that. The processResponse method
of the org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor work not correct is guess. Because
code with the following code block this methods ends.
> OperationResourceInfo operation = (OperationResourceInfo)exchange.get(OperationResourceInfo.class
>             .getName());
>         if (operation == null) {
>             return;
>         }
> because the operation variable is null. The code after this is responsible to but the
Response from the ExceptionMapper class into the message object so that i received a 403 http
status code.
> I've searched the code again and i found the code block how put the OperationResourceInfo
into the Exchange object. That is done by the processRequest method of the org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor
class. But before the OperationResourceInfo object is putted in the registered ResourceHandler
are called see the code block below.
>  for (ProviderInfo<RequestHandler> sh : shs) {
>             Response response = sh.getProvider().handleRequest(message, resource);
>             if (response != null) {
>                 message.getExchange().put(Response.class, response);
>                 return;
>             }
>         }
> I guess the code how put in the OperationresourceInfo object could be performed before
the RequestHandlers are called maybe? 
> Or it's forbidden to throw a Runtimeexception inside the RequestHandler ?
> I've also tried to return an Response object from the RequestHandler but the effect was
the same it never arrives the client. It received also the Response object with http code
> The CXF framework is great and very flexible good work. The opportunities to register
own code is very great.
> Good work.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message