Author: davsclaus
Date: Thu Mar  7 13:47:32 2013
New Revision: 1453865

URL: http://svn.apache.org/r1453865
Log:
CAMEL-6140: Added mbean attribute for getTaskQueueRemainingCapacity for thread 
pools. Thanks to Pat Fox for the patch.

Modified:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadPoolMBean.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreadPool.java
    
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedThreadPoolTest.java

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadPoolMBean.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadPoolMBean.java?rev=1453865&r1=1453864&r2=1453865&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadPoolMBean.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadPoolMBean.java
 Thu Mar  7 13:47:32 2013
@@ -78,4 +78,7 @@ public interface ManagedThreadPoolMBean 
     @ManagedOperation(description = "Purges the pool")
     void purge();
 
+    @ManagedOperation(description = "Returns the number of additional elements 
that the Task queue can"
+            + " ideally (in the absence of memory or resource constraints) 
accept")
+    int getTaskQueueRemainingCapacity();
 }
\ No newline at end of file

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreadPool.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreadPool.java?rev=1453865&r1=1453864&r2=1453865&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreadPool.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreadPool.java
 Thu Mar  7 13:47:32 2013
@@ -143,4 +143,13 @@ public class ManagedThreadPool implement
         threadPool.purge();
     }
 
+    public int getTaskQueueRemainingCapacity() {
+        if (threadPool.getQueue() != null) {
+            return threadPool.getQueue().remainingCapacity();
+        } else {
+            // no queue found, so no capacity
+            return 0;
+        }
+    }
+
 }

Modified: 
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedThreadPoolTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedThreadPoolTest.java?rev=1453865&r1=1453864&r2=1453865&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedThreadPoolTest.java
 (original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedThreadPoolTest.java
 Thu Mar  7 13:47:32 2013
@@ -67,6 +67,9 @@ public class ManagedThreadPoolTest exten
 
         Boolean empty = (Boolean) mbeanServer.getAttribute(on, 
"TaskQueueEmpty");
         assertEquals(true, empty.booleanValue());
+
+        int remainingCapacity = (Integer) mbeanServer.invoke(on, 
"getTaskQueueRemainingCapacity", null, null);
+        assertEquals("remainingCapacity", 200, remainingCapacity);
     }
 
     @Override
@@ -74,7 +77,7 @@ public class ManagedThreadPoolTest exten
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("direct:start").threads(15, 30).to("mock:result");
+                from("direct:start").threads(15, 
30).maxQueueSize(200).to("mock:result");
             }
         };
     }


Reply via email to