From e7dde941b7d9af04bb4a8dd5d68e9ccf4ad92b6e Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Tue, 11 Jun 2013 10:49:31 -0400 Subject: [PATCH] Update STOMP MESSAGE frames with messageId --- .../java/org/springframework/web/messaging/PubSubHeaders.java | 3 ++- .../web/messaging/service/AbstractMessageService.java | 3 ++- .../org/springframework/web/messaging/stomp/StompHeaders.java | 3 +++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/spring-websocket/src/main/java/org/springframework/web/messaging/PubSubHeaders.java b/spring-websocket/src/main/java/org/springframework/web/messaging/PubSubHeaders.java index 0e020779c4..e2a15998ad 100644 --- a/spring-websocket/src/main/java/org/springframework/web/messaging/PubSubHeaders.java +++ b/spring-websocket/src/main/java/org/springframework/web/messaging/PubSubHeaders.java @@ -17,6 +17,7 @@ package org.springframework.web.messaging; import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -85,7 +86,7 @@ public class PubSubHeaders { this.messageHeaders = readOnly ? messageHeaders : new HashMap(messageHeaders); this.rawHeaders = this.messageHeaders.containsKey(RAW_HEADERS) ? - (Map) messageHeaders.get(RAW_HEADERS) : new HashMap(); + (Map) messageHeaders.get(RAW_HEADERS) : Collections.emptyMap(); if (this.messageHeaders.get(MESSAGE_TYPE) == null) { this.messageHeaders.put(MESSAGE_TYPE, MessageType.MESSAGE); diff --git a/spring-websocket/src/main/java/org/springframework/web/messaging/service/AbstractMessageService.java b/spring-websocket/src/main/java/org/springframework/web/messaging/service/AbstractMessageService.java index d8a81b662d..c3a4a88047 100644 --- a/spring-websocket/src/main/java/org/springframework/web/messaging/service/AbstractMessageService.java +++ b/spring-websocket/src/main/java/org/springframework/web/messaging/service/AbstractMessageService.java @@ -75,7 +75,8 @@ public abstract class AbstractMessageService { logger.trace("Processing notification: " + message); } - MessageType messageType = (MessageType) message.getHeaders().get("messageType"); + PubSubHeaders headers = new PubSubHeaders(message.getHeaders(), true); + MessageType messageType = headers.getMessageType(); if (messageType == null || messageType.equals(MessageType.OTHER)) { processOther(message); } diff --git a/spring-websocket/src/main/java/org/springframework/web/messaging/stomp/StompHeaders.java b/spring-websocket/src/main/java/org/springframework/web/messaging/stomp/StompHeaders.java index eb6e0fafdf..f629809b59 100644 --- a/spring-websocket/src/main/java/org/springframework/web/messaging/stomp/StompHeaders.java +++ b/spring-websocket/src/main/java/org/springframework/web/messaging/stomp/StompHeaders.java @@ -224,6 +224,9 @@ public class StompHeaders extends PubSubHeaders { if (subscriptionId != null) { getRawHeaders().put(SUBSCRIPTION, subscriptionId); } + if (StompCommand.MESSAGE.equals(getStompCommand()) && (getMessageId() == null)) { + getRawHeaders().put(MESSAGE_ID, getMessageHeaders().get(ID).toString()); + } } }