You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ni...@apache.org on 2013/04/28 10:14:13 UTC

svn commit: r1476732 - in /cxf/branches/2.7.x-fixes: ./ api/src/main/java/org/apache/cxf/staxutils/ rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/encoded/ rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/ systests/jax...

Author: ningjiang
Date: Sun Apr 28 08:14:12 2013
New Revision: 1476732

URL: http://svn.apache.org/r1476732
Log:
Merged revisions 1476727 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/trunk

........
  r1476727 | ningjiang | 2013-04-28 15:53:43 +0800 (Sun, 28 Apr 2013) | 1 line
  
  CXF-4990 fixed the namespace issue when thrown the fault from logical handle.
........

Added:
    cxf/branches/2.7.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/handlers/CustomSoapFault.java
      - copied unchanged from r1476727, cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/handlers/CustomSoapFault.java
    cxf/branches/2.7.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/handlers/FaultThrowingHandler.java
      - copied unchanged from r1476727, cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/handlers/FaultThrowingHandler.java
    cxf/branches/2.7.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/handlers/SoapFaultHandlerTest.java
      - copied unchanged from r1476727, cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/handlers/SoapFaultHandlerTest.java
    cxf/branches/2.7.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/handlers/soap_fault_beans.xml
      - copied unchanged from r1476727, cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/handlers/soap_fault_beans.xml
Modified:
    cxf/branches/2.7.x-fixes/   (props changed)
    cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamWriter.java
    cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/staxutils/W3CNamespaceContext.java
    cxf/branches/2.7.x-fixes/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/encoded/AbstractEncodedTest.java
    cxf/branches/2.7.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerFaultOutInterceptor.java

Propchange: cxf/branches/2.7.x-fixes/
------------------------------------------------------------------------------
  Merged /cxf/trunk:r1476727

Propchange: cxf/branches/2.7.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamWriter.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamWriter.java?rev=1476732&r1=1476731&r2=1476732&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamWriter.java (original)
+++ cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamWriter.java Sun Apr 28 08:14:12 2013
@@ -120,7 +120,10 @@ public class W3CDOMStreamWriter implemen
             }
         }
         if (!(context instanceof W3CNamespaceContext)) {
-            context = new W3CNamespaceContext();
+            // set the outside namespace context
+            W3CNamespaceContext childContext = new W3CNamespaceContext();
+            childContext.setOutNamespaceContext(context);
+            context = childContext;
         }
         ((W3CNamespaceContext)context).setElement(element);
         currentNode = element;

Modified: cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/staxutils/W3CNamespaceContext.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/staxutils/W3CNamespaceContext.java?rev=1476732&r1=1476731&r2=1476732&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/staxutils/W3CNamespaceContext.java (original)
+++ cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/staxutils/W3CNamespaceContext.java Sun Apr 28 08:14:12 2013
@@ -32,12 +32,18 @@ import org.w3c.dom.Node;
 
 public class W3CNamespaceContext implements NamespaceContext {
     private Element currentNode;
+    private NamespaceContext outNamespaceContext;
     
     public W3CNamespaceContext() {
     }
     public W3CNamespaceContext(Element el) {
         currentNode = el;
     }
+    
+    public void setOutNamespaceContext(NamespaceContext context) {
+        outNamespaceContext = context;
+    }
+    
     public String getNamespaceURI(String prefix) {
         String name = prefix;
         if (name.length() == 0) {
@@ -53,7 +59,14 @@ public class W3CNamespaceContext impleme
         if (e == null) {
             return null;
         }
-
+        // check the outside namespace URI
+        if (outNamespaceContext != null) {
+            String result = outNamespaceContext.getNamespaceURI(name);
+            if (result != null) {
+                return result;
+            }
+        }
+        
         Attr attr = e.getAttributeNode(name);
         if (attr == null) {
             Node n = e.getParentNode();
@@ -75,6 +88,14 @@ public class W3CNamespaceContext impleme
         if (e == null) {
             return null;
         }
+        // check the outside namespace URI
+        if (outNamespaceContext != null) {
+            String result = outNamespaceContext.getPrefix(uri);
+            if (result != null) {
+                return result;
+            }
+        }
+        
         NamedNodeMap attributes = e.getAttributes();
         if (attributes != null) {
             for (int i = 0; i < attributes.getLength(); i++) {

Modified: cxf/branches/2.7.x-fixes/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/encoded/AbstractEncodedTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/encoded/AbstractEncodedTest.java?rev=1476732&r1=1476731&r2=1476732&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/encoded/AbstractEncodedTest.java (original)
+++ cxf/branches/2.7.x-fixes/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/encoded/AbstractEncodedTest.java Sun Apr 28 08:14:12 2013
@@ -21,7 +21,6 @@ package org.apache.cxf.aegis.type.encode
 import java.io.ByteArrayInputStream;
 import java.io.UnsupportedEncodingException;
 import java.util.List;
-import java.util.Map;
 
 import javax.xml.stream.XMLStreamException;
 
@@ -89,7 +88,7 @@ public abstract class AbstractEncodedTes
 
         // write value to element
         Element element = writeRef(value);
-
+        
         // reread value from element
         value = typeClass.cast(readRef(element));
 
@@ -143,9 +142,10 @@ public abstract class AbstractEncodedTes
         // create the document
         Element element = createElement("urn:Bean", "root", "b");
         MapNamespaceContext namespaces = new MapNamespaceContext();
-        for (Map.Entry<String, String> entry : getNamespaces().entrySet()) {
+        // we should not add the out namespace here, as it is not a part of root element 
+        /*for (Map.Entry<String, String> entry : getNamespaces().entrySet()) {
             namespaces.addNamespace(entry.getKey(), entry.getValue());
-        }
+        }*/
         ElementWriter rootWriter = getElementWriter(element, namespaces);
         Context context = getContext();
 

Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerFaultOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerFaultOutInterceptor.java?rev=1476732&r1=1476731&r2=1476732&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerFaultOutInterceptor.java (original)
+++ cxf/branches/2.7.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerFaultOutInterceptor.java Sun Apr 28 08:14:12 2013
@@ -73,7 +73,12 @@ public class LogicalHandlerFaultOutInter
             Document doc = XMLUtils.newDocument();
             message.setContent(Node.class, doc);
             W3CDOMStreamWriter writer = new W3CDOMStreamWriter(doc);
-        
+            // set up the namespace context
+            try {
+                writer.setNamespaceContext(origWriter.getNamespaceContext());
+            } catch (XMLStreamException ex) {
+                // don't set the namespaceContext
+            }
             // Replace stax writer with DomStreamWriter
             message.setContent(XMLStreamWriter.class, writer);
             message.put(ORIGINAL_WRITER, origWriter);
@@ -81,7 +86,7 @@ public class LogicalHandlerFaultOutInter
             message.getInterceptorChain().add(ending);
         } catch (ParserConfigurationException e) {
             throw new Fault(e);
-        }
+        } 
     }