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 2008/05/20 23:21:56 UTC

svn commit: r658443 - in /cxf/branches/2.0.x-fixes: ./ rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/ rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/

Author: dkulp
Date: Tue May 20 14:21:56 2008
New Revision: 658443

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

........
  r658433 | dkulp | 2008-05-20 17:08:04 -0400 (Tue, 20 May 2008) | 2 lines
  
  [CXF-1575, CXF-1592] Don't map webServiceException into the wsdl.  In some cases, allow an older saaj implementation.
........

Modified:
    cxf/branches/2.0.x-fixes/   (props changed)
    cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java
    cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java
    cxf/branches/2.0.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java

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

Modified: cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java?rev=658443&r1=658442&r2=658443&view=diff
==============================================================================
--- cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java (original)
+++ cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java Tue May 20 14:21:56 2008
@@ -30,6 +30,7 @@
 import java.util.logging.Logger;
 
 import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPException;
 import javax.xml.soap.SOAPFault;
 import javax.xml.ws.AsyncHandler;
 import javax.xml.ws.Binding;
@@ -183,31 +184,11 @@
                 exception.initCause(ex);
                 throw exception;
             } else if (getBinding() instanceof SOAPBinding) {
-                SOAPFault soapFault = ((SOAPBinding)getBinding()).getSOAPFactory().createFault();
+                SOAPFault soapFault = createSoapFault(ex);
+                if (soapFault == null) {
+                    throw new WebServiceException(ex);
+                }
                 
-                if (ex instanceof SoapFault) {
-                    soapFault.setFaultString(((SoapFault)ex).getReason());
-                    soapFault.setFaultCode(((SoapFault)ex).getFaultCode());
-                    soapFault.setFaultActor(((SoapFault)ex).getRole());
-
-                    Node nd = soapFault.getOwnerDocument().importNode(((SoapFault)ex).getOrCreateDetail(),
-                                                                      true);
-                    nd = nd.getFirstChild();
-                    soapFault.addDetail();
-                    while (nd != null) {
-                        Node next = nd.getNextSibling();
-                        soapFault.getDetail().appendChild(nd);
-                        nd = next;
-                    }
- 
-                } else {
-                    soapFault.setFaultCode(new QName("http://cxf.apache.org/faultcode", "HandlerFault"));
-                    String msg = ex.getMessage();
-                    if (msg != null) {
-                        soapFault.setFaultString(msg);
-                    }
-                }      
-  
                 SOAPFaultException  exception = new SOAPFaultException(soapFault);
                 exception.initCause(ex);
                 throw exception;                
@@ -234,6 +215,47 @@
 
     }
     
+    private SOAPFault createSoapFault(Exception ex) throws SOAPException {
+        SOAPFault soapFault;
+        try {
+            soapFault = ((SOAPBinding)getBinding()).getSOAPFactory().createFault();
+        } catch (Throwable t) {
+            //probably an old version of saaj or something that is not allowing createFault 
+            //method to work.  Try the saaj 1.2 method of doing this.
+            try {
+                soapFault = ((SOAPBinding)getBinding()).getMessageFactory().createMessage()
+                    .getSOAPBody().addFault();
+            } catch (Throwable t2) {
+                //still didn't work, we'll just throw what we have
+                return null;
+            }                        
+        }
+        
+        if (ex instanceof SoapFault) {
+            soapFault.setFaultString(((SoapFault)ex).getReason());
+            soapFault.setFaultCode(((SoapFault)ex).getFaultCode());
+            soapFault.setFaultActor(((SoapFault)ex).getRole());
+
+            Node nd = soapFault.getOwnerDocument().importNode(((SoapFault)ex).getOrCreateDetail(),
+                                                              true);
+            nd = nd.getFirstChild();
+            soapFault.addDetail();
+            while (nd != null) {
+                Node next = nd.getNextSibling();
+                soapFault.getDetail().appendChild(nd);
+                nd = next;
+            }
+
+        } else {
+            soapFault.setFaultCode(new QName("http://cxf.apache.org/faultcode", "HandlerFault"));
+            String msg = ex.getMessage();
+            if (msg != null) {
+                soapFault.setFaultString(msg);
+            }
+        }      
+        return soapFault;
+    }
+
     private boolean addressChanged(String address) {
         return !(address == null
                  || getClient().getEndpoint().getEndpointInfo() == null

Modified: cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java?rev=658443&r1=658442&r2=658443&view=diff
==============================================================================
--- cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java (original)
+++ cxf/branches/2.0.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java Tue May 20 14:21:56 2008
@@ -290,7 +290,8 @@
     protected Class<?> getBeanClass(Class<?> exClass) {
         try {
             if (java.rmi.ServerException.class.isAssignableFrom(exClass)
-                || java.rmi.RemoteException.class.isAssignableFrom(exClass)) {
+                || java.rmi.RemoteException.class.isAssignableFrom(exClass)
+                || "javax.xml.ws".equals(exClass.getPackage().getName())) {
                 return null;
             }
 

Modified: cxf/branches/2.0.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.0.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java?rev=658443&r1=658442&r2=658443&view=diff
==============================================================================
--- cxf/branches/2.0.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java (original)
+++ cxf/branches/2.0.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java Tue May 20 14:21:56 2008
@@ -642,6 +642,9 @@
         for (int i = 0; i < types.length; i++) {
             Class exClass = types[i];
             Class beanClass = getBeanClass(exClass);
+            if (beanClass == null) {
+                continue;
+            }
 
             QName name = getFaultName(o.getInterface(), o, exClass, beanClass);