1 18 package org.apache.activemq.broker.region.virtual; 19 20 import org.apache.activemq.command.ActiveMQDestination; 21 import org.apache.activemq.filter.BooleanExpression; 22 import org.apache.activemq.filter.MessageEvaluationContext; 23 import org.apache.activemq.selector.SelectorParser; 24 25 import javax.jms.InvalidSelectorException ; 26 import javax.jms.JMSException ; 27 28 36 public class FilteredDestination { 37 38 private ActiveMQDestination destination; 39 private String selector; 40 private BooleanExpression filter; 41 42 public boolean matches(MessageEvaluationContext context) throws JMSException { 43 BooleanExpression booleanExpression = getFilter(); 44 if (booleanExpression == null) { 45 return false; 46 } 47 return booleanExpression.matches(context); 48 } 49 50 public ActiveMQDestination getDestination() { 51 return destination; 52 } 53 54 57 public void setDestination(ActiveMQDestination destination) { 58 this.destination = destination; 59 } 60 61 public String getSelector() { 62 return selector; 63 } 64 65 68 public void setSelector(String selector) throws InvalidSelectorException { 69 this.selector = selector; 70 setFilter(new SelectorParser().parse(selector)); 71 } 72 73 public BooleanExpression getFilter() { 74 return filter; 75 } 76 77 public void setFilter(BooleanExpression filter) { 78 this.filter = filter; 79 } 80 81 82 85 public void setQueue(String queue) { 86 setDestination(ActiveMQDestination.createDestination(queue, ActiveMQDestination.QUEUE_TYPE)); 87 } 88 89 92 public void setTopic(String topic) { 93 setDestination(ActiveMQDestination.createDestination(topic, ActiveMQDestination.TOPIC_TYPE)); 94 } 95 } 96 | Popular Tags |