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 }