[jboss-svn-commits] JBL Code SVN: r11672 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools: common and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri May 4 07:48:55 EDT 2007


Author: mark.proctor at jboss.com
Date: 2007-05-04 07:48:54 -0400 (Fri, 04 May 2007)
New Revision: 11672

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
Log:
-ExecutorService is now set from the RuleBaseConfiguration

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java	2007-05-04 11:01:23 UTC (rev 11671)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java	2007-05-04 11:48:54 UTC (rev 11672)
@@ -18,6 +18,8 @@
 
 import java.io.Serializable;
 
+import org.drools.concurrent.ExecutorService;
+
 /**
  * RuleBaseConfiguration
  * 
@@ -68,6 +70,7 @@
     private boolean           indexRightBetaMemory;
     private AssertBehaviour   assertBehaviour;
     private LogicalOverride   logicalOverride;
+    private ExecutorService   executorService;
 
     public RuleBaseConfiguration() {
         this.immutable = false;
@@ -102,6 +105,9 @@
                                                                                           "IDENTITY" ) ) );
         setLogicalOverride( LogicalOverride.determineLogicalOverride( System.getProperty( "drools.logicalOverride",
                                                                                           "DISCARD" ) ) );
+
+        setExecutorService( RuleBaseConfiguration.determineExecutorService( System.getProperty( "drools.executorService",
+                                                                                                "org.drools.concurrent.DefaultExecutorService" ) ) );
     }
 
     /**
@@ -232,6 +238,40 @@
         this.logicalOverride = logicalOverride;
     }
 
+    public ExecutorService getExecutorService() {
+        return executorService;
+    }
+
+    public void setExecutorService(ExecutorService executorService) {
+        checkCanChange(); // throws an exception if a change isn't possible;    	
+        this.executorService = executorService;
+    }
+
+    public static ExecutorService determineExecutorService(String className) {
+        Class clazz = null;
+        try {
+            clazz = Thread.currentThread().getContextClassLoader().loadClass( className );
+        } catch ( ClassNotFoundException e ) {
+        }
+
+        if ( clazz == null ) {
+            try {
+                clazz = RuleBaseConfiguration.class.getClassLoader().loadClass( className );
+            } catch ( ClassNotFoundException e ) {
+            }
+        }
+
+        if ( clazz != null ) {
+            try {
+                return (ExecutorService) clazz.newInstance();
+            } catch ( Exception e ) {
+                throw new IllegalArgumentException( "Unable to instantiate ExecutorService '" + className + "'" );
+            }
+        } else {
+            throw new IllegalArgumentException( "ExecutorService '" + className + "' not found" );
+        }
+    }
+
     public static class AssertBehaviour
         implements
         Serializable {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2007-05-04 11:01:23 UTC (rev 11671)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2007-05-04 11:48:54 UTC (rev 11672)
@@ -330,6 +330,7 @@
         }
 
         // Merge imports
+        // @TODO we should check for duplicates
         imports.addAll( newPkg.getImports() );
 
         // Add invokers

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java	2007-05-04 11:01:23 UTC (rev 11671)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java	2007-05-04 11:48:54 UTC (rev 11672)
@@ -226,10 +226,12 @@
      * @see RuleBase
      */
     public synchronized StatefulSession newStatefulSession(final boolean keepReference) {
-        ExecutorService executor = new DefaultExecutorService();
+        ExecutorService executor = this.config.getExecutorService();
         final ReteooStatefulSession session = new ReteooStatefulSession( this.workingMemoryCounter++,
                                                                          this,
-                                                                         new DefaultExecutorService() );
+                                                                         executor );
+        
+        
         executor.setCommandExecutor( new CommandExecutor( session ) );
 
         if ( keepReference ) {
@@ -248,7 +250,7 @@
     }
     
     public StatelessSession newStatelessSession() {
-        ExecutorService executor = new DefaultExecutorService();
+        ExecutorService executor = this.config.getExecutorService();
         ReteooWorkingMemory wm = new ReteooWorkingMemory( this.workingMemoryCounter++,
                                                           this  );
         




More information about the jboss-svn-commits mailing list