View Javadoc

1   package org.codehaus.xfire.handler;
2   
3   import org.codehaus.xfire.MessageContext;
4   import org.codehaus.xfire.exchange.OutMessage;
5   import org.codehaus.xfire.fault.XFireFault;
6   
7   /***
8    * Reads in the message body using the service binding.
9    * 
10   * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
11   */
12  public class DispatchServiceHandler
13      extends AbstractHandler
14  {
15      public String getPhase()
16      {
17          return Phase.DISPATCH;
18      }
19  
20      public void invoke(MessageContext context)
21          throws XFireFault
22      {
23          context.getInPipeline().addHandlers(context.getService().getInHandlers());
24  
25          if (context.getExchange().hasOutMessage())
26          {
27              HandlerPipeline pipeline = new HandlerPipeline(context.getXFire().getOutPhases());
28              pipeline.addHandlers(context.getService().getOutHandlers());
29              pipeline.addHandlers(context.getXFire().getOutHandlers());
30              OutMessage msg = context.getExchange().getOutMessage();
31              pipeline.addHandlers(msg.getChannel().getTransport().getOutHandlers());
32              
33              context.setOutPipeline(pipeline);
34          }
35      }
36  }