users@jersey.java.net

Re: [Jersey] Re: accessing response

From: Jon Iantosca <digester_at_gmail.com>
Date: Thu, 5 Nov 2009 17:26:55 -0500

Huge help, Paul. Your response was a big time saver, greatly appreciated!

On Thu, Nov 5, 2009 at 11:58 AM, Paul Sandoz <Paul.Sandoz_at_sun.com> wrote:

> Hi Jon,
>
> Take a look at the LoggingFilter source code:
>
> http://fisheye4.atlassian.com/browse/
> ~raw,r=2652/jersey/trunk/jersey/jersey-server/src/main/java/com/sun/jersey/api/container/filter/LoggingFilter.java
>
> or the GZIPContentEncodingFilter:
>
> http://fisheye4.atlassian.com/browse/
> ~raw,r=2168/jersey/trunk/jersey/jersey-server/src/main/java/com/sun/jersey/api/container/filter/GZIPContentEncodingFilter.java
>
>
> To filter the bytes of the response representation you need to use a
> ContainerResponseFilter and register an adapter, as performed in
> the LoggingFilter:
>
> public ContainerResponse filter(ContainerRequest request, ContainerResponse response) {
> response.setContainerResponseWriter(
> new Adapter(response.getContainerResponseWriter()));
> return response;
> }
>
>
> Registering an adapter allows one to modify the response stream without
> buffering if necessary.
>
> The LoggingFilter buffers the response entity where as
> the GZIPContentEncodingFilter wraps the OutputStream around a
> GZIPOutputStream.
>
> Hth,
> Paul.
>
> On Nov 5, 2009, at 5:37 PM, Jon Iantosca wrote:
>
> Hope I didn't waste anyone's time! I just came across the interfaces
> ContainerResponseFilter, and ContainerRequestFilter. But of course I'm all
> ears for any additional suggestions.
>
> On Thu, Nov 5, 2009 at 10:58 AM, Jon Iantosca <digester_at_gmail.com> wrote:
>
>> Howdy - I'm hoping someone can point me in the direction of how to go
>> about accessing my restful responses. More specifically, I'd like access to
>> the serialized response after my resource method has executed, but before
>> it's written out to the client. My resource methods typically resemble the
>> sample code below, producing both xml and json, but I'm hoping to find a
>> solution that doesn't care about what's being returned. I'm hoping I can
>> perhaps register something like an "about to send a response" kind of
>> listener. Can someone point me int he right direction here?
>>
>> @GET
>> @Produces({"application/xml", "application/json"})
>> @Path( "account/{number}" )
>> public Portfolio getSummary( @PathParam("number") String number ) {
>> AccountDelegate delegate = new AccountDelegate( number );
>> return delegate.getSummary();
>> }
>>
>
>
>