You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by dk...@apache.org on 2011/09/20 18:32:23 UTC

svn commit: r1173230 - in /camel/branches/camel-2.8.x: ./ components/camel-jms/src/main/java/org/apache/camel/component/jms/DefaultQueueBrowseStrategy.java components/camel-jms/src/test/java/org/apache/camel/component/jms/BrowsableQueueTest.java

Author: dkulp
Date: Tue Sep 20 16:32:22 2011
New Revision: 1173230

URL: http://svn.apache.org/viewvc?rev=1173230&view=rev
Log:
Merged revisions 1167236 via svnmerge from 
https://svn.apache.org/repos/asf/camel/trunk

........
  r1167236 | davsclaus | 2011-09-09 11:00:31 -0400 (Fri, 09 Sep 2011) | 1 line
  
  CAMEL-4433: Option maximumBrowseSize is now in use when browsing jms endpoints.
........

Modified:
    camel/branches/camel-2.8.x/   (props changed)
    camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/DefaultQueueBrowseStrategy.java
    camel/branches/camel-2.8.x/components/camel-jms/src/test/java/org/apache/camel/component/jms/BrowsableQueueTest.java

Propchange: camel/branches/camel-2.8.x/
            ('svn:mergeinfo' removed)

Propchange: camel/branches/camel-2.8.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/DefaultQueueBrowseStrategy.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/DefaultQueueBrowseStrategy.java?rev=1173230&r1=1173229&r2=1173230&view=diff
==============================================================================
--- camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/DefaultQueueBrowseStrategy.java (original)
+++ camel/branches/camel-2.8.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/DefaultQueueBrowseStrategy.java Tue Sep 20 16:32:22 2011
@@ -37,13 +37,18 @@ import org.springframework.jms.core.JmsO
 public class DefaultQueueBrowseStrategy implements QueueBrowseStrategy {
 
     public List<Exchange> browse(JmsOperations template, String queue, final JmsQueueEndpoint endpoint) {
-        return  template.browse(queue, new BrowserCallback<List<Exchange>>() {
+        return template.browse(queue, new BrowserCallback<List<Exchange>>() {
             public List<Exchange> doInJms(Session session, QueueBrowser browser) throws JMSException {
+                int size = endpoint.getMaximumBrowseSize();
+                if (size <= 0) {
+                    size = Integer.MAX_VALUE;
+                }
+
                 // not the best implementation in the world as we have to browse
                 // the entire queue, which could be massive
                 List<Exchange> answer = new ArrayList<Exchange>();
                 Enumeration iter = browser.getEnumeration();
-                while (iter.hasMoreElements()) {
+                for (int i = 0; i < size && iter.hasMoreElements(); i++) {
                     Message message = (Message) iter.nextElement();
                     Exchange exchange = endpoint.createExchange(message);
                     answer.add(exchange);

Modified: camel/branches/camel-2.8.x/components/camel-jms/src/test/java/org/apache/camel/component/jms/BrowsableQueueTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-jms/src/test/java/org/apache/camel/component/jms/BrowsableQueueTest.java?rev=1173230&r1=1173229&r2=1173230&view=diff
==============================================================================
--- camel/branches/camel-2.8.x/components/camel-jms/src/test/java/org/apache/camel/component/jms/BrowsableQueueTest.java (original)
+++ camel/branches/camel-2.8.x/components/camel-jms/src/test/java/org/apache/camel/component/jms/BrowsableQueueTest.java Tue Sep 20 16:32:22 2011
@@ -38,9 +38,7 @@ public class BrowsableQueueTest extends 
     private static final transient Logger LOG = LoggerFactory.getLogger(BrowsableQueueTest.class);
 
     protected String componentName = "activemq";
-    protected String startEndpointUri;
-    protected int counter;
-    protected Object[] expectedBodies = {"body1", "body2"};
+    protected Object[] expectedBodies = {"body1", "body2", "body3", "body4", "body5", "body6", "body7", "body8"};
 
     @Test
     public void testSendMessagesThenBrowseQueue() throws Exception {
@@ -55,14 +53,33 @@ public class BrowsableQueueTest extends 
         assertEquals(6, endpoint.getMaximumBrowseSize());
         List<Exchange> list = endpoint.getExchanges();
         LOG.debug("Received: " + list);
-        assertEquals("Size of list", 2, endpoint.queueSize());
+        assertEquals("Size of list", 6, endpoint.queueSize());
 
-        // for JMX stuff
-        for (int i = 0; i < 2; i++) {
-            String data = endpoint.browseExchange(i);
-            assertNotNull(data);
+        int index = -1;
+        for (Exchange exchange : list) {
+            String actual = exchange.getIn().getBody(String.class);
+            LOG.debug("Received body: " + actual);
+
+            Object expected = expectedBodies[++index];
+            assertEquals("Body: " + index, expected, actual);
+        }
+    }
+
+    @Test
+    public void testSendMessagesThenBrowseQueueLimitNotHit() throws Exception {
+        // send some messages
+        for (int i = 0; i < expectedBodies.length; i++) {
+            Object expectedBody = expectedBodies[i];
+            template.sendBodyAndHeader("activemq:test.b", expectedBody, "counter", i);
         }
 
+        // now lets browse the queue
+        JmsQueueEndpoint endpoint = getMandatoryEndpoint("activemq:test.b?maximumBrowseSize=10", JmsQueueEndpoint.class);
+        assertEquals(10, endpoint.getMaximumBrowseSize());
+        List<Exchange> list = endpoint.getExchanges();
+        LOG.debug("Received: " + list);
+        assertEquals("Size of list", 8, endpoint.queueSize());
+
         int index = -1;
         for (Exchange exchange : list) {
             String actual = exchange.getIn().getBody(String.class);
@@ -73,10 +90,30 @@ public class BrowsableQueueTest extends 
         }
     }
 
-    protected void sendExchange(final Object expectedBody) {
-        template.sendBodyAndHeader(startEndpointUri, expectedBody, "counter", ++counter);
-    }
+    @Test
+    public void testSendMessagesThenBrowseQueueNoMax() throws Exception {
+        // send some messages
+        for (int i = 0; i < expectedBodies.length; i++) {
+            Object expectedBody = expectedBodies[i];
+            template.sendBodyAndHeader("activemq:test.b", expectedBody, "counter", i);
+        }
+
+        // now lets browse the queue
+        JmsQueueEndpoint endpoint = getMandatoryEndpoint("activemq:test.b", JmsQueueEndpoint.class);
+        assertEquals(-1, endpoint.getMaximumBrowseSize());
+        List<Exchange> list = endpoint.getExchanges();
+        LOG.debug("Received: " + list);
+        assertEquals("Size of list", 8, endpoint.queueSize());
 
+        int index = -1;
+        for (Exchange exchange : list) {
+            String actual = exchange.getIn().getBody(String.class);
+            LOG.debug("Received body: " + actual);
+
+            Object expected = expectedBodies[++index];
+            assertEquals("Body: " + index, expected, actual);
+        }
+    }
 
     protected CamelContext createCamelContext() throws Exception {
         CamelContext camelContext = super.createCamelContext();