1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.miloss.fgsms.agentcore;
23
24 import java.util.Iterator;
25 import javax.xml.namespace.QName;
26 import javax.xml.soap.*;
27 import javax.xml.ws.handler.soap.SOAPMessageContext;
28 import org.miloss.fgsms.common.Constants;
29 import org.miloss.fgsms.common.Utility;
30 import org.apache.log4j.Level;
31 import org.miloss.fgsms.common.Logger;;
32 import org.w3c.dom.Element;
33 import org.w3c.dom.Node;
34 import org.w3c.dom.NodeList;
35
36
37
38
39
40 public class DependencyHelper {
41
42 public static String getThreadIdFromSoapHeader(SOAPMessageContext messageContext) {
43 try {
44 SOAPMessage message = messageContext.getMessage();
45 SOAPHeader soapHeader = message.getSOAPHeader();
46 if (soapHeader != null) {
47 Iterator childElements = soapHeader.getChildElements(new QName(FgsmsSoapHeaderConstants.namespace, FgsmsSoapHeaderConstants.threadid_message_localname));
48 if (childElements.hasNext()) {
49 SOAPElement e = (SOAPElement) childElements.next();
50 String t = e.getTextContent();
51 if (!Utility.stringIsNullOrEmpty(t)) {
52 return t;
53 }
54 t = e.getValue();
55 if (!Utility.stringIsNullOrEmpty(t)) {
56 return t;
57 }
58 Node c = e.getFirstChild();
59 if (c != null) {
60 t = c.getTextContent();
61 if (!Utility.stringIsNullOrEmpty(t)) {
62 return t;
63 }
64 t = e.getValue();
65 if (!Utility.stringIsNullOrEmpty(t)) {
66 return t;
67 }
68 }
69 }
70 NodeList elementsByTagNameNS = soapHeader.getElementsByTagNameNS(FgsmsSoapHeaderConstants.namespace, FgsmsSoapHeaderConstants.threadid_message_localname);
71 if (elementsByTagNameNS.getLength() > 0) {
72 Node node = elementsByTagNameNS.item(0);
73 String t = node.getTextContent();
74 if (!Utility.stringIsNullOrEmpty(t)) {
75 return t;
76 }
77 }
78 }
79
80 } catch (Exception ex) {
81 Logger.getLogger(org.miloss.fgsms.common.Constants.LoggerName).log(Level.WARN, "unable to get soap header for dependency detection", ex);
82 }
83
84
85
86 return null;
87 }
88
89 public static String getRelatedMessageIdFromSoapHeader(SOAPMessageContext messageContext) {
90 try {
91 SOAPMessage message = messageContext.getMessage();
92 SOAPHeader soapHeader = message.getSOAPHeader();
93 if (soapHeader != null) {
94 Iterator childElements = soapHeader.getChildElements(new QName(FgsmsSoapHeaderConstants.namespace, FgsmsSoapHeaderConstants.related_message_localname));
95 if (childElements.hasNext()) {
96 SOAPElement e = (SOAPElement) childElements.next();
97 String t = e.getTextContent();
98 if (!Utility.stringIsNullOrEmpty(t)) {
99 return t;
100 }
101 t = e.getValue();
102 if (!Utility.stringIsNullOrEmpty(t)) {
103 return t;
104 }
105 Node c = e.getFirstChild();
106 if (c != null) {
107 t = c.getTextContent();
108 if (!Utility.stringIsNullOrEmpty(t)) {
109 return t;
110 }
111 t = e.getValue();
112 if (!Utility.stringIsNullOrEmpty(t)) {
113 return t;
114 }
115 }
116 }
117 NodeList elementsByTagNameNS = soapHeader.getElementsByTagNameNS(FgsmsSoapHeaderConstants.namespace, FgsmsSoapHeaderConstants.related_message_localname);
118 if (elementsByTagNameNS.getLength() > 0) {
119 Node node = elementsByTagNameNS.item(0);
120 String t = node.getTextContent();
121 if (!Utility.stringIsNullOrEmpty(t)) {
122 return t;
123 }
124 }
125 }
126
127 } catch (Exception ex) {
128 Logger.getLogger(org.miloss.fgsms.common.Constants.LoggerName).log(Level.WARN, "unable to get soap header for dependency detection", ex);
129 }
130
131
132 return null;
133 }
134
135 public static void insertRelatedMessageHeader(String messageid, SOAPMessageContext messageContext) {
136
137 try {
138 SOAPMessage msg = messageContext.getMessage();
139 SOAPHeader header = msg.getSOAPHeader();
140
141 if (header == null) {
142 SOAPPart soapPart = msg.getSOAPPart();
143
144 SOAPEnvelope soapEnvelope = soapPart.getEnvelope();
145
146 header = soapEnvelope.addHeader();
147 }
148
149
150
151 SOAPElement soapElement = header.addChildElement(new QName(FgsmsSoapHeaderConstants.namespace, FgsmsSoapHeaderConstants.related_message_localname));
152
153
154
155 soapElement.addTextNode(messageid);
156 } catch (Exception ex) {
157 Logger.getLogger(org.miloss.fgsms.common.Constants.LoggerName).log(Level.WARN, "unable to insert soap header for dependency detection", ex);
158 }
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185 }
186
187 public static void insertThreadIdHeader(String transactionthreadid, SOAPMessageContext messageContext) {
188 try {
189 SOAPMessage msg = messageContext.getMessage();
190 SOAPHeader header = msg.getSOAPHeader();
191 if (header == null) {
192
193 SOAPPart soapPart = msg.getSOAPPart();
194
195 SOAPEnvelope soapEnvelope = soapPart.getEnvelope();
196
197 header = soapEnvelope.addHeader();
198 }
199
200
201
202 SOAPElement soapElement = header.addChildElement(new QName(FgsmsSoapHeaderConstants.namespace, FgsmsSoapHeaderConstants.threadid_message_localname));
203
204
205
206 soapElement.addTextNode(transactionthreadid);
207 } catch (Exception ex) {
208 Logger.getLogger(org.miloss.fgsms.common.Constants.LoggerName).log(Level.WARN, "unable to insert soap header for dependency detection", ex);
209 }
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230 }
231 }