1
2
3
4
5
6
7
8
9
10
11 package org.mule.providers.soap.xfire;
12
13 import org.mule.config.MuleProperties;
14 import org.mule.providers.soap.MuleSoapHeaders;
15 import org.mule.umo.UMOEvent;
16
17 import org.codehaus.xfire.MessageContext;
18 import org.codehaus.xfire.handler.AbstractHandler;
19 import org.jdom.Element;
20 import org.jdom.Namespace;
21
22
23
24
25 public class MuleHeadersOutHandler extends AbstractHandler
26 {
27
28
29
30
31
32
33 public void invoke(MessageContext context) throws Exception
34 {
35 UMOEvent event = (UMOEvent) context.getProperty(MuleProperties.MULE_EVENT_PROPERTY);
36
37 if (event == null && context.getClient() != null)
38 {
39 event = (UMOEvent) context.getClient().getProperty(MuleProperties.MULE_EVENT_PROPERTY);
40 }
41
42 if (event != null)
43 {
44 MuleSoapHeaders muleHeaders = new MuleSoapHeaders(event);
45 Element header = context.getOutMessage().getHeader();
46
47 if (header == null)
48 {
49 header = new Element("Header", context.getOutMessage().getSoapVersion().getPrefix(),
50 context.getOutMessage().getSoapVersion().getNamespace());
51 }
52
53
54
55
56 Element muleHeader = null;
57 Namespace ns = Namespace.getNamespace(MuleSoapHeaders.MULE_NAMESPACE,
58 MuleSoapHeaders.MULE_10_ACTOR);
59 if (muleHeaders.getCorrelationId() != null || muleHeaders.getReplyTo() != null)
60 {
61 muleHeader = new Element(MuleSoapHeaders.MULE_HEADER, ns);
62 }
63 else
64 {
65 return;
66 }
67
68 Element e = null;
69 if (muleHeaders.getCorrelationId() != null)
70 {
71
72 e = new Element(MuleProperties.MULE_CORRELATION_ID_PROPERTY, ns);
73 e.setText(muleHeaders.getCorrelationId());
74 muleHeader.addContent(e);
75
76 e = new Element(MuleProperties.MULE_CORRELATION_GROUP_SIZE_PROPERTY, ns);
77 e.setText(muleHeaders.getCorrelationGroup());
78 muleHeader.addContent(e);
79
80 e = new Element(MuleProperties.MULE_CORRELATION_SEQUENCE_PROPERTY, ns);
81 e.setText(muleHeaders.getCorrelationSequence());
82 muleHeader.addContent(e);
83
84 }
85 if (muleHeaders.getReplyTo() != null)
86 {
87
88 e = new Element(MuleProperties.MULE_REPLY_TO_PROPERTY, ns);
89 e.setText(muleHeaders.getReplyTo());
90 muleHeader.addContent(e);
91 }
92 header.addContent(muleHeader);
93
94 context.getOutMessage().setHeader(header);
95 }
96 }
97 }