Refine search
@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; }
public final class MyEndpointInterceptorAdapter extends EndpointInterceptorAdapter { @Override public boolean handleResponse(MessageContext messageContext_, Object endpoint_) throws IOException { WebServiceMessage _webServiceMessage = messageContext_.getResponse(); SoapMessage _soapMessage = (SoapMessage) _webServiceMessage; if (_soapMessage != null) { SoapEnvelope _soapEnvelope = _soapMessage.getEnvelope(); // create your qname object QName _myQName = .... // adding your quname to the header _soapEnvelope.getHeader().addHeaderElement(myQName ); } } }
public boolean handleRequest(MessageContext messageContext, Object endpoint) throws Exception { if(isNotValid(messageContext)){ WebServiceMessage responseMsg = messageContext.getResponse(); SoapMessage soapMsg = (SoapMessage) responseMsg; soapMsg.getSoapBody().addClientOrSenderFault("error !", Locale.ENGLISH); return false; } else { return true; }
@Override protected void populateStandardHeaders(Map<String, Object> headers, SoapMessage target) { String soapAction = getHeaderIfAvailable(headers, WebServiceHeaders.SOAP_ACTION, String.class); if (StringUtils.hasText(soapAction)) { target.setSoapAction(soapAction); } else if (!StringUtils.hasText(target.getSoapAction())) { target.setSoapAction("\"\""); } }
Result payloadResult = new StreamResult(output); when(context.getResponse()).thenReturn(response); when(response.getPayloadResult()).thenReturn(payloadResult); when(response.getSoapBody()).thenReturn(soapBody); when(context.getRequest()).thenReturn(request); when(request.getPayloadSource()).thenReturn(payloadSource); when(context.getRequest()).thenReturn(request); when(request.getPayloadSource()).thenReturn(payloadSource);
public Object resolveArgument(MessageContext messageContext, MethodParameter parameter) { Assert.isInstanceOf(SoapMessage.class, messageContext.getRequest()); SoapMessage request = (SoapMessage) messageContext.getRequest(); Class<?> parameterType = parameter.getParameterType(); if (SoapMessage.class.equals(parameterType)) { return request; } else if (SoapBody.class.equals(parameterType)) { return request.getSoapBody(); } else if (SoapEnvelope.class.equals(parameterType)) { return request.getEnvelope(); } else if (SoapHeader.class.equals(parameterType)) { return request.getSoapHeader(); } // should not happen throw new UnsupportedOperationException(); } }
private String getSoapAction(MessageContext messageContext) { if (messageContext.getRequest() instanceof SoapMessage) { SoapMessage request = (SoapMessage)messageContext.getRequest(); String soapAction = request.getSoapAction(); if (StringUtils.hasLength(soapAction) && soapAction.startsWith(DOUBLE_QUOTE) && soapAction.endsWith(DOUBLE_QUOTE)) { return soapAction.substring(1, soapAction.length() - 1); } return soapAction; } return null; }
@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()); } }
private SoapFault addAddressingFault(SoapMessage message, QName subcode, String reason) { if (message.getSoapBody() instanceof Soap11Body) { Soap11Body soapBody = (Soap11Body) message.getSoapBody(); return soapBody.addFault(subcode, reason, Locale.ENGLISH); } else if (message.getSoapBody() instanceof Soap12Body) { Soap12Body soapBody = (Soap12Body) message.getSoapBody(); Soap12Fault soapFault = (Soap12Fault) soapBody.addClientOrSenderFault(reason, Locale.ENGLISH); soapFault.addFaultSubcode(subcode); return soapFault; } return null; }
@Override protected Source getSource(WebServiceMessage message) { if (message instanceof SoapMessage) { SoapMessage soapMessage = (SoapMessage) message; return soapMessage.getEnvelope().getSource(); } else { return null; } } }
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); }
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()); } } }
Document envelopeAsDocument = soapMessage.getDocument(); soapMessage.setDocument(envelopeAsDocument); soapMessage.getEnvelope().getHeader().removeHeaderElement(WS_SECURITY_NAME);
@Override 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 Map<String, Object> extractStandardHeaders(SoapMessage source) { final String soapAction = source.getSoapAction(); if (StringUtils.hasText(soapAction)) { Map<String, Object> headers = new HashMap<String, Object>(1); headers.put(WebServiceHeaders.SOAP_ACTION, soapAction); return headers; } else { return Collections.emptyMap(); } }
soapMessage.setSoapAction(soapAction); SoapHeader header = soapMessage.getSoapHeader(); Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.transform(getSecurityHeaderSource(), header.getResult()); soapMessage.writeTo(new LoggingOutputStream(log));
/** * 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()); } }
@Override protected void secureMessage(SoapMessage soapMessage, MessageContext messageContext) throws WsSecuritySecurementException { List<HandlerAction> securementActionsVector = new ArrayList<HandlerAction>(); try { securementActionsVector = WSSecurityUtil.decodeHandlerAction(securementActions, wssConfig); } catch (WSSecurityException ex) { throw new Wss4jSecuritySecurementException(ex.getMessage(), ex); } if (securementActionsVector.isEmpty() && !enableSignatureConfirmation) { return; } if (logger.isDebugEnabled()) { logger.debug("Securing message [" + soapMessage + "] with actions [" + securementActions + "]"); } RequestData requestData = initializeRequestData(messageContext); Document envelopeAsDocument = soapMessage.getDocument(); try { handler.doSenderAction(envelopeAsDocument, requestData, securementActionsVector, false); } catch (WSSecurityException ex) { throw new Wss4jSecuritySecurementException(ex.getMessage(), ex); } soapMessage.setDocument(envelopeAsDocument); }
public final class ClientMessageCallBack implements WebServiceMessageCallback { /**the soapAction to be appended to the soap message.*/ private String soapAction; /**constructor. * @param action the soapAction to be set.*/ public ClientMessageCallBack(final String action) { this.soapAction = action; } @Override public void doWithMessage(final WebServiceMessage message) throws IOException, TransformerException { if (message instanceof SoapMessage) { SoapMessage soapMessage = (SoapMessage) message; soapMessage.setSoapAction(soapAction); } } }
@Override protected void match(SoapMessage soapMessage) throws IOException, AssertionError { Document actualDocument = soapMessage.getDocument(); Document expectedDocument = createDocumentFromSource(expected); Diff diff = new Diff(expectedDocument, actualDocument); assertTrue("Envelopes are different, " + diff.toString(), diff.similar()); }