[jboss-svn-commits] JBL Code SVN: r23784 - in labs/jbossrules/trunk: drools-api/src/main/java/org/drools/builder and 5 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Nov 8 00:25:12 EST 2008


Author: mark.proctor at jboss.com
Date: 2008-11-08 00:25:12 -0500 (Sat, 08 Nov 2008)
New Revision: 23784

Added:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/AccumulateFunction.java
Modified:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseConfiguration.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseFactory.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseProvider.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilderConfiguration.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilderProvider.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/ChainedProperties.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/builder/impl/KnowledgeBuilderProviderImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/accumulators/AccumulateFunction.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseProviderImpl.java
Log:
JBRULES-1734 Drools API 
-Move improvements to Configurations
-now supports AccumulateFunction

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseConfiguration.java	2008-11-08 03:57:37 UTC (rev 23783)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseConfiguration.java	2008-11-08 05:25:12 UTC (rev 23784)
@@ -5,16 +5,20 @@
  *
  * A class to store KnowledgeBase related configuration. It must be used at KnowledgeBase instantiation time
  * or not used at all.
- * This class will automatically load default values from system properties, so if you want to set
- * a default configuration value for all your new KnowledgeBase, you can simply set the property as
+ * 
+ * This class will automatically load default values from a number of places, accumulating properties from each location.
+ * This list of locations, in given priority is:
+ * System properties, home directory, working directory, META-INF/ of optionally provided classLoader
+ * META-INF/ of Thread.currentThread().getContextClassLoader() and META-INF/ of  ClassLoader.getSystemClassLoader()
+ * 
+ * So if you want to set a default configuration value for all your new KnowledgeBase, you can simply set the property as
  * a System property.
  *
  * After the KnowledgeBase is created, it makes the configuration immutable and there is no way to make it
  * mutable again. This is to avoid inconsistent behaviour inside KnowledgeBase.
+ * 
+ * The following properties are supported:
  *
- */
-
-/**
  * drools.maintainTms = <true|false>
  * drools.assertBehaviour = <identity|equality>
  * drools.logicalOverride = <discard|preserve>
@@ -23,14 +27,19 @@
  * drools.removeIdentities = <true|false>
  * drools.shareAlphaNodes  = <true|false>
  * drools.shareBetaNodes = <true|false>
- * drools.alphaMemory <true/false>
+ * drools.alphaMemory = <true/false>
  * drools.alphaNodeHashingThreshold = <1...n>
- * drools.compositeKeyDepth  =<1..3>
+ * drools.compositeKeyDepth  = <1..3>
  * drools.indexLeftBetaMemory = <true/false>
  * drools.indexRightBetaMemory = <true/false>
  * drools.consequenceExceptionHandler = <qualified class name>
- * drools.knowledgeBaseUpdateHandler = <qualified class name>
  * 
+ * The follow properties have not yet been migrated from the Drools 4.0 api:
+ *
+ * drools.executorService = <qualified class name>
+ * drools.conflictResolver = <qualified class name>
+ * drools.ruleBaseUpdateHandler = <qualified class name>
+ *  
  */
 public interface KnowledgeBaseConfiguration  extends PropertiesConfiguration  {
 

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseFactory.java	2008-11-08 03:57:37 UTC (rev 23783)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseFactory.java	2008-11-08 05:25:12 UTC (rev 23784)
@@ -22,6 +22,10 @@
         return provider.newKnowledgeBase(conf);        
     }
     
+    public static KnowledgeBaseConfiguration newKnowledgBaseConfiguration() {
+        return null;
+    }
+    
 	private static void loadProvider() {
         try {
             // we didn't find anything in properties so lets try and us reflection

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseProvider.java	2008-11-08 03:57:37 UTC (rev 23783)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseProvider.java	2008-11-08 05:25:12 UTC (rev 23784)
@@ -1,8 +1,45 @@
 package org.drools;
 
+import java.util.Properties;
+
 public interface KnowledgeBaseProvider {
-
+    
+    /**
+     * Instantiate and return a new KnowledgeBaseConfiguration
+     * 
+     * @return
+     *     the KnowledgeBaseConfiguration
+     */
+    public KnowledgeBaseConfiguration newKnowledgeBaseConfiguration(); 
+    
+    /**
+     * Instantiate and return a new KnowledgeBaseConfiguration
+     * 
+     * @param properties
+     *     Properties file to process, can be null;
+     * @param classLoader
+     *     Provided ClassLoader, can be null and then ClassLoader defaults to Thread.currentThread().getContextClassLoader()
+     * @return
+     *     The KnowledgeBaseConfiguration
+     */
+    public KnowledgeBaseConfiguration newKnowledgeBaseConfiguration(Properties properties, ClassLoader classLoader);   
+    
+    /**
+     * Instantiate and return a KnowledgeBase using a default KnowledgeBaseConfiguration
+     * 
+     * @return
+     *      The KnowledgeBase
+     */
     KnowledgeBase newKnowledgeBase();
-    KnowledgeBase newKnowledgeBase(KnowledgeBaseConfiguration conf);
     
+    /**
+     * Instantiate and return a KnowledgeBase using the given KnowledgeBaseConfiguration
+     * 
+     * @param conf
+     *     The KnowledgeBaseConfiguration to be used
+     * @return
+     *     The KnowledgeBase
+     */
+    KnowledgeBase newKnowledgeBase(KnowledgeBaseConfiguration conf);   
+    
 }

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilderConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilderConfiguration.java	2008-11-08 03:57:37 UTC (rev 23783)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilderConfiguration.java	2008-11-08 05:25:12 UTC (rev 23784)
@@ -2,6 +2,36 @@
 
 import org.drools.PropertiesConfiguration;
 
+
+/**
+ * This class configures the knowledge package builder and compiler.
+ * Dialects and their DialectConfigurations  are handled by the DialectRegistry
+ * Normally you will not need to look at this class, unless you want to override the defaults.
+ * 
+ * This class will automatically load default values from a number of places, accumulating properties from each location.
+ * This list of locations, in given priority is:
+ * System properties, home directory, working directory, META-INF/ of optionally provided classLoader
+ * META-INF/ of Thread.currentThread().getContextClassLoader() and META-INF/ of  ClassLoader.getSystemClassLoader()
+ * 
+ * So if you want to set a default configuration value for all your new KnowledgeBuilder, you can simply set the property as
+ * a System property.
+ *
+ * This class is not thread safe and it also contains state. After the KnowledgeBuilder is created, it makes the configuration 
+ * immutable and there is no way to make it mutable again. This is to avoid inconsistent behaviour inside KnowledgeBuilder.
+ *
+ * drools.dialect.default = <String>
+ * drools.accumulate.function.<function name> = <qualified class>
+ * drools.evaluator.<ident> = <qualified class>
+ * drools.dump.dir = <String>
+ *
+ * default dialect is java.
+ * Available preconfigured Accumulate functions are:
+ * drools.accumulate.function.average = org.drools.base.accumulators.AverageAccumulateFunction
+ * drools.accumulate.function.max = org.drools.base.accumulators.MaxAccumulateFunction
+ * drools.accumulate.function.min = org.drools.base.accumulators.MinAccumulateFunction
+ * drools.accumulate.function.count = org.drools.base.accumulators.CountAccumulateFunction
+ * drools.accumulate.function.sum = org.drools.base.accumulators.SumAccumulateFunction
+ */
 public interface KnowledgeBuilderConfiguration extends PropertiesConfiguration {
 
 }

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilderProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilderProvider.java	2008-11-08 03:57:37 UTC (rev 23783)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilderProvider.java	2008-11-08 05:25:12 UTC (rev 23784)
@@ -1,5 +1,41 @@
 package org.drools.builder;
 
+import java.util.Properties;
+
 public interface KnowledgeBuilderProvider {
+    /**
+     * Instantiate and return a new KnowledgeBuilderConfiguration
+     * @return
+     *     the KnowledgeBuilderConfiguration
+     */
+    public KnowledgeBuilderConfiguration newKnowledgeBuilderConfiguration();
+    
+    /**
+     * Instantiate and return a new KnowledgeBuilderConfiguration
+     * 
+     * @param properties
+     *     Properties file to process, can be null;
+     * @param classLoader
+     *     Provided ClassLoader, can be null and then ClassLoader defaults to Thread.currentThread().getContextClassLoader()
+     * @return
+     */
+    public KnowledgeBuilderConfiguration newKnowledgeBuilderConfiguration(Properties properties, ClassLoader classLoader);
+    
+    /**
+     * Instantiate and return a new KnowledgeBuilder using the default KnowledgeBuilderConfiguration
+     * 
+     * @return
+     *     The KnowledgeBuilder
+     */
     KnowledgeBuilder newKnowledgeBuilder();
+    
+    /**
+     * Instantiate and return a new KnowledgeBuilder using the given KnowledgeBuilderConfiguration
+     * 
+     * @param conf
+     *     The KnowledgeBuilderConfiguration
+     * @return
+     *     The KnowledgeBuilder
+     */
+    KnowledgeBuilder newKnowledgeBuilder(KnowledgeBuilderConfiguration conf);
 }

Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/AccumulateFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/AccumulateFunction.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/AccumulateFunction.java	2008-11-08 05:25:12 UTC (rev 23784)
@@ -0,0 +1,55 @@
+package org.drools.runtime.rule;
+
+import java.io.Serializable;
+
+/**
+ * An interface for accumulate external function implementations
+ */
+public interface AccumulateFunction {
+
+    /**
+     * Creates and returns a new context object
+     * @return
+     */
+    public Serializable createContext();
+
+    /**
+     * Initializes the accumulator
+     * @param context
+     * @throws Exception
+     */
+    public void init(Serializable context) throws Exception;
+
+    /**
+     * Executes the accumulation action
+     * @param context
+     * @param value
+     */
+    public void accumulate(Serializable context,
+                           Object value);
+
+    /**
+     * Reverses the accumulation action
+     * @param context
+     * @param value
+     * @throws Exception
+     */
+    public void reverse(Serializable context,
+                        Object value) throws Exception;
+
+    /**
+     * Returns the current value in this accumulation session
+     *
+     * @param context
+     * @return
+     * @throws Exception
+     */
+    public Object getResult(Serializable context) throws Exception;
+
+    /**
+     * True if the function supports reverse. False otherwise.
+     *
+     * @return
+     */
+    public boolean supportsReverse();
+}

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/ChainedProperties.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/ChainedProperties.java	2008-11-08 03:57:37 UTC (rev 23783)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/ChainedProperties.java	2008-11-08 05:25:12 UTC (rev 23784)
@@ -13,6 +13,14 @@
 import java.util.Map;
 import java.util.Properties;
 
+/**
+ * Priority
+ * 
+ * System properties, home directory, working directory, META-INF/ of optionally provided classLoader
+ * META-INF/ of Thread.currentThread().getContextClassLoader() and META-INF/ of  ClassLoader.getSystemClassLoader()
+ * @author mproctor
+ *
+ */
 public class ChainedProperties implements Externalizable {
 	
     private List<Properties> props;

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/builder/impl/KnowledgeBuilderProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/builder/impl/KnowledgeBuilderProviderImpl.java	2008-11-08 03:57:37 UTC (rev 23783)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/builder/impl/KnowledgeBuilderProviderImpl.java	2008-11-08 05:25:12 UTC (rev 23784)
@@ -1,14 +1,30 @@
 package org.drools.builder.impl;
 
+import java.util.Properties;
+
 import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderConfiguration;
 import org.drools.builder.KnowledgeBuilderProvider;
 import org.drools.compiler.PackageBuilder;
+import org.drools.compiler.PackageBuilderConfiguration;
 
 public class KnowledgeBuilderProviderImpl implements KnowledgeBuilderProvider {
-
+    
+    public KnowledgeBuilderConfiguration newKnowledgeBuilderConfiguration() {
+        return new PackageBuilderConfiguration();
+    }
+    
+    public KnowledgeBuilderConfiguration newKnowledgeBuilderConfiguration(Properties properties, ClassLoader classLoader) {
+        return new PackageBuilderConfiguration(classLoader, properties);
+    }   
+    
 	public KnowledgeBuilder newKnowledgeBuilder() {
 		return new KnowledgeBuilderImpl( new PackageBuilder() );
 	}
 
+    public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBuilderConfiguration conf) {
+        return new KnowledgeBuilderImpl( new PackageBuilder( (PackageBuilderConfiguration) conf ) );
+    }
 
+
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/accumulators/AccumulateFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/accumulators/AccumulateFunction.java	2008-11-08 03:57:37 UTC (rev 23783)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/accumulators/AccumulateFunction.java	2008-11-08 05:25:12 UTC (rev 23784)
@@ -26,52 +26,7 @@
  * @author etirelli
  *
  */
-public interface AccumulateFunction extends Externalizable {
+public interface AccumulateFunction extends Externalizable, org.drools.runtime.rule.AccumulateFunction {
 
-    /**
-     * Creates and returns a new context object
-     * @return
-     */
-    public Serializable createContext();
 
-    /**
-     * Initializes the accumulator
-     * @param context
-     * @throws Exception
-     */
-    public void init(Serializable context) throws Exception;
-
-    /**
-     * Executes the accumulation action
-     * @param context
-     * @param value
-     */
-    public void accumulate(Serializable context,
-                           Object value);
-
-    /**
-     * Reverses the accumulation action
-     * @param context
-     * @param value
-     * @throws Exception
-     */
-    public void reverse(Serializable context,
-                        Object value) throws Exception;
-
-    /**
-     * Returns the current value in this accumulation session
-     *
-     * @param context
-     * @return
-     * @throws Exception
-     */
-    public Object getResult(Serializable context) throws Exception;
-
-    /**
-     * True if the function supports reverse. False otherwise.
-     *
-     * @return
-     */
-    public boolean supportsReverse();
-
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseProviderImpl.java	2008-11-08 03:57:37 UTC (rev 23783)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseProviderImpl.java	2008-11-08 05:25:12 UTC (rev 23784)
@@ -1,5 +1,7 @@
 package org.drools.impl;
 
+import java.util.Properties;
+
 import org.drools.KnowledgeBase;
 import org.drools.KnowledgeBaseConfiguration;
 import org.drools.KnowledgeBaseProvider;
@@ -8,12 +10,19 @@
 
 public class KnowledgeBaseProviderImpl implements KnowledgeBaseProvider {
 
-    public KnowledgeBase newKnowledgeBase(KnowledgeBaseConfiguration conf) {
-        return new KnowledgeBaseImpl( RuleBaseFactory.newRuleBase( ( RuleBaseConfiguration ) conf ) );
+    public KnowledgeBaseConfiguration newKnowledgeBaseConfiguration() {
+        return new RuleBaseConfiguration();
     }
+        
+    public KnowledgeBaseConfiguration newKnowledgeBaseConfiguration(Properties properties, ClassLoader classLoader) {
+        return new RuleBaseConfiguration(classLoader, properties);
+    }        
     
 	public KnowledgeBase newKnowledgeBase() {		
 		return new KnowledgeBaseImpl( RuleBaseFactory.newRuleBase() );		
-	}
-
+	}	
+	
+    public KnowledgeBase newKnowledgeBase(KnowledgeBaseConfiguration conf) {
+        return new KnowledgeBaseImpl( RuleBaseFactory.newRuleBase( ( RuleBaseConfiguration ) conf ) );
+    }	
 }




More information about the jboss-svn-commits mailing list