1 18 package org.apache.activemq.broker.region.policy; 19 20 import java.util.ArrayList ; 21 import java.util.List ; 22 import org.apache.activemq.broker.ConnectionContext; 23 import org.apache.activemq.broker.region.MessageReference; 24 import org.apache.activemq.broker.region.SubscriptionRecovery; 25 import org.apache.activemq.broker.region.Topic; 26 import org.apache.activemq.command.ActiveMQDestination; 27 import org.apache.activemq.command.Message; 28 import org.apache.activemq.filter.DestinationFilter; 29 30 38 public class LastImageSubscriptionRecoveryPolicy implements SubscriptionRecoveryPolicy { 39 40 volatile private MessageReference lastImage; 41 42 public boolean add(ConnectionContext context, MessageReference node) throws Exception { 43 lastImage = node; 44 return true; 45 } 46 47 public void recover(ConnectionContext context,Topic topic,SubscriptionRecovery sub) throws Exception { 48 MessageReference node=lastImage; 50 if(node!=null){ 51 sub.addRecoveredMessage(context,node); 52 } 53 } 54 55 public void start() throws Exception { 56 } 57 58 public void stop() throws Exception { 59 } 60 61 public Message[] browse(ActiveMQDestination destination) throws Exception { 62 List result = new ArrayList (); 63 DestinationFilter filter=DestinationFilter.parseFilter(destination); 64 if (filter.matches(lastImage.getMessage().getDestination())){ 65 result.add(lastImage.getMessage()); 66 } 67 return (Message[])result.toArray(new Message[result.size()]); 68 } 69 70 public SubscriptionRecoveryPolicy copy() { 71 return new LastImageSubscriptionRecoveryPolicy(); 72 } 73 74 } 75 | Popular Tags |