KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > demo > ws_rm > common > HandlerBase


1 package demo.ws_rm.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
20 /**
21  * Base handler logic for WS-RM demo.
22  */

23 public abstract class HandlerBase implements SOAPHandler<SOAPMessageContext> {
24
25     protected static final String JavaDoc WSA_NAMESPACE_URI =
26         "http://schemas.xmlsoap.org/ws/2004/08/addressing";
27     protected static final String JavaDoc WSA_ACTION = "Action";
28     protected static final String JavaDoc WSRM_NAMESPACE_URI =
29         "http://schemas.xmlsoap.org/ws/2005/02/rm";
30
31     public void init(Map JavaDoc<String JavaDoc, Object JavaDoc> map) {
32     }
33
34     public Set JavaDoc<QName JavaDoc> getHeaders() {
35         return null;
36     }
37
38
39     public void close(MessageContext context) {
40     }
41
42     public void destroy() {
43     }
44
45     /**
46      * @return true if the current message is outbound
47      */

48     protected boolean isOutbound(SOAPMessageContext context) {
49         Boolean JavaDoc outbound = (Boolean JavaDoc)context.get(MESSAGE_OUTBOUND_PROPERTY);
50         return outbound != null && outbound.booleanValue();
51     }
52
53     /**
54      * @return the WS-A Action header
55      */

56     protected String JavaDoc getAction(SOAPMessageContext context) {
57         String JavaDoc action = null;
58         try {
59             SOAPHeader JavaDoc header =
60                 context.getMessage().getSOAPPart().getEnvelope().getHeader();
61             Iterator JavaDoc headerElements = header.examineAllHeaderElements();
62             while (headerElements.hasNext()) {
63                 SOAPHeaderElement JavaDoc headerElement =
64                     (SOAPHeaderElement JavaDoc)headerElements.next();
65                 Name JavaDoc headerName = headerElement.getElementName();
66                 if (WSA_NAMESPACE_URI.equals(headerName.getURI())
67                     && WSA_ACTION.equals(headerName.getLocalName())) {
68                     Iterator JavaDoc children = headerElement.getChildElements();
69                     if (children.hasNext()) {
70                         action = ((Node JavaDoc)children.next()).getValue();
71                     }
72                 }
73             }
74         } catch (SOAPException JavaDoc e) {
75             System.out.println("failed to determine WS-A Action: " + e);
76         }
77         return action;
78     }
79 }
80
81
Popular Tags