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 09:34:53 UTC

svn commit: r489285 - in /incubator/tuscany/java/sca/services/bindings/binding.jms/src: main/java/org/apache/tuscany/binding/jms/ test/java/org/apache/tuscany/binding/jms/

Author: antelder
Date: Thu Dec 21 00:34:52 2006
New Revision: 489285

URL: http://svn.apache.org/viewvc?view=rev&rev=489285
Log:
Support correlation ids in response msgs and use TargetInvokerExtension in the JMStargetInvoker

Added:
    incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSProxyTestCase.java   (with props)
Modified:
    incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBinding.java
    incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961.java
    incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSProxy.java
    incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSReference.java
    incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSService.java
    incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSTargetInvoker.java
    incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961TestCase.java
    incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSBindingTestCaseX.java

Modified: incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBinding.java?view=diff&rev=489285&r1=489284&r2=489285
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBinding.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBinding.java Thu Dec 21 00:34:52 2006
@@ -195,4 +195,19 @@
     public void setCreateDestination(String create) {
     }
 
+    public void setResponseDestinationName(String name) {
+        // TODO Auto-generated method stub
+        
+    }
+
+    public void setResponseDestinationType(int destination_type_queue2) {
+        // TODO Auto-generated method stub
+        
+    }
+
+    public void setCreateResponseDestination(String create) {
+        // TODO Auto-generated method stub
+        
+    }
+
 }

Modified: incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961.java?view=diff&rev=489285&r1=489284&r2=489285
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961.java Thu Dec 21 00:34:52 2006
@@ -32,7 +32,6 @@
 import org.apache.tuscany.spi.extension.LoaderExtension;
 import org.apache.tuscany.spi.loader.LoaderException;
 import org.apache.tuscany.spi.loader.LoaderRegistry;
-import org.apache.tuscany.spi.loader.LoaderUtil;
 import org.apache.tuscany.spi.model.ModelObject;
 import org.osoa.sca.annotations.Scope;
 
@@ -45,8 +44,9 @@
     public static final QName BINDING_JMS =
         new QName("http://tuscany.apache.org/xmlns/binding/jms/1.0-SNAPSHOT", "binding.jms");
 
-    public static final List<String> VALID_CORRELATION_SCHEMES = Arrays.asList(new String[] {"requestmsgidtocorrelid", "requestcorrelidtocorrelid", "none"});
-    
+    public static final List<String> VALID_CORRELATION_SCHEMES =
+        Arrays.asList(new String[] {"requestmsgidtocorrelid", "requestcorrelidtocorrelid", "none"});
+
     public JMSBindingLoader0961(@Autowire LoaderRegistry registry) {
         super(registry);
     }
@@ -103,7 +103,7 @@
                     if ("destination".equals(elementName)) {
                         parseDestination(reader, jmsBinding);
                     } else if ("response".equals(elementName)) {
-                        parseResponseDestination(reader, jmsBinding);
+                        parseResponse(reader, jmsBinding);
                     } else if ("headers".equals(elementName)) {
                         parseHeaders(reader, jmsBinding);
                     } else if ("operationAndDataBinding".equals(elementName)) {
@@ -126,32 +126,28 @@
         }
     }
 
-    private void parseResourceAdapter(XMLStreamReader reader, JMSBinding jmsBinding) throws XMLStreamException {
+    protected void parseResponse(XMLStreamReader reader, JMSBinding jmsBinding) {
         // TODO Auto-generated method stub
-        LoaderUtil.skipToEndElement(reader);
+        
     }
 
-    private void parseOperation(XMLStreamReader reader, JMSBinding jmsBinding) throws XMLStreamException {
+    protected void parseResourceAdapter(XMLStreamReader reader, JMSBinding jmsBinding) throws XMLStreamException {
         // TODO Auto-generated method stub
-        LoaderUtil.skipToEndElement(reader);
     }
 
-    private void parseOperationAndDataBinding(XMLStreamReader reader, JMSBinding jmsBinding) throws XMLStreamException {
+    protected void parseOperation(XMLStreamReader reader, JMSBinding jmsBinding) throws XMLStreamException {
         // TODO Auto-generated method stub
-        LoaderUtil.skipToEndElement(reader);
     }
 
-    private void parseHeaders(XMLStreamReader reader, JMSBinding jmsBinding) throws XMLStreamException {
+    protected void parseOperationAndDataBinding(XMLStreamReader reader, JMSBinding jmsBinding) throws XMLStreamException {
         // TODO Auto-generated method stub
-        LoaderUtil.skipToEndElement(reader);
     }
 
-    private void parseResponseDestination(XMLStreamReader reader, JMSBinding jmsBinding) throws XMLStreamException {
+    protected void parseHeaders(XMLStreamReader reader, JMSBinding jmsBinding) throws XMLStreamException {
         // TODO Auto-generated method stub
-        LoaderUtil.skipToEndElement(reader);
     }
 
-    private void parseDestination(XMLStreamReader reader, JMSBinding jmsBinding) throws XMLStreamException {
+    protected void parseDestination(XMLStreamReader reader, JMSBinding jmsBinding) throws XMLStreamException {
         String name = reader.getAttributeValue(null, "name");
         if (name != null && name.length() > 0) {
             jmsBinding.setDestinationName(name);
@@ -168,13 +164,11 @@
         }
         String create = reader.getAttributeValue(null, "create");
         if (create != null && create.length() > 0) {
-                jmsBinding.setCreateDestination(create);
+            jmsBinding.setCreateDestination(create);
         }
-        LoaderUtil.skipToEndElement(reader);
     }
 
-    private void parseURI(JMSBinding jmsBinding, String uri) {
+    protected void parseURI(JMSBinding jmsBinding, String uri) {
         // TODO Auto-generated method stub
-
     }
 }

Modified: incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSProxy.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSProxy.java?view=diff&rev=489285&r1=489284&r2=489285
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSProxy.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSProxy.java Thu Dec 21 00:34:52 2006
@@ -37,70 +37,89 @@
 public class JMSProxy implements MessageListener {
 
     protected Method operationMethod;
-    private JMSResourceFactory jmsResourceFactory;
-    private OperationSelector operationSelector;
-    private InboundWire inboundWire;
-
-    public JMSProxy(InboundWire inboundWire, JMSResourceFactory jmsResourceFactory, OperationSelector operationSelector)
-        throws NamingException {
+    protected JMSResourceFactory jmsResourceFactory;
+    protected OperationSelector operationSelector;
+    protected InboundWire inboundWire;
+    protected String correlationScheme;
+
+    public JMSProxy(InboundWire inboundWire,
+                    JMSResourceFactory jmsResourceFactory,
+                    OperationSelector operationSelector,
+                    String correlationScheme) throws NamingException {
 
         this.jmsResourceFactory = jmsResourceFactory;
         this.operationSelector = operationSelector;
         this.inboundWire = inboundWire;
+        this.correlationScheme = correlationScheme;
     }
 
-    public void onMessage(Message msg) {
-
+    public void onMessage(Message requestJMSMsg) {
         try {
+            Object responsePayload = invokeService(requestJMSMsg);
+            sendReply(requestJMSMsg, responsePayload);
+        } catch (Exception e) {
+            sendFaultReply(requestJMSMsg, e);
+        }
+    }
+
+    protected Object invokeService(Message requestJMSMsg) throws JMSBindingException, JMSException {
+
+        String operationName = operationSelector.getOperationName(requestJMSMsg);
+        Object requestPayload = jmsResourceFactory.getMessagePayload(requestJMSMsg);
 
-            String operationName = operationSelector.getOperationName(msg);
-            Operation op = (Operation)inboundWire.getServiceContract().getOperations().get(operationName);
+        Operation op = (Operation)inboundWire.getServiceContract().getOperations().get(operationName);
+        InvocationChain chain = inboundWire.getInvocationChains().get(op);
 
-            InvocationChain chain = inboundWire.getInvocationChains().get(op);
-            Interceptor headInterceptor = chain.getHeadInterceptor();
+        org.apache.tuscany.spi.wire.Message tuscanyRequestMsg = new MessageImpl();
+        tuscanyRequestMsg.setTargetInvoker(chain.getTargetInvoker());
+        tuscanyRequestMsg.setBody(requestPayload);
+
+        org.apache.tuscany.spi.wire.Message tuscanyResponseMsg = null;
+
+        Interceptor headInterceptor = chain.getHeadInterceptor();
+        if (headInterceptor != null) {
+            tuscanyResponseMsg = headInterceptor.invoke(tuscanyRequestMsg);
+        }
+
+        // TODO: what if headInterceptor is null?
+
+        return tuscanyResponseMsg.getBody();
+    }
 
-            org.apache.tuscany.spi.wire.Message tuscanyMsg = new MessageImpl();
-            Object payload = jmsResourceFactory.getMessagePayload(msg);
-            tuscanyMsg.setBody(payload);
-            tuscanyMsg.setTargetInvoker(chain.getTargetInvoker());
-            org.apache.tuscany.spi.wire.Message tuscanyResMsg = null;
+    protected void sendReply(Message requestJMSMsg, Object responsePayload) {
+        try {
 
-            if (headInterceptor != null) {
-                tuscanyResMsg = headInterceptor.invoke(tuscanyMsg);
+            if (requestJMSMsg.getJMSReplyTo() == null) {
+                // assume no reply is expected
+                return;
             }
 
-            // if result is null then the method can be assumed as oneway
-            if (tuscanyResMsg != null && tuscanyResMsg.getBody() != null) {
+            Session session = jmsResourceFactory.createSession();
+            Message replyJMSMsg = jmsResourceFactory.createMessage(session, responsePayload);
 
-                sendReply(msg, operationName, tuscanyResMsg);
+            if (correlationScheme == null || "RequestMsgIDToCorrelID".equalsIgnoreCase(correlationScheme)) {
+                replyJMSMsg.setJMSCorrelationID(requestJMSMsg.getJMSMessageID());
+            } else if ("RequestCorrelIDToCorrelID".equalsIgnoreCase(correlationScheme)) {
+                replyJMSMsg.setJMSCorrelationID(requestJMSMsg.getJMSCorrelationID());
             }
 
-        } catch (JMSBindingException e) {
-            throw new JMSBindingRuntimeException(e);
+            Destination destination = requestJMSMsg.getJMSReplyTo();
+            MessageProducer producer = session.createProducer(destination);
+
+            producer.send(replyJMSMsg);
+
+            producer.close();
+            session.close();
+
         } catch (JMSException e) {
             throw new JMSBindingRuntimeException(e);
         } catch (NamingException e) {
             throw new JMSBindingRuntimeException(e);
-        } catch (Exception e) {
-            // TODO: need to not swallow these exceptions
-            e.printStackTrace();
-            throw new JMSBindingRuntimeException(e);
         }
-
     }
 
-    private void sendReply(Message reqMsg, String operationName, org.apache.tuscany.spi.wire.Message tuscanyResMsg)
-        throws JMSException, NamingException {
-
-        Session session = jmsResourceFactory.createSession();
-
-        Message message = jmsResourceFactory.createMessage(session, tuscanyResMsg.getBody());
-
-        Destination destination = reqMsg.getJMSReplyTo();
-
-        MessageProducer producer = session.createProducer(destination);
-        producer.send(message);
-        producer.close();
-        session.close();
+    protected void sendFaultReply(Message requestJMSMsg, Exception e) {
+        sendReply(requestJMSMsg, new JMSBindingException("exception invoking JMS service", e));
     }
+
 }

Modified: incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSReference.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSReference.java?view=diff&rev=489285&r1=489284&r2=489285
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSReference.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSReference.java Thu Dec 21 00:34:52 2006
@@ -50,6 +50,6 @@
 	}
 
     public TargetInvoker createTargetInvoker(ServiceContract contract, Operation operation) {
-    	return new JMSTargetInvoker(jmsResourceFactory, jmsBinding, operation.getName(),operationSelector, false);
+    	return new JMSTargetInvoker(jmsResourceFactory, jmsBinding, operation.getName(),operationSelector);
     }
 }

Modified: incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSService.java?view=diff&rev=489285&r1=489284&r2=489285
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSService.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSService.java Thu Dec 21 00:34:52 2006
@@ -80,7 +80,7 @@
         Destination destination = session.createQueue(jmsBinding.getDestinationName());
         
         consumer = session.createConsumer(destination);
-        consumer.setMessageListener(new JMSProxy(getInboundWire(),jmsResourceFactory,operationSelector));
+        consumer.setMessageListener(new JMSProxy(getInboundWire(),jmsResourceFactory,operationSelector, jmsBinding.getCorrelationScheme()));
         
         jmsResourceFactory.startConnection();
         

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=489285&r1=489284&r2=489285
==============================================================================
--- 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 00:34:52 2006
@@ -25,46 +25,28 @@
 import javax.jms.JMSException;
 import javax.jms.MessageConsumer;
 import javax.jms.MessageProducer;
-import javax.jms.ObjectMessage;
 import javax.jms.Session;
 import javax.naming.NamingException;
 
-import org.apache.tuscany.spi.wire.InvocationRuntimeException;
-import org.apache.tuscany.spi.wire.Message;
-import org.apache.tuscany.spi.wire.TargetInvoker;
+import org.apache.tuscany.spi.extension.TargetInvokerExtension;
 
 /**
  * Invoke a JMS reference.
  *
  * @version $Rev: 449970 $ $Date: 2006-09-26 06:05:35 -0400 (Tue, 26 Sep 2006) $
  */
-public class JMSTargetInvoker implements TargetInvoker {
+public class JMSTargetInvoker extends TargetInvokerExtension {
     private JMSBinding jmsBinding;
     private String operationName;
 	private JMSResourceFactory jmsResourceFactory;
     private OperationSelector operationSelector;
-    protected boolean xmlStyle;
     
-    public JMSTargetInvoker(JMSResourceFactory jmsResourceFactory,JMSBinding jmsBinding, String operationName, OperationSelector operationSelector, boolean xmlStyle){
+    public JMSTargetInvoker(JMSResourceFactory jmsResourceFactory,JMSBinding jmsBinding, String operationName, OperationSelector operationSelector){
+        super(null, null, null);
         this.jmsBinding = jmsBinding;
         this.jmsResourceFactory = jmsResourceFactory;
         this.operationName = operationName;
         this.operationSelector = operationSelector;
-        this.xmlStyle = xmlStyle;
-    }
-
-    /* By the time I receive the args it should have been converted to
-     * XML by the data binding framework.
-     */
-    public Message invoke(Message msg) throws InvocationRuntimeException {
-        try {
-        	Object[] args = (Object[])msg.getBody();
-            Object resp = invokeTarget(args,(short)0);
-            msg.setBody(resp);
-        } catch (Exception e) {
-            msg.setBody(e.getCause());
-        }
-        return msg;
     }
 
     public Object invokeTarget(Object payload,final short sequence)throws InvocationTargetException {
@@ -79,25 +61,6 @@
 
     }
 
-    public Object clone() throws CloneNotSupportedException {
-        try {
-            return super.clone();
-        } catch (CloneNotSupportedException e) {
-            throw new AssertionError(e);
-        }
-    }
-
-    public boolean isOptimizable() {
-        return false;
-    }
-
-    public boolean isCacheable() {
-        return false;
-    }
-
-    public void setCacheable(boolean cacheable) {
-    }
-    
     private Object sendReceiveMessage(Object[] payload) throws JMSException, NamingException, JMSBindingException{
     	
     	Session session = jmsResourceFactory.createSession();

Modified: incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961TestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961TestCase.java?view=diff&rev=489285&r1=489284&r2=489285
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961TestCase.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSBindingLoader0961TestCase.java Thu Dec 21 00:34:52 2006
@@ -43,6 +43,12 @@
         }
     }
 
+    public void testDestination() throws LoaderException, XMLStreamException {
+        XMLStreamReader reader = createReader("<binding.jms><destination name=\"foo\"/></binding.jms>");
+        JMSBinding jmsBinding = loader.load(null, null, reader, null);
+        assertEquals("foo", jmsBinding.getDestinationName());
+    }
+
     public void testInitialContextFactory() throws LoaderException, XMLStreamException {
         XMLStreamReader reader = createReader("<binding.jms initialContextFactory=\"myicf\"></binding.jms>");
         JMSBinding jmsBinding = loader.load(null, null, reader, null);

Modified: incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSBindingTestCaseX.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSBindingTestCaseX.java?view=diff&rev=489285&r1=489284&r2=489285
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSBindingTestCaseX.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSBindingTestCaseX.java Thu Dec 21 00:34:52 2006
@@ -65,7 +65,7 @@
         binding.setOperationSelectorPropertyName("scaOperationName");
         JMSResourceFactory rf = new SimpleJMSResourceFactory(binding);
         rf.setDataBinding(new XMLTextMsgDataBinding());
-        JMSTargetInvoker invoker = new JMSTargetInvoker(rf, binding, "getGreetings", new DefaultOperationSelector(binding), true);
+        JMSTargetInvoker invoker = new JMSTargetInvoker(rf, binding, "getGreetings", new DefaultOperationSelector(binding));
         return invoker;
     }
 

Added: incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSProxyTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSProxyTestCase.java?view=auto&rev=489285
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSProxyTestCase.java (added)
+++ incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSProxyTestCase.java Thu Dec 21 00:34:52 2006
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.tuscany.binding.jms;
+
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageProducer;
+import javax.jms.ObjectMessage;
+import javax.jms.Session;
+import javax.naming.NamingException;
+
+import junit.framework.TestCase;
+
+import org.easymock.EasyMock;
+
+public class JMSProxyTestCase extends TestCase {
+    
+    /**
+     * Tests the jms response msg has correlation id set to the request msg id
+     */
+    public void testOnMessageRequestMsgIDToCorrelID() throws NamingException, JMSException {
+
+        String id = "123";
+        
+        MessageProducer producer = EasyMock.createNiceMock(MessageProducer.class);
+
+        Session session = EasyMock.createNiceMock(Session.class);
+        EasyMock.expect(session.createProducer(EasyMock.isA(Destination.class))).andReturn(producer);
+        EasyMock.replay(session);
+
+        ObjectMessage responseJMSMsg = EasyMock.createMock(ObjectMessage.class);
+        responseJMSMsg.setJMSCorrelationID(id);
+        EasyMock.replay(responseJMSMsg);
+
+
+        JMSResourceFactory jmsResourceFactory = EasyMock.createMock(JMSResourceFactory.class);
+        EasyMock.expect(jmsResourceFactory.createSession()).andReturn(session);
+        EasyMock.expect(jmsResourceFactory.createMessage(EasyMock.eq(session), EasyMock.isA(Exception.class))).andReturn(responseJMSMsg);
+
+        JMSProxy jmsProxy = new JMSProxy(null, jmsResourceFactory, null, null);
+
+        Message requestJMSMsg = EasyMock.createMock(Message.class);
+        EasyMock.expect(requestJMSMsg.getJMSReplyTo()).andReturn(new Destination(){});
+        EasyMock.expect(requestJMSMsg.getJMSReplyTo()).andReturn(new Destination(){});
+        EasyMock.expect(requestJMSMsg.getJMSMessageID()).andReturn(id);
+        
+        producer.send(EasyMock.isA(Message.class));
+        EasyMock.replay(producer);
+
+        EasyMock.replay(requestJMSMsg);
+        EasyMock.replay(jmsResourceFactory);
+
+        jmsProxy.onMessage(requestJMSMsg);
+
+        EasyMock.verify(requestJMSMsg);
+        EasyMock.verify(jmsResourceFactory);
+        EasyMock.verify(producer);
+        EasyMock.verify(session);
+    }
+
+}

Propchange: incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSProxyTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSProxyTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date



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