[jboss-cvs] JBoss Messaging SVN: r2139 - in branches/Branch_1_0_1_SP: src/main/org/jboss/jms/client/delegate and 3 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Feb 2 04:37:33 EST 2007
Author: ovidiu.feodorov at jboss.com
Date: 2007-02-02 04:37:33 -0500 (Fri, 02 Feb 2007)
New Revision: 2139
Modified:
branches/Branch_1_0_1_SP/src/main/org/jboss/jms/client/JBossQueueBrowser.java
branches/Branch_1_0_1_SP/src/main/org/jboss/jms/client/delegate/ClientBrowserDelegate.java
branches/Branch_1_0_1_SP/src/main/org/jboss/jms/server/endpoint/BrowserEndpoint.java
branches/Branch_1_0_1_SP/src/main/org/jboss/jms/server/endpoint/ServerBrowserEndpoint.java
branches/Branch_1_0_1_SP/src/main/org/jboss/jms/server/endpoint/advised/BrowserAdvised.java
branches/Branch_1_0_1_SP/tests/src/org/jboss/test/messaging/jms/BrowserTest.java
Log:
http://jira.jboss.org/jira/browse/JBMESSAGING-803
Modified: branches/Branch_1_0_1_SP/src/main/org/jboss/jms/client/JBossQueueBrowser.java
===================================================================
--- branches/Branch_1_0_1_SP/src/main/org/jboss/jms/client/JBossQueueBrowser.java 2007-02-02 09:12:26 UTC (rev 2138)
+++ branches/Branch_1_0_1_SP/src/main/org/jboss/jms/client/JBossQueueBrowser.java 2007-02-02 09:37:33 UTC (rev 2139)
@@ -49,8 +49,6 @@
private Queue queue;
private String messageSelector;
- private BrowserEnumeration enumeration = new BrowserEnumeration();
-
// Constructors --------------------------------------------------
JBossQueueBrowser(Queue queue, String messageSelector, BrowserDelegate delegate)
@@ -69,8 +67,9 @@
}
public Enumeration getEnumeration() throws JMSException
- {
- return enumeration;
+ {
+ delegate.reset();
+ return new BrowserEnumeration();
}
public String getMessageSelector() throws JMSException
Modified: branches/Branch_1_0_1_SP/src/main/org/jboss/jms/client/delegate/ClientBrowserDelegate.java
===================================================================
--- branches/Branch_1_0_1_SP/src/main/org/jboss/jms/client/delegate/ClientBrowserDelegate.java 2007-02-02 09:12:26 UTC (rev 2138)
+++ branches/Branch_1_0_1_SP/src/main/org/jboss/jms/client/delegate/ClientBrowserDelegate.java 2007-02-02 09:37:33 UTC (rev 2139)
@@ -80,6 +80,11 @@
throw new IllegalStateException("This invocation should not be handled here!");
}
+ public void reset() throws JMSException
+ {
+ throw new IllegalStateException("This invocation should not be handled here!");
+ }
+
public boolean hasNextMessage() throws JMSException
{
throw new IllegalStateException("This invocation should not be handled here!");
Modified: branches/Branch_1_0_1_SP/src/main/org/jboss/jms/server/endpoint/BrowserEndpoint.java
===================================================================
--- branches/Branch_1_0_1_SP/src/main/org/jboss/jms/server/endpoint/BrowserEndpoint.java 2007-02-02 09:12:26 UTC (rev 2138)
+++ branches/Branch_1_0_1_SP/src/main/org/jboss/jms/server/endpoint/BrowserEndpoint.java 2007-02-02 09:37:33 UTC (rev 2139)
@@ -31,12 +31,20 @@
* of the methods are handled in the advice stack.
*
* @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:ovidiu at jboss.org">Ovidiu Feodorov</a>
* @version <tt>$Revision$</tt>
*
* $Id$
*/
public interface BrowserEndpoint extends Closeable
-{
+{
+ /**
+ * Reset the internal state of the browser endpoint so the following
+ * nextMessage()/hasNextMessage()/nextMessageBlock() invocations would reflect the state of the
+ * queue at the moment of the reset.
+ */
+ void reset() throws JMSException;
+
Message nextMessage() throws JMSException;
boolean hasNextMessage() throws JMSException;
Modified: branches/Branch_1_0_1_SP/src/main/org/jboss/jms/server/endpoint/ServerBrowserEndpoint.java
===================================================================
--- branches/Branch_1_0_1_SP/src/main/org/jboss/jms/server/endpoint/ServerBrowserEndpoint.java 2007-02-02 09:12:26 UTC (rev 2138)
+++ branches/Branch_1_0_1_SP/src/main/org/jboss/jms/server/endpoint/ServerBrowserEndpoint.java 2007-02-02 09:37:33 UTC (rev 2139)
@@ -39,6 +39,7 @@
* Concrete implementation of BrowserEndpoint.
*
* @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:ovidiu at jboss.org">Ovidiu Feodorov</a>
* @version <tt>$Revision$</tt>
*
* $Id$
@@ -55,14 +56,16 @@
private boolean trace = log.isTraceEnabled();
- private Iterator iterator;
-
private ServerSessionEndpoint session;
private int id;
private boolean closed;
+ private Channel destination;
+ private Filter filter;
+ private Iterator iterator;
+
// Constructors --------------------------------------------------
protected ServerBrowserEndpoint(ServerSessionEndpoint session, int id,
@@ -72,25 +75,41 @@
this.session = session;
this.id = id;
+
+ this.destination = destination;
- Filter filter = null;
-
if (messageSelector != null)
{
filter = new Selector(messageSelector);
}
-
- iterator = destination.browse(filter).iterator();
}
// BrowserEndpoint implementation --------------------------------
+ public void reset() throws JMSException
+ {
+ if (closed)
+ {
+ throw new IllegalStateException("Browser is closed");
+ }
+
+ log.debug(this + " is being resetted");
+
+ iterator = createIterator();
+ }
+
public boolean hasNextMessage() throws JMSException
{
if (closed)
{
throw new IllegalStateException("Browser is closed");
}
+
+ if (iterator == null)
+ {
+ iterator = createIterator();
+ }
+
return iterator.hasNext();
}
@@ -100,6 +119,12 @@
{
throw new IllegalStateException("Browser is closed");
}
+
+ if (iterator == null)
+ {
+ iterator = createIterator();
+ }
+
Routable r = (Routable)iterator.next();
if (trace) { log.trace("returning the message corresponding to " + r); }
@@ -121,7 +146,12 @@
{
throw new IllegalArgumentException("maxMessages must be >=2 otherwise use nextMessage");
}
-
+
+ if (iterator == null)
+ {
+ iterator = createIterator();
+ }
+
ArrayList messages = new ArrayList(maxMessages);
int i = 0;
while (i < maxMessages)
@@ -173,6 +203,11 @@
// Private -------------------------------------------------------
+ private Iterator createIterator()
+ {
+ return destination.browse(filter).iterator();
+ }
+
// Inner classes -------------------------------------------------
}
Modified: branches/Branch_1_0_1_SP/src/main/org/jboss/jms/server/endpoint/advised/BrowserAdvised.java
===================================================================
--- branches/Branch_1_0_1_SP/src/main/org/jboss/jms/server/endpoint/advised/BrowserAdvised.java 2007-02-02 09:12:26 UTC (rev 2138)
+++ branches/Branch_1_0_1_SP/src/main/org/jboss/jms/server/endpoint/advised/BrowserAdvised.java 2007-02-02 09:37:33 UTC (rev 2139)
@@ -70,6 +70,11 @@
return endpoint.isClosed();
}
+ public void reset() throws JMSException
+ {
+ endpoint.reset();
+ }
+
public boolean hasNextMessage() throws JMSException
{
return endpoint.hasNextMessage();
Modified: branches/Branch_1_0_1_SP/tests/src/org/jboss/test/messaging/jms/BrowserTest.java
===================================================================
--- branches/Branch_1_0_1_SP/tests/src/org/jboss/test/messaging/jms/BrowserTest.java 2007-02-02 09:12:26 UTC (rev 2138)
+++ branches/Branch_1_0_1_SP/tests/src/org/jboss/test/messaging/jms/BrowserTest.java 2007-02-02 09:37:33 UTC (rev 2139)
@@ -32,6 +32,7 @@
import javax.jms.QueueBrowser;
import javax.jms.Session;
import javax.jms.Topic;
+import javax.jms.TextMessage;
import javax.naming.InitialContext;
import org.jboss.jms.client.JBossConnectionFactory;
@@ -89,6 +90,8 @@
ServerManagement.deployQueue("Queue");
queue = (Queue)initialContext.lookup("/queue/Queue");
+
+ drainDestination(cf, queue);
connection = cf.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
@@ -241,10 +244,47 @@
}
assertEquals(70, count);
}
+
+ public void testGetEnumeration() throws Exception
+ {
+ // send a message to the queue
+
+ Message m = session.createTextMessage("A");
+ producer.send(m);
+
+ // make sure we can browse it
+
+ QueueBrowser browser = session.createBrowser(queue);
+
+ Enumeration en = browser.getEnumeration();
+
+ assertTrue(en.hasMoreElements());
+
+ TextMessage rm = (TextMessage)en.nextElement();
+
+ assertNotNull(rm);
+ assertEquals("A", rm.getText());
+
+ assertFalse(en.hasMoreElements());
+
+ // create a *new* enumeration, that should reset it
+
+ en = browser.getEnumeration();
+
+ assertTrue(en.hasMoreElements());
+
+ rm = (TextMessage)en.nextElement();
+
+ assertNotNull(rm);
+ assertEquals("A", rm.getText());
+
+ assertFalse(en.hasMoreElements());
+ }
+
+
+
+ // Package protected ---------------------------------------------
-
- // Package protected ---------------------------------------------
-
// Protected -----------------------------------------------------
// Private -------------------------------------------------------
More information about the jboss-cvs-commits
mailing list