Author: lhein
Date: Wed Oct 13 19:11:44 2010
New Revision: 1022245

URL: http://svn.apache.org/viewvc?rev=1022245&view=rev
Log:
using now reflection to detect if Java version supports method 
allowsCoreThreadTImeout of ThreadPoolExecutor (see SM-2001 and SMX4-606)

Modified:
    
servicemix/utils/trunk/src/main/java/org/apache/servicemix/executors/impl/ManagedExecutor.java

Modified: 
servicemix/utils/trunk/src/main/java/org/apache/servicemix/executors/impl/ManagedExecutor.java
URL: 
http://svn.apache.org/viewvc/servicemix/utils/trunk/src/main/java/org/apache/servicemix/executors/impl/ManagedExecutor.java?rev=1022245&r1=1022244&r2=1022245&view=diff
==============================================================================
--- 
servicemix/utils/trunk/src/main/java/org/apache/servicemix/executors/impl/ManagedExecutor.java
 (original)
+++ 
servicemix/utils/trunk/src/main/java/org/apache/servicemix/executors/impl/ManagedExecutor.java
 Wed Oct 13 19:11:44 2010
@@ -18,6 +18,8 @@
  */
 package org.apache.servicemix.executors.impl;
 
+import java.lang.reflect.Method;
+import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
 
@@ -101,9 +103,20 @@ public class ManagedExecutor extends jav
     }
 
     public boolean isAllowCoreThreadTimeout() {
+        if (this.internalExecutor != null) {
+            ThreadPoolExecutor executor = 
this.internalExecutor.getThreadPoolExecutor();
+            try {
+                Method m = 
ThreadPoolExecutor.class.getMethod("allowsCoreThreadTimeOut", null);
+                try {
+                    return (Boolean) m.invoke(executor, null);
+                } catch (Exception ex) {
+                    // ignore
+                }
+            } catch (NoSuchMethodException ex) {
+                // ignore
+            }
+        }
         return false;
-        // TODO: put me back in after switchover to Java 6
-        // return this.internalExecutor != null && 
this.internalExecutor.getThreadPoolExecutor().allowsCoreThreadTimeOut();
     }
 
     public long getNumberOfRejectedExecutions() {


Reply via email to