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;
}