View Javadoc

1   /***
2    * 
3    * Copyright 2004 Hiram Chirino
4    * Copyright 2004 Protique Ltd
5    * 
6    * Licensed under the Apache License, Version 2.0 (the "License"); 
7    * you may not use this file except in compliance with the License. 
8    * You may obtain a copy of the License at 
9    * 
10   * http://www.apache.org/licenses/LICENSE-2.0
11   * 
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS, 
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
15   * See the License for the specific language governing permissions and 
16   * limitations under the License. 
17   * 
18   **/
19  package org.codehaus.activemq.store.cache;
20  
21  import org.apache.commons.logging.Log;
22  import org.apache.commons.logging.LogFactory;
23  import org.codehaus.activemq.message.ConsumerInfo;
24  import org.codehaus.activemq.message.MessageAck;
25  import org.codehaus.activemq.service.MessageContainer;
26  import org.codehaus.activemq.service.MessageIdentity;
27  import org.codehaus.activemq.service.SubscriberEntry;
28  import org.codehaus.activemq.service.Subscription;
29  import org.codehaus.activemq.store.TopicMessageStore;
30  
31  import javax.jms.JMSException;
32  
33  /***
34   * A MessageStore that uses an in memory cache to speed up getMessage() method calls.
35   *
36   * @version $Revision: 1.2 $
37   */
38  public class CacheTopicMessageStore extends CacheMessageStore implements TopicMessageStore {
39  
40      private static final Log log = LogFactory.getLog(CacheTopicMessageStore.class);
41      private final TopicMessageStore longTermStore;
42  
43      public CacheTopicMessageStore(CachePersistenceAdapter adapter, TopicMessageStore longTermStore, MessageCache cache) {
44          super(adapter, longTermStore, cache);
45          this.longTermStore = longTermStore;
46      }
47  
48      //
49      // The following methods just delegate to the longTermStore.
50      //
51      public void setLastAcknowledgedMessageIdentity(Subscription subscription, MessageIdentity messageIdentity) throws JMSException {
52          longTermStore.setLastAcknowledgedMessageIdentity(subscription, messageIdentity);
53      }
54  
55      public MessageIdentity getLastestMessageIdentity() throws JMSException {
56          return longTermStore.getLastestMessageIdentity();
57      }
58  
59      public void recoverSubscription(final Subscription subscription, MessageIdentity lastDispatchedMessage) throws JMSException {
60          longTermStore.recoverSubscription(subscription, lastDispatchedMessage);
61      }
62  
63      public void setSubscriberEntry(ConsumerInfo info, SubscriberEntry subscriberEntry) throws JMSException {
64          longTermStore.setSubscriberEntry(info, subscriberEntry);
65      }
66  
67      public SubscriberEntry getSubscriberEntry(ConsumerInfo info) throws JMSException {
68          return longTermStore.getSubscriberEntry(info);
69      }
70  
71      public void setMessageContainer(MessageContainer container) {
72          longTermStore.setMessageContainer(container);
73      }
74  
75      public void incrementMessageCount(MessageIdentity messageId) throws JMSException {
76          longTermStore.incrementMessageCount(messageId);
77      }
78  
79      public void decrementMessageCountAndMaybeDelete(MessageIdentity messageIdentity, MessageAck ack) throws JMSException {
80          longTermStore.decrementMessageCountAndMaybeDelete(messageIdentity, ack);
81      }
82  
83  }