001    /**
002     * 
003     * Copyright 2004 Hiram Chirino
004     * Copyright 2004 Protique Ltd
005     * 
006     * Licensed under the Apache License, Version 2.0 (the "License"); 
007     * you may not use this file except in compliance with the License. 
008     * You may obtain a copy of the License at 
009     * 
010     * http://www.apache.org/licenses/LICENSE-2.0
011     * 
012     * Unless required by applicable law or agreed to in writing, software
013     * distributed under the License is distributed on an "AS IS" BASIS, 
014     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
015     * See the License for the specific language governing permissions and 
016     * limitations under the License. 
017     * 
018     **/
019    package org.activemq.store.cache;
020    
021    import javax.jms.JMSException;
022    
023    import org.activemq.message.ConsumerInfo;
024    import org.activemq.service.MessageIdentity;
025    import org.activemq.service.SubscriberEntry;
026    import org.activemq.store.RecoveryListener;
027    import org.activemq.store.TopicMessageStore;
028    
029    /**
030     * A MessageStore that uses an in memory cache to speed up getMessage() method calls.
031     *
032     * @version $Revision: 1.1.1.1 $
033     */
034    public class CacheTopicMessageStore extends CacheMessageStore implements TopicMessageStore {
035    
036        private final TopicMessageStore longTermStore;
037    
038        public CacheTopicMessageStore(CachePersistenceAdapter adapter, TopicMessageStore longTermStore, MessageCache cache) {
039            super(adapter, longTermStore, cache);
040            this.longTermStore = longTermStore;
041        }
042    
043        //
044        // The following methods just delegate to the longTermStore.
045        //
046        public void setLastAcknowledgedMessageIdentity(String subscription, MessageIdentity messageIdentity) throws JMSException {
047            longTermStore.setLastAcknowledgedMessageIdentity(subscription, messageIdentity);
048        }
049    
050        public MessageIdentity getLastestMessageIdentity() throws JMSException {
051            return longTermStore.getLastestMessageIdentity();
052        }
053    
054        public synchronized void recoverSubscription(String subscriptionId, MessageIdentity lastDispatchedMessage, RecoveryListener listener) throws JMSException {
055            longTermStore.recoverSubscription(subscriptionId, lastDispatchedMessage, listener);
056        }
057    
058        public void setSubscriberEntry(ConsumerInfo info, SubscriberEntry subscriberEntry) throws JMSException {
059            longTermStore.setSubscriberEntry(info, subscriberEntry);
060        }
061    
062        public SubscriberEntry getSubscriberEntry(ConsumerInfo info) throws JMSException {
063            return longTermStore.getSubscriberEntry(info);
064        }
065    
066        public void incrementMessageCount(MessageIdentity messageId) throws JMSException {
067            longTermStore.incrementMessageCount(messageId);
068        }
069    
070        public void decrementMessageCountAndMaybeDelete(MessageIdentity msgId) throws JMSException {
071            longTermStore.decrementMessageCountAndMaybeDelete(msgId);
072        }
073    
074        public void deleteSubscription(String subcription) throws JMSException {
075            longTermStore.deleteSubscription(subcription);
076        }
077    
078    }