Hi Paul

This really has to work...
Can you please try, just for the sake of the test, doing

headers.add("CustomHeader", "bar");

and see if it's there on the wire.

I'm just thinking that may be it is the fact that a Date as opposed to String 
which is being set in your case that affects it ?
If you were setting this header on the JAXRS ResponseBuilder then the CXF would 
convert a Date into a properly formatted value but
in this case the headers go directly to the AbstractHttpDestination and 
eventually to the container...

If  headers.add("CustomHeader", "bar");

works then you can do

headers.add("Last-Modified", 
org.apache.cxf.jaxrs.utils.HttpUtils.getHttpDateFormat().format(feed.getUpdated());


By the way, is feed.getUpdated() returning something ?

Another option, provided you would not like to return a Response directly from 
your service class, is to register a custom
ResponseHandler filter and set this Date from there.

let me know please how it goes
Sergey


----- Original Message ----- From: "Paul Wilton" <[email protected]>
To: <[email protected]>
Cc: "Sergey Beryozkin" <[email protected]>
Sent: Wednesday, December 02, 2009 12:29 PM
Subject: setting response headers in AtomFeedProvider


Hi Sergey,
I was planning on setting a response header (Last-Modified, expires,
cache-control etc) in an extended AtomFeedProvider based on the Feed
updated data,

for example:

public class AtomFeedProvider extends
org.apache.cxf.jaxrs.provider.AtomFeedProvider {

   @Override
   public void writeTo(Feed feed, Class<?> clazz, Type type,
Annotation[] a, MediaType mt, MultivaluedMap<String, Object> headers,
OutputStream os) throws IOException {
       headers.add("Last-Modified", feed.getUpdated());
       super.writeTo(feed, clazz, type, a, mt, headers, os);
   }
}


However, in the source
org.apache.cxf.jaxrs.provider.AtomFeedProvider.writeTo() method the
headers are ignored (lost).
Is this the correct approach I am taking to add headers, or is this a
bug, or is there a better way ?

Thanks
Paul
This e-mail (and any attachments) is confidential and may contain personal views which are not the views of the BBC unless specifically stated. If you have received it in error, please delete it from your system. Do not use, copy or disclose the information in any way nor act in reliance on it and notify the sender immediately.

Please note that the BBC monitors e-mails sent or received. Further 
communication will signify your consent to this

This e-mail has been sent by one of the following wholly-owned subsidiaries of 
the BBC:

BBC Worldwide Limited, Registration Number: 1420028 England, Registered 
Address: BBC Media Centre, 201 Wood Lane, London, W12 7TQ
BBC World News Limited, Registration Number: 04514407 England, Registered 
Address: BBC Media Centre, 201 Wood Lane, London, W12 7TQ
BBC World Distribution Limited, Registration Number: 04514408, Registered Address: BBC Media Centre, 201 Wood Lane, London, W12 7TQ

Reply via email to