Fix issue in MessageReturnValueHandler

This commit is contained in:
Rossen Stoyanchev
2013-06-24 11:47:59 -04:00
parent 32cb2ca2e7
commit ac23832e4d
2 changed files with 14 additions and 10 deletions

View File

@@ -61,6 +61,7 @@ public class MessageReturnValueHandler implements ReturnValueHandler {
Assert.notNull(this.clientChannel, "No clientChannel to send messages to");
Message<?> returnMessage = (Message<?>) returnValue;
if (message == null) {
return;
}
@@ -68,7 +69,7 @@ public class MessageReturnValueHandler implements ReturnValueHandler {
PubSubHeaderAccesssor headers = PubSubHeaderAccesssor.wrap(message);
Assert.notNull(headers.getSubscriptionId(), "No subscription id: " + message);
PubSubHeaderAccesssor returnHeaders = PubSubHeaderAccesssor.wrap(message);
PubSubHeaderAccesssor returnHeaders = PubSubHeaderAccesssor.wrap(returnMessage);
returnHeaders.setSessionId(headers.getSessionId());
returnHeaders.setSubscriptionId(headers.getSubscriptionId());
@@ -76,11 +77,10 @@ public class MessageReturnValueHandler implements ReturnValueHandler {
returnHeaders.setDestination(headers.getDestination());
}
Message<?> returnMessage = MessageBuilder.withPayload(
message.getPayload()).copyHeaders(headers.toHeaders()).build();
returnMessage = MessageBuilder.withPayload(
returnMessage.getPayload()).copyHeaders(returnHeaders.toHeaders()).build();
this.clientChannel.send(returnMessage);
}
}

View File

@@ -32,21 +32,22 @@ import static org.junit.Assert.*;
*/
public class StompMessageConverterTests {
private StompMessageConverter<Message<byte[]>> converter;
private StompMessageConverter converter;
@Before
public void setup() {
this.converter = new StompMessageConverter<Message<byte[]>>();
this.converter = new StompMessageConverter();
}
@SuppressWarnings("unchecked")
@Test
public void connectFrame() throws Exception {
String accept = "accept-version:1.1\n";
String host = "host:github.org\n";
String frame = "\n\n\nCONNECT\n" + accept + host + "\n";
Message<byte[]> message = this.converter.toMessage(frame.getBytes("UTF-8"), "session-123");
Message<byte[]> message = (Message<byte[]>) this.converter.toMessage(frame.getBytes("UTF-8"), "session-123");
assertEquals(0, message.getPayload().length);
@@ -76,7 +77,8 @@ public class StompMessageConverterTests {
String accept = "accept-version:1.1\n";
String host = "ho\\c\\ns\\rt:st\\nomp.gi\\cthu\\b.org\n";
String frame = "CONNECT\n" + accept + host + "\n";
Message<byte[]> message = this.converter.toMessage(frame.getBytes("UTF-8"), "session-123");
@SuppressWarnings("unchecked")
Message<byte[]> message = (Message<byte[]>) this.converter.toMessage(frame.getBytes("UTF-8"), "session-123");
assertEquals(0, message.getPayload().length);
@@ -97,7 +99,8 @@ public class StompMessageConverterTests {
String accept = "accept-version:1.2\n";
String host = "host:github.org\n";
String test = "CONNECT\r\n" + accept.replaceAll("\n", "\r\n") + host.replaceAll("\n", "\r\n") + "\r\n";
Message<byte[]> message = this.converter.toMessage(test.getBytes("UTF-8"), "session-123");
@SuppressWarnings("unchecked")
Message<byte[]> message = (Message<byte[]>) this.converter.toMessage(test.getBytes("UTF-8"), "session-123");
assertEquals(0, message.getPayload().length);
@@ -118,7 +121,8 @@ public class StompMessageConverterTests {
String accept = "accept-version:1.1\n";
String host = "ho\\c\\ns\\rt:st\\nomp.gi\\cthu\\b.org\n";
String test = "\n\n\nCONNECT\r\n" + accept.replaceAll("\n", "\r\n") + host.replaceAll("\n", "\r\n") + "\r\n";
Message<byte[]> message = this.converter.toMessage(test.getBytes("UTF-8"), "session-123");
@SuppressWarnings("unchecked")
Message<byte[]> message = (Message<byte[]>) this.converter.toMessage(test.getBytes("UTF-8"), "session-123");
assertEquals(0, message.getPayload().length);