You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2010/01/05 23:30:43 UTC

svn commit: r896251 - in /cxf/branches/2.2.x-fixes: ./ common/common/src/main/java/org/apache/cxf/staxutils/ rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/ systests/databinding/src/test/java/org/apache/cxf/systest/xmlbeans/ systests/dat...

Author: dkulp
Date: Tue Jan  5 22:30:30 2010
New Revision: 896251

URL: http://svn.apache.org/viewvc?rev=896251&view=rev
Log:
Merged revisions 896248 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/trunk

........
  r896248 | dkulp | 2010-01-05 17:25:39 -0500 (Tue, 05 Jan 2010) | 1 line
  
  [CXF-2601] Fix problems with XmlBeans and non-document fault infos
........

Modified:
    cxf/branches/2.2.x-fixes/   (props changed)
    cxf/branches/2.2.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/CachingXmlEventWriter.java
    cxf/branches/2.2.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java
    cxf/branches/2.2.x-fixes/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataWriterImpl.java
    cxf/branches/2.2.x-fixes/systests/databinding/src/test/java/org/apache/cxf/systest/xmlbeans/ClientServerXmlBeansTest.java
    cxf/branches/2.2.x-fixes/systests/databinding/src/test/java/org/apache/cxf/systest/xmlbeans/GreeterImpl.java
    cxf/branches/2.2.x-fixes/systests/databinding/src/test/resources/wsdl_systest_databinding/xmlbeans/hello_world.wsdl

Propchange: cxf/branches/2.2.x-fixes/
------------------------------------------------------------------------------
    svn:mergeinfo = /cxf/trunk:896248

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

Modified: cxf/branches/2.2.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/CachingXmlEventWriter.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/CachingXmlEventWriter.java?rev=896251&r1=896250&r2=896251&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/CachingXmlEventWriter.java (original)
+++ cxf/branches/2.2.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/CachingXmlEventWriter.java Tue Jan  5 22:30:30 2010
@@ -147,7 +147,7 @@
     }
     
     public void setDefaultNamespace(String ns) throws XMLStreamException {
-        writeNamespace("", ns);
+        curContext.addNs("", ns);
     }
 
     

Modified: cxf/branches/2.2.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java?rev=896251&r1=896250&r2=896251&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java (original)
+++ cxf/branches/2.2.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java Tue Jan  5 22:30:30 2010
@@ -467,6 +467,19 @@
         
 //        System.out.println("STAXUTILS:writeStartElement : node name : " + local +  " namespace URI" + uri);
         boolean writeElementNS = false;
+        
+     // Write out the element name
+        if (uri != null) {
+            if (prefix.length() == 0 && StringUtils.isEmpty(uri)) {
+                writer.writeStartElement(local);
+            } else {
+                writer.writeStartElement(prefix, local, uri);
+            }
+        } else {
+            writer.writeStartElement(local);
+        }
+
+        
         if (uri != null) {
             writeElementNS = true;
             Iterator<String> it = CastUtils.cast(writer.getNamespaceContext().getPrefixes(uri));
@@ -481,20 +494,6 @@
             }
         }
 
-        // Write out the element name
-        if (uri != null) {
-            if (prefix.length() == 0 && StringUtils.isEmpty(uri)) {
-                writer.writeStartElement(local);
-                writer.setDefaultNamespace(uri);
-
-            } else {
-                writer.writeStartElement(prefix, local, uri);
-                writer.setPrefix(prefix, uri);
-            }
-        } else {
-            writer.writeStartElement(local);
-        }
-
         // Write out the namespaces
         for (int i = 0; i < reader.getNamespaceCount(); i++) {
             String nsURI = reader.getNamespaceURI(i);

Modified: cxf/branches/2.2.x-fixes/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataWriterImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataWriterImpl.java?rev=896251&r1=896250&r2=896251&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataWriterImpl.java (original)
+++ cxf/branches/2.2.x-fixes/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataWriterImpl.java Tue Jan  5 22:30:30 2010
@@ -144,8 +144,13 @@
                     reader = source.newCursor().newXMLStreamReader(options);                    
                 }
                 SchemaType st = (SchemaType)part.getProperty(SchemaType.class.getName());
-
-                if (st != null && !st.isDocumentType()) {
+                int i = reader.getEventType();
+                if (i == XMLStreamReader.START_DOCUMENT) {
+                    i = reader.next();
+                }
+                
+                if (st != null && !st.isDocumentType()
+                    || reader.getEventType() == XMLStreamReader.CHARACTERS) {
                     if (StringUtils.isEmpty(part.getConcreteName().getNamespaceURI())) {
                         output.writeStartElement(part.getConcreteName().getLocalPart());
                         

Modified: cxf/branches/2.2.x-fixes/systests/databinding/src/test/java/org/apache/cxf/systest/xmlbeans/ClientServerXmlBeansTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/systests/databinding/src/test/java/org/apache/cxf/systest/xmlbeans/ClientServerXmlBeansTest.java?rev=896251&r1=896250&r2=896251&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/systests/databinding/src/test/java/org/apache/cxf/systest/xmlbeans/ClientServerXmlBeansTest.java (original)
+++ cxf/branches/2.2.x-fixes/systests/databinding/src/test/java/org/apache/cxf/systest/xmlbeans/ClientServerXmlBeansTest.java Tue Jan  5 22:30:30 2010
@@ -35,22 +35,23 @@
 import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
 import org.apache.helloWorldSoapHttp.xmlbeans.types.FaultDetailDocument;
 import org.apache.helloWorldSoapHttp.xmlbeans.types.FaultDetailDocument.FaultDetail;
+import org.apache.hello_world_soap_http.xmlbeans.GreetMeFault;
 import org.apache.hello_world_soap_http.xmlbeans.Greeter;
 import org.apache.hello_world_soap_http.xmlbeans.PingMeFault;
 import org.apache.hello_world_soap_http.xmlbeans.SOAPService;
 import org.junit.BeforeClass;
-import org.junit.Ignore;
 import org.junit.Test;
 
 /**
  * 
  */
-@Ignore("randomly fails on Hudson, but dkulp cannot reproduce yet")
+//@org.junit.Ignore("randomly fails on Hudson, but dkulp cannot reproduce yet")
 public class ClientServerXmlBeansTest extends AbstractBusClientServerTestBase {
     
     private static final QName SERVICE_NAME 
         = new QName("http://apache.org/hello_world_soap_http/xmlbeans", "SOAPService");
     
+    
     @BeforeClass
     public static void startServers() throws Exception {
         assertTrue("server did not launch correctly", launchServer(Server.class, true));
@@ -71,11 +72,18 @@
         ClientProxy.getClient(port).getInInterceptors().add(new LoggingInInterceptor());
         ClientProxy.getClient(port).getOutInterceptors().add(new LoggingOutInterceptor());
         resp = port.sayHi();
-        assertEquals("We should get the right response", resp, "Bonjour");        
+        assertEquals("We should get the right response", "Bonjour", resp);        
         
         resp = port.greetMe("Willem");
-        assertEquals("We should get the right response", resp, "Hello Willem");
-        
+        assertEquals("We should get the right response", "Hello Willem", resp);
+
+        try {
+            port.greetMe("fault");
+            fail("Should have been a fault");
+        } catch (GreetMeFault ex) {
+            assertEquals("Some fault detail", ex.getFaultInfo().getStringValue());
+        }
+
         try {
             resp = port.greetMe("Invoking greetMe with invalid length string, expecting exception...");
             fail("We expect exception here");
@@ -85,8 +93,6 @@
                        indexOf("string length (67) is greater than maxLength facet (30)") >= 0);
         }
         
-        port.greetMeOneWay(System.getProperty("user.name"));
-        
         try {
             port.pingMe();
             fail("We expect exception here");
@@ -95,7 +101,8 @@
             FaultDetail detail = detailDocument.getFaultDetail();
             assertEquals("Wrong faultDetail major", detail.getMajor(), 2);
             assertEquals("Wrong faultDetail minor", detail.getMinor(), 1);             
-        }          
+        }
+        
     }
     
     @Test
@@ -128,8 +135,6 @@
                        indexOf("string length (67) is greater than maxLength facet (30)") >= 0);
         }
         
-        port.greetMeOneWay(System.getProperty("user.name"));
-        
         try {
             port.pingMe();
             fail("We expect exception here");
@@ -138,7 +143,14 @@
             FaultDetail detail = detailDocument.getFaultDetail();
             assertEquals("Wrong faultDetail major", detail.getMajor(), 2);
             assertEquals("Wrong faultDetail minor", detail.getMinor(), 1);             
-        }          
+        }  
+        try {
+            port.greetMe("fault");
+            fail("Should have been a fault");
+        } catch (GreetMeFault ex) {
+            assertEquals("Some fault detail", ex.getFaultInfo().getStringValue());
+        }
+
     }
 
 }

Modified: cxf/branches/2.2.x-fixes/systests/databinding/src/test/java/org/apache/cxf/systest/xmlbeans/GreeterImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/systests/databinding/src/test/java/org/apache/cxf/systest/xmlbeans/GreeterImpl.java?rev=896251&r1=896250&r2=896251&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/systests/databinding/src/test/java/org/apache/cxf/systest/xmlbeans/GreeterImpl.java (original)
+++ cxf/branches/2.2.x-fixes/systests/databinding/src/test/java/org/apache/cxf/systest/xmlbeans/GreeterImpl.java Tue Jan  5 22:30:30 2010
@@ -24,6 +24,7 @@
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.helloWorldSoapHttp.xmlbeans.types.FaultDetailDocument;
 import org.apache.helloWorldSoapHttp.xmlbeans.types.FaultDetailDocument.FaultDetail;
+import org.apache.hello_world_soap_http.xmlbeans.GreetMeFault;
 import org.apache.hello_world_soap_http.xmlbeans.Greeter;
 import org.apache.hello_world_soap_http.xmlbeans.PingMeFault;
 
@@ -37,7 +38,12 @@
     /* (non-Javadoc)
      * @see org.apache.hello_world_soap_http.Greeter#greetMe(java.lang.String)
      */
-    public String greetMe(String me) {
+    public String greetMe(String me) throws GreetMeFault {
+        if ("fault".equals(me)) {
+            org.apache.xmlbeans.XmlString st = org.apache.xmlbeans.XmlString.Factory.newInstance();
+            st.setStringValue("Some fault detail");
+            throw new GreetMeFault("Fault String", st);
+        }
         LOG.info("Executing operation greetMe");        
         return "Hello " + me;
     }

Modified: cxf/branches/2.2.x-fixes/systests/databinding/src/test/resources/wsdl_systest_databinding/xmlbeans/hello_world.wsdl
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/systests/databinding/src/test/resources/wsdl_systest_databinding/xmlbeans/hello_world.wsdl?rev=896251&r1=896250&r2=896251&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/systests/databinding/src/test/resources/wsdl_systest_databinding/xmlbeans/hello_world.wsdl (original)
+++ cxf/branches/2.2.x-fixes/systests/databinding/src/test/resources/wsdl_systest_databinding/xmlbeans/hello_world.wsdl Tue Jan  5 22:30:30 2010
@@ -17,23 +17,23 @@
   specific language governing permissions and limitations
   under the License.
 -->
-<wsdl:definitions name="HelloWorld" targetNamespace="http://apache.org/hello_world_soap_http/xmlbeans" 
-    xmlns="http://schemas.xmlsoap.org/wsdl/" 
-    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
+<wsdl:definitions name="HelloWorld" targetNamespace="http://apache.org/hello_world_soap_http/xmlbeans"
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
     xmlns:tns="http://apache.org/hello_world_soap_http/xmlbeans"
     xmlns:x1="http://apache.org/hello_world_soap_http/xmlbeans/types"
-    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     <wsdl:types>
-        <schema targetNamespace="http://apache.org/hello_world_soap_http/xmlbeans/types" 
+        <schema targetNamespace="http://apache.org/hello_world_soap_http/xmlbeans/types"
             xmlns="http://www.w3.org/2001/XMLSchema"
-	    xmlns:tns="http://apache.org/hello_world_soap_http/xmlbeans/types"
+        xmlns:tns="http://apache.org/hello_world_soap_http/xmlbeans/types"
             elementFormDefault="qualified">
-	    <simpleType name="MyStringType">
-		<restriction base="string">
-		    <maxLength value="30" />
-		</restriction>
-	    </simpleType>
+            <simpleType name="MyStringType">
+                <restriction base="string">
+                    <maxLength value="30" />
+                </restriction>
+            </simpleType>
 
             <element name="sayHi">
                 <complexType/>
@@ -80,6 +80,7 @@
                     </sequence>
                 </complexType>
             </element>
+            <element name="greetMeFaultDetail" type="string"/>
         </schema>
     </wsdl:types>
     <wsdl:message name="sayHiRequest">
@@ -102,22 +103,29 @@
     </wsdl:message>
     <wsdl:message name="pingMeResponse">
         <wsdl:part name="out" element="x1:pingMeResponse"/>
-    </wsdl:message>		
+    </wsdl:message>
     <wsdl:message name="pingMeFault">
         <wsdl:part name="faultDetail" element="x1:faultDetail"/>
     </wsdl:message>
-    
+    <wsdl:message name="greetMeFault">
+        <wsdl:part name="greetMeFault" element="x1:greetMeFaultDetail"/>
+    </wsdl:message>
+
+
     <wsdl:portType name="Greeter">
         <wsdl:operation name="sayHi">
             <wsdl:input message="tns:sayHiRequest" name="sayHiRequest"/>
             <wsdl:output message="tns:sayHiResponse" name="sayHiResponse"/>
         </wsdl:operation>
         
+
         <wsdl:operation name="greetMe">
             <wsdl:input message="tns:greetMeRequest" name="greetMeRequest"/>
             <wsdl:output message="tns:greetMeResponse" name="greetMeResponse"/>
+            <wsdl:fault name="greetMeFault" message="tns:greetMeFault"/>
         </wsdl:operation>
         
+
         <wsdl:operation name="greetMeOneWay">
             <wsdl:input message="tns:greetMeOneWayRequest" name="greetMeOneWayRequest"/>
         </wsdl:operation>
@@ -126,11 +134,12 @@
             <wsdl:input name="pingMeRequest" message="tns:pingMeRequest"/>
             <wsdl:output name="pingMeResponse" message="tns:pingMeResponse"/>
             <wsdl:fault name="pingMeFault" message="tns:pingMeFault"/>
-        </wsdl:operation> 
+        </wsdl:operation>
     </wsdl:portType>
     <wsdl:binding name="Greeter_SOAPBinding" type="tns:Greeter">
         <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
         
+
         <wsdl:operation name="sayHi">
             <soap:operation soapAction="" style="document"/>
             <wsdl:input name="sayHiRequest">
@@ -141,6 +150,7 @@
             </wsdl:output>
         </wsdl:operation>
         
+
         <wsdl:operation name="greetMe">
             <soap:operation soapAction="" style="document"/>
             <wsdl:input name="greetMeRequest">
@@ -149,8 +159,12 @@
             <wsdl:output name="greetMeResponse">
                 <soap:body use="literal"/>
             </wsdl:output>
+            <wsdl:fault name="greetMeFault">
+                <soap:fault name="greetMeFault" use="literal"/>
+            </wsdl:fault>
         </wsdl:operation>
         
+
         <wsdl:operation name="greetMeOneWay">
             <soap:operation soapAction="" style="document"/>
             <wsdl:input name="greetMeOneWayRequest">
@@ -171,6 +185,7 @@
             </wsdl:fault>
         </wsdl:operation>
         
+
     </wsdl:binding>
     <wsdl:service name="SOAPService">
         <wsdl:port binding="tns:Greeter_SOAPBinding" name="SoapPort">