You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2008/02/22 11:32:18 UTC

svn commit: r630145 - in /incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms: impl/ provider/

Author: antelder
Date: Fri Feb 22 02:32:16 2008
New Revision: 630145

URL: http://svn.apache.org/viewvc?rev=630145&view=rev
Log:
Add simple exception handling till we know the spec thing to do

Modified:
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingConstants.java
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessor.java
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessorImpl.java

Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingConstants.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingConstants.java?rev=630145&r1=630144&r2=630145&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingConstants.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingConstants.java Fri Feb 22 02:32:16 2008
@@ -55,4 +55,6 @@
     public final static String DEFAULT_MP_CLASSNAME = JMSMessageProcessorImpl.class.getName();
     public final static String DEFAULT_OPERATION_PROP_NAME = "scaOperationName";
 
+    public static final String FAULT_PROPERTY = "org.apache.tuscany.sca.fault";
+
 }

Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java?rev=630145&r1=630144&r2=630145&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java Fri Feb 22 02:32:16 2008
@@ -59,9 +59,9 @@
     public void onMessage(Message requestJMSMsg) {
         try {
             Object responsePayload = invokeService(requestJMSMsg);
-            sendReply(requestJMSMsg, responsePayload);
-        } catch (Exception e) {
-            sendFaultReply(requestJMSMsg, e);
+            sendReply(requestJMSMsg, responsePayload, false);
+        } catch (Throwable e) {
+            sendReply(requestJMSMsg, e, true);
         }
     }
 
@@ -112,7 +112,7 @@
 
     }
 
-    protected void sendReply(Message requestJMSMsg, Object responsePayload) {
+    protected void sendReply(Message requestJMSMsg, Object responsePayload, boolean isFault) {
         try {
 
             if (requestJMSMsg.getJMSReplyTo() == null) {
@@ -121,7 +121,12 @@
             }
 
             Session session = jmsResourceFactory.createSession();
-            Message replyJMSMsg = responseMessageProcessor.insertPayloadIntoJMSMessage(session, responsePayload);
+            Message replyJMSMsg;
+            if (isFault) {
+                replyJMSMsg = responseMessageProcessor.createFaultMessage(session, (Throwable)responsePayload);
+            } else {
+                replyJMSMsg = responseMessageProcessor.insertPayloadIntoJMSMessage(session, responsePayload);
+            }
 
             replyJMSMsg.setJMSDeliveryMode(requestJMSMsg.getJMSDeliveryMode());
             replyJMSMsg.setJMSPriority(requestJMSMsg.getJMSPriority());
@@ -145,10 +150,6 @@
         } catch (NamingException e) {
             throw new JMSBindingException(e);
         }
-    }
-
-    protected void sendFaultReply(Message requestJMSMsg, Exception e) {
-        sendReply(requestJMSMsg, new JMSBindingException("exception invoking JMS service", e));
     }
 
 }

Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessor.java?rev=630145&r1=630144&r2=630145&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessor.java Fri Feb 22 02:32:16 2008
@@ -45,4 +45,9 @@
      * Create a JMS Message containing the payload
      */
     public abstract Message insertPayloadIntoJMSMessage(Session session, Object payload);
+
+    /**
+     * Create a JMS Message for reporting an exception
+     */
+    public abstract Message createFaultMessage(Session session, Throwable responsePayload);
 }

Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessorImpl.java?rev=630145&r1=630144&r2=630145&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessorImpl.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessorImpl.java Fri Feb 22 02:32:16 2008
@@ -20,6 +20,7 @@
 
 import java.io.Serializable;
 import java.io.StringReader;
+import java.lang.reflect.InvocationTargetException;
 
 import javax.jms.JMSException;
 import javax.jms.Message;
@@ -33,7 +34,9 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.impl.builder.StAXOMBuilder;
 import org.apache.tuscany.sca.binding.jms.impl.JMSBinding;
+import org.apache.tuscany.sca.binding.jms.impl.JMSBindingConstants;
 import org.apache.tuscany.sca.binding.jms.impl.JMSBindingException;
+import org.osoa.sca.ServiceRuntimeException;
 
 public class JMSMessageProcessorImpl implements JMSMessageProcessor {
 
@@ -94,6 +97,13 @@
      * @see org.apache.tuscany.binding.jms.OperationAndDataBinding#extractPayload(javax.jms.Message)
      */
     public Object extractPayloadFromJMSMessage(Message msg) {
+        try {
+            if (msg.getBooleanProperty(JMSBindingConstants.FAULT_PROPERTY)) {
+                throw new ServiceRuntimeException("remote service exception, see nested exception",(Throwable)((ObjectMessage)msg).getObject()); 
+            }
+        } catch (JMSException e) {
+            throw new JMSBindingException(e);
+        }
         if (xmlFormat) {
             return extractXMLPayload(msg);
         } else {
@@ -156,6 +166,23 @@
 
             ObjectMessage message = session.createObjectMessage(); // default
             message.setObject((Serializable)o);
+            return message;
+
+        } catch (JMSException e) {
+            throw new JMSBindingException(e);
+        }
+    }
+
+    public Message createFaultMessage(Session session, Throwable o) {
+        try {
+
+            ObjectMessage message = session.createObjectMessage(); 
+            if (o instanceof InvocationTargetException) {
+                message.setObject(((InvocationTargetException)o).getTargetException());
+            } else {
+                message.setObject(o);
+            }
+            message.setBooleanProperty(JMSBindingConstants.FAULT_PROPERTY, true);
             return message;
 
         } catch (JMSException e) {



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org