SOAPHeader soapHeader = soapEnv.getHeader(); Iterator headers = soapHeader.extractAllHeaderElements(); while(headers.hasNext() ){ SOAPHeaderElement headerElement = (SOAPHeaderElement) headers.next(); Name name = headerElement.getElementName(); System.out.println(name) }
protected void extractSoapResponseHeaders(SOAPHeader header) throws TransformerException { Map<Name,String> soapHeaders = new HashMap<Name,String>(); Iterator<?> iter = header.examineAllHeaderElements(); while (iter.hasNext()) { SOAPHeaderElement headerElem = (SOAPHeaderElement) iter.next(); soapHeaders.put(headerElem.getElementName(), headerElem.getTextContent()); } setSoapResponseHeaders(soapHeaders); }
/** * Discard any pre-existing MAP headers - this may occur if the runtime * re-uses a SOAP message. * * @param header the SOAP header */ private void discardMAPs(SOAPHeader header) throws SOAPException { Iterator headerElements = header.examineAllHeaderElements(); while (headerElements.hasNext()) { SOAPHeaderElement headerElement = (SOAPHeaderElement)headerElements.next(); Name headerName = headerElement.getElementName(); if (Names.WSA_NAMESPACE_NAME.equals(headerName.getURI())) { headerElement.detachNode(); } } }
/** * Removes all instances of all WSA headers for a given actor. * * @param soapHeader header container * @param actorURI Actor URI */ public static void removeHeaders(SOAPHeader soapHeader, String actorURI) { if (soapHeader == null) { return; } Iterator<?> headers = soapHeader.examineHeaderElements(actorURI); List<SOAPHeaderElement> existingElements = new ArrayList<SOAPHeaderElement>(); while (headers.hasNext()) { SOAPHeaderElement hElement = (SOAPHeaderElement) headers.next(); Name hName = hElement.getElementName(); AddressingVersion version = getAddressingVersion(hName.getURI()); if (version != null) { existingElements.add(hElement); } } for (int i = 0; i < existingElements.size(); i++) { SOAPHeaderElement el = (SOAPHeaderElement) existingElements.get(i); el.detachNode(); } }
/** * Take a SOAP header, check if it matches one of our reference * properties/parameters, if so add it to the appropriate collection. * * @param headerElement the header to check * @param refPropQNames List of property names to match to * @return true if it matched, false otherwise */ private boolean checkReferenceP(SOAPHeaderElement headerElement, List<QName> refPropQNames) { Name name = headerElement.getElementName(); QName elementName = new QName(name.getURI(), name.getLocalName()); // if we got to this point, the user wants deserialization of ref props. // if refPropQNames was a null, it is treated as a '*' or process all // headers // otherwise we check to see if the element name was specified by the user if (refPropQNames == null || refPropQNames.contains(elementName)) { this.referenceProperties.add(headerElement); return true; } else { return false; } }
/** * Removes all instances of a given header name in WSA namespace for a given * actor. * * @param soapHeader Header containing the element to remove * @param actorURI Actor URI * @param headerName element name */ public static void removeHeader(SOAPHeader soapHeader, String actorURI, String headerName) { if (soapHeader == null) { return; } Iterator<?> headers = soapHeader.examineHeaderElements(actorURI); List<SOAPHeaderElement> existingElements = new ArrayList<SOAPHeaderElement>(); while (headers.hasNext()) { SOAPHeaderElement hElement = (SOAPHeaderElement) headers.next(); Name hName = hElement.getElementName(); if (isAddressingNamespaceURI(hName.getURI()) && hName.getLocalName().equals(headerName)) { existingElements.add(hElement); } } for (int i = 0; i < existingElements.size(); i++) { SOAPHeaderElement el = (SOAPHeaderElement) existingElements.get(i); el.detachNode(); } }
/** * Discard any pre-existing RM headers - this may occur if the runtime * re-uses a SOAP message. * * @param header the SOAP header */ private void discardRMHeaders(SOAPHeader header) throws SOAPException { Iterator headerElements = header.examineAllHeaderElements(); while (headerElements.hasNext()) { SOAPHeaderElement headerElement = (SOAPHeaderElement)headerElements.next(); Name headerName = headerElement.getElementName(); if (Names.WSRM_NAMESPACE_NAME.equals(headerName.getURI())) { headerElement.detachNode(); } if (org.objectweb.celtix.bus.ws.addressing.Names.WSA_NAMESPACE_NAME .equals(headerName.getURI()) && org.objectweb.celtix.bus.ws.addressing.Names.WSA_ACTION_NAME .equals(headerName.getLocalName())) { headerElement.detachNode(); } } }
private SOAPHeaderElement getHeaderElement(final SOAPHeader soapHeader, final String uri, final String name) throws SOAPException { if (soapHeader != null) { final Iterator headerIter = SOAPUtil.getChildElements(soapHeader) ; while(headerIter.hasNext()) { final SOAPHeaderElement current = (SOAPHeaderElement)headerIter.next() ; final Name currentName = current.getElementName() ; if ((currentName != null) && match(name, currentName.getLocalName()) && match(uri, currentName.getURI())) { return current ; } } } return null ; }
private SOAPHeaderElement getHeaderElement(final SOAPHeader soapHeader, final String uri, final String name) throws SOAPException { if (soapHeader != null) { final Iterator headerIter = SOAPUtil.getChildElements(soapHeader) ; while(headerIter.hasNext()) { final SOAPHeaderElement current = (SOAPHeaderElement)headerIter.next() ; final Name currentName = current.getElementName() ; if ((currentName != null) && match(name, currentName.getLocalName()) && match(uri, currentName.getURI())) { return current ; } } } return null ; }
@Override protected void verifyUnderstoodHeader(SOAPHeaderElement element) throws Exception { QName name = new QName(element.getNamespaceURI(), element.getLocalName()); String actor = element.getActor(); Set<String> roles = getRoles(); boolean isActor = actor == null || actor.length() == 0 || Constants.URI_SOAP11_NEXT_ACTOR.equals(actor) || roles.contains(actor); if (isActor && !headerSource.getHeaders().contains(name)) { QName faultCode = Constants.SOAP11_FAULT_CODE_MUST_UNDERSTAND; String faultString = "Unprocessed 'mustUnderstand' header element: " + element.getElementName(); SOAPFaultImpl fault = new SOAPFaultImpl(); fault.setFaultCode(faultCode); fault.setFaultString(faultString); throwFaultException(fault); } } }
SOAPHeaderElement headerElement = (SOAPHeaderElement)headerElements.next(); Name headerName = headerElement.getElementName(); String localName = headerName.getLocalName(); if (Names.WSRM_NAMESPACE_NAME.equals(headerName.getURI())) {
/** * Retrieve the first header matching the uri and name. * @param soapEnvelope The soap envelope containing the header. * @param uri The uri of the header element. * @param name The name of the header element. * @return The header element or null if not found. */ private SOAPHeaderElement getHeaderElement(final SOAPEnvelope soapEnvelope, final String uri, final String name) throws SOAPException { final SOAPHeader soapHeader = soapEnvelope.getHeader() ; if (soapHeader != null) { final Iterator headerIter = SOAPUtil.getChildElements(soapHeader) ; while(headerIter.hasNext()) { final SOAPHeaderElement current = (SOAPHeaderElement)headerIter.next() ; final Name currentName = current.getElementName() ; if ((currentName != null) && match(name, currentName.getLocalName()) && match(uri, currentName.getURI())) { return current ; } } } return null ; }
/** * Retrieve the first header matching the uri and name. * @param soapEnvelope The soap envelope containing the header. * @param uri The uri of the header element. * @param name The name of the header element. * @return The header element or null if not found. */ private SOAPHeaderElement getHeaderElement(final SOAPEnvelope soapEnvelope, final String uri, final String name) throws SOAPException { final SOAPHeader soapHeader = soapEnvelope.getHeader() ; if (soapHeader != null) { final Iterator headerIter = SOAPUtil.getChildElements(soapHeader) ; while(headerIter.hasNext()) { final SOAPHeaderElement current = (SOAPHeaderElement)headerIter.next() ; final Name currentName = current.getElementName() ; if ((currentName != null) && match(name, currentName.getLocalName()) && match(uri, currentName.getURI())) { return current ; } } } return null ; }
throws MalformedURIException { Name name = headerElement.getElementName();
public void checkMustUnderstand(OperationMetaData opMetaData) throws Exception { CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext(); assert(msgContext != null); SOAPMessage soapMessage = (SOAPMessage)msgContext.getSOAPMessage(); SOAPEnvelope soapEnvelope = soapMessage.getSOAPPart().getEnvelope(); if (soapEnvelope == null || soapEnvelope.getHeader() == null) return; Iterator<?> it = soapEnvelope.getHeader().examineAllHeaderElements(); while (it.hasNext()) { SOAPHeaderElement soapHeaderElement = (SOAPHeaderElement)it.next(); Name name = soapHeaderElement.getElementName(); QName xmlName = new QName(name.getURI(), name.getLocalName()); ParameterMetaData paramMetaData = (opMetaData != null ? opMetaData.getParameter(xmlName) : null); boolean isBoundHeader = (paramMetaData != null && paramMetaData.isInHeader()); if (!isBoundHeader && soapHeaderElement.getMustUnderstand()) verifyUnderstoodHeader(soapHeaderElement); } }
SOAPHeaderElement headerElement = (SOAPHeaderElement)headerElements.next(); Name headerName = headerElement.getElementName(); String headerURI = headerName.getURI(); if (unmarshaller == null) {
/** * Sets the Action header element, checking duplicates. * * @param elem Element to set * @param allowNonSpecificActions Whether to allow relative Action URIs or not * @throws MalformedURIException If an invalid URI is found */ private void addAction(SOAPHeaderElement elem, boolean allowNonSpecificActions) throws MalformedURIException { // set the WSA namespace URI in the MessageContext, // so we'll know how to serialize types associated // with this request MessageContext msgContext = MessageContext.getCurrentContext(); if (msgContext != null) { msgContext.setProperty(Constants.ENV_ADDRESSING_NAMESPACE_URI, elem.getElementName().getURI()); } if (this.action != null) { this.addrHeaderFault = new AddressingHeaderFault("duplicate Action header", AddressingHeaderFault.INVALID_CARDINALITY, Constants.ACTION); } URI uri = new URI(TextExtractor.getText(elem), allowNonSpecificActions); this.action = new Action(uri); }