Skip to content

Commit 439d845

Browse files
author
Corneil du Plessis
authored
Update SaajSoapMessageFactory to only split mime related headers. (#1423)
Fixes #1421
1 parent 071f344 commit 439d845

File tree

1 file changed

+21
-11
lines changed

1 file changed

+21
-11
lines changed

spring-ws-core/src/main/java/org/springframework/ws/soap/saaj/SaajSoapMessageFactory.java

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,6 @@
1616

1717
package org.springframework.ws.soap.saaj;
1818

19-
import jakarta.xml.soap.MessageFactory;
20-
import jakarta.xml.soap.MimeHeaders;
21-
import jakarta.xml.soap.SOAPConstants;
22-
import jakarta.xml.soap.SOAPException;
23-
import jakarta.xml.soap.SOAPMessage;
24-
2519
import java.io.BufferedInputStream;
2620
import java.io.IOException;
2721
import java.io.InputStream;
@@ -30,8 +24,15 @@
3024
import java.util.Map;
3125
import java.util.StringTokenizer;
3226

27+
import jakarta.xml.soap.MessageFactory;
28+
import jakarta.xml.soap.MimeHeaders;
29+
import jakarta.xml.soap.SOAPConstants;
30+
import jakarta.xml.soap.SOAPException;
31+
import jakarta.xml.soap.SOAPMessage;
3332
import org.apache.commons.logging.Log;
3433
import org.apache.commons.logging.LogFactory;
34+
import org.xml.sax.SAXParseException;
35+
3536
import org.springframework.beans.factory.InitializingBean;
3637
import org.springframework.util.CollectionUtils;
3738
import org.springframework.util.ObjectUtils;
@@ -43,7 +44,6 @@
4344
import org.springframework.ws.soap.saaj.support.SaajUtils;
4445
import org.springframework.ws.transport.TransportConstants;
4546
import org.springframework.ws.transport.TransportInputStream;
46-
import org.xml.sax.SAXParseException;
4747

4848
/**
4949
* SAAJ-specific implementation of the {@link org.springframework.ws.WebServiceMessageFactory WebServiceMessageFactory}.
@@ -55,6 +55,7 @@
5555
*
5656
* @author Arjen Poutsma
5757
* @author Greg Turnquist
58+
* @author Corneil du Plessis
5859
* @see org.springframework.ws.soap.saaj.SaajSoapMessage
5960
* @since 1.0.0
6061
*/
@@ -222,18 +223,27 @@ private MimeHeaders parseMimeHeaders(InputStream inputStream) throws IOException
222223
TransportInputStream transportInputStream = (TransportInputStream) inputStream;
223224
for (Iterator<String> headerNames = transportInputStream.getHeaderNames(); headerNames.hasNext();) {
224225
String headerName = headerNames.next();
225-
for (Iterator<String> headerValues = transportInputStream.getHeaders(headerName); headerValues.hasNext();) {
226+
for (Iterator<String> headerValues = transportInputStream.getHeaders(headerName); headerValues.hasNext(); ) {
226227
String headerValue = headerValues.next();
227-
StringTokenizer tokenizer = new StringTokenizer(headerValue, ",");
228-
while (tokenizer.hasMoreTokens()) {
229-
mimeHeaders.addHeader(headerName, tokenizer.nextToken().trim());
228+
if (isMimeHeader(headerName)) {
229+
StringTokenizer tokenizer = new StringTokenizer(headerValue, ",");
230+
while (tokenizer.hasMoreTokens()) {
231+
mimeHeaders.addHeader(headerName, tokenizer.nextToken().trim());
232+
}
233+
} else {
234+
mimeHeaders.addHeader(headerName, headerValue);
230235
}
231236
}
232237
}
233238
}
234239
return mimeHeaders;
235240
}
236241

242+
private boolean isMimeHeader(String headerName) {
243+
String lowerHeaderName = headerName.toLowerCase();
244+
return lowerHeaderName.startsWith("content-") || lowerHeaderName.startsWith("mime-");
245+
}
246+
237247
/**
238248
* Checks for the UTF-8 Byte Order Mark, and removes it if present. The SAAJ RI cannot cope with these BOMs.
239249
*

0 commit comments

Comments
 (0)