| SpyQueueBrowser.java |
/*
* JBossMQ, the OpenSource JMS implementation
*
* Distributable under LGPL license. See terms of license at gnu.org.
*/
package org.jboss.mq;
import java.util.Enumeration;
import java.util.NoSuchElementException;
import javax.jms.InvalidSelectorException;
import javax.jms.JMSException;
import javax.jms.Queue;
import org.jboss.mq.selectors.Selector;
import javax.jms.QueueBrowser;
/**
* This class implements javax.jms.QueueBrowser
*
* @author Norbert Lataille (Norbert.Lataille@m4x.org)
* @author <a href="mailto:adrian@jboss.org">Adrian Brock</a>
* @version $Revision: 1.8 $
*/
public class SpyQueueBrowser implements QueueBrowser
{
// Constants -----------------------------------------------------
// Attributes ----------------------------------------------------
/** Whether we are closed */
boolean closed;
/** The destination this browser will browse messages from */
Queue destination;
/** String Selector */
String messageSelector;
/** The Session this was created with */
SpySession session;
// Static --------------------------------------------------------
// Constructors --------------------------------------------------
/**
* Create a new SpyQueueBrowser
*
* @param session the session
* @param destination the destination
* @param messageSelector the message selector
* @throws InvalidSelectorException for an invalid selector
*/
SpyQueueBrowser(SpySession session, Queue destination, String messageSelector) throws InvalidSelectorException
{
this.destination = destination;
this.session = session;
this.messageSelector = messageSelector;
// If the selector is set, try to build it, throws an
// InvalidSelectorException
// if it is not valid.
if (messageSelector != null)
new Selector(messageSelector);
}
// Public --------------------------------------------------------
// QueueBrowser implementation -----------------------------------
public Queue getQueue() throws JMSException
{
return destination;
}
public String getMessageSelector() throws JMSException
{
return messageSelector;
}
public Enumeration getEnumeration() throws JMSException
{
if (closed)
throw new JMSException("The QueueBrowser was closed");
final SpyMessage data[] = session.connection.browse(destination, messageSelector);
return new Enumeration()
{
int i = 0;
public boolean hasMoreElements()
{
return i < data.length;
}
public Object nextElement()
{
if (!hasMoreElements())
throw new NoSuchElementException();
return data[i++];
}
};
}
public void close() throws JMSException
{
closed = true;
return;
}
// Package protected ---------------------------------------------
// Protected -----------------------------------------------------
// Private -------------------------------------------------------
// Inner classes -------------------------------------------------
}| SpyQueueBrowser.java |