summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/ObjectMessageProcessor.java
diff options
context:
space:
mode:
authorslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2009-02-25 15:32:59 +0000
committerslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2009-02-25 15:32:59 +0000
commitfd31a1072875989d90434af4881d5020114e08d4 (patch)
treee1cf7ec6c29776ffa14516de9c97cedd3b429cbc /branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/ObjectMessageProcessor.java
parent54b82d1fd035882bfe858b097d3118b8bd3bf2b3 (diff)
TUSCANY-2867 - Pass checked exceptions as InvocationTargetExceptions. Don't rely on boolean fault flag for messages of object type. Thanks for the patch Kaushik
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@747826 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/ObjectMessageProcessor.java')
-rw-r--r--branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/ObjectMessageProcessor.java19
1 files changed, 19 insertions, 0 deletions
diff --git a/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/ObjectMessageProcessor.java b/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/ObjectMessageProcessor.java
index 73a822a622..97d3d861f4 100644
--- a/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/ObjectMessageProcessor.java
+++ b/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/ObjectMessageProcessor.java
@@ -19,6 +19,7 @@
package org.apache.tuscany.sca.binding.jms.provider;
import java.io.Serializable;
+import java.lang.reflect.InvocationTargetException;
import java.util.logging.Logger;
import javax.jms.JMSException;
@@ -28,6 +29,7 @@ import javax.jms.Session;
import org.apache.tuscany.sca.binding.jms.impl.JMSBinding;
import org.apache.tuscany.sca.binding.jms.impl.JMSBindingException;
+import org.osoa.sca.ServiceRuntimeException;
/**
* MessageProcessor for sending/receiving Serializable objects with the JMSBinding.
@@ -77,4 +79,21 @@ public class ObjectMessageProcessor extends AbstractMessageProcessor {
}
}
+ @Override
+ public Object extractPayloadFromJMSMessage(Message msg) {
+ try {
+ Object o = ((ObjectMessage)msg).getObject();
+ if (o instanceof Throwable ) {
+ if (o instanceof RuntimeException) {
+ throw new ServiceRuntimeException("remote service exception, see nested exception", (RuntimeException)o);
+ } else {
+ return new InvocationTargetException((Throwable) o);
+ }
+ }
+ } catch (JMSException e) {
+ throw new JMSBindingException(e);
+ }
+ return extractPayload(msg);
+ }
+
}