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 2006/12/21 12:26:32 UTC

svn commit: r489328 - /incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSTargetInvoker.java

Author: antelder
Date: Thu Dec 21 03:26:31 2006
New Revision: 489328

URL: http://svn.apache.org/viewvc?view=rev&rev=489328
Log:
Tidy up code

Modified:
    incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSTargetInvoker.java

Modified: incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSTargetInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSTargetInvoker.java?view=diff&rev=489328&r1=489327&r2=489328
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSTargetInvoker.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSTargetInvoker.java Thu Dec 21 03:26:31 2006
@@ -22,6 +22,7 @@
 
 import javax.jms.Destination;
 import javax.jms.JMSException;
+import javax.jms.Message;
 import javax.jms.MessageConsumer;
 import javax.jms.MessageProducer;
 import javax.jms.Session;
@@ -31,14 +32,15 @@
 
 /**
  * Invoke a JMS reference.
- * 
- * @version $Rev: 449970 $ $Date: 2006-09-26 06:05:35 -0400 (Tue, 26 Sep 2006) $
  */
 public class JMSTargetInvoker extends TargetInvokerExtension {
-    private JMSBinding jmsBinding;
-    private String operationName;
-    private JMSResourceFactory jmsResourceFactory;
-    private OperationSelector operationSelector;
+
+    protected JMSBinding jmsBinding;
+    protected JMSResourceFactory jmsResourceFactory;
+
+    protected String operationName;
+    protected OperationSelector operationSelector;
+
     protected Destination requestDest;
     protected Destination replyDest;
 
@@ -59,43 +61,54 @@
 
     public Object invokeTarget(Object payload, final short sequence) throws InvocationTargetException {
         try {
+            Session session = jmsResourceFactory.createSession();
+            try {
 
-            return sendReceiveMessage((Object[])payload);
-
-        } catch (Exception e) { // catch JMS specific error
-            e.printStackTrace();
-            throw new AssertionError(e);
+                Destination replyToDest = (replyDest != null) ? replyDest : session.createTemporaryQueue();
+                Message requestMsg = sendRequest((Object[])payload, session, replyToDest);
+                Message replyMsg = receiveReply(session, replyToDest, requestMsg.getJMSMessageID());
+
+                return jmsResourceFactory.getMessagePayload(replyMsg);
+
+            } finally {
+                session.close();
+            }
+        } catch (JMSException e) {
+            throw new InvocationTargetException(e);
+        } catch (NamingException e) {
+            throw new InvocationTargetException(e);
+        } catch (JMSBindingException e) {
+            throw new InvocationTargetException(e);
         }
-
     }
 
-    private Object sendReceiveMessage(Object[] payload) throws JMSException, NamingException, JMSBindingException {
-
-        Session session = jmsResourceFactory.createSession();
-
-        javax.jms.Message message = jmsResourceFactory.createMessage(session, payload);
-        operationSelector.setOperationName(operationName, message);
-
-        if (jmsBinding.getResponseDestinationName() == null) {
-            replyDest = session.createTemporaryQueue();
-        }
-
-        message.setJMSReplyTo(replyDest);
+    protected Message sendRequest(Object[] payload, Session session, Destination replyToDest) throws JMSException,
+        JMSBindingException {
+        Message requestMsg = jmsResourceFactory.createMessage(session, payload);
+        operationSelector.setOperationName(operationName, requestMsg);
+        requestMsg.setJMSReplyTo(replyToDest);
 
         MessageProducer producer = session.createProducer(requestDest);
+        try {
+            producer.send(requestMsg);
+        } finally {
+            producer.close();
+        }
+        return requestMsg;
+    }
 
-        producer.send(message);
-        producer.close();
-
-        String msgSelector = "JMSCorrelationID = '" + message.getJMSMessageID() + "'";
-        
-        MessageConsumer consumer = session.createConsumer(replyDest, msgSelector);
-        jmsResourceFactory.startConnection();
-        javax.jms.Message reply = consumer.receive(jmsBinding.getTimeToLive());
-        consumer.close();
-        session.close();
-
-        return jmsResourceFactory.getMessagePayload(reply);
+    protected Message receiveReply(Session session, Destination replyToDest, String requestMsgId) throws JMSException,
+        NamingException {
+        String msgSelector = "JMSCorrelationID = '" + requestMsgId + "'";
+        MessageConsumer consumer = session.createConsumer(replyToDest, msgSelector);
+        Message replyMsg;
+        try {
+            jmsResourceFactory.startConnection();
+            replyMsg = consumer.receive(jmsBinding.getTimeToLive());
+        } finally {
+            consumer.close();
+        }
+        return replyMsg;
     }
 
 }



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