You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by as...@apache.org on 2016/04/13 23:13:56 UTC

[1/2] cxf git commit: [CXF-6867] Ensure Envelope and Body element prefixes are not changed when processing messages without headers

Repository: cxf
Updated Branches:
  refs/heads/3.1.x-fixes 4a749e745 -> c7234f413


[CXF-6867] Ensure Envelope and Body element prefixes are not changed when processing messages without headers


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/bbc3ca28
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/bbc3ca28
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/bbc3ca28

Branch: refs/heads/3.1.x-fixes
Commit: bbc3ca287cca8cf982b62fb85c6a2bbc5bb59754
Parents: 4a749e7
Author: Alessio Soldano <as...@redhat.com>
Authored: Wed Apr 13 23:02:56 2016 +0200
Committer: Alessio Soldano <as...@redhat.com>
Committed: Wed Apr 13 23:08:53 2016 +0200

----------------------------------------------------------------------
 .../interceptor/ReadHeadersInterceptor.java     | 21 ++++++++++++++++++++
 .../binding/soap/saaj/SAAJInInterceptor.java    | 10 ++++++++++
 .../cxf/binding/soap/saaj/SAAJStreamWriter.java | 17 ++--------------
 .../apache/cxf/binding/soap/saaj/SAAJUtils.java | 17 ++++++++++++++++
 4 files changed, 50 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/bbc3ca28/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.java
----------------------------------------------------------------------
diff --git a/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.java b/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.java
index 269ef4d..6bfa3a3 100644
--- a/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.java
+++ b/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.java
@@ -70,6 +70,8 @@ public class ReadHeadersInterceptor extends AbstractSoapInterceptor {
     
     public static final String ENVELOPE_EVENTS = "envelope.events";
     public static final String BODY_EVENTS = "body.events";
+    public static final String ENVELOPE_PREFIX = "envelope.prefix";
+    public static final String BODY_PREFIX = "body.prefix";
     /**
      * 
      */
@@ -205,6 +207,8 @@ public class ReadHeadersInterceptor extends AbstractSoapInterceptor {
                     } else {
                         message.put(ENVELOPE_EVENTS, processor.getEnvAttributeAndNamespaceEvents());
                         message.put(BODY_EVENTS, processor.getBodyAttributeAndNamespaceEvents());
+                        message.put(ENVELOPE_PREFIX, processor.getEnvelopePrefix());
+                        message.put(BODY_PREFIX, processor.getBodyPrefix());
                     }
                     if (addNC) {
                         // add the Body-level declarations
@@ -326,6 +330,8 @@ public class ReadHeadersInterceptor extends AbstractSoapInterceptor {
         private Document doc;
         private Node parent;
         private QName lastStartElementQName;
+        private String envelopePrefix;
+        private String bodyPrefix;
 
         HeadersProcessor(SoapVersion version) {
             this.header = version.getHeader().getLocalPart();
@@ -409,6 +415,13 @@ public class ReadHeadersInterceptor extends AbstractSoapInterceptor {
                         throw new Fault(e);
                     }
                 } else {
+                    if (ns.equals(lastStartElementQName.getNamespaceURI())) {
+                        if (body.equals(lastStartElementQName.getLocalPart())) {
+                            bodyPrefix = lastStartElementQName.getPrefix();
+                        } else if (envelope.equals(lastStartElementQName.getLocalPart())) {
+                            envelopePrefix = lastStartElementQName.getPrefix();
+                        }
+                    }
                     events.add(event);
                 }
             } else {
@@ -445,5 +458,13 @@ public class ReadHeadersInterceptor extends AbstractSoapInterceptor {
                 return Collections.unmodifiableList(envEvents);
             }
         }
+        
+        public String getEnvelopePrefix() {
+            return envelopePrefix;
+        }
+        
+        public String getBodyPrefix() {
+            return bodyPrefix;
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/cxf/blob/bbc3ca28/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java
----------------------------------------------------------------------
diff --git a/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java b/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java
index 51afbf5..516bf89 100644
--- a/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java
+++ b/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java
@@ -193,6 +193,10 @@ public class SAAJInInterceptor extends AbstractSoapInterceptor {
                 StaxUtils.copy(node, new SAAJStreamWriter(part));
             } else {
                 SOAPEnvelope env = soapMessage.getSOAPPart().getEnvelope();
+                if (node == null) {
+                    adjustPrefixes(env, (String)message.get(ReadHeadersInterceptor.ENVELOPE_PREFIX),
+                                   (String)message.get(ReadHeadersInterceptor.BODY_PREFIX));
+                }
                 List<XMLEvent> events = (List<XMLEvent>)message.get(ReadHeadersInterceptor.ENVELOPE_EVENTS);
                 applyEvents(events, env);
                 SOAPBody body = soapMessage.getSOAPBody();
@@ -258,6 +262,12 @@ public class SAAJInInterceptor extends AbstractSoapInterceptor {
                     .getVersion().getSender());
         }
     }
+    
+    private static void adjustPrefixes(SOAPEnvelope env, String envPrefix, String bodyPrefix) throws SOAPException {
+        SAAJUtils.adjustPrefix(env, envPrefix);
+        SAAJUtils.adjustPrefix(env.getBody(), bodyPrefix);
+        SAAJUtils.adjustPrefix(env.getHeader(), envPrefix);
+    }
 
     private static void applyEvents(List<XMLEvent> events, SOAPElement el) throws SOAPException {
         if (events != null) {

http://git-wip-us.apache.org/repos/asf/cxf/blob/bbc3ca28/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJStreamWriter.java
----------------------------------------------------------------------
diff --git a/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJStreamWriter.java b/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJStreamWriter.java
index f96a14d..14b5c2e 100644
--- a/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJStreamWriter.java
+++ b/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJStreamWriter.java
@@ -32,6 +32,8 @@ import org.w3c.dom.Node;
 import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.staxutils.OverlayW3CDOMStreamWriter;
 
+import static org.apache.cxf.binding.soap.saaj.SAAJUtils.adjustPrefix;
+
 public final class SAAJStreamWriter extends OverlayW3CDOMStreamWriter {
     private final SOAPPart part;
 
@@ -44,21 +46,6 @@ public final class SAAJStreamWriter extends OverlayW3CDOMStreamWriter {
         this.part = part;
     }
 
-    private SOAPElement adjustPrefix(SOAPElement e, String prefix) {
-        if (prefix == null) {
-            prefix = "";
-        }
-        try {
-            String s = e.getPrefix();
-            if (!prefix.equals(s)) {
-                e.setPrefix(prefix);
-                e.removeNamespaceDeclaration(s);
-            }
-        } catch (Throwable t) {
-            //likely old old version of SAAJ, we'll just try our best
-        }
-        return e;
-    }
     protected void adjustOverlaidNode(Node nd2, String pfx) {
         String namespace = nd2.getNamespaceURI();
         try {

http://git-wip-us.apache.org/repos/asf/cxf/blob/bbc3ca28/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJUtils.java
----------------------------------------------------------------------
diff --git a/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJUtils.java b/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJUtils.java
index 78702a3..89cb7f7 100644
--- a/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJUtils.java
+++ b/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJUtils.java
@@ -21,6 +21,7 @@ package org.apache.cxf.binding.soap.saaj;
 
 import javax.xml.namespace.QName;
 import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPElement;
 import javax.xml.soap.SOAPException;
 import javax.xml.soap.SOAPFault;
 import javax.xml.soap.SOAPHeader;
@@ -66,4 +67,20 @@ public final class SAAJUtils {
         }
         
     }
+    
+    public static SOAPElement adjustPrefix(SOAPElement e, String prefix) {
+        if (prefix == null) {
+            prefix = "";
+        }
+        try {
+            String s = e.getPrefix();
+            if (!prefix.equals(s)) {
+                e.setPrefix(prefix);
+                e.removeNamespaceDeclaration(s);
+            }
+        } catch (Throwable t) {
+            //likely old old version of SAAJ, we'll just try our best
+        }
+        return e;
+    }
 }


[2/2] cxf git commit: Recording .gitmergeinfo Changes

Posted by as...@apache.org.
Recording .gitmergeinfo Changes


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/c7234f41
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/c7234f41
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/c7234f41

Branch: refs/heads/3.1.x-fixes
Commit: c7234f41345c6e051213a83460ba210e677389da
Parents: bbc3ca2
Author: Alessio Soldano <as...@redhat.com>
Authored: Wed Apr 13 23:12:54 2016 +0200
Committer: Alessio Soldano <as...@redhat.com>
Committed: Wed Apr 13 23:12:54 2016 +0200

----------------------------------------------------------------------
 .gitmergeinfo | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/c7234f41/.gitmergeinfo
----------------------------------------------------------------------
diff --git a/.gitmergeinfo b/.gitmergeinfo
index 241bd31..aff70a9 100644
--- a/.gitmergeinfo
+++ b/.gitmergeinfo
@@ -53,6 +53,7 @@ M 0222768baf6b60742c4a8332308edf2be0f4a2e4
 M 0578e16146527b0782530c40ba2db17531756d96
 M 1184e08f0d1c40c754e39fd5d6340d1057fbdd17
 M 1afeea8bdc0ef96df1d52ea343957dc396723f8c
+M 26edcd457ea507075a4c82e2787f11f11a432876
 M 2e8219cf3d047abc3a7e2611bf284aadbc20b7d6
 M 386805560479b35276d88605c5acf805e3004aa5
 M 39c772a0764b323f98ab58e00345f4fca924c425