/** * 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(); } }
/** * 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(); } } }
/** * 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(); } }