From 24823fc4ab40e549945fd1a16ffb4a7e4d912271 Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Sun, 14 Jan 2007 12:24:20 +0000 Subject: [PATCH] Axiom now sets soap action header when writing. --- .../springframework/ws/soap/axiom/AxiomSoapMessage.java | 8 +++++++- .../ws/soap/soap11/AbstractSoap11MessageTestCase.java | 6 ++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapMessage.java b/core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapMessage.java index c90782ad..1554b5e5 100644 --- a/core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapMessage.java +++ b/core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapMessage.java @@ -135,7 +135,12 @@ public class AxiomSoapMessage extends AbstractSoapMessage { } public void setSoapAction(String soapAction) { - this.soapAction = soapAction; + if (soapAction == null) { + this.soapAction = ""; + } + else { + this.soapAction = soapAction; + } } public Attachment getAttachment(String contentId) { @@ -178,6 +183,7 @@ public class AxiomSoapMessage extends AbstractSoapMessage { String contentType = format.getContentType(); contentType += "; charset=\"" + charsetEncoding + "\""; transportOutputStream.addHeader("Content-Type", contentType); + transportOutputStream.addHeader("SOAPAction", soapAction); } axiomMessage.serializeAndConsume(outputStream, format); } diff --git a/core/src/test/java/org/springframework/ws/soap/soap11/AbstractSoap11MessageTestCase.java b/core/src/test/java/org/springframework/ws/soap/soap11/AbstractSoap11MessageTestCase.java index af47b027..ae1ce476 100644 --- a/core/src/test/java/org/springframework/ws/soap/soap11/AbstractSoap11MessageTestCase.java +++ b/core/src/test/java/org/springframework/ws/soap/soap11/AbstractSoap11MessageTestCase.java @@ -17,7 +17,6 @@ package org.springframework.ws.soap.soap11; import java.io.ByteArrayOutputStream; -import java.util.Properties; import junit.framework.Assert; import org.springframework.core.io.ByteArrayResource; @@ -48,19 +47,22 @@ public abstract class AbstractSoap11MessageTestCase extends AbstractSoapMessageT public void testWriteToTransportOutputStream() throws Exception { ByteArrayOutputStream bos = new ByteArrayOutputStream(); StubTransportOutputStream tos = new StubTransportOutputStream(bos); + String soapAction = "http://springframework.org/spring-ws/Action"; + soapMessage.setSoapAction(soapAction); soapMessage.writeTo(tos); String result = bos.toString("UTF-8"); assertXMLEqual("
", result); String contentType = (String) tos.getHeaders().get("Content-Type"); assertTrue("Invalid Content-Type set", contentType.indexOf(SoapVersion.SOAP_11.getContentType()) != -1); + String resultSoapAction = (String) tos.getHeaders().get("SOAPAction"); + assertEquals("Invalid soap action", soapAction, resultSoapAction); } public void testWriteToTransportResponseAttachment() throws Exception { InputStreamSource inputStreamSource = new ByteArrayResource("contents".getBytes("UTF-8")); soapMessage.addAttachment(inputStreamSource, "text/plain"); ByteArrayOutputStream bos = new ByteArrayOutputStream(); - final Properties headers = new Properties(); StubTransportOutputStream tos = new StubTransportOutputStream(bos); soapMessage.writeTo(tos); String contentType = (String) tos.getHeaders().get("Content-Type");