Custom headers lost when using Cxf Interceptors
-----------------------------------------------

                 Key: CXF-2045
                 URL: https://issues.apache.org/jira/browse/CXF-2045
             Project: CXF
          Issue Type: Bug
          Components: Core, REST
    Affects Versions: 2.2
         Environment: Java 1.5
Jetty 6.1
            Reporter: Gabo Manuel


All changes to the header through the Message object in the out interceptor are 
not received by client. 

Server.java

public class RetestRestServer {
    String basepath = "/someValue";
    int port = 8080;

    @SuppressWarnings("unchecked")
    protected RetestRestServer() throws Exception {
        JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
        sf.setResourceClasses(AccountService.class);
        sf.setResourceProvider(AccountService.class, 
            new SingletonResourceProvider(new AccountService()));
        sf.setAddress("http://localhost:"+port+basepath+"/rest/Accounts/";);
        
        List<Interceptor> out = new ArrayList<Interceptor>(1);
        in.add(new RestOutHandler());
        sf.setOutInterceptors(in);
        
        sf.create();
    }

    public static void main(String args[]) throws Exception {
        new RetestRestServer();
        System.out.println("Server ready...");
    }
}

RestOutInterceptor.java

public class RestOutHandler extends AbstractPhaseInterceptor<Message>{
        private static Logger logger = Logger.getLogger(RestOutHandler.class);
        public RestOutHandler() {
                super(Phase.POST_PROTOCOL);
        }
        public void handleMessage(Message message) throws Fault {
                Map<String, List<String>> responseHeaders = (Map<String, 
List<String>>)message.get(Message.PROTOCOL_HEADERS);
                
                if (responseHeaders == null) {
                        responseHeaders = new HashMap<String, List<String>>();
                        message.put(Message.PROTOCOL_HEADERS, responseHeaders);
                }
                
                responseHeaders.put("header1", Arrays.asList(new 
String[]{"headerValue"}));
                logger.debug("out message headers: " + responseHeaders);
        }
}

AccountService.java

@Consumes("*/xml")
@Produces("text/xml")
@WebService(serviceName="AccountService", portName="AccountServicePort")
public class AccountService{
    private static Logger logger = Logger.getLogger(AccountService.class);
    @GET
    @Path("/")
    @WebMethod
    public String getAccount(
            @QueryParam("serialNumber")
            @WebParam(name="serialNumber")
            long serialNumber) {
        logger.info("get Account received: " + serialNumber);
        return "get Account received: " + serialNumber;
    }
}

Please advise if more info is needed.

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

Reply via email to