Title: [840] trunk/core/src/main/java/org/servicemix/jbi/messaging: SM-174 : SendSync on cluster

Diff

Modified: trunk/core/src/main/java/org/servicemix/jbi/messaging/DeliveryChannelImpl.java (839 => 840)

--- trunk/core/src/main/java/org/servicemix/jbi/messaging/DeliveryChannelImpl.java	2005-11-15 14:37:04 UTC (rev 839)
+++ trunk/core/src/main/java/org/servicemix/jbi/messaging/DeliveryChannelImpl.java	2005-11-15 14:38:28 UTC (rev 840)
@@ -576,6 +576,7 @@
         if (theOriginal != null && theOriginal.getSyncState() == MessageExchangeImpl.SYNC_STATE_SYNC_SENT) {
             suspendTx(theOriginal);
             synchronized (theOriginal) {
+                theOriginal.copyFrom(me);
                 theOriginal.setSyncState(MessageExchangeImpl.SYNC_STATE_SYNC_RECEIVED);
                 theOriginal.notify();
             }

Modified: trunk/core/src/main/java/org/servicemix/jbi/messaging/MessageExchangeImpl.java (839 => 840)

--- trunk/core/src/main/java/org/servicemix/jbi/messaging/MessageExchangeImpl.java	2005-11-15 14:37:04 UTC (rev 839)
+++ trunk/core/src/main/java/org/servicemix/jbi/messaging/MessageExchangeImpl.java	2005-11-15 14:38:28 UTC (rev 840)
@@ -102,6 +102,13 @@
     protected MessageExchangeImpl() {
     }
     
+    protected void copyFrom(MessageExchangeImpl me) {
+        this.packet = me.packet;
+        this.state = me.state;
+        this.mirror.packet = me.packet;
+        this.mirror.state = me.mirror.state;
+    }
+    
     protected boolean can(int c) {
         return (this.states[state][STATES_CANS] & c) == c;
     }

Modified: trunk/core/src/test/java/org/servicemix/jbi/nmr/flow/jms/PingService.java (839 => 840)

--- trunk/core/src/test/java/org/servicemix/jbi/nmr/flow/jms/PingService.java	2005-11-15 14:37:04 UTC (rev 839)
+++ trunk/core/src/test/java/org/servicemix/jbi/nmr/flow/jms/PingService.java	2005-11-15 14:38:28 UTC (rev 840)
@@ -14,6 +14,7 @@
  */
 package org.servicemix.jbi.nmr.flow.jms;
 
+import javax.jbi.messaging.ExchangeStatus;
 import javax.jbi.messaging.MessageExchange;
 import javax.jbi.messaging.MessagingException;
 import javax.jbi.messaging.NormalizedMessage;
@@ -26,11 +27,15 @@
  */
 public class PingService extends ComponentSupport implements MessageExchangeListener{
     public void onMessageExchange(MessageExchange exchange) throws MessagingException{
-        System.out.println("GOT A MESSAGE; exchange.status="+exchange.getStatus());
-        NormalizedMessage out=exchange.createMessage();
-        out.setContent(new StringSource("<response>Ping back at ya!</response>"));
-        System.out.println("SENDING RESPONSE; exchange.status="+exchange.getStatus());
-        answer(exchange,out);
-        System.out.println("RESPONSE SENT; exchange.status="+exchange.getStatus());
+        if (exchange.getStatus() == ExchangeStatus.ACTIVE) {
+            System.out.println("GOT A MESSAGE; exchange.status="+exchange.getStatus());
+            NormalizedMessage out=exchange.createMessage();
+            out.setContent(new StringSource("<response>Ping back at ya!</response>"));
+            System.out.println("SENDING RESPONSE; exchange.status="+exchange.getStatus());
+            answer(exchange,out);
+            System.out.println("RESPONSE SENT; exchange.status="+exchange.getStatus());
+        } else {
+            System.out.println("GOT A MESSAGE; exchange.status="+exchange.getStatus());
+        }
     }
 }
\ No newline at end of file

Modified: trunk/core/src/test/java/org/servicemix/jbi/nmr/flow/jms/SimpleClusterSendSyncTest.java (839 => 840)

--- trunk/core/src/test/java/org/servicemix/jbi/nmr/flow/jms/SimpleClusterSendSyncTest.java	2005-11-15 14:37:04 UTC (rev 839)
+++ trunk/core/src/test/java/org/servicemix/jbi/nmr/flow/jms/SimpleClusterSendSyncTest.java	2005-11-15 14:38:28 UTC (rev 840)
@@ -21,6 +21,7 @@
 import junit.framework.TestCase;
 import org.servicemix.client.ServiceMixClient;
 import org.servicemix.jbi.container.SpringJBIContainer;
+import org.servicemix.jbi.jaxp.SourceTransformer;
 import org.servicemix.jbi.jaxp.StringSource;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.support.AbstractXmlApplicationContext;
@@ -60,7 +61,8 @@
         in.setContent(new StringSource("<ping>Pinging you</ping>"));
         System.out.println("SENDING; exchange.status="+exchange.getStatus());
         client.sendSync(exchange);
-        System.out.println("GOT RESPONSE; exchange.status="+exchange.getStatus());
+        assertNotNull(exchange.getOutMessage());
+        System.out.println("GOT RESPONSE; exchange.out="+new SourceTransformer().toString(exchange.getOutMessage().getContent()));
         client.done(exchange);
     }
 }

Reply via email to