1 /***
2 *
3 * Copyright 2004 Protique Ltd
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 **/
18 package org.codehaus.activemq.store.vm;
19
20 import org.apache.commons.logging.Log;
21 import org.apache.commons.logging.LogFactory;
22 import org.codehaus.activemq.message.ActiveMQMessage;
23 import org.codehaus.activemq.message.MessageAck;
24 import org.codehaus.activemq.service.MessageIdentity;
25 import org.codehaus.activemq.service.QueueMessageContainer;
26 import org.codehaus.activemq.store.MessageStore;
27
28 import javax.jms.JMSException;
29 import java.util.Collections;
30 import java.util.LinkedHashMap;
31 import java.util.Map;
32
33 /***
34 * An implementation of {@link org.codehaus.activemq.store.MessageStore} which uses a
35 *
36 * @version $Revision: 1.1 $
37 */
38 public class VMMessageStore implements MessageStore {
39 private static final Log log = LogFactory.getLog(VMMessageStore.class);
40
41 protected Map messageTable;
42
43 public VMMessageStore() {
44 this(new LinkedHashMap());
45 }
46
47 public VMMessageStore(LinkedHashMap messageTable) {
48 this.messageTable = Collections.synchronizedMap(messageTable);
49 }
50
51 public MessageIdentity addMessage(ActiveMQMessage message) throws JMSException {
52 messageTable.put(message.getJMSMessageID(), message);
53 return message.getJMSMessageIdentity();
54 }
55
56 public ActiveMQMessage getMessage(MessageIdentity identity) throws JMSException {
57 String messageID = identity.getMessageID();
58 return (ActiveMQMessage) messageTable.get(messageID);
59 }
60
61 public void removeMessage(MessageIdentity identity, MessageAck ack) throws JMSException {
62 String messageID = identity.getMessageID();
63 messageTable.remove(messageID);
64 }
65
66 public void recover(QueueMessageContainer container) throws JMSException {
67 }
68
69 public void start() throws JMSException {
70 }
71
72 public void stop() throws JMSException {
73 messageTable.clear();
74 }
75
76 }