@Nullable public String getReceiptId() { return getFirstNativeHeader(STOMP_RECEIPT_ID_HEADER); }
@Nullable public String getReceipt() { return getFirstNativeHeader(STOMP_RECEIPT_HEADER); }
@Nullable public String getNack() { return getFirstNativeHeader(STOMP_NACK_HEADER); }
@Nullable public String getMessageId() { return getFirstNativeHeader(STOMP_MESSAGE_ID_HEADER); }
@Nullable public String getHost() { return getFirstNativeHeader(STOMP_HOST_HEADER); }
@Nullable public String getLogin() { return getFirstNativeHeader(STOMP_LOGIN_HEADER); }
@Nullable public String getMessage() { return getFirstNativeHeader(STOMP_MESSAGE_HEADER); }
@Nullable public String getAck() { return getFirstNativeHeader(STOMP_ACK_HEADER); }
@Nullable public String getVersion() { return getFirstNativeHeader(STOMP_VERSION_HEADER); }
@Nullable public Integer getContentLength() { String header = getFirstNativeHeader(STOMP_CONTENT_LENGTH_HEADER); return (header != null ? Integer.valueOf(header) : null); }
public long[] getHeartbeat() { String rawValue = getFirstNativeHeader(STOMP_HEARTBEAT_HEADER); String[] rawValues = StringUtils.split(rawValue, ","); if (rawValues == null) { return Arrays.copyOf(DEFAULT_HEARTBEAT, 2); } return new long[] {Long.valueOf(rawValues[0]), Long.valueOf(rawValues[1])}; }
public Set<String> getAcceptVersion() { String rawValue = getFirstNativeHeader(STOMP_ACCEPT_VERSION_HEADER); return (rawValue != null ? StringUtils.commaDelimitedListToSet(rawValue) : Collections.emptySet()); }
private void protectPasscode() { String value = getFirstNativeHeader(STOMP_PASSCODE_HEADER); if (value != null && !"PROTECTED".equals(value)) { setHeader(CREDENTIALS_HEADER, new StompPasscode(value)); setNativeHeader(STOMP_PASSCODE_HEADER, "PROTECTED"); } }
void updateSimpMessageHeadersFromStompHeaders() { if (getNativeHeaders() == null) { return; } String value = getFirstNativeHeader(STOMP_DESTINATION_HEADER); if (value != null) { super.setDestination(value); } value = getFirstNativeHeader(STOMP_CONTENT_TYPE_HEADER); if (value != null) { super.setContentType(MimeTypeUtils.parseMimeType(value)); } StompCommand command = getCommand(); if (StompCommand.MESSAGE.equals(command)) { value = getFirstNativeHeader(STOMP_SUBSCRIPTION_HEADER); if (value != null) { super.setSubscriptionId(value); } } else if (StompCommand.SUBSCRIBE.equals(command) || StompCommand.UNSUBSCRIBE.equals(command)) { value = getFirstNativeHeader(STOMP_ID_HEADER); if (value != null) { super.setSubscriptionId(value); } } else if (StompCommand.CONNECT.equals(command)) { protectPasscode(); } }
@Test public void modifyCustomNativeHeader() { MultiValueMap<String, String> extHeaders = new LinkedMultiValueMap<>(); extHeaders.add(StompHeaderAccessor.STOMP_ID_HEADER, "s1"); extHeaders.add(StompHeaderAccessor.STOMP_DESTINATION_HEADER, "/d"); extHeaders.add("accountId", "ABC123"); StompHeaderAccessor headers = StompHeaderAccessor.create(StompCommand.SUBSCRIBE, extHeaders); String accountId = headers.getFirstNativeHeader("accountId"); headers.setNativeHeader("accountId", accountId.toLowerCase()); Map<String, List<String>> actual = headers.toNativeHeaderMap(); assertEquals(3, actual.size()); assertEquals("s1", actual.get(StompHeaderAccessor.STOMP_ID_HEADER).get(0)); assertEquals("/d", actual.get(StompHeaderAccessor.STOMP_DESTINATION_HEADER).get(0)); assertNotNull("abc123", actual.get("accountId").get(0)); }
@Test public void decodeFrameWithHeaderWithEmptyValue() { String accept = "accept-version:1.1\n"; String valuelessKey = "key:\n"; Message<byte[]> frame = decode("CONNECT\n" + accept + valuelessKey + "\n\0"); StompHeaderAccessor headers = StompHeaderAccessor.wrap(frame); assertEquals(StompCommand.CONNECT, headers.getCommand()); assertEquals(2, headers.toNativeHeaderMap().size()); assertEquals("1.1", headers.getFirstNativeHeader("accept-version")); assertEquals("", headers.getFirstNativeHeader("key")); assertEquals(0, frame.getPayload().length); }
logger.warn("No STOMP \"subscription\" header in " + message); String origDestination = accessor.getFirstNativeHeader(SimpMessageHeaderAccessor.ORIGINAL_DESTINATION); if (origDestination != null) { accessor = toMutableAccessor(accessor, message);
@Test public void decodeFrameWithEscapedHeaders() { Message<byte[]> frame = decode("DISCONNECT\na\\c\\r\\n\\\\b:alpha\\cbravo\\r\\n\\\\\n\n\0"); StompHeaderAccessor headers = StompHeaderAccessor.wrap(frame); assertEquals(StompCommand.DISCONNECT, headers.getCommand()); assertEquals(1, headers.toNativeHeaderMap().size()); assertEquals("alpha:bravo\r\n\\", headers.getFirstNativeHeader("a:\r\n\\b")); }
@Test public void decodeFrameWithNoBody() { String accept = "accept-version:1.1\n"; String host = "host:github.org\n"; Message<byte[]> frame = decode("CONNECT\n" + accept + host + "\n\0"); StompHeaderAccessor headers = StompHeaderAccessor.wrap(frame); assertEquals(StompCommand.CONNECT, headers.getCommand()); assertEquals(2, headers.toNativeHeaderMap().size()); assertEquals("1.1", headers.getFirstNativeHeader("accept-version")); assertEquals("github.org", headers.getHost()); assertEquals(0, frame.getPayload().length); }
@Nullable public Integer getContentLength() { String header = getFirstNativeHeader(STOMP_CONTENT_LENGTH_HEADER); return (header != null ? Integer.valueOf(header) : null); }