You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2021/03/12 14:09:08 UTC

[camel] 01/02: CAMEL-16344: camel-spring-ws - Skip Content-Type as SOAP:ENV response header

This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit c52152eb1d9076059ce425f31bccd6e367141542
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Mar 12 14:23:44 2021 +0100

    CAMEL-16344: camel-spring-ws - Skip Content-Type as SOAP:ENV response header
---
 .../spring/ws/filter/impl/BasicMessageFilter.java       | 12 +++++++++++-
 .../filter/impl/HeaderTransformationMessageFilter.java  | 17 +++++++++++------
 2 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/filter/impl/BasicMessageFilter.java b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/filter/impl/BasicMessageFilter.java
index 358f275..6a7e2e4 100644
--- a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/filter/impl/BasicMessageFilter.java
+++ b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/filter/impl/BasicMessageFilter.java
@@ -36,6 +36,13 @@ import org.springframework.ws.soap.SoapMessage;
  */
 public class BasicMessageFilter implements MessageFilter {
 
+    /**
+     * Whether a header is valid
+     */
+    protected boolean validHeaderName(String name) {
+        return !"Content-Type".equalsIgnoreCase(name);
+    }
+
     @Override
     public void filterProducer(Exchange exchange, WebServiceMessage response) {
         if (exchange != null) {
@@ -110,8 +117,11 @@ public class BasicMessageFilter implements MessageFilter {
         headerKeySet.remove(Exchange.BREADCRUMB_ID);
 
         for (String name : headerKeySet) {
-            Object value = headers.get(name);
+            if (!validHeaderName(name)) {
+                continue;
+            }
 
+            Object value = headers.get(name);
             if (value instanceof QName) {
                 soapHeader.addHeaderElement((QName) value);
             } else {
diff --git a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/filter/impl/HeaderTransformationMessageFilter.java b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/filter/impl/HeaderTransformationMessageFilter.java
index a3e712b..8366032 100644
--- a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/filter/impl/HeaderTransformationMessageFilter.java
+++ b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/filter/impl/HeaderTransformationMessageFilter.java
@@ -49,13 +49,17 @@ public class HeaderTransformationMessageFilter implements MessageFilter {
     private String xslt;
     private boolean saxon;
 
-    /**
-     * @param xslt
-     */
     public HeaderTransformationMessageFilter(String xslt) {
         this.xslt = xslt;
     }
 
+    /**
+     * Whether a header is valid
+     */
+    protected boolean validHeaderName(String name) {
+        return !"Content-Type".equalsIgnoreCase(name);
+    }
+
     @Override
     public void filterProducer(Exchange exchange, WebServiceMessage webServiceMessage) {
         if (exchange != null) {
@@ -99,15 +103,16 @@ public class HeaderTransformationMessageFilter implements MessageFilter {
 
     /**
      * Adding the headers of the message as parameter to the transformer
-     * 
-     * @param inOrOut
-     * @param transformer
      */
     private void addParameters(Message inOrOut, Transformer transformer) {
         Map<String, Object> headers = inOrOut.getHeaders();
         for (Map.Entry<String, Object> headerEntry : headers.entrySet()) {
             String key = headerEntry.getKey();
 
+            if (!validHeaderName(key)) {
+                continue;
+            }
+
             // Key's with '$' are not allowed in XSLT
             if (key != null && !key.startsWith("$")) {
                 transformer.setParameter(key, String.valueOf(headerEntry.getValue()));