| Home >> All >> org >> activemq >> store >> [ vm Javadoc ] |
Source code: org/activemq/store/vm/VMMessageStore.java
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.activemq.store.vm; 19 20 import java.util.Collections; 21 import java.util.Iterator; 22 import java.util.LinkedHashMap; 23 import java.util.Map; 24 25 import javax.jms.JMSException; 26 27 import org.activemq.message.ActiveMQMessage; 28 import org.activemq.message.MessageAck; 29 import org.activemq.service.MessageIdentity; 30 import org.activemq.store.MessageStore; 31 import org.activemq.store.RecoveryListener; 32 33 /** 34 * An implementation of {@link org.activemq.store.MessageStore} which uses a 35 * 36 * @version $Revision: 1.1.1.1 $ 37 */ 38 public class VMMessageStore implements MessageStore { 39 40 protected Map messageTable; 41 protected MessageIdentity lastMessageIdentity; 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 synchronized void addMessage(ActiveMQMessage message) throws JMSException { 52 messageTable.put(message.getJMSMessageID(), message); 53 lastMessageIdentity = 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(MessageAck ack) throws JMSException { 62 messageTable.remove(ack.getMessageID()); 63 } 64 65 public void removeMessage(MessageIdentity msgId) throws JMSException { 66 messageTable.remove(msgId.getMessageID()); 67 } 68 69 public void recover(RecoveryListener listener) throws JMSException { 70 for (Iterator iter = messageTable.values().iterator(); iter.hasNext();) { 71 ActiveMQMessage msg = (ActiveMQMessage) iter.next(); 72 listener.recoverMessage(msg.getJMSMessageIdentity()); 73 } 74 } 75 76 public void start() throws JMSException { 77 } 78 79 public void stop() throws JMSException { 80 } 81 82 public void removeAllMessages() throws JMSException { 83 messageTable.clear(); 84 } 85 86 }