public void subscribe(Channel channel, String destination, String subscriptionId, String selector, boolean noLocal) {
synchronized (this) {
Subscription subscription = channel.addSubscription(destination, getId(), subscriptionId, noLocal);
subscription.setSelector(selector);
@SuppressWarnings("unchecked")
Map<String, Subscription> subscriptions = (Map<String, Subscription>)gaeCache.get(TOPIC_PREFIX + getId());
if (subscriptions == null)
subscriptions = new HashMap<String, Subscription>();
else
removeExpiredSubscriptions(subscriptions);
subscriptions.put(subscriptionId, subscription);
gaeCache.put(TOPIC_PREFIX + getId(), subscriptions);
}
}