SelectorPersistentQueue.java |
/* * JBossMQ, the OpenSource JMS implementation * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jboss.mq.server; import javax.jms.JMSException; import org.jboss.mq.SpyTopic; import org.jboss.mq.pm.Tx; import org.jboss.mq.selectors.Selector; /** * This class adds a selector to a persistent queue. * * Factored out of JMSTopic. * * @author Adrian Brock (Adrian.Brock@HappeningTimes.com) * @created 24th October 2002 */ public class SelectorPersistentQueue extends PersistentQueue { // Attributes ---------------------------------------------------- /** * The string representation of the selector */ String selectorString; /** * The implementation of the selector */ Selector selector; // Constructor --------------------------------------------------- /** * Create a new persistent queue with a selector * * @param server the destination manager * @param dstopic the topic with a durable subscription * @param selector the selector string * @exception JMSException for an error */ public SelectorPersistentQueue(JMSDestinationManager server, SpyTopic dstopic, String selector, BasicQueueParameters parameters) throws JMSException { super(server, dstopic, parameters); this.selectorString = selector; this.selector = new Selector(selector); } // Public -------------------------------------------------------- /** * Filters the message with the selector before adding to the queue * @param mesRef the message * @param txId the transaction * @exception JMSException for an error */ public void addMessage(MessageReference mesRef, Tx txId) throws JMSException { if (selector.test(mesRef.getHeaders())) super.addMessage( mesRef, txId ); else server.getMessageCache().remove(mesRef); } }
SelectorPersistentQueue.java |