/* * Copyright 2005-2014 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.ws.soap.client.core; import java.io.IOException; import org.springframework.util.Assert; import org.springframework.util.StringUtils; import org.springframework.ws.WebServiceMessage; import org.springframework.ws.client.core.WebServiceMessageCallback; import org.springframework.ws.soap.SoapMessage; /** * {@link WebServiceMessageCallback} implementation that sets the SOAP Action header on the message. * * <p>A usage example with {@link org.springframework.ws.client.core.WebServiceTemplate}: * <pre> * WebServiceTemplate template = new WebServiceTemplate(messageFactory); * Result result = new DOMResult(); * template.sendSourceAndReceiveToResult( * new StringSource("<content xmlns=\"http://tempuri.org\"/>"), * new SoapActionCallback("http://tempuri.org/SOAPAction"), * result); * </pre> * * @author Arjen Poutsma * @since 1.0.0 */ public class SoapActionCallback implements WebServiceMessageCallback { private final String soapAction; /** Create a new {@code SoapActionCallback} with the given string SOAPAction. */ public SoapActionCallback(String soapAction) { if (!StringUtils.hasText(soapAction)) { soapAction = "\"\""; } this.soapAction = soapAction; } @Override public void doWithMessage(WebServiceMessage message) throws IOException { Assert.isInstanceOf(SoapMessage.class, message); SoapMessage soapMessage = (SoapMessage) message; soapMessage.setSoapAction(soapAction); } }