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.broker;
 
Abstract base class for implementations of SubscriptionRegistry that looks up information in messages but delegates to abstract methods for the actual storage and retrieval.

Author(s):
Rossen Stoyanchev
Since:
4.0
 
 public abstract class AbstractSubscriptionRegistry implements SubscriptionRegistry {
 
 	protected final Log logger = LogFactory.getLog(getClass());
 
 
 	public final void registerSubscription(Message<?> message) {
 		SimpMessageHeaderAccessor headers = SimpMessageHeaderAccessor.wrap(message);
 			.error("Expected SUBSCRIBE message: " + message);
 			return;
 		}
 		String sessionId = headers.getSessionId();
 		if (sessionId == null) {
 			.error("Ignoring subscription. No sessionId in message: " + message);
 			return;
 		}
 		String subscriptionId = headers.getSubscriptionId();
 		if (subscriptionId == null) {
 			.error("Ignoring subscription. No subscriptionId in message: " + message);
 			return;
 		}
 		String destination = headers.getDestination();
 		if (destination == null) {
 			.error("Ignoring destination. No destination in message: " + message);
 			return;
 		}
 		if (.isDebugEnabled()) {
 			.debug("Adding subscription id=" + headers.getSubscriptionId()
 					+ ", destination=" + headers.getDestination());
 		}
 		addSubscriptionInternal(sessionIdsubscriptionIddestinationmessage);
 	}
 
 	protected abstract void addSubscriptionInternal(String sessionIdString subscriptionId,
 			String destinationMessage<?> message);
 
 	public final void unregisterSubscription(Message<?> message) {
 		SimpMessageHeaderAccessor headers = SimpMessageHeaderAccessor.wrap(message);
 			.error("Expected UNSUBSCRIBE message: " + message);
 			return;
 		}
 		String sessionId = headers.getSessionId();
 		if (sessionId == null) {
 			.error("Ignoring subscription. No sessionId in message: " + message);
 			return;
 		}
 		String subscriptionId = headers.getSubscriptionId();
 		if (subscriptionId == null) {
 			.error("Ignoring subscription. No subscriptionId in message: " + message);
 			return;
 		}
 		if (.isDebugEnabled()) {
 			.debug("Unubscribe request: " + message);
 		}
 		removeSubscriptionInternal(sessionIdsubscriptionIdmessage);
 	}
 
 	protected abstract void removeSubscriptionInternal(String sessionIdString subscriptionIdMessage<?> message);
 
 	public abstract void unregisterAllSubscriptions(String sessionId);
 
	public final MultiValueMap<StringStringfindSubscriptions(Message<?> message) {
		SimpMessageHeaderAccessor headers = SimpMessageHeaderAccessor.wrap(message);
			.trace("Ignoring message type " + headers.getMessageType());
			return null;
		}
		String destination = headers.getDestination();
		if (destination == null) {
			.trace("Ignoring message, no destination");
			return null;
		}
		MultiValueMap<StringStringresult = findSubscriptionsInternal(destinationmessage);
			.trace("Found " + result.size() + " subscriptions for destination=" + headers.getDestination());
		}
		return result;
	}
			String destinationMessage<?> message);
New to GrepCode? Check out our FAQ X