private SoapHeaderElement extractSoapHeader(QName qname, org.springframework.ws.soap.SoapHeader soapHeader) { Iterator<SoapHeaderElement> elements = soapHeader.examineAllHeaderElements(); while (elements.hasNext()) { SoapHeaderElement e = elements.next(); if (e.getName().equals(qname)) { return e; } } return null; }
@Override public void doWithMessage(WebServiceMessage webServiceMessage) throws IOException, TransformerException { SoapHeader soapHeader = ((SoapMessage)webServiceMessage).getSoapHeader(); try { JAXBContext context = JAXBContext.newInstance( MessageHeader.class, Security.class ); Marshaller marshaller = context.createMarshaller(); marshaller.marshal( header, soapHeader.getResult() ); marshaller.marshal( security, soapHeader.getResult() ); } catch (JAXBException e) { e.printStackTrace(); } }
@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); } } }
@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; }
assertNotNull(soapHeader.getAttributeValue(QNameUtils.parseQNameString("foo"))); assertNotNull(soapHeader.getAttributeValue(QNameUtils.parseQNameString("foobar"))); assertNotNull(soapHeader.getAttributeValue(QNameUtils.parseQNameString("abaz"))); assertNull(soapHeader.getAttributeValue(QNameUtils.parseQNameString("bar"))); if (soap) { ((SoapMessage) wsMessage).getSoapHeader().addAttribute(QNameUtils.parseQNameString("bar"), "bar"); ((SoapMessage) wsMessage).getSoapHeader().addAttribute(QNameUtils.parseQNameString("baz"), "baz");
public void addAddressingHeaders(SoapMessage message, MessageAddressingProperties map) { SoapHeader header = message.getSoapHeader(); header.addNamespaceDeclaration(getNamespacePrefix(), getNamespaceUri()); SoapHeaderElement to = header.addHeaderElement(getToName()); to.setText(map.getTo().toString()); to.setMustUnderstand(true); SoapHeaderElement from = header.addHeaderElement(getFromName()); addEndpointReference(from, map.getFrom()); SoapHeaderElement replyTo = header.addHeaderElement(getReplyToName()); addEndpointReference(replyTo, map.getReplyTo()); SoapHeaderElement faultTo = header.addHeaderElement(getFaultToName()); addEndpointReference(faultTo, map.getFaultTo()); SoapHeaderElement action = header.addHeaderElement(getActionName()); action.setText(map.getAction().toString()); SoapHeaderElement messageId = header.addHeaderElement(getMessageIdName()); messageId.setText(map.getMessageId().toString()); SoapHeaderElement relatesTo = header.addHeaderElement(getRelatesToName()); relatesTo.setText(map.getRelatesTo().toString()); addReferenceNodes(header.getResult(), map.getReferenceParameters()); addReferenceNodes(header.getResult(), map.getReferenceProperties());
/** * Populates message headers from soapHeader response * * @param message * Message * @param soapHeader * SoapHeader */ private void populateMessageHeaderFromResponse(Message message, SoapHeader soapHeader) { message.setHeader(SpringWebserviceConstants.SPRING_WS_SOAP_HEADER, soapHeader.getSource()); // Set header values for the soap header attributes Iterator<QName> attIter = soapHeader.getAllAttributes(); while (attIter.hasNext()) { QName name = attIter.next(); message.getHeaders().put(name.getLocalPart(), soapHeader.getAttributeValue(name)); } // Set header values for the soap header elements Iterator<SoapHeaderElement> elementIter = soapHeader.examineAllHeaderElements(); while (elementIter.hasNext()) { SoapHeaderElement element = elementIter.next(); QName name = element.getName(); message.getHeaders().put(name.getLocalPart(), element); } } /**
final Iterator<?> iter = soapHeader.examineAllHeaderElements(); while (iter.hasNext()) { final SoapHeaderElement headerEntry = (SoapHeaderElement) iter.next(); if (soapHeader.getSource() != null) { final StringResult headerData = new StringResult(); final TransformerFactory transformerFactory = TransformerFactory.newInstance(); final Transformer transformer = transformerFactory.newTransformer(); transformer.transform(soapHeader.getSource(), headerData);
/** * Transform the header * @param context * @param inOrOut * @param webServiceMessage */ private void processHeader(CamelContext context, Message inOrOut, WebServiceMessage webServiceMessage) { if (webServiceMessage instanceof SoapMessage) { SoapMessage soapMessage = (SoapMessage) webServiceMessage; try { XsltUriResolver resolver = new XsltUriResolver(context, xslt); Source stylesheetResource = resolver.resolve(xslt, null); TransformerFactory transformerFactory = getTransformerFactory(context); Transformer transformer = transformerFactory.newTransformer(stylesheetResource); addParameters(inOrOut, transformer); transformer.transform(soapMessage.getSoapHeader().getSource(), soapMessage.getSoapHeader().getResult()); } catch (TransformerException e) { throw new RuntimeException("Cannot transform the header of the soap message", e); } } }
headerElement = response.getSoapHeader().addHeaderElement(qname); } else { headerElement = response.getSoapHeader().addHeaderElement(getDefaultQName(headerEntry.getKey())); response.getSoapHeader().getResult());
private Element getSoapHeaderElement(SoapMessage message) { SoapHeader header = message.getSoapHeader(); if (header.getSource() instanceof DOMSource) { DOMSource domSource = (DOMSource) header.getSource(); if (domSource.getNode() != null && domSource.getNode().getNodeType() == Node.ELEMENT_NODE) { return (Element) domSource.getNode(); } } try { DOMResult domResult = new DOMResult(); transform(header.getSource(), domResult); Document document = (Document) domResult.getNode(); return document.getDocumentElement(); } catch (TransformerException ex) { throw new AddressingException("Could not transform SoapHeader to Document", ex); } }
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; } }
soapHeader.addHeaderElement((QName)value); } else { if (value instanceof String) { soapHeader.addAttribute(new QName(name), value + "");
@Override public void addAddressingHeaders(SoapMessage message, MessageAddressingProperties map) { SoapHeader header = message.getSoapHeader(); header.addNamespaceDeclaration(getNamespacePrefix(), getNamespaceUri()); SoapHeaderElement to = header.addHeaderElement(getToName()); to.setText(map.getTo().toString()); to.setMustUnderstand(true); SoapHeaderElement from = header.addHeaderElement(getFromName()); addEndpointReference(from, map.getFrom()); SoapHeaderElement replyTo = header.addHeaderElement(getReplyToName()); addEndpointReference(replyTo, map.getReplyTo()); SoapHeaderElement faultTo = header.addHeaderElement(getFaultToName()); addEndpointReference(faultTo, map.getFaultTo()); SoapHeaderElement action = header.addHeaderElement(getActionName()); action.setText(map.getAction().toString()); SoapHeaderElement messageId = header.addHeaderElement(getMessageIdName()); messageId.setText(map.getMessageId().toString()); SoapHeaderElement relatesTo = header.addHeaderElement(getRelatesToName()); relatesTo.setText(map.getRelatesTo().toString()); addReferenceNodes(header.getResult(), map.getReferenceParameters()); addReferenceNodes(header.getResult(), map.getReferenceProperties());
headers.put(SpringWebserviceConstants.SPRING_WS_SOAP_HEADER, soapHeader.getSource()); Iterator<QName> attIter = soapHeader.getAllAttributes(); while (attIter.hasNext()) { QName name = attIter.next(); headers.put(name.getLocalPart(), soapHeader.getAttributeValue(name)); Iterator<SoapHeaderElement> elementIter = soapHeader.examineAllHeaderElements(); while (elementIter.hasNext()) { SoapHeaderElement element = elementIter.next();
@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")); }
Iterator<?> iter = soapHeader.examineAllHeaderElements(); while (iter.hasNext()) { SoapHeaderElement headerEntry = (SoapHeaderElement) iter.next(); if (soapHeader.getSource() != null) { StringResult headerData = new StringResult(); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(soapHeader.getSource(), headerData);
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 copySoapHeaders(final WebServiceEndpointConfiguration endpointConfiguration, final org.springframework.ws.soap.SoapMessage soapRequest, final SoapMessage soapMessage) { for (final Entry<String, Object> headerEntry : soapMessage.getHeaders().entrySet()) { if (MessageHeaderUtils.isSpringInternalHeader(headerEntry.getKey())) { continue; } if (headerEntry.getKey().equalsIgnoreCase(SoapMessageHeaders.SOAP_ACTION)) { soapRequest.setSoapAction(headerEntry.getValue().toString()); } else if (headerEntry.getKey().toLowerCase().startsWith(SoapMessageHeaders.HTTP_PREFIX)) { handleOutboundMimeMessageHeader(soapRequest, headerEntry.getKey().substring(SoapMessageHeaders.HTTP_PREFIX.length()), headerEntry.getValue(), endpointConfiguration.isHandleMimeHeaders()); } else if (!headerEntry.getKey().startsWith(MessageHeaders.PREFIX)) { final SoapHeaderElement headerElement; if (QNameUtils.validateQName(headerEntry.getKey())) { headerElement = soapRequest.getSoapHeader().addHeaderElement(QNameUtils.parseQNameString(headerEntry.getKey())); } else { headerElement = soapRequest.getSoapHeader().addHeaderElement(new QName("", headerEntry.getKey(), "")); } headerElement.setText(headerEntry.getValue().toString()); } } }
private SoapHeaderElement extractSoapHeader(QName qname, org.springframework.ws.soap.SoapHeader soapHeader) { Iterator<SoapHeaderElement> elements = soapHeader.examineAllHeaderElements(); while (elements.hasNext()) { SoapHeaderElement e = elements.next(); if (e.getName().equals(qname)) { return e; } } return null; }