[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