Skip to content

Commit 10de93f

Browse files
veithengregturn
authored andcommitted
SWS-1005 - Use correct default content type for SOAP 1.2 with Axiom
SaajSoapMessageFactory consistently accepts SOAP messages without Content-Type header, but AxiomSoapMessageFactory triggers an error with SOAP 1.2 in this case. This change fixes this and ensures consistency between the two message factories.
1 parent fbec612 commit 10de93f

File tree

4 files changed

+29
-2
lines changed

4 files changed

+29
-2
lines changed

spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapMessageFactory.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676
* distribution.
7777
*
7878
* @author Arjen Poutsma
79+
* @author Andreas Veithen
7980
* @see AxiomSoapMessage
8081
* @see #setPayloadCaching(boolean)
8182
* @since 1.0.0
@@ -228,9 +229,9 @@ public AxiomSoapMessage createWebServiceMessage(InputStream inputStream) throws
228229
if (!StringUtils.hasLength(contentType)) {
229230
if (logger.isDebugEnabled()) {
230231
logger.debug("TransportInputStream has no Content-Type header; defaulting to \"" +
231-
SoapVersion.SOAP_11.getContentType() + "\"");
232+
soapFactory.getSOAPVersion().getMediaType() + "\"");
232233
}
233-
contentType = SoapVersion.SOAP_11.getContentType();
234+
contentType = soapFactory.getSOAPVersion().getMediaType().toString();
234235
}
235236
String soapAction = getHeaderValue(transportInputStream, TransportConstants.HEADER_SOAP_ACTION);
236237
if (!StringUtils.hasLength(soapAction)) {

spring-ws-core/src/test/java/org/springframework/ws/soap/AbstractSoapMessageFactoryTestCase.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,7 @@ public void testCreateEmptySoapMessage() throws Exception {
4343

4444
@Test
4545
public abstract void testCreateSoapMessageMtom() throws Exception;
46+
47+
@Test
48+
public abstract void testCreateSoapMessageMissingContentType() throws Exception;
4649
}

spring-ws-core/src/test/java/org/springframework/ws/soap/soap11/AbstractSoap11MessageFactoryTestCase.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.springframework.ws.soap.soap11;
1818

1919
import java.io.InputStream;
20+
import java.util.Collections;
2021
import java.util.HashMap;
2122
import java.util.Iterator;
2223
import java.util.Map;
@@ -165,5 +166,16 @@ public void testCreateSoapMessageUtf16LittleEndianByteOrderMark() throws Excepti
165166
assertEquals("Invalid soap version", SoapVersion.SOAP_11, message.getVersion());
166167
}
167168

169+
@Override
170+
public void testCreateSoapMessageMissingContentType() throws Exception {
171+
InputStream is = AbstractSoap11MessageFactoryTestCase.class.getResourceAsStream("soap11.xml");
172+
TransportInputStream tis = new MockTransportInputStream(is, Collections.emptyMap());
173+
174+
WebServiceMessage message = messageFactory.createWebServiceMessage(tis);
175+
assertTrue("Not a SoapMessage", message instanceof SoapMessage);
176+
SoapMessage soapMessage = (SoapMessage) message;
177+
assertEquals("Invalid soap version", SoapVersion.SOAP_11, soapMessage.getVersion());
178+
}
179+
168180

169181
}

spring-ws-core/src/test/java/org/springframework/ws/soap/soap12/AbstractSoap12MessageFactoryTestCase.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.springframework.ws.soap.soap12;
1818

1919
import java.io.InputStream;
20+
import java.util.Collections;
2021
import java.util.HashMap;
2122
import java.util.Iterator;
2223
import java.util.Map;
@@ -107,5 +108,15 @@ public void testCreateSoapMessageMtom() throws Exception {
107108
assertNotNull("No attachment read", attachment);
108109
}
109110

111+
@Override
112+
public void testCreateSoapMessageMissingContentType() throws Exception {
113+
InputStream is = AbstractSoap12MessageFactoryTestCase.class.getResourceAsStream("soap12.xml");
114+
TransportInputStream tis = new MockTransportInputStream(is, Collections.emptyMap());
115+
116+
WebServiceMessage message = messageFactory.createWebServiceMessage(tis);
117+
assertTrue("Not a SoapMessage", message instanceof SoapMessage);
118+
SoapMessage soapMessage = (SoapMessage) message;
119+
assertEquals("Invalid soap version", SoapVersion.SOAP_12, soapMessage.getVersion());
120+
}
110121

111122
}

0 commit comments

Comments
 (0)