KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > bus > bindings > soap > SOAPMessageContextImpl


1 package org.objectweb.celtix.bus.bindings.soap;
2
3 import java.util.ArrayList JavaDoc;
4 import java.util.Iterator JavaDoc;
5 import java.util.List JavaDoc;
6 import java.util.Set JavaDoc;
7
8 import javax.xml.bind.JAXBContext;
9 import javax.xml.namespace.QName JavaDoc;
10 import javax.xml.soap.SOAPException JavaDoc;
11 import javax.xml.soap.SOAPHeader JavaDoc;
12 import javax.xml.soap.SOAPHeaderElement JavaDoc;
13 import javax.xml.soap.SOAPMessage JavaDoc;
14 import javax.xml.ws.WebServiceException;
15 import javax.xml.ws.handler.MessageContext;
16 import javax.xml.ws.handler.soap.SOAPMessageContext;
17
18 import org.objectweb.celtix.bus.jaxws.JAXBEncoderDecoder;
19 import org.objectweb.celtix.context.MessageContextWrapper;
20
21 class SOAPMessageContextImpl extends MessageContextWrapper implements SOAPMessageContext {
22     private static final long serialVersionUID = 1L;
23     private static final String JavaDoc SOAP_MESSAGE = "org.objectweb.celtix.bindings.soap.message";
24     private Set JavaDoc<String JavaDoc> soapRoles;
25     
26     public SOAPMessageContextImpl(MessageContext ctx) {
27         super(ctx);
28     }
29     
30     public SOAPMessage JavaDoc getMessage() {
31         return (SOAPMessage JavaDoc)get(SOAP_MESSAGE);
32     }
33
34     public void setMessage(SOAPMessage JavaDoc soapMsg) {
35         put(SOAP_MESSAGE, soapMsg);
36         setScope(SOAP_MESSAGE, MessageContext.Scope.HANDLER);
37     }
38
39     public Object JavaDoc[] getHeaders(QName JavaDoc headerName, JAXBContext jaxbContext, boolean allRoles) {
40         SOAPMessage JavaDoc msg = getMessage();
41         assert msg != null;
42
43         List JavaDoc<Object JavaDoc> headerList = new ArrayList JavaDoc<Object JavaDoc>();
44
45         SOAPHeader JavaDoc header = null;
46         try {
47             header = msg.getSOAPHeader();
48         } catch (SOAPException JavaDoc se) {
49             throw new WebServiceException("Could not get the SOAPHeader node", se);
50         }
51         
52         if (header == null) {
53             return new Object JavaDoc[0];
54         }
55         Iterator JavaDoc iter = header.getChildElements(headerName);
56
57         //TODO Role/Actor attribute is not supported yet.
58
//Assuming ultimate receiver.
59
while (iter.hasNext()) {
60             SOAPHeaderElement JavaDoc headerNode = (SOAPHeaderElement JavaDoc)iter.next();
61             Object JavaDoc headerValue = JAXBEncoderDecoder.unmarshall(jaxbContext,
62                 null, headerNode, headerName);
63             assert headerValue != null;
64             headerList.add(headerValue);
65         }
66         
67         return headerList.toArray();
68     }
69
70     public Set JavaDoc<String JavaDoc> getRoles() {
71         return soapRoles;
72     }
73 }
74
Popular Tags