Author: antelder
Date: Thu Jan  8 03:20:25 2009
New Revision: 732687

URL: http://svn.apache.org/viewvc?rev=732687&view=rev
Log:
TUSCANY-2593, fix for handling exceptions merged from 1.x branch fixes in 
r732680, 732679, 732664, 732663, 732416, and 732415.

Added:
    
tuscany/branches/sca-java-1.4/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/CheckedExcpetion2Args.java
      - copied unchanged from r732663, 
tuscany/branches/sca-java-1.x/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/CheckedExcpetion2Args.java
    
tuscany/branches/sca-java-1.4/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/CheckedExcpetionChained.java
      - copied unchanged from r732663, 
tuscany/branches/sca-java-1.x/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/CheckedExcpetionChained.java
    
tuscany/branches/sca-java-1.4/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/CheckedExcpetionNoArgs.java
      - copied unchanged from r732663, 
tuscany/branches/sca-java-1.x/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/CheckedExcpetionNoArgs.java
Modified:
    tuscany/branches/sca-java-1.4/itest/jms/   (props changed)
    
tuscany/branches/sca-java-1.4/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/ExceptionService.java
    
tuscany/branches/sca-java-1.4/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/ExceptionServiceClient.java
    
tuscany/branches/sca-java-1.4/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/ExceptionServiceImpl.java
    
tuscany/branches/sca-java-1.4/itest/jms/src/test/java/org/apache/tuscany/sca/binding/jms/ExceptionsTestCase.java
    tuscany/branches/sca-java-1.4/modules/binding-jms-runtime/   (props changed)
    
tuscany/branches/sca-java-1.4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/AbstractMessageProcessor.java
    
tuscany/branches/sca-java-1.4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/DefaultJMSBindingListener.java
   (props changed)
    
tuscany/branches/sca-java-1.4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSResourceFactoryImpl.java
   (props changed)
    
tuscany/branches/sca-java-1.4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/RRBJMSBindingInvoker.java
    tuscany/branches/sca-java-1.4/modules/core/   (props changed)
    
tuscany/branches/sca-java-1.4/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/RuntimeWireInvoker.java
    tuscany/branches/sca-java-1.4/modules/interface-java-jaxws/   (props 
changed)
    
tuscany/branches/sca-java-1.4/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSFaultExceptionMapper.java

Propchange: tuscany/branches/sca-java-1.4/itest/jms/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Thu Jan  8 03:20:25 2009
@@ -0,0 +1,2 @@
+/tuscany/branches/sca-java-1.3/itest/jms:671193
+/tuscany/branches/sca-java-1.x/itest/jms:724111-724120,732663

Modified: 
tuscany/branches/sca-java-1.4/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/ExceptionService.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.4/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/ExceptionService.java?rev=732687&r1=732686&r2=732687&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.4/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/ExceptionService.java
 (original)
+++ 
tuscany/branches/sca-java-1.4/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/ExceptionService.java
 Thu Jan  8 03:20:25 2009
@@ -25,6 +25,9 @@
 public interface ExceptionService {
 
     public void throwChecked() throws CheckedExcpetion;
+    public void throwCheckedNoArgs() throws CheckedExcpetionNoArgs;
+    public void throwChecked2Args() throws CheckedExcpetion2Args;
+    public void throwCheckedChained() throws CheckedExcpetionChained;
 
     public void throwUnChecked();
 }

Modified: 
tuscany/branches/sca-java-1.4/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/ExceptionServiceClient.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.4/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/ExceptionServiceClient.java?rev=732687&r1=732686&r2=732687&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.4/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/ExceptionServiceClient.java
 (original)
+++ 
tuscany/branches/sca-java-1.4/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/ExceptionServiceClient.java
 Thu Jan  8 03:20:25 2009
@@ -38,6 +38,18 @@
         service.throwChecked();
     }
 
+    public void throwChecked2Args() throws CheckedExcpetion2Args {
+        service.throwChecked2Args();
+    }
+
+    public void throwCheckedChained() throws CheckedExcpetionChained {
+        service.throwCheckedChained();
+    }
+
+    public void throwCheckedNoArgs() throws CheckedExcpetionNoArgs {
+        service.throwCheckedNoArgs();
+    }
+
     public void throwUnChecked() {
         service.throwUnChecked();
     }

Modified: 
tuscany/branches/sca-java-1.4/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/ExceptionServiceImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.4/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/ExceptionServiceImpl.java?rev=732687&r1=732686&r2=732687&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.4/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/ExceptionServiceImpl.java
 (original)
+++ 
tuscany/branches/sca-java-1.4/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/ExceptionServiceImpl.java
 Thu Jan  8 03:20:25 2009
@@ -25,6 +25,18 @@
         throw new CheckedExcpetion("foo");
     }
 
+    public void throwChecked2Args() throws CheckedExcpetion2Args {
+        throw new CheckedExcpetion2Args("foo", new Exception("bla"));
+    }
+
+    public void throwCheckedChained() throws CheckedExcpetionChained {
+        throw new CheckedExcpetionChained(new Exception("bla"));
+    }
+
+    public void throwCheckedNoArgs() throws CheckedExcpetionNoArgs {
+        throw new CheckedExcpetionNoArgs();
+    }
+
     public void throwUnChecked() {
         throw new RuntimeException("bla");
     }

Modified: 
tuscany/branches/sca-java-1.4/itest/jms/src/test/java/org/apache/tuscany/sca/binding/jms/ExceptionsTestCase.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.4/itest/jms/src/test/java/org/apache/tuscany/sca/binding/jms/ExceptionsTestCase.java?rev=732687&r1=732686&r2=732687&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.4/itest/jms/src/test/java/org/apache/tuscany/sca/binding/jms/ExceptionsTestCase.java
 (original)
+++ 
tuscany/branches/sca-java-1.4/itest/jms/src/test/java/org/apache/tuscany/sca/binding/jms/ExceptionsTestCase.java
 Thu Jan  8 03:20:25 2009
@@ -19,12 +19,12 @@
 package org.apache.tuscany.sca.binding.jms;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
 
 import org.apache.tuscany.sca.host.embedded.SCADomain;
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 
 /**
@@ -41,7 +41,7 @@
     }
 
     @Test
-    @Ignore // TUSCANY-2593, currently fails for some jaxws reason?
+//    @Ignore // TUSCANY-2593, currently fails for some jaxws reason?
     public void testChecked() {
         ExceptionService service = 
scaDomain.getService(ExceptionService.class, "ExceptionServiceClient");
         try {
@@ -53,6 +53,42 @@
     }
 
     @Test
+    public void testCheckedNoArgs() {
+        ExceptionService service = 
scaDomain.getService(ExceptionService.class, "ExceptionServiceClient");
+        try {
+            service.throwCheckedNoArgs();
+            fail();
+        } catch (CheckedExcpetionNoArgs e) {
+            // ok
+        }
+    }
+
+    @Test
+    public void testChecked2Args() {
+        ExceptionService service = 
scaDomain.getService(ExceptionService.class, "ExceptionServiceClient");
+        try {
+            service.throwChecked2Args();
+            fail();
+        } catch (CheckedExcpetion2Args e) {
+            assertEquals("foo", e.getMessage());
+            assertNotNull(e.getCause());
+            assertEquals("bla", e.getCause().getMessage());
+        }
+    }
+
+    @Test
+    public void testCheckedChained() {
+        ExceptionService service = 
scaDomain.getService(ExceptionService.class, "ExceptionServiceClient");
+        try {
+            service.throwCheckedChained();
+            fail();
+        } catch (CheckedExcpetionChained e) {
+            assertNotNull(e.getCause());
+            assertEquals("bla", e.getCause().getMessage());
+        }
+    }
+
+    @Test
     public void testUnChecked() {
         ExceptionService service = 
scaDomain.getService(ExceptionService.class, "ExceptionServiceClient");
         try {

Propchange: tuscany/branches/sca-java-1.4/modules/binding-jms-runtime/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Thu Jan  8 03:20:25 2009
@@ -0,0 +1,2 @@
+/tuscany/branches/sca-java-1.3/modules/binding-jms-runtime:671193
+/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime:724111-724120,732415,732680

Modified: 
tuscany/branches/sca-java-1.4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/AbstractMessageProcessor.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/AbstractMessageProcessor.java?rev=732687&r1=732686&r2=732687&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/AbstractMessageProcessor.java
 (original)
+++ 
tuscany/branches/sca-java-1.4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/AbstractMessageProcessor.java
 Thu Jan  8 03:20:25 2009
@@ -18,6 +18,8 @@
  */
 package org.apache.tuscany.sca.binding.jms.provider;
 
+import java.lang.reflect.InvocationTargetException;
+
 import javax.jms.JMSException;
 import javax.jms.Message;
 import javax.jms.ObjectMessage;
@@ -101,7 +103,11 @@
         try {
 
             ObjectMessage message = session.createObjectMessage();
-            message.setObject(o);
+            if (o instanceof ServiceRuntimeException && 
((ServiceRuntimeException)o).getCause() instanceof InvocationTargetException) {
+                message.setObject(o.getCause() );
+            } else {
+                message.setObject(o);
+            }
             message.setBooleanProperty(JMSBindingConstants.FAULT_PROPERTY, 
true);
             return message;
 

Propchange: 
tuscany/branches/sca-java-1.4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/DefaultJMSBindingListener.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jan  8 03:20:25 2009
@@ -1 +1 @@
-/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/DefaultJMSBindingListener.java:724111-724120
+/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/DefaultJMSBindingListener.java:724111-724120,732415,732680

Propchange: 
tuscany/branches/sca-java-1.4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSResourceFactoryImpl.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jan  8 03:20:25 2009
@@ -1 +1 @@
-/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSResourceFactoryImpl.java:724111-724120
+/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSResourceFactoryImpl.java:724111-724120,732415,732680

Modified: 
tuscany/branches/sca-java-1.4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/RRBJMSBindingInvoker.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/RRBJMSBindingInvoker.java?rev=732687&r1=732686&r2=732687&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/RRBJMSBindingInvoker.java
 (original)
+++ 
tuscany/branches/sca-java-1.4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/RRBJMSBindingInvoker.java
 Thu Jan  8 03:20:25 2009
@@ -30,6 +30,7 @@
 import org.apache.tuscany.sca.binding.jms.impl.JMSBindingConstants;
 import org.apache.tuscany.sca.binding.jms.impl.JMSBindingException;
 import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.interfacedef.util.FaultException;
 import org.apache.tuscany.sca.invocation.DataExchangeSemantics;
 import org.apache.tuscany.sca.invocation.Invoker;
 import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
@@ -204,8 +205,10 @@
                     if ((e.getCause().getCause() instanceof RuntimeException)) 
{
                         tuscanyMsg.setFaultBody(e.getCause());
                     } else {
-                        tuscanyMsg.setFaultBody(e.getCause().getCause());
+                        
tuscanyMsg.setFaultBody(((InvocationTargetException)e.getCause()).getTargetException());
                     }
+                } else if (e.getCause() instanceof FaultException) {
+                    tuscanyMsg.setFaultBody(e.getCause());
                 } else {
                     tuscanyMsg.setFaultBody(e);
                 }

Propchange: tuscany/branches/sca-java-1.4/modules/core/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Thu Jan  8 03:20:25 2009
@@ -0,0 +1,2 @@
+/tuscany/branches/sca-java-1.3/modules/core:671193
+/tuscany/branches/sca-java-1.x/modules/core:724111-724120,732679

Modified: 
tuscany/branches/sca-java-1.4/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/RuntimeWireInvoker.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.4/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/RuntimeWireInvoker.java?rev=732687&r1=732686&r2=732687&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.4/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/RuntimeWireInvoker.java
 (original)
+++ 
tuscany/branches/sca-java-1.4/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/RuntimeWireInvoker.java
 Thu Jan  8 03:20:25 2009
@@ -88,7 +88,7 @@
             // shouldn't take it out of the response message in the first place
             msg.setBody(response);
         } catch (InvocationTargetException e) {
-            throw new ServiceRuntimeException(e);
+//            throw new ServiceRuntimeException(e);
         }
         
         return msg;

Propchange: tuscany/branches/sca-java-1.4/modules/interface-java-jaxws/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Thu Jan  8 03:20:25 2009
@@ -0,0 +1,2 @@
+/tuscany/branches/sca-java-1.3/modules/interface-java-jaxws:671193
+/tuscany/branches/sca-java-1.x/modules/interface-java-jaxws:724111-724120,732416,732664

Modified: 
tuscany/branches/sca-java-1.4/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSFaultExceptionMapper.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.4/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSFaultExceptionMapper.java?rev=732687&r1=732686&r2=732687&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.4/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSFaultExceptionMapper.java
 (original)
+++ 
tuscany/branches/sca-java-1.4/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSFaultExceptionMapper.java
 Thu Jan  8 03:20:25 2009
@@ -120,36 +120,62 @@
         } catch (Throwable e) {
             // Ignore
         }
-        try {
-            // FIXME: What about if the faultBeanClass is a subclass of the 
argument type?
-            ctor = exceptionClass.getConstructor(String.class, faultBeanClass, 
Throwable.class);
-            ex = ctor.newInstance(message, faultInfo, cause);
-        } catch (NoSuchMethodException e1) {
+        if (faultInfo == null) {
             try {
-                ctor = exceptionClass.getConstructor(String.class, 
faultInfo.getClass());
-                ex = ctor.newInstance(message, faultInfo);
-            } catch (NoSuchMethodException e2) {
+                ctor = exceptionClass.getConstructor(String.class, 
Throwable.class);
+                ex = ctor.newInstance(message, cause);
+            } catch (NoSuchMethodException e1) {
                 try {
-                    ctor = exceptionClass.getConstructor(String.class, 
Throwable.class);
-                    ex = ctor.newInstance(message, cause);
-                    populateException(ex, faultInfo);
-                } catch (NoSuchMethodException e3) {
+                    ctor = exceptionClass.getConstructor(String.class);
+                    ex = ctor.newInstance(message);
+                } catch (NoSuchMethodException e2) {
                     try {
-                        ctor = exceptionClass.getConstructor(String.class);
-                        ex = ctor.newInstance(message);
-                        populateException(ex, faultInfo);
-                    } catch (NoSuchMethodException e4) {
+                        ctor = exceptionClass.getConstructor(Throwable.class);
+                        ex = ctor.newInstance(cause);
+                    } catch (NoSuchMethodException e3) {
                         ctor = exceptionClass.getConstructor();
-                        if (ctor != null) {
-                            ex = ctor.newInstance();
+                        ex = ctor.newInstance();
+                    }
+                }
+            }
+        } else {
+            try {
+                // FIXME: What about if the faultBeanClass is a subclass of 
the argument type?
+                ctor = exceptionClass.getConstructor(String.class, 
faultBeanClass, Throwable.class);
+                ex = ctor.newInstance(message, faultInfo, cause);
+            } catch (NoSuchMethodException e1) {
+                try {
+                    ctor = exceptionClass.getConstructor(String.class, 
faultInfo.getClass());
+                    ex = ctor.newInstance(message, faultInfo);
+                } catch (NoSuchMethodException e2) {
+                    try {
+                        ctor = exceptionClass.getConstructor(String.class, 
Throwable.class);
+                        ex = ctor.newInstance(message, cause);
+                        populateException(ex, faultInfo);
+                    } catch (NoSuchMethodException e3) {
+                        try {
+                            ctor = exceptionClass.getConstructor(String.class);
+                            ex = ctor.newInstance(message);
                             populateException(ex, faultInfo);
-                        } else {
-                            ex = new FaultException(message, faultInfo, cause);
+                        } catch (NoSuchMethodException e4) {
+                            try {
+                                ctor = exceptionClass.getConstructor();
+                                if (ctor != null) {
+                                    ex = ctor.newInstance();
+                                    populateException(ex, faultInfo);
+                                } else {
+                                    ex = new FaultException(message, 
faultInfo, cause);
+                                }
+                            } catch (NoSuchMethodException e5) {
+                                ctor = exceptionClass.getConstructor();
+                                ex = ctor.newInstance();
+                            }
                         }
                     }
                 }
             }
         }
+
         return ex;
     }
 


Reply via email to