1 package org.objectweb.celtix.bus.bindings.soap; 2 3 import java.util.ArrayList ; 4 import java.util.Iterator ; 5 import java.util.List ; 6 import java.util.Set ; 7 8 import javax.xml.bind.JAXBContext; 9 import javax.xml.namespace.QName ; 10 import javax.xml.soap.SOAPException ; 11 import javax.xml.soap.SOAPHeader ; 12 import javax.xml.soap.SOAPHeaderElement ; 13 import javax.xml.soap.SOAPMessage ; 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 SOAP_MESSAGE = "org.objectweb.celtix.bindings.soap.message"; 24 private Set <String > soapRoles; 25 26 public SOAPMessageContextImpl(MessageContext ctx) { 27 super(ctx); 28 } 29 30 public SOAPMessage getMessage() { 31 return (SOAPMessage )get(SOAP_MESSAGE); 32 } 33 34 public void setMessage(SOAPMessage soapMsg) { 35 put(SOAP_MESSAGE, soapMsg); 36 setScope(SOAP_MESSAGE, MessageContext.Scope.HANDLER); 37 } 38 39 public Object [] getHeaders(QName headerName, JAXBContext jaxbContext, boolean allRoles) { 40 SOAPMessage msg = getMessage(); 41 assert msg != null; 42 43 List <Object > headerList = new ArrayList <Object >(); 44 45 SOAPHeader header = null; 46 try { 47 header = msg.getSOAPHeader(); 48 } catch (SOAPException se) { 49 throw new WebServiceException("Could not get the SOAPHeader node", se); 50 } 51 52 if (header == null) { 53 return new Object [0]; 54 } 55 Iterator iter = header.getChildElements(headerName); 56 57 while (iter.hasNext()) { 60 SOAPHeaderElement headerNode = (SOAPHeaderElement )iter.next(); 61 Object 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 <String > getRoles() { 71 return soapRoles; 72 } 73 } 74 | Popular Tags |