Re: @Context not working for ResponseExceptionMapper
Hi, All the info you provided was very clear indeed, have a look please at http://svn.apache.org/repos/asf/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java check testServerWebApplicationExceptionXML. ResponseReader just delegates to CXF and finds an appropriate provider for a response MediaType, I think this is what you need Cheers, Sergey On 29/09/11 20:45, Osvaldo Pina wrote: Hi Sergey, Sory to botter you again but I think I my poor command of the english language is making my explanations about my problems much more complicated than the problem itself. So I develop a unit test with a simplified but similar scenario. Thanks a lot for your help! Ats, Osvaldo Pina. On Thu, Sep 29, 2011 at 8:33 AM, Sergey Beryozkin mailto:sberyoz...@gmail.com>> wrote: Hi ResponseReader is still the provider you need to register. I have a test which catches ServerWebApplicationException and then does ex.toErrorObject(Book.class). ResponseReader has to be registered once but you can set an expected class on it every time you need to read from Response, directly or indirectly Cheers, Sergey On 28/09/11 17:31, Osvaldo Pina wrote: Hi, Maybe the approach to my problem is driving me to a wrong path. We are in the process of changing all integration components from EJB2 to Rest. In the server side when a component exception is thrown I look at the accept header that was sent by the client to see if the client is a regular web browser or my rest client. If it was the web browser I render the response as a HTML error page but if It was my rest client (the rest client accepts application/xml for regular response and application/bc-serialized-__exception+xml for error response) I render the error as a xml with the java exception serialized in a base 64 format. In the server I have a ExceptionMapper that do this exception to HTML or application/bc-serialized-__exception+xml translation. In the client i get the ServerWebApplicationException and use the method toErrorObject to translate the application/bc-serialized-__exception+xml back into the original exception. When I discorered the ResponseExceptionMapper that was designed to do this task on the client side I decided to give it a try, but the Response object in ResponseExceptionMapper is a InputStream. So the question about message context was to give a way to acess the Providers instance in order to query for the responseReader for application/bc-serialized-__exception+xml ( whitch I think will return a MessageBodyReader for xml). Summarizing the problem: In the ResponseExceptionMapper I have to translate the exception which is encoded as application/bc-serialized-__exception+xml into the corresponding java object. Sorry by the long email thanks a lot, Osvaldo Pina. On Tue, Sep 27, 2011 at 7:05 PM, Sergey Beryozkinmailto:sberyoz...@gmail.com>__>wrote: Hi Do you need some information about the outbound message in your ResponseExceptionMapper ? It has a Response in parameter that gives all the info about the response message Cheers, Sergey On 26/09/11 21:51, Osvaldo Pina wrote: Hi, I´m trying to inject a @Context for a MessageContext into a ResponseExceptionMapper and I always get null for the MessageContext field. Taking a look at the code I found that the code in ProviderFactory class is not calling injectContexts into responseExceptionMappers. This is correct? Ats, Osvaldo Pina.
Re: @Context not working for ResponseExceptionMapper
Hi Sergey, Sory to botter you again but I think I my poor command of the english language is making my explanations about my problems much more complicated than the problem itself. So I develop a unit test with a simplified but similar scenario. Thanks a lot for your help! Ats, Osvaldo Pina. On Thu, Sep 29, 2011 at 8:33 AM, Sergey Beryozkin wrote: > Hi > > ResponseReader is still the provider you need to register. > I have a test which catches ServerWebApplicationException and > then does ex.toErrorObject(Book.class). > ResponseReader has to be registered once but you can set an expected class > on it every time you need to read from Response, directly or indirectly > > Cheers, Sergey > > > > On 28/09/11 17:31, Osvaldo Pina wrote: > >> Hi, >> >> Maybe the approach to my problem is driving me to a wrong path. We are >> in >> the process of changing all integration components from EJB2 to Rest. In >> the >> server side when a component exception is thrown I look at the accept >> header >> that was sent by the client to see if the client is a regular web browser >> or >> my rest client. If it was the web browser I render the response as a HTML >> error page but if It was my rest client (the rest client accepts >> application/xml for regular response and >> application/bc-serialized-**exception+xml for error response) I render >> the >> error as a xml with the java exception serialized in a base 64 format. In >> the server I have a ExceptionMapper that do this exception to HTML or >> application/bc-serialized-**exception+xml translation. In the client i >> get the >> ServerWebApplicationException and use the method toErrorObject to >> translate >> the application/bc-serialized-**exception+xml back into the original >> exception. When I discorered the ResponseExceptionMapper that was designed >> to do this task on the client side I decided to give it a try, but the >> Response object in ResponseExceptionMapper is a InputStream. So the >> question >> about message context was to give a way to acess the Providers instance in >> order to query for the responseReader for >> application/bc-serialized-**exception+xml ( whitch I think will return a >> MessageBodyReader for xml). Summarizing the problem: In the >> ResponseExceptionMapper I have to translate the exception which is encoded >> as application/bc-serialized-**exception+xml into the corresponding java >> object. >> Sorry by the long email >> >> thanks a lot, >> Osvaldo Pina. >> >> On Tue, Sep 27, 2011 at 7:05 PM, Sergey Beryozkin> >wrote: >> >> Hi >>> >>> Do you need some information about the outbound message in your >>> ResponseExceptionMapper ? It has a Response in parameter that gives all >>> the >>> info about the response message >>> >>> Cheers, Sergey >>> >>> >>> On 26/09/11 21:51, Osvaldo Pina wrote: >>> >>>Hi, I´m trying to inject a @Context for a MessageContext into a ResponseExceptionMapper and I always get null for the MessageContext field. Taking a look at the code I found that the code in ProviderFactory class is not calling injectContexts into responseExceptionMappers. This is correct? Ats, Osvaldo Pina. >>> >> >
Re: @Context not working for ResponseExceptionMapper
Hi ResponseReader is still the provider you need to register. I have a test which catches ServerWebApplicationException and then does ex.toErrorObject(Book.class). ResponseReader has to be registered once but you can set an expected class on it every time you need to read from Response, directly or indirectly Cheers, Sergey On 28/09/11 17:31, Osvaldo Pina wrote: Hi, Maybe the approach to my problem is driving me to a wrong path. We are in the process of changing all integration components from EJB2 to Rest. In the server side when a component exception is thrown I look at the accept header that was sent by the client to see if the client is a regular web browser or my rest client. If it was the web browser I render the response as a HTML error page but if It was my rest client (the rest client accepts application/xml for regular response and application/bc-serialized-exception+xml for error response) I render the error as a xml with the java exception serialized in a base 64 format. In the server I have a ExceptionMapper that do this exception to HTML or application/bc-serialized-exception+xml translation. In the client i get the ServerWebApplicationException and use the method toErrorObject to translate the application/bc-serialized-exception+xml back into the original exception. When I discorered the ResponseExceptionMapper that was designed to do this task on the client side I decided to give it a try, but the Response object in ResponseExceptionMapper is a InputStream. So the question about message context was to give a way to acess the Providers instance in order to query for the responseReader for application/bc-serialized-exception+xml ( whitch I think will return a MessageBodyReader for xml). Summarizing the problem: In the ResponseExceptionMapper I have to translate the exception which is encoded as application/bc-serialized-exception+xml into the corresponding java object. Sorry by the long email thanks a lot, Osvaldo Pina. On Tue, Sep 27, 2011 at 7:05 PM, Sergey Beryozkinwrote: Hi Do you need some information about the outbound message in your ResponseExceptionMapper ? It has a Response in parameter that gives all the info about the response message Cheers, Sergey On 26/09/11 21:51, Osvaldo Pina wrote: Hi, I´m trying to inject a @Context for a MessageContext into a ResponseExceptionMapper and I always get null for the MessageContext field. Taking a look at the code I found that the code in ProviderFactory class is not calling injectContexts into responseExceptionMappers. This is correct? Ats, Osvaldo Pina.
Re: @Context not working for ResponseExceptionMapper
Hi, Maybe the approach to my problem is driving me to a wrong path. We are in the process of changing all integration components from EJB2 to Rest. In the server side when a component exception is thrown I look at the accept header that was sent by the client to see if the client is a regular web browser or my rest client. If it was the web browser I render the response as a HTML error page but if It was my rest client (the rest client accepts application/xml for regular response and application/bc-serialized-exception+xml for error response) I render the error as a xml with the java exception serialized in a base 64 format. In the server I have a ExceptionMapper that do this exception to HTML or application/bc-serialized-exception+xml translation. In the client i get the ServerWebApplicationException and use the method toErrorObject to translate the application/bc-serialized-exception+xml back into the original exception. When I discorered the ResponseExceptionMapper that was designed to do this task on the client side I decided to give it a try, but the Response object in ResponseExceptionMapper is a InputStream. So the question about message context was to give a way to acess the Providers instance in order to query for the responseReader for application/bc-serialized-exception+xml ( whitch I think will return a MessageBodyReader for xml). Summarizing the problem: In the ResponseExceptionMapper I have to translate the exception which is encoded as application/bc-serialized-exception+xml into the corresponding java object. Sorry by the long email thanks a lot, Osvaldo Pina. On Tue, Sep 27, 2011 at 7:05 PM, Sergey Beryozkin wrote: > Hi > > Do you need some information about the outbound message in your > ResponseExceptionMapper ? It has a Response in parameter that gives all the > info about the response message > > Cheers, Sergey > > > On 26/09/11 21:51, Osvaldo Pina wrote: > >> Hi, >> >> I´m trying to inject a @Context for a MessageContext into a >> ResponseExceptionMapper and I always get null for the MessageContext >> field. >> Taking a look at the code I found that the code in ProviderFactory class >> is >> not calling injectContexts into responseExceptionMappers. This is correct? >> >> >> Ats, >> Osvaldo Pina. >> >> >
Re: @Context not working for ResponseExceptionMapper
Hi Do you need some information about the outbound message in your ResponseExceptionMapper ? It has a Response in parameter that gives all the info about the response message Cheers, Sergey On 26/09/11 21:51, Osvaldo Pina wrote: Hi, I´m trying to inject a @Context for a MessageContext into a ResponseExceptionMapper and I always get null for the MessageContext field. Taking a look at the code I found that the code in ProviderFactory class is not calling injectContexts into responseExceptionMappers. This is correct? Ats, Osvaldo Pina.