1 package org.codehaus.xfire.addressing;
2
3 import org.apache.commons.logging.Log;
4 import org.apache.commons.logging.LogFactory;
5 import org.codehaus.xfire.MessageContext;
6 import org.codehaus.xfire.exchange.OutMessage;
7 import org.codehaus.xfire.handler.AbstractHandler;
8 import org.codehaus.xfire.handler.Phase;
9
10 public class AddressingOutHandler
11 extends AbstractHandler
12 {
13 private final static Log logger = LogFactory.getLog(AddressingOutHandler.class);
14
15 public AddressingOutHandler()
16 {
17 }
18
19 public String getPhase()
20 {
21 return Phase.TRANSPORT;
22 }
23
24 public void invoke(MessageContext context)
25 throws Exception
26 {
27 OutMessage msg = context.getOutMessage();
28 AddressingHeaders headers = (AddressingHeaders) msg.getProperty(AddressingInHandler.ADRESSING_HEADERS);
29 AddressingHeadersFactory factory = (AddressingHeadersFactory) msg.getProperty(AddressingInHandler.ADRESSING_FACTORY);
30
31 if (headers == null)
32 {
33 logger.debug("Couldn't find adressing headers.");
34 return;
35 }
36
37 if (msg == null)
38 {
39 logger.warn("There was no out message!");
40 return;
41 }
42
43 factory.writeHeaders(msg.getHeader(), headers);
44 }
45 }