From 1b3f1160d33a23b182404afc3a19adab00ceed4e Mon Sep 17 00:00:00 2001 From: Ruediger Gad Date: Wed, 15 Jun 2016 21:56:17 +0200 Subject: [PATCH 1/2] ActiveMQ uses the content-length as indicator for the message type when converting between different wire formats. --- .../src/main/java/org/fusesource/stomp/jms/StompChannel.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/stompjms-client/src/main/java/org/fusesource/stomp/jms/StompChannel.java b/stompjms-client/src/main/java/org/fusesource/stomp/jms/StompChannel.java index 38cfb6e..30ae1bf 100644 --- a/stompjms-client/src/main/java/org/fusesource/stomp/jms/StompChannel.java +++ b/stompjms-client/src/main/java/org/fusesource/stomp/jms/StompChannel.java @@ -53,6 +53,7 @@ import org.fusesource.stomp.client.Stomp; import org.fusesource.stomp.codec.StompFrame; import org.fusesource.stomp.jms.message.StompJmsMessage; +import org.fusesource.stomp.jms.message.StompJmsTextMessage; import org.fusesource.stomp.jms.util.StompTranslator; public class StompChannel { @@ -215,7 +216,9 @@ public void sendMessage(StompJmsMessage copy, AsciiBuffer txid, boolean sync) th copy.onSend(); StompFrame frame = copy.getFrame(); frame.action(SEND); - frame.headerMap().put(CONTENT_LENGTH, new AsciiBuffer(Integer.toString(frame.content().length))); + if (!(copy instanceof StompJmsTextMessage)) { + frame.headerMap().put(CONTENT_LENGTH, new AsciiBuffer(Integer.toString(frame.content().length))); + } if (txid != null) { frame.headerMap().put(TRANSACTION, txid); } From dc20a2637d5ae5d028ee2fe1d0794fc8b3dfc8fa Mon Sep 17 00:00:00 2001 From: Ruediger Gad Date: Wed, 15 Jun 2016 23:22:14 +0200 Subject: [PATCH 2/2] Further clean up contents-length handling. --- .../org/fusesource/stomp/client/CallbackConnection.java | 7 ------- .../main/java/org/fusesource/stomp/codec/StompFrame.java | 4 ---- 2 files changed, 11 deletions(-) diff --git a/stompjms-client/src/main/java/org/fusesource/stomp/client/CallbackConnection.java b/stompjms-client/src/main/java/org/fusesource/stomp/client/CallbackConnection.java index f5057a5..52f9f4b 100644 --- a/stompjms-client/src/main/java/org/fusesource/stomp/client/CallbackConnection.java +++ b/stompjms-client/src/main/java/org/fusesource/stomp/client/CallbackConnection.java @@ -178,17 +178,10 @@ public void run() { } public boolean offer(StompFrame frame) { - return this.offer(frame, true); - } - - public boolean offer(StompFrame frame, boolean addContentLength) { getDispatchQueue().assertExecuting(); if( this.transport.full() ) { return false; } else { - if( addContentLength && SEND.equals(frame.action()) ) { - frame.addContentLengthHeader(); - } return this.transport.offer(frame); } } diff --git a/stompjms-client/src/main/java/org/fusesource/stomp/codec/StompFrame.java b/stompjms-client/src/main/java/org/fusesource/stomp/codec/StompFrame.java index a0c5a9e..895fc5e 100644 --- a/stompjms-client/src/main/java/org/fusesource/stomp/codec/StompFrame.java +++ b/stompjms-client/src/main/java/org/fusesource/stomp/codec/StompFrame.java @@ -194,10 +194,6 @@ public void write(DataOutput out) throws IOException { write(out, true); } - public void addContentLengthHeader() { - addHeader(CONTENT_LENGTH, new AsciiBuffer(Integer.toString(content.length()))); - } - public int size() { int rc = action.length() + 1; if( headerList!=null ) {