@Override protected Map<String, Object> extractUserDefinedHeaders(SoapMessage source) { Map<String, Object> headers = new HashMap<String, Object>(); SoapHeader soapHeader = source.getSoapHeader(); if (soapHeader != null) { Iterator<?> attributeIter = soapHeader.getAllAttributes(); while (attributeIter.hasNext()) { Object name = attributeIter.next(); if (name instanceof QName) { String qnameString = QNameUtils.toQualifiedName((QName) name); String value = soapHeader.getAttributeValue((QName) name); if (value != null) { headers.put(qnameString, value); } } } Iterator<?> elementIter = soapHeader.examineAllHeaderElements(); while (elementIter.hasNext()) { Object element = elementIter.next(); if (element instanceof SoapHeaderElement) { QName qname = ((SoapHeaderElement) element).getName(); String qnameString = QNameUtils.toQualifiedName(qname); headers.put(qnameString, element); } } } return headers; }
@Test public void testCustomSoapHeader() { DefaultSoapHeaderMapper mapper = new DefaultSoapHeaderMapper(); mapper.setReplyHeaderNames("x:attr", "x:elem"); SoapMessage soapMessage = mock(SoapMessage.class); SoapHeader soapHeader = mock(SoapHeader.class); @SuppressWarnings("unchecked") Iterator<QName> attrIterator = mock(Iterator.class); QName attribute = new QName("http://x", "attr", "x"); @SuppressWarnings("unchecked") Iterator<SoapHeaderElement> elementIterator = mock(Iterator.class); SoapHeaderElement soapHeaderElement = mock(SoapHeaderElement.class); QName element = new QName("http://x", "elem", "x"); when(soapMessage.getSoapHeader()).thenReturn(soapHeader); when(soapHeader.getAllAttributes()).thenReturn(attrIterator); when(attrIterator.hasNext()).thenReturn(true).thenReturn(false); when(attrIterator.next()).thenReturn(attribute); when(soapHeader.getAttributeValue(attribute)).thenReturn("attrValue"); when(soapHeader.examineAllHeaderElements()).thenReturn(elementIterator); when(elementIterator.hasNext()).thenReturn(true).thenReturn(false); when(elementIterator.next()).thenReturn(soapHeaderElement); when(soapHeaderElement.getName()).thenReturn(element); Map<String, Object> headers = mapper.toHeadersFromReply(soapMessage); assertEquals(2, headers.size()); assertEquals("attrValue", headers.get("x:attr")); assertSame(soapHeaderElement, headers.get("x:elem")); }
@Override protected void populateUserDefinedHeader(String headerName, Object headerValue, SoapMessage target) { SoapHeader soapHeader = target.getSoapHeader(); if (headerValue instanceof String) { QName qname = QNameUtils.parseQNameString(headerName); soapHeader.addAttribute(qname, (String) headerValue); } else if (headerValue instanceof Source) { Result result = soapHeader.getResult(); try { this.transformerHelper.transform((Source) headerValue, result); } catch (TransformerException e) { throw new SoapHeaderException( "Could not transform source [" + headerValue + "] to result [" + result + "]", e); } } }
SoapMessage msg = ... SoapHeader header = msg.getSoapHeader(); XmlBeansMarshaller marshaller = ... MyXmlBeansDocument doc = ... marshaller.marshal(doc, header.getResult());
WebServiceMessage webServiceMessageRequest = messageContext_.getRequest(); SoapMessage soapMessage = (SoapMessage) webServiceMessageRequest; SoapHeader soapHeader = soapMessage.getSoapHeader()
SoapHeader soapHeader = ((SoapMessage) wsMessage).getSoapHeader(); assertNotNull(soapHeader.getAttributeValue(QNameUtils.parseQNameString("foo"))); assertNotNull(soapHeader.getAttributeValue(QNameUtils.parseQNameString("foobar"))); if (soap) { ((SoapMessage) wsMessage).getSoapHeader().addAttribute(QNameUtils.parseQNameString("bar"), "bar"); ((SoapMessage) wsMessage).getSoapHeader().addAttribute(QNameUtils.parseQNameString("baz"), "baz");
public final boolean handleResponse(MessageContext messageContext, Object endpoint) throws Exception { QName v1ResponseHeaderQName = null;//todo QName statusAttrQName = null;//todo SoapMessage message = (SoapMessage) messageContext.getResponse(); Iterator<SoapHeaderElement> matchingHeaders = message.getSoapHeader().examineHeaderElements(v1ResponseHeaderQName); String status = matchingHeaders.next().getAttributeValue(statusAttrQName); }
public class LisResponseInterceptor extends EndpointInterceptorAdapter { @Override public boolean handleResponse(MessageContext messageContext, Object endpoint{ return true; } @Override public boolean handleRequest(MessageContext messageContext, Object endpoint){ return true; } @Override public boolean handleFault(MessageContext messageContext, Object endpoint){ SoapMessage response = (SoapMessage) messageContext.getResponse(); SoapHeader header = response.getSoapHeader(); header.addHeaderElement(new QName("ims","imsx_syncRequestHeaderInfo")); return true; } }
private boolean supports(AddressingVersion version, SoapMessage request) { SoapHeader header = request.getSoapHeader(); if (header != null) { for (Iterator<SoapHeaderElement> iterator = header.examineAllHeaderElements(); iterator.hasNext();) { SoapHeaderElement headerElement = iterator.next(); if (version.understands(headerElement)) { return true; } } } return false; }
private boolean supports(AddressingVersion version, SoapMessage request) { SoapHeader header = request.getSoapHeader(); if (header != null) { for (Iterator<SoapHeaderElement> iterator = header.examineAllHeaderElements(); iterator.hasNext();) { SoapHeaderElement headerElement = iterator.next(); if (version.understands(headerElement)) { return true; } } } return false; }
private boolean supports(AddressingVersion version, SoapMessage request) { SoapHeader header = request.getSoapHeader(); if (header != null) { for (Iterator<SoapHeaderElement> iterator = header.examineAllHeaderElements(); iterator.hasNext();) { SoapHeaderElement headerElement = iterator.next(); if (version.understands(headerElement)) { return true; } } } return false; }
private boolean supports(AddressingVersion version, SoapMessage request) { SoapHeader header = request.getSoapHeader(); if (header != null) { for (Iterator<SoapHeaderElement> iterator = header.examineAllHeaderElements(); iterator.hasNext();) { SoapHeaderElement headerElement = iterator.next(); if (version.understands(headerElement)) { return true; } } } return false; }
getWebServiceTemplate().marshalSendAndReceive("https://soap.endpoint", requestObj, new WebServiceMessageCallback() { public void doWithMessage(WebServiceMessage message) { try { SoapMessage soapMessage = (SoapMessage)message; SoapHeader header = soapMessage.getSoapHeader(); StringSource headerSource = new StringSource("<Security><UsernameToken><SiteId>testlab1</SiteId>"+ "<Password>abcd1234</Password></UsernameToken></Security> "); Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.transform(headerSource, header.getResult()); } catch (Exception e) { // exception handling } } });
private Element getSoapHeaderElement(SoapMessage message) { Source source = message.getSoapHeader().getSource(); if (source instanceof DOMSource) { DOMSource domSource = (DOMSource) source; if (domSource.getNode() != null && domSource.getNode().getNodeType() == Node.ELEMENT_NODE) { return (Element) domSource.getNode(); } } try { DOMResult domResult = new DOMResult(); transform(source, domResult); Document document = (Document) domResult.getNode(); return document.getDocumentElement(); } catch (TransformerException ex) { throw new AddressingException("Could not transform SoapHeader to Document", ex); } }
private Element getSoapHeaderElement(SoapMessage message) { Source source = message.getSoapHeader().getSource(); if (source instanceof DOMSource) { DOMSource domSource = (DOMSource) source; if (domSource.getNode() != null && domSource.getNode().getNodeType() == Node.ELEMENT_NODE) { return (Element) domSource.getNode(); } } try { DOMResult domResult = new DOMResult(); transform(source, domResult); Document document = (Document) domResult.getNode(); return document.getDocumentElement(); } catch (TransformerException ex) { throw new AddressingException("Could not transform SoapHeader to Document", ex); } }
private void copySoapHeaderData(final org.springframework.ws.soap.SoapMessage soapRequest, final SoapMessage soapMessage, final TransformerFactory transformerFactory) { for (final String headerData : soapMessage.getHeaderData()) { try { final Transformer transformer = transformerFactory.newTransformer(); transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); transformer.transform(new StringSource(headerData), soapRequest.getSoapHeader().getResult()); } catch (final TransformerException e) { throw new CitrusRuntimeException("Failed to write SOAP header content", e); } } }
public Object resolveArgument(MessageContext messageContext, MethodParameter parameter) throws Exception { Assert.isInstanceOf(SoapMessage.class, messageContext.getRequest()); SoapMessage request = (SoapMessage) messageContext.getRequest(); org.springframework.ws.soap.SoapHeader soapHeader = request.getSoapHeader(); String paramValue = parameter.getParameterAnnotation(SoapHeader.class).value(); Assert.isTrue(QNameUtils.validateQName(paramValue), "Invalid header qualified name [" + paramValue + "]. " + "QName must be of the form '{namespace}localPart'."); QName qname = QName.valueOf(paramValue); Class<?> parameterType = parameter.getParameterType(); if (SoapHeaderElement.class.equals(parameterType)) { return extractSoapHeader(qname, soapHeader); } else if (List.class.equals(parameterType)) { return extractSoapHeaderList(qname, soapHeader); } // should not happen throw new UnsupportedOperationException(); }
@Override protected void match(SoapMessage soapMessage) throws IOException, AssertionError { SoapHeader soapHeader = soapMessage.getSoapHeader(); assertTrue("SOAP message [" + soapMessage + "] does not contain SOAP header", soapHeader != null, "Envelope", soapMessage.getEnvelope().getSource()); Iterator<SoapHeaderElement> soapHeaderElementIterator = soapHeader.examineAllHeaderElements(); boolean found = false; while (soapHeaderElementIterator.hasNext()) { SoapHeaderElement soapHeaderElement = soapHeaderElementIterator.next(); if (soapHeaderName.equals(soapHeaderElement.getName())) { found = true; break; } } assertTrue("SOAP header [" + soapHeaderName + "] not found", found, "Envelope", soapMessage.getEnvelope().getSource()); } }
/** * Populates soap message headers and attachments from soap response * * @param inOrOut * {@link Message} * @param soapMessage * {@link SoapMessage} */ private void populateHeaderAndAttachmentsFromResponse(Message inOrOut, SoapMessage soapMessage) { if (soapMessage.getSoapHeader() != null && getEndpoint().getConfiguration().isAllowResponseHeaderOverride()) { populateMessageHeaderFromResponse(inOrOut, soapMessage.getSoapHeader()); } if (soapMessage.getAttachments() != null && getEndpoint().getConfiguration().isAllowResponseAttachmentOverride()) { populateMessageAttachmentsFromResponse(inOrOut, soapMessage.getAttachments()); } }
protected void serializeContextToSoapHeader(final WebServiceMessage message, final Channel channel) { if (message instanceof SoapMessage) { final SoapMessage soapMessage = (SoapMessage) message; final TraceeFilterConfiguration filterConfiguration = backend.getConfiguration(profile); if (!backend.isEmpty() && filterConfiguration.shouldProcessContext(channel)) { final SoapHeader soapHeader = soapMessage.getSoapHeader(); if (soapHeader != null) { final Map<String, String> context = filterConfiguration.filterDeniedParams(backend.copyToMap(), channel); soapHeaderTransport.renderSoapHeader(context, soapHeader.getResult()); } } } else { logger.info("Message is obviously no soap message - Not instance of Spring-WS SoapMessage"); } } }