diff options
author | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2009-02-25 15:32:59 +0000 |
---|---|---|
committer | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2009-02-25 15:32:59 +0000 |
commit | fd31a1072875989d90434af4881d5020114e08d4 (patch) | |
tree | e1cf7ec6c29776ffa14516de9c97cedd3b429cbc /branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/ObjectMessageProcessor.java | |
parent | 54b82d1fd035882bfe858b097d3118b8bd3bf2b3 (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.java | 19 |
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); + } + } |