KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > demo > ws_addressing > common > HeaderSnooper


1 package demo.ws_addressing.common;
2
3
4 import java.util.Iterator JavaDoc;
5 import java.util.Map JavaDoc;
6 import java.util.Set JavaDoc;
7
8 import javax.xml.namespace.QName JavaDoc;
9 import javax.xml.soap.Name JavaDoc;
10 import javax.xml.soap.Node JavaDoc;
11 import javax.xml.soap.SOAPException JavaDoc;
12 import javax.xml.soap.SOAPHeader JavaDoc;
13 import javax.xml.soap.SOAPHeaderElement JavaDoc;
14 import javax.xml.ws.handler.MessageContext;
15 import javax.xml.ws.handler.soap.SOAPHandler;
16 import javax.xml.ws.handler.soap.SOAPMessageContext;
17 import static javax.xml.ws.handler.MessageContext.MESSAGE_OUTBOUND_PROPERTY;
18
19 import org.objectweb.celtix.ws.addressing.AddressingBuilder;
20 import org.objectweb.celtix.ws.addressing.AddressingConstants;
21
22
23 /**
24  * Snoops SOAP headers.
25  */

26 public class HeaderSnooper implements SOAPHandler<SOAPMessageContext> {
27
28     private static final AddressingConstants ADDRESSING_CONSTANTS =
29         AddressingBuilder.getAddressingBuilder().newAddressingConstants();
30     private static final String JavaDoc WSA_NAMESPACE_URI =
31         ADDRESSING_CONSTANTS.getNamespaceURI();
32
33     public void init(Map JavaDoc<String JavaDoc, Object JavaDoc> map) {
34     }
35
36     public Set JavaDoc<QName JavaDoc> getHeaders() {
37         return null;
38     }
39
40     public boolean handleMessage(SOAPMessageContext context) {
41         snoop(context);
42         return true;
43     }
44
45     public boolean handleFault(SOAPMessageContext context) {
46         snoop(context);
47         return true;
48     }
49
50     public void close(MessageContext context) {
51     }
52
53     public void destroy() {
54     }
55
56     private void snoop(SOAPMessageContext context) {
57         try {
58             SOAPHeader JavaDoc header =
59                 context.getMessage().getSOAPPart().getEnvelope().getHeader();
60             if (header != null) {
61                 System.out.println(getDirection(context)
62                                    + " WS-Addressing headers");
63                 Iterator JavaDoc headerElements = header.examineAllHeaderElements();
64                 while (headerElements.hasNext()) {
65                     SOAPHeaderElement JavaDoc headerElement =
66                         (SOAPHeaderElement JavaDoc)headerElements.next();
67                     Name JavaDoc headerName = headerElement.getElementName();
68                     if (WSA_NAMESPACE_URI.equals(headerName.getURI())) {
69                         System.out.println(headerName.getLocalName()
70                                            + getText(headerElement));
71                     }
72                 }
73                 System.out.println();
74             }
75         } catch (SOAPException JavaDoc se) {
76             System.out.println("SOAP header snoop failed: " + se);
77         }
78     }
79
80     private String JavaDoc getDirection(SOAPMessageContext context) {
81         Boolean JavaDoc outbound = (Boolean JavaDoc)context.get(MESSAGE_OUTBOUND_PROPERTY);
82         return outbound != null && outbound.booleanValue()
83                ? "Outbound"
84                : "Inbound";
85     }
86
87     private String JavaDoc getText(SOAPHeaderElement JavaDoc headerElement) {
88         String JavaDoc text = " : ";
89         Iterator JavaDoc children = headerElement.getChildElements();
90         if (children.hasNext()) {
91             text += ((Node JavaDoc)children.next()).getValue();
92         }
93         return text;
94     }
95
96 }
97
98
Popular Tags