Title: [840] trunk/core/src/main/java/org/servicemix/jbi/messaging: SM-174 : SendSync on cluster
- Revision
- 840
- Author
- gnt
- Date
- 2005-11-15 09:38:28 -0500 (Tue, 15 Nov 2005)
Log Message
SM-174 : SendSync on cluster
sendSync did not copy the received response packet
Modified Paths
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);
}
}