Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2002-2013 the original author or authors.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   * http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 package org.springframework.messaging.simp.stomp;
 
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
Can be used to prepare headers for a new STOMP message, or to access and/or modify STOMP-specific headers of an existing message.

Use one of the static factory method in this class, then call getters and setters, and at the end if necessary call org.springframework.messaging.support.NativeMessageHeaderAccessor.toMap() to obtain the updated headers or call toNativeHeaderMap() to obtain only the STOMP-specific headers.

Author(s):
Rossen Stoyanchev
Since:
4.0
 
 public class StompHeaderAccessor extends SimpMessageHeaderAccessor {
 
 	private static final AtomicLong messageIdCounter = new AtomicLong();
 
 	// STOMP header names
 
 	public static final String STOMP_ID_HEADER = "id";
 
 	public static final String STOMP_HOST_HEADER = "host";
 
 	public static final String STOMP_ACCEPT_VERSION_HEADER = "accept-version";
 
 	public static final String STOMP_MESSAGE_ID_HEADER = "message-id";
 
 	public static final String STOMP_RECEIPT_HEADER = "receipt"// any client frame except CONNECT
 
 	public static final String STOMP_RECEIPT_ID_HEADER = "receipt-id"// RECEIPT frame
 
 	public static final String STOMP_SUBSCRIPTION_HEADER = "subscription";
 
 	public static final String STOMP_VERSION_HEADER = "version";
 
 	public static final String STOMP_MESSAGE_HEADER = "message";
 
 	public static final String STOMP_ACK_HEADER = "ack";
 
 	public static final String STOMP_NACK_HEADER = "nack";
 
 	public static final String STOMP_LOGIN_HEADER = "login";
 
 	public static final String STOMP_PASSCODE_HEADER = "passcode";
 
 	public static final String STOMP_DESTINATION_HEADER = "destination";
 
 	public static final String STOMP_CONTENT_TYPE_HEADER = "content-type";
 
 	public static final String STOMP_CONTENT_LENGTH_HEADER = "content-length";
 
 	public static final String STOMP_HEARTBEAT_HEADER = "heart-beat";
 
 	private static final long[] DEFAULT_HEARTBEAT = new long[] {0, 0};
 
 
 	// Other header names
 
 	private static final String COMMAND_HEADER = "stompCommand";
 
 	private static final String CREDENTIALS_HEADER = "stompCredentials";


A constructor for creating new STOMP message headers.
 
 	private StompHeaderAccessor(StompCommand commandMap<StringList<String>> externalSourceHeaders) {
		super(command.getMessageType(), externalSourceHeaders);
		Assert.notNull(command"Command must not be null");
		if (externalSourceHeaders != null) {
			setSimpMessageHeaders(commandexternalSourceHeaders);
		}
	}
	private void setSimpMessageHeaders(StompCommand commandMap<StringList<String>> extHeaders) {
		if (!CollectionUtils.isEmpty(values)) {
			super.setDestination(values.get(0));
		}
		if (!CollectionUtils.isEmpty(values)) {
			super.setContentType(MimeTypeUtils.parseMimeType(values.get(0)));
		}
			values = extHeaders.get(.);
			if (!CollectionUtils.isEmpty(values)) {
				super.setSubscriptionId(values.get(0));
			}
		}
		else if (..equals(command)) {
			if (!CollectionUtils.isEmpty(values)) {
				super.setSubscriptionId(values.get(0));
			}
		}
		else if (..equals(command)) {
			if (!StringUtils.isEmpty(getPasscode())) {
				setPasscode("PROTECTED");
			}
		}
	}

A constructor for accessing and modifying existing message headers.
	private StompHeaderAccessor(Message<?> message) {
		super(message);
	}

	public static StompHeaderAccessor create(StompCommand command) {
		return new StompHeaderAccessor(commandnull);
	}

Create StompHeaderAccessor from parsed STOP frame content.
	public static StompHeaderAccessor create(StompCommand commandMap<StringList<String>> headers) {
		return new StompHeaderAccessor(commandheaders);
	}

Create StompHeaderAccessor from the headers of an existing org.springframework.messaging.Message.
	public static StompHeaderAccessor wrap(Message<?> message) {
		return new StompHeaderAccessor(message);
	}


Return STOMP headers including original, wrapped STOMP headers (if any) plus additional header updates made through accessor methods.
		Map<StringList<String>> result = super.toNativeHeaderMap();
		String destination = super.getDestination();
		if (destination != null) {
			result.put(, Arrays.asList(destination));
		}
		MimeType contentType = super.getContentType();
		if (contentType != null) {
			result.put(, Arrays.asList(contentType.toString()));
		}
		if (getCommand() != null && getCommand().requiresSubscriptionId()) {
			String subscriptionId = getSubscriptionId();
			if (subscriptionId != null) {
				result.put(name, Arrays.asList(subscriptionId));
			}
			else {
				.warn(getCommand() + " frame does not have a subscription identifier" + this.toString());
			}
		}
		if (..equals(getCommand()) && ((getMessageId() == null))) {
			String messageId = getSessionId() + "-" + .getAndIncrement();
			result.put(, Arrays.asList(messageId));
		}
		return result;
	}
			if (credentials != null) {
				headers.put(, Arrays.asList(credentials.passcode));
				return headers;
			}
		}
	}
				"Unexpected message type " + getMessage());
		if (getCommand() == null) {
		}
			throw new IllegalStateException("Unexpected STOMP command " + getCommand());
		}
		return getCommand();
	}
				"Unexpected message type " + getMessage());
		if ((getCommand() == null) || getCommand().equals(.)) {
		}
			throw new IllegalStateException("Unexpected STOMP command " + getCommand());
		}
	}
	}
		return (rawValue != null) ? StringUtils.commaDelimitedListToSet(rawValue) : Collections.<String>emptySet();
	}
	public void setAcceptVersion(String acceptVersion) {
	}
	public void setHost(String host) {
	}
	public String getHost() {
	}
	public void setDestination(String destination) {
		super.setDestination(destination);
	}
	public long[] getHeartbeat() {
		if (!StringUtils.hasText(rawValue)) {
			return Arrays.copyOf(, 2);
		}
		String[] rawValues = StringUtils.commaDelimitedListToStringArray(rawValue);
		return new long[] { Long.valueOf(rawValues[0]), Long.valueOf(rawValues[1])};
	}
	public void setContentType(MimeType contentType) {
		super.setContentType(contentType);
	}
		return StringUtils.hasText(contentLength) ? new Integer(contentLength) : null;
	}
	public void setContentLength(int contentLength) {
	}
	public void setHeartbeat(long cxlong cy) {
	}
	public void setAck(String ack) {
	}
	public String getAck() {
	}
	public void setNack(String nack) {
	}
	public String getNack() {
	}
	public void setLogin(String login) {
	}
	public String getLogin() {
	}
	public void setPasscode(String passcode) {
	}
	public String getPasscode() {
	}
	public void setReceiptId(String receiptId) {
	}
	public String getReceiptId() {
	}
	public void setReceipt(String receiptId) {
	}
	public String getReceipt() {
	}
	public String getMessage() {
	}
	public void setMessage(String content) {
	}
	public String getMessageId() {
	}
	public void setMessageId(String id) {
	}
	public String getVersion() {
	}
	public void setVersion(String version) {
	}
	private static class StompPasscode {
		private final String passcode;
		public StompPasscode(String passcode) {
			this. = passcode;
		}
		public String toString() {
			return "[PROTECTED]";
		}
	}
New to GrepCode? Check out our FAQ X