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 Tue, 05 Aug 2008 07:38:44 GMT


Frank Ittermann commented on CXF-1730:

Hello, yesterday I tried the latest trunk version and i couldn't resolved if this bug was
fixed or not. Because
the following Exception was thrown.

	at org.apache.cxf.jaxrs.utils.JAXRSUtils.intersectMimeTypes(
	at org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.computeAvailableContentTypes(
	at org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.processResponse(
	at org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.handleMessage(
	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(
	at org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(
	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(
	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(
	at org.apache.cxf.transport.servlet.ServletDestination.invoke(
	at org.apache.cxf.transport.servlet.ServletController.invokeDestination(
	at org.apache.cxf.transport.servlet.ServletController.invoke(
	at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(
	at org.apache.cxf.transport.servlet.AbstractCXFServlet.doGet(
	at javax.servlet.http.HttpServlet.service(
	at javax.servlet.http.HttpServlet.service(
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(
	at org.apache.catalina.core.StandardWrapperValve.invoke(
	at org.apache.catalina.core.StandardContextValve.invoke(
	at org.apache.catalina.core.StandardHostValve.invoke(
	at org.apache.catalina.valves.ErrorReportValve.invoke(
	at org.apache.catalina.core.StandardEngineValve.invoke(
	at org.apache.catalina.connector.CoyoteAdapter.service(
	at org.apache.coyote.http11.Http11Processor.process(
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(

So that I can not really try if the bug was fixed or not. 

> 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