[jboss-svn-commits] JBL Code SVN: r13539 - in labs/jbossrules/branches/mvel-tooling-2007-06-30: drools-compiler/src/main/java/org/drools/compiler and 38 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Jul 15 20:31:14 EDT 2007
Author: pombredanne
Date: 2007-07-15 20:31:13 -0400 (Sun, 15 Jul 2007)
New Revision: 13539
Added:
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/Dialect.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/DialectConfiguration.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialectConfiguration.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialectConfiguration.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_CollectAlphaRestriction.drl
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_bindings.drl
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_multipleFroms.drl
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/EventManager.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/LocalVariableResolver.java
Removed:
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/Dialect.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultExpanderResolverTest.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/ConcurrentStatelessSession.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/NoSuchFactHandleException.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/NoSuchFactObjectException.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/ReteConcurrentStatelessSession.java
Modified:
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/.classpath
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/DialectRegistry.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/lang/descr/RuleDescr.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilder.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAnalysisResult.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaEvalBuilder.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaLexer.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaParser.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilder.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAnalysisResult.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilder.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilder.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilder.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilder.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilder.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/resources/META-INF/drools.default.packagebuilder.conf
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.mvel
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/compiler/Java5Test.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderConfigurationTest.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/integrationtests/AccumulateTest.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilderTest.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/RuleBuilderTest.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/InstrumentedBuildContent.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilderTest.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilderTest.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateMVEL.drl
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_MapAccess.drl
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/.classpath
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/Agenda.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/FactException.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/InitialFact.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/ObjectFilter.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/Otherwise.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/PackageIntegrationException.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/QueryResult.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/QueryResults.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/RuleBase.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/RuleBaseFactory.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/StatelessSession.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/WorkingMemory.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/audit/WorkingMemoryFileLogger.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/audit/WorkingMemoryLogger.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/ClassObjectFilter.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/ClassTypeResolver.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/accumulators/JavaAccumulatorFunctionExecutor.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/accumulators/MVELAccumulatorFunctionExecutor.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/dataproviders/MVELDataProvider.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/evaluators/ObjectFactory.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELAccumulator.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELEvalExpression.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELPredicateExpression.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueExpression.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELSalienceExpression.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/common/DefaultAgenda.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/concurrent/CommandExecutor.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/concurrent/ExecutorService.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/CollectNode.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/Rete.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/builder/AccumulateBuilder.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/builder/CollectBuilder.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/rule/Accumulate.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/ruleflow/instance/impl/RuleFlowProcessInstanceImpl.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/spi/Accumulator.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/util/ChainedProperties.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/test/java/org/drools/base/EvaluatorFactoryTest.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/test/java/org/drools/reteoo/AccumulateNodeTest.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/test/java/org/drools/reteoo/MockAccumulator.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/test/java/org/drools/reteoo/OtherwiseTest.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/ExternalSheetListenerTest.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/DRLInfo.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/DroolsEclipsePlugin.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-examples/drools-examples-brms/.classpath
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-jbrms/src/main/java/org/drools/brms/server/builder/BRMSPackageBuilder.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-jbrms/src/test/java/org/drools/brms/server/builder/BRMSPackageBuilderTest.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-jsr94/src/main/java/org/drools/jsr94/rules/ObjectFilterAdapter.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-jsr94/src/main/java/org/drools/jsr94/rules/StatefulRuleSessionImpl.java
Log:
Ported r13536 from trunk to branch mvel-tooling-2007-06-30
- includes fixes as side effect of refactored Dialect interface move to org.drools.compiler
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/.classpath
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/.classpath 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/.classpath 2007-07-16 00:31:13 UTC (rev 13539)
@@ -6,14 +6,14 @@
<classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="var" path="M2_REPO/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar"/>
<classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0/antlr-runtime-3.0.jar"/>
<classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3.jar"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+ <classpathentry kind="src" path="/drools-core"/>
<classpathentry kind="var" path="M2_REPO/org/mvel/mvel14/1.2pre3/mvel14-1.2pre3.jar"/>
- <classpathentry kind="var" path="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.4.0/xercesImpl-2.4.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.7/janino-2.5.7.jar"/>
<classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
- <classpathentry kind="var" path="M2_REPO/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar"/>
- <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.7/janino-2.5.7.jar"/>
- <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.4.0/xercesImpl-2.4.0.jar"/>
- <classpathentry kind="src" path="/drools-core"/>
</classpath>
Copied: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/Dialect.java (from rev 13516, labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/Dialect.java)
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/Dialect.java (rev 0)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/Dialect.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -0,0 +1,129 @@
+package org.drools.compiler;
+
+import java.util.List;
+import java.util.Map;
+
+import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.TypeResolver;
+import org.drools.lang.descr.BaseDescr;
+import org.drools.lang.descr.FunctionDescr;
+import org.drools.lang.descr.RuleDescr;
+import org.drools.rule.Package;
+import org.drools.rule.builder.AccumulateBuilder;
+import org.drools.rule.builder.ConsequenceBuilder;
+import org.drools.rule.builder.FromBuilder;
+import org.drools.rule.builder.PatternBuilder;
+import org.drools.rule.builder.PredicateBuilder;
+import org.drools.rule.builder.QueryBuilder;
+import org.drools.rule.builder.ReturnValueBuilder;
+import org.drools.rule.builder.RuleBuildContext;
+import org.drools.rule.builder.RuleClassBuilder;
+import org.drools.rule.builder.RuleConditionBuilder;
+import org.drools.rule.builder.SalienceBuilder;
+
+/**
+ * A Dialect implementation handles the building and execution of code expressions and blocks for a rule.
+ * This api is considered unstable, and subject to change. Those wishing to implement their own dialects
+ * should look ove the MVEL and Java dialect implementations.
+ *
+ */
+public interface Dialect {
+
+ //MVEL: Compiler change
+ String getId();
+
+ void init(PackageBuilder builder);
+
+ // this is needed because some dialects use other dialects
+ // to build complex expressions. Example: java dialect uses MVEL
+ // to execute complex expressions
+ String getExpressionDialectName();
+
+ Map getBuilders();
+
+ TypeResolver getTypeResolver();
+
+ ClassFieldExtractorCache getClassFieldExtractorCache();
+
+ SalienceBuilder getSalienceBuilder();
+
+ PatternBuilder getPatternBuilder();
+
+ QueryBuilder getQueryBuilder();
+
+ RuleConditionBuilder getEvalBuilder();
+
+ AccumulateBuilder getAccumulateBuilder();
+
+ PredicateBuilder getPredicateBuilder();
+
+ ReturnValueBuilder getReturnValueBuilder();
+
+ ConsequenceBuilder getConsequenceBuilder();
+
+ RuleClassBuilder getRuleClassBuilder();
+
+ FromBuilder getFromBuilder();
+
+ RuleConditionBuilder getBuilder(Class clazz);
+
+ AnalysisResult analyzeExpression(final RuleBuildContext context,
+ final BaseDescr descr,
+ final Object content);
+
+ AnalysisResult analyzeBlock(final RuleBuildContext context,
+ final BaseDescr descr,
+ final String text);
+
+ void compileAll();
+
+ void addRule(final RuleBuildContext context);
+
+ void addFunction(final FunctionDescr functionDescr,
+ TypeResolver typeResolver);
+
+ public void addImport(String importEntry);
+
+ public void addStaticImport(String importEntry);
+
+ List getResults();
+
+ void init(Package pkg);
+
+ void init(RuleDescr ruleDescr);
+
+ /**
+ * An interface with the results from the expression/block analysis
+ *
+ * @author etirelli
+ */
+ public static interface AnalysisResult {
+
+ /**
+ * Returns the list<String> of all used identifiers
+ * @return
+ */
+ public List getIdentifiers();
+
+ /**
+ * Returns the array of lists<String> of bound identifiers
+ * @return
+ */
+ public List[] getBoundIdentifiers();
+
+ /**
+ * Returns the list<String> of not bounded identifiers
+ * @return
+ */
+ public List getNotBoundedIdentifiers();
+
+ /**
+ * Returns the list<String> of declared local variables
+ *
+ * @return
+ */
+ public List getLocalVariables();
+
+ }
+
+}
Copied: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/DialectConfiguration.java (from rev 13516, labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DialectConfiguration.java)
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/DialectConfiguration.java (rev 0)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/DialectConfiguration.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -0,0 +1,16 @@
+package org.drools.compiler;
+
+/**
+ * Each Dialect can have its own configuration. Implementations of this class are typically
+ * loaded via reflection in PackageBuilderConfiguration during the call to buildDialectRegistry().
+ * This Class api is subject to change.
+ *
+ */
+public interface DialectConfiguration {
+
+ public void init(PackageBuilderConfiguration configuration);
+
+ public Dialect getDialect();
+
+ public PackageBuilderConfiguration getPackageBuilderConfiguration();
+}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/DialectRegistry.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/DialectRegistry.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/DialectRegistry.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -6,8 +6,12 @@
import java.util.List;
import java.util.Map;
-import org.drools.rule.builder.Dialect;
-
+/**
+ * A Registry of DialectConfigurations. It is also responsible for issueing actions to all registered
+ * dialects.
+ * This Class api is subject to change.
+ *
+ */
public class DialectRegistry {
private Map map;
@@ -15,50 +19,95 @@
this.map = new HashMap();
}
- public void addDialect(final String name,
- final Dialect dialect) {
+ /**
+ * Add a DialectConfiguration to the registry
+ * @param name
+ * @param dialect
+ */
+ public void addDialectConfiguration(final String name,
+ final DialectConfiguration dialect) {
this.map.put( name,
dialect );
}
- public Dialect getDialect(final String name) {
- return (Dialect) this.map.get( name );
+ /**
+ * Get a DialectConfiguration for a named dialect
+ * @param name
+ * @return
+ */
+ public DialectConfiguration getDialectConfiguration(final String name) {
+ return (DialectConfiguration) this.map.get( name );
}
-
+
+ /**
+ * Initialise all registered dialects for the given PackageBuilder.
+ * @param builder
+ */
+ public void initAll(PackageBuilder builder) {
+ for ( Iterator it = this.map.values().iterator(); it.hasNext(); ) {
+ DialectConfiguration dialect = (DialectConfiguration) it.next();
+ dialect.getDialect().init( builder );
+ }
+ }
+
+ /**
+ * Instruct all registered dialects to compile what ever they have attempted to build.
+ *
+ */
public void compileAll() {
for ( Iterator it = this.map.values().iterator(); it.hasNext(); ) {
- Dialect dialect = ( Dialect ) it.next();
- dialect.compileAll();
+ DialectConfiguration dialect = (DialectConfiguration) it.next();
+ dialect.getDialect().compileAll();
}
}
-
+
+ /**
+ * Return an Iterator of DialectConfigurations
+ * @return
+ */
public Iterator iterator() {
return this.map.values().iterator();
}
-
+
+ /**
+ * Add all registered Dialect results to the provided List.
+ * @param list
+ * @return
+ */
public List addResults(List list) {
if ( list == null ) {
list = new ArrayList();
}
for ( Iterator it = this.map.values().iterator(); it.hasNext(); ) {
- Dialect dialect = ( Dialect ) it.next();
- list.addAll( dialect.getResults() );
- }
+ DialectConfiguration dialect = (DialectConfiguration) it.next();
+ List results = dialect.getDialect().getResults();
+ if ( results != null ) {
+ list.addAll( results );
+ }
+ }
return list;
}
+ /**
+ * Iterates all registered dialects, informing them of an import added to the PackageBuilder
+ * @param importEntry
+ */
public void addImport(String importEntry) {
for ( Iterator it = this.map.values().iterator(); it.hasNext(); ) {
- Dialect dialect = ( Dialect ) it.next();
- dialect.addImport( importEntry );
+ DialectConfiguration dialect = (DialectConfiguration) it.next();
+ dialect.getDialect().addImport( importEntry );
}
}
-
+
+ /**
+ * Iterates all registered dialects, informing them of a static imports added to the PackageBuilder
+ * @param staticImportEntry
+ */
public void addStaticImport(String staticImportEntry) {
for ( Iterator it = this.map.values().iterator(); it.hasNext(); ) {
- Dialect dialect = ( Dialect ) it.next();
- dialect.addStaticImport( staticImportEntry );
- }
+ DialectConfiguration dialect = (DialectConfiguration) it.next();
+ dialect.getDialect().addStaticImport( staticImportEntry );
+ }
}
-
+
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -44,7 +44,6 @@
import org.drools.lang.descr.RuleDescr;
import org.drools.rule.Package;
import org.drools.rule.Rule;
-import org.drools.rule.builder.Dialect;
import org.drools.rule.builder.RuleBuildContext;
import org.drools.rule.builder.RuleBuilder;
import org.drools.ruleflow.common.core.Process;
@@ -55,6 +54,12 @@
* This is the main compiler class for parsing and compiling rules and
* assembling or merging them into a binary Package instance. This can be done
* by merging into existing binary packages, or totally from source.
+ *
+ * If you are using the Java dialect the JavaDialectConfiguration will attempt to
+ * validate that the specified compiler is in the classpath, using ClassLoader.loasClass(String).
+ * If you intented to just Janino sa the compiler you must either overload the compiler
+ * property before instantiating this class or the PackageBuilder, or make sure Eclipse is in the
+ * classpath, as Eclipse is the default.
*/
public class PackageBuilder {
@@ -72,7 +77,7 @@
private Dialect dialect;
- private DialectRegistry dialects;
+// private DialectRegistry dialects;
private ProcessBuilder processBuilder;
@@ -92,6 +97,11 @@
null );
}
+ /**
+ * Pass a specific configuration for the PackageBuilder
+ *
+ * @param configuration
+ */
public PackageBuilder(final PackageBuilderConfiguration configuration) {
this( null,
configuration );
@@ -126,9 +136,13 @@
this.typeResolver = new ClassTypeResolver( new ArrayList(),
this.configuration.getClassLoader() );
}
+ this.configuration.getDialectRegistry().initAll( this );
+ if ( this.pkg != null ) {
+ initDialectPackage( pkg );
+ }
+
+ this.dialect = this.configuration.getDefaultDialect();
- this.dialects = configuration.buildDialectRegistry( this );
- this.dialect = this.dialects.getDialect( configuration.getDefaultDialect() );
}
/**
@@ -226,18 +240,15 @@
// The Package does not have a default dialect, so set it
if ( dialectName == null && this.dialect == null ) {
- dialectName = configuration.getDefaultDialect();
- this.dialect = this.dialects.getDialect( dialectName );
+ this.dialect = this.configuration.getDefaultDialect();
}
if ( dialectName != null ) {
- this.dialect = this.dialects.getDialect( dialectName );
+ this.dialect = this.configuration.getDialectRegistry().getDialectConfiguration( dialectName ).getDialect();
} else if ( this.dialect == null ) {
- this.dialect = this.dialects.getDialect( configuration.getDefaultDialect() );
+ this.dialect = this.configuration.getDefaultDialect();
}
-
-
-
+
if ( this.pkg != null ) {
// mergePackage( packageDescr ) ;
mergePackage( this.pkg,
@@ -273,8 +284,8 @@
}
}
- this.dialects.compileAll();
- this.results = this.dialects.addResults( this.results );
+ this.configuration.getDialectRegistry().compileAll();
+ this.results = this.configuration.getDialectRegistry().addResults( this.results );
}
private void validatePackageName(final PackageDescr packageDescr) {
@@ -308,16 +319,21 @@
final Package pkg = new Package( packageDescr.getName(),
this.configuration.getClassLoader() );
- for ( Iterator it = this.dialects.iterator(); it.hasNext(); ) {
- Dialect dialect = ( Dialect ) it.next();
- dialect.init( pkg );
- }
+ initDialectPackage( pkg );
mergePackage( pkg,
packageDescr );
return pkg;
}
+
+ private void initDialectPackage(Package pkg) {
+ for ( Iterator it = this.configuration.getDialectRegistry().iterator(); it.hasNext(); ) {
+ Dialect dialect = (( DialectConfiguration ) it.next()).getDialect();
+ dialect.init( pkg );
+ }
+
+ }
private void mergePackage(final Package pkg,
final PackageDescr packageDescr) {
@@ -332,12 +348,12 @@
String importEntry = ((ImportDescr) it.next()).getTarget();
pkg.addImport( importEntry );
this.typeResolver.addImport( importEntry );
- this.dialects.addImport( importEntry );
+ this.configuration.getDialectRegistry().addImport( importEntry );
}
for ( final Iterator it = packageDescr.getFunctionImports().iterator(); it.hasNext(); ) {
String importEntry = ((FunctionImportDescr) it.next()).getTarget();
- this.dialects.addStaticImport( importEntry );
+ this.configuration.getDialectRegistry().addStaticImport( importEntry );
pkg.addStaticImport( importEntry );
}
@@ -399,7 +415,7 @@
RuleBuildContext context = new RuleBuildContext( this.configuration,
pkg,
ruleDescr,
- this.dialects,
+ this.configuration.getDialectRegistry(),
this.dialect );
this.builder.build( context );
@@ -435,7 +451,12 @@
return this.pkg;
}
-
+
+ /**
+ * Return the PackageBuilderConfiguration for this PackageBuilder session
+ * @return
+ * The PackageBuilderConfiguration
+ */
public PackageBuilderConfiguration getPackageBuilderConfiguration() {
return this.configuration;
}
@@ -450,6 +471,11 @@
}
}
+ /**
+ * Return the ClassFieldExtractorCache, this should only be used internally, and is subject to change
+ * @return
+ * the ClsasFieldExtractorCache
+ */
public ClassFieldExtractorCache getClassFieldExtractorCache() {
return this.classFieldExtractorCache;
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -2,13 +2,13 @@
/*
* Copyright 2005 JBoss Inc
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -27,39 +27,37 @@
import org.drools.RuntimeDroolsException;
import org.drools.base.accumulators.AccumulateFunction;
-import org.drools.rule.builder.Dialect;
import org.drools.util.ChainedProperties;
/**
- * This class configures the package compiler.
- * There are options to use various flavours of runtime compilers.
- * Apache JCI is used as the interface to all the runtime compilers.
- * You may also use this class to override the class loader defaults that are otherwise used.
+ * This class configures the package 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.
- *
- * You can also use the system property "drools.compiler" to set the desired compiler.
- * The valid values are "ECLIPSE" and "JANINO" only.
- * s
- * The default Java language level is 1.4 but it can be configured using the
- * system property "drools.compiler.lnglevel". Valid values are 1.4, 1.5 and 1.6.
+ *
+ * drools.dialect.default = <String>
+ * drools.accumulate.function.<function name> = <qualified class>
+ *
+ * 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 class PackageBuilderConfiguration {
- public static final int ECLIPSE = 0;
- public static final int JANINO = 1;
- public static final String[] LANGUAGE_LEVELS = new String[]{"1.4", "1.5", "1.6"};
private static final String ACCUMULATE_FUNCTION_PREFIX = "drools.accumulate.function.";
private Map dialects;
+ private DialectRegistry dialectRegistry;
+
private String defaultDialect;
- private int compiler;
-
private ClassLoader classLoader;
- private String languageLevel;
private ChainedProperties chainedProperties;
@@ -107,39 +105,22 @@
this.chainedProperties.addProperties( properties );
}
- setJavaLanguageLevel( getDefaultLanguageLevel() );
-
- setCompiler( getDefaultCompiler() );
-
this.dialects = new HashMap();
this.chainedProperties.mapStartsWith( this.dialects,
- "drools.dialect" );
+ "drools.dialect",
+ false );
setDefaultDialect( (String) this.dialects.remove( "drools.dialect.default" ) );
+ this.dialectRegistry = buildDialectRegistry( );
+
buildAccumulateFunctionsMap();
}
- public int getCompiler() {
- return this.compiler;
+ public ChainedProperties getChainedProperties() {
+ return this.chainedProperties;
}
- public String getJavaLanguageLevel() {
- return this.languageLevel;
- }
-
- /**
- * You cannot set language level below 1.5, as we need static imports, 1.5 is now the default.
- * @param level
- */
- public void setJavaLanguageLevel(final String languageLevel) {
- if ( Arrays.binarySearch( LANGUAGE_LEVELS,
- languageLevel ) < 0 ) {
- throw new RuntimeDroolsException( "value '" + languageLevel + "' is not a valid language level" );
- }
- this.languageLevel = languageLevel;
- }
-
- public DialectRegistry buildDialectRegistry(PackageBuilder packageBuilder) {
+ public DialectRegistry buildDialectRegistry() {
DialectRegistry registry = new DialectRegistry();
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
for ( Iterator it = this.dialects.entrySet().iterator(); it.hasNext(); ) {
@@ -149,43 +130,40 @@
String dialectClass = (String) entry.getValue();
try {
Class cls = classLoader.loadClass( dialectClass );
- Constructor cons = cls.getConstructor( new Class[]{PackageBuilder.class} );
- registry.addDialect( dialectName,
- (Dialect) cons.newInstance( new Object[]{packageBuilder} ) );
+ DialectConfiguration dialectConf = ( DialectConfiguration ) cls.newInstance();
+ dialectConf.init( this );
+ registry.addDialectConfiguration( dialectName,
+ dialectConf );
} catch ( Exception e ) {
//MVEL: Compiler change
e.printStackTrace();
- throw new RuntimeDroolsException( "Unable to load dialect '" + dialectClass + ":" + dialectName + "'" );
+ throw new RuntimeDroolsException( "Unable to load dialect '" + dialectClass + ":" + dialectName + "'", e );
}
}
return registry;
}
- public String getDefaultDialect() {
- return this.defaultDialect;
+ public DialectRegistry getDialectRegistry() {
+ return this.dialectRegistry;
}
+ public Dialect getDefaultDialect() {
+ return this.dialectRegistry.getDialectConfiguration( this.defaultDialect ).getDialect();
+ }
+
public void setDefaultDialect(String defaultDialect) {
this.defaultDialect = defaultDialect;
}
- /**
- * Set the compiler to be used when building the rules semantic code blocks.
- * This overrides the default, and even what was set as a system property.
- */
- public void setCompiler(final int compiler) {
- switch ( compiler ) {
- case PackageBuilderConfiguration.ECLIPSE :
- this.compiler = PackageBuilderConfiguration.ECLIPSE;
- break;
- case PackageBuilderConfiguration.JANINO :
- this.compiler = PackageBuilderConfiguration.JANINO;
- break;
- default :
- throw new RuntimeDroolsException( "value '" + compiler + "' is not a valid compiler" );
- }
+ public DialectConfiguration getDialectConfiguration(String name) {
+ return ( DialectConfiguration ) this.dialectRegistry.getDialectConfiguration( name );
}
+ public void setDialectConfiguration(String name, DialectConfiguration configuration) {
+ this.dialects.put( name,
+ configuration );
+ }
+
public ClassLoader getClassLoader() {
return this.classLoader;
}
@@ -197,59 +175,12 @@
}
}
- /**
- * This will attempt to read the System property to work out what default to set.
- * This should only be done once when the class is loaded. After that point, you will have
- * to programmatically override it.
- */
- private int getDefaultCompiler() {
- try {
- final String prop = this.chainedProperties.getProperty( "drools.compiler",
- "ECLIPSE" );
- if ( prop.equals( "ECLIPSE".intern() ) ) {
- return PackageBuilderConfiguration.ECLIPSE;
- } else if ( prop.equals( "JANINO" ) ) {
- return PackageBuilderConfiguration.JANINO;
- } else {
- System.err.println( "Drools config: unable to use the drools.compiler property. Using default. It was set to:" + prop );
- return PackageBuilderConfiguration.ECLIPSE;
- }
- } catch ( final SecurityException e ) {
- System.err.println( "Drools config: unable to read the drools.compiler property. Using default." );
- return PackageBuilderConfiguration.ECLIPSE;
- }
- }
-
- private String getDefaultLanguageLevel() {
- String level = this.chainedProperties.getProperty( "drools.compiler.lnglevel",
- null );
-
- if ( level == null ) {
- String version = System.getProperty( "java.version" );
- if ( version.startsWith( "1.4" ) ) {
- level = "1.4";
- } else if ( version.startsWith( "1.5" ) ) {
- level = "1.5";
- } else if ( version.startsWith( "1.6" ) ) {
- level = "1.6";
- } else {
- level = "1.4";
- }
- }
-
- if ( Arrays.binarySearch( LANGUAGE_LEVELS,
- level ) < 0 ) {
- throw new RuntimeDroolsException( "value '" + level + "' is not a valid language level" );
- }
-
- return level;
- }
-
private void buildAccumulateFunctionsMap() {
this.accumulateFunctions = new HashMap();
Map temp = new HashMap();
this.chainedProperties.mapStartsWith( temp,
- ACCUMULATE_FUNCTION_PREFIX );
+ ACCUMULATE_FUNCTION_PREFIX,
+ true );
for ( Iterator it = temp.entrySet().iterator(); it.hasNext(); ) {
Map.Entry entry = (Map.Entry) it.next();
String identifier = ((String) entry.getKey()).trim().substring( ACCUMULATE_FUNCTION_PREFIX.length() );
@@ -257,7 +188,7 @@
entry.getValue() );
}
}
-
+
public Map getAccumulateFunctionsMap() {
return Collections.unmodifiableMap( this.accumulateFunctions );
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/lang/descr/RuleDescr.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/lang/descr/RuleDescr.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/lang/descr/RuleDescr.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -2,13 +2,13 @@
/*
* Copyright 2005 JBoss Inc
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -20,11 +20,11 @@
import java.util.Collections;
import java.util.List;
-import org.drools.rule.builder.Dialect;
+import org.drools.compiler.Dialect;
public class RuleDescr extends BaseDescr {
/**
- *
+ *
*/
private static final long serialVersionUID = 400L;
private String name;
@@ -42,13 +42,13 @@
//MVEL: Compiler change
private Dialect dialect;
-
+
public RuleDescr(final String name) {
this( name,
"" );
}
-
+
public RuleDescr(final String ruleName,
final String documentation) {
this.name = ruleName;
@@ -57,7 +57,7 @@
public String getName() {
return this.name;
- }
+ }
public String getSalience() {
return salience;
@@ -131,7 +131,7 @@
public int getConsequencePattern() {
return this.consequencePattern;
}
-
+
//MVEL: Compiler change
public void setDialect(Dialect dialect) {
this.dialect = dialect;
Deleted: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/Dialect.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/Dialect.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/Dialect.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -1,109 +0,0 @@
-package org.drools.rule.builder;
-
-import java.util.List;
-import java.util.Map;
-
-import org.drools.base.ClassFieldExtractorCache;
-import org.drools.base.TypeResolver;
-import org.drools.lang.descr.BaseDescr;
-import org.drools.lang.descr.FunctionDescr;
-import org.drools.lang.descr.RuleDescr;
-import org.drools.rule.Package;
-
-public interface Dialect {
- //MVEL: Compiler change
- String getId();
-
- // this is needed because some dialects use other dialects
- // to build complex expressions. Example: java dialect uses MVEL
- // to execute complex expressions
- String getExpressionDialectName();
-
- Map getBuilders();
-
- TypeResolver getTypeResolver();
-
- ClassFieldExtractorCache getClassFieldExtractorCache();
-
- SalienceBuilder getSalienceBuilder();
-
- PatternBuilder getPatternBuilder();
-
- QueryBuilder getQueryBuilder();
-
- RuleConditionBuilder getEvalBuilder();
-
- AccumulateBuilder getAccumulateBuilder();
-
- PredicateBuilder getPredicateBuilder();
-
- ReturnValueBuilder getReturnValueBuilder();
-
- ConsequenceBuilder getConsequenceBuilder();
-
- RuleClassBuilder getRuleClassBuilder();
-
- FromBuilder getFromBuilder();
-
- RuleConditionBuilder getBuilder(Class clazz);
-
- AnalysisResult analyzeExpression(final RuleBuildContext context,
- final BaseDescr descr,
- final Object content);
-
- AnalysisResult analyzeBlock(final RuleBuildContext context,
- final BaseDescr descr,
- final String text);
-
- void compileAll();
-
- void addRule(final RuleBuildContext context);
-
- void addFunction(final FunctionDescr functionDescr,
- TypeResolver typeResolver);
-
- public void addImport(String importEntry);
-
- public void addStaticImport(String importEntry);
-
- List getResults();
-
- void init(Package pkg);
-
- void init(RuleDescr ruleDescr);
-
- /**
- * An interface with the results from the expression/block analysis
- *
- * @author etirelli
- */
- public static interface AnalysisResult {
-
- /**
- * Returns the list<String> of all used identifiers
- * @return
- */
- public List getIdentifiers();
-
- /**
- * Returns the array of lists<String> of bound identifiers
- * @return
- */
- public List[] getBoundIdentifiers();
-
- /**
- * Returns the list<String> of not bounded identifiers
- * @return
- */
- public List getNotBoundedIdentifiers();
-
- /**
- * Returns the list<String> of declared local variables
- *
- * @return
- */
- public List getLocalVariables();
-
- }
-
-}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -25,6 +25,7 @@
import org.drools.base.FieldFactory;
import org.drools.base.ValueType;
import org.drools.base.evaluators.Operator;
+import org.drools.compiler.Dialect;
import org.drools.compiler.RuleError;
import org.drools.facttemplates.FactTemplate;
import org.drools.facttemplates.FactTemplateFieldExtractor;
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -25,6 +25,8 @@
import java.util.Stack;
import org.drools.base.evaluators.DateFactory;
+import org.drools.compiler.Dialect;
+import org.drools.compiler.DialectConfiguration;
import org.drools.compiler.DialectRegistry;
import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.lang.descr.AttributeDescr;
@@ -119,7 +121,7 @@
ruleDescr.getAttributes() );
this.dialectRegistry = dialectRegistry;
- this.dialect = (this.rule.getDialect() != null) ? this.dialectRegistry.getDialect( this.rule.getDialect() ) : defaultDialect;
+ this.dialect = (this.rule.getDialect() != null) ? this.dialectRegistry.getDialectConfiguration( this.rule.getDialect() ).getDialect() : defaultDialect;
getDialect().init( ruleDescr );
}
@@ -136,7 +138,7 @@
}
public Dialect getDialect(String dialectName) {
- return (Dialect) this.dialectRegistry.getDialect( dialectName );
+ return ( (DialectConfiguration) this.dialectRegistry.getDialectConfiguration( dialectName ) ).getDialect();
}
/**
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilder.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilder.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -25,6 +25,7 @@
import org.drools.base.accumulators.AccumulateFunction;
import org.drools.base.accumulators.JavaAccumulatorFunctionExecutor;
+import org.drools.compiler.Dialect;
import org.drools.lang.descr.AccumulateDescr;
import org.drools.lang.descr.BaseDescr;
import org.drools.lang.descr.PatternDescr;
@@ -33,7 +34,6 @@
import org.drools.rule.Pattern;
import org.drools.rule.RuleConditionElement;
import org.drools.rule.builder.AccumulateBuilder;
-import org.drools.rule.builder.Dialect;
import org.drools.rule.builder.PatternBuilder;
import org.drools.rule.builder.RuleBuildContext;
import org.drools.rule.builder.dialect.java.parser.JavaLocalDeclarationDescr;
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAnalysisResult.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAnalysisResult.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAnalysisResult.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -22,7 +22,7 @@
import java.util.List;
import java.util.Map;
-import org.drools.rule.builder.Dialect.AnalysisResult;
+import org.drools.compiler.Dialect.AnalysisResult;
import org.drools.rule.builder.dialect.java.parser.JavaLocalDeclarationDescr;
/**
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -20,11 +20,11 @@
import java.util.List;
import java.util.Map;
+import org.drools.compiler.Dialect;
import org.drools.compiler.RuleError;
import org.drools.lang.descr.RuleDescr;
import org.drools.rule.Declaration;
import org.drools.rule.builder.ConsequenceBuilder;
-import org.drools.rule.builder.Dialect;
import org.drools.rule.builder.RuleBuildContext;
import org.drools.spi.PatternExtractor;
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -17,8 +17,8 @@
import org.drools.commons.jci.problems.CompilationProblem;
import org.drools.commons.jci.readers.MemoryResourceReader;
import org.drools.commons.jci.readers.ResourceReader;
+import org.drools.compiler.Dialect;
import org.drools.compiler.PackageBuilder;
-import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.compiler.RuleError;
import org.drools.compiler.PackageBuilder.ErrorHandler;
import org.drools.compiler.PackageBuilder.FunctionErrorHandler;
@@ -44,7 +44,6 @@
import org.drools.rule.builder.AccumulateBuilder;
import org.drools.rule.builder.CollectBuilder;
import org.drools.rule.builder.ConsequenceBuilder;
-import org.drools.rule.builder.Dialect;
import org.drools.rule.builder.ForallBuilder;
import org.drools.rule.builder.FromBuilder;
import org.drools.rule.builder.FunctionBuilder;
@@ -82,11 +81,11 @@
private final JavaFunctionBuilder function = new JavaFunctionBuilder();
//
- private final KnowledgeHelperFixer knowledgeHelperFixer;
- private final DeclarationTypeFixer typeFixer;
- private final JavaExprAnalyzer analyzer;
+ private KnowledgeHelperFixer knowledgeHelperFixer;
+ private DeclarationTypeFixer typeFixer;
+ private JavaExprAnalyzer analyzer;
- private PackageBuilderConfiguration configuration;
+ private JavaDialectConfiguration configuration;
private Package pkg;
private JavaCompiler compiler;
@@ -98,15 +97,19 @@
// the class name for the rule
private String ruleClass;
- private final TypeResolver typeResolver;
- private final ClassFieldExtractorCache classFieldExtractorCache;
+ private TypeResolver typeResolver;
+ private ClassFieldExtractorCache classFieldExtractorCache;
// a map of registered builders
private Map builders;
- public JavaDialect(final PackageBuilder builder) {
+ public JavaDialect() {
+
+ }
+
+ public void init(PackageBuilder builder) {
this.pkg = builder.getPackage();
- this.configuration = builder.getPackageBuilderConfiguration();
+ this.configuration = (JavaDialectConfiguration) builder.getPackageBuilderConfiguration().getDialectConfiguration( "java" );
this.typeResolver = builder.getTypeResolver();
this.classFieldExtractorCache = builder.getClassFieldExtractorCache();
@@ -172,9 +175,9 @@
public void init(final Package pkg) {
this.pkg = pkg;
-
+
//MVEL Compiler change
- //TODO Consider lazy init for these as they might have been initialized from the constructor and maybe used meanwhile
+ //TODO Consider lazy init for these as they might have been initialized from the constructor and maybe used meanwhile
this.errorHandlers = new HashMap();
this.results = new ArrayList();
@@ -423,10 +426,10 @@
final LineMappings mapping = new LineMappings( name );
mapping.setStartLine( ruleDescr.getConsequenceLine() );
mapping.setOffset( ruleDescr.getConsequenceOffset() );
-
+
context.getPkg().getPackageCompilationData().getLineMappings().put( name,
mapping );
-
+
}
public void addFunction(final FunctionDescr functionDescr,
@@ -486,11 +489,11 @@
private void loadCompiler() {
switch ( this.configuration.getCompiler() ) {
- case PackageBuilderConfiguration.JANINO : {
+ case JavaDialectConfiguration.JANINO : {
this.compiler = JavaCompilerFactory.getInstance().createCompiler( "janino" );
break;
}
- case PackageBuilderConfiguration.ECLIPSE :
+ case JavaDialectConfiguration.ECLIPSE :
default : {
this.compiler = JavaCompilerFactory.getInstance().createCompiler( "eclipse" );
JavaCompilerSettings settings = this.compiler.createDefaultSettings();
@@ -549,7 +552,8 @@
final String fileName = packageName.replaceAll( "\\.",
"/" ) + newName + "_" + counter + ext;
- exists = src.isAvailable( fileName );
+ //MVEL:test null to Fix failing test on org.drools.rule.builder.dialect.mvel.MVELConsequenceBuilderTest.testImperativeCodeError()
+ exists = src != null && src.isAvailable( fileName );
}
// we have duplicate file names so append counter
if ( counter >= 0 ) {
Copied: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialectConfiguration.java (from rev 13516, labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialectConfiguration.java)
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialectConfiguration.java (rev 0)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialectConfiguration.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -0,0 +1,172 @@
+package org.drools.rule.builder.dialect.java;
+
+import java.util.Arrays;
+import java.util.Properties;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.compiler.Dialect;
+import org.drools.compiler.DialectConfiguration;
+import org.drools.compiler.PackageBuilder;
+import org.drools.compiler.PackageBuilderConfiguration;
+
+/**
+ *
+ * There are options to use various flavours of runtime compilers.
+ * Apache JCI is used as the interface to all the runtime compilers.
+ *
+ * You can also use the system property "drools.compiler" to set the desired compiler.
+ * The valid values are "ECLIPSE" and "JANINO" only.
+ *
+ * drools.dialect.java.compiler = <ECLIPSE|JANINO>
+ * drools.dialect.java.lngLevel = <1.4|1.5|1.6>
+ *
+ * The default compiler is Eclipse and the default lngLevel is 1.4.
+ * The lngLevel will attempt to autodiscover your system using the
+ * system property "java.version"
+ *
+ * The JavaDialectConfiguration will attempt to validate that the specified compiler
+ * is in the classpath, using ClassLoader.loasClass(String). If you intented to
+ * just Janino sa the compiler you must either overload the compiler property before
+ * instantiating this class or the PackageBuilder, or make sure Eclipse is in the
+ * classpath, as Eclipse is the default.
+ *
+ */
+public class JavaDialectConfiguration
+ implements
+ DialectConfiguration {
+ public static final int ECLIPSE = 0;
+ public static final int JANINO = 1;
+
+ public static final String[] LANGUAGE_LEVELS = new String[]{"1.4", "1.5", "1.6"};
+
+ private String languageLevel;
+
+ private PackageBuilderConfiguration conf;
+
+ private int compiler;
+
+ private JavaDialect dialect;
+
+ public JavaDialectConfiguration() {
+ }
+
+ public void init(final PackageBuilderConfiguration conf) {
+ this.conf = conf;
+
+ setCompiler( getDefaultCompiler() );
+
+ setJavaLanguageLevel( getDefaultLanguageLevel() );
+ }
+
+ public PackageBuilderConfiguration getPackageBuilderConfiguration() {
+ return this.conf;
+ }
+
+ public Dialect getDialect() {
+ if ( this.dialect == null ) {
+ this.dialect = new JavaDialect();
+ }
+ return this.dialect;
+ }
+
+ public String getJavaLanguageLevel() {
+ return this.languageLevel;
+ }
+
+ /**
+ * You cannot set language level below 1.5, as we need static imports, 1.5 is now the default.
+ * @param level
+ */
+ public void setJavaLanguageLevel(final String languageLevel) {
+ if ( Arrays.binarySearch( LANGUAGE_LEVELS,
+ languageLevel ) < 0 ) {
+ throw new RuntimeDroolsException( "value '" + languageLevel + "' is not a valid language level" );
+ }
+ this.languageLevel = languageLevel;
+ }
+
+ /**
+ * Set the compiler to be used when building the rules semantic code blocks.
+ * This overrides the default, and even what was set as a system property.
+ */
+ public void setCompiler(final int compiler) {
+ // check that the jar for the specified compiler are present
+ if ( compiler == ECLIPSE ) {
+ try {
+ getClass().getClassLoader().loadClass( "org.eclipse.jdt.internal.compiler.Compiler" );
+ } catch ( ClassNotFoundException e ) {
+ throw new RuntimeException( "The Eclipse JDT Core jar is not in the classpath" );
+ }
+ } else if ( compiler == JANINO ){
+ try {
+ getClass().getClassLoader().loadClass( "org.codehaus.janino.Parser" );
+ } catch ( ClassNotFoundException e ) {
+ throw new RuntimeException( "The Janino jar is not in the classpath" );
+ }
+ }
+
+ switch ( compiler ) {
+ case JavaDialectConfiguration.ECLIPSE :
+ this.compiler = JavaDialectConfiguration.ECLIPSE;
+ break;
+ case JavaDialectConfiguration.JANINO :
+ this.compiler = JavaDialectConfiguration.JANINO;
+ break;
+ default :
+ throw new RuntimeDroolsException( "value '" + compiler + "' is not a valid compiler" );
+ }
+ }
+
+ public int getCompiler() {
+ return this.compiler;
+ }
+
+ /**
+ * This will attempt to read the System property to work out what default to set.
+ * This should only be done once when the class is loaded. After that point, you will have
+ * to programmatically override it.
+ */
+ private int getDefaultCompiler() {
+ try {
+ final String prop = this.conf.getChainedProperties().getProperty( "drools.dialect.java.compiler",
+ "ECLIPSE" );
+ if ( prop.equals( "ECLIPSE".intern() ) ) {
+ return JavaDialectConfiguration.ECLIPSE;
+ } else if ( prop.equals( "JANINO" ) ) {
+ return JavaDialectConfiguration.JANINO;
+ } else {
+ System.err.println( "Drools config: unable to use the drools.compiler property. Using default. It was set to:" + prop );
+ return JavaDialectConfiguration.ECLIPSE;
+ }
+ } catch ( final SecurityException e ) {
+ System.err.println( "Drools config: unable to read the drools.compiler property. Using default." );
+ return JavaDialectConfiguration.ECLIPSE;
+ }
+ }
+
+ private String getDefaultLanguageLevel() {
+ String level = this.conf.getChainedProperties().getProperty( "drools.dialect.java.compiler.lnglevel",
+ null );
+
+ if ( level == null ) {
+ String version = System.getProperty( "java.version" );
+ if ( version.startsWith( "1.4" ) ) {
+ level = "1.4";
+ } else if ( version.startsWith( "1.5" ) ) {
+ level = "1.5";
+ } else if ( version.startsWith( "1.6" ) ) {
+ level = "1.6";
+ } else {
+ level = "1.4";
+ }
+ }
+
+ if ( Arrays.binarySearch( LANGUAGE_LEVELS,
+ level ) < 0 ) {
+ throw new RuntimeDroolsException( "value '" + level + "' is not a valid language level" );
+ }
+
+ return level;
+ }
+
+}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaEvalBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaEvalBuilder.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaEvalBuilder.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -19,13 +19,13 @@
import java.util.List;
import java.util.Map;
+import org.drools.compiler.Dialect;
import org.drools.lang.descr.BaseDescr;
import org.drools.lang.descr.EvalDescr;
import org.drools.rule.Declaration;
import org.drools.rule.EvalCondition;
import org.drools.rule.Pattern;
import org.drools.rule.RuleConditionElement;
-import org.drools.rule.builder.Dialect;
import org.drools.rule.builder.RuleBuildContext;
import org.drools.rule.builder.RuleConditionBuilder;
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaLexer.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaLexer.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaLexer.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0 /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g 2007-07-01 14:08:52
+// $ANTLR 3.0 /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g 2007-07-15 10:51:14
package org.drools.rule.builder.dialect.java.parser;
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaParser.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaParser.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaParser.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0 /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g 2007-07-01 14:08:51
+// $ANTLR 3.0 /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g 2007-07-15 10:51:13
package org.drools.rule.builder.dialect.java.parser;
import java.util.Iterator;
@@ -11745,9 +11745,9 @@
i=(Token)input.LT(1);
match(input,Identifier,FOLLOW_Identifier_in_primary3793); if (failed) return ;
if ( backtracking==0 ) {
- identifiers.add( i.getText() );
+ if( ! "(".equals( input.LT(1) == null ? "" : input.LT(1).getText() ) ) identifiers.add( i.getText() );
}
- // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:860:55: ( '.' Identifier )*
+ // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:860:126: ( '.' Identifier )*
loop153:
do {
int alt153=2;
@@ -11772,7 +11772,7 @@
switch (alt153) {
case 1 :
- // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:860:56: '.' Identifier
+ // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:860:127: '.' Identifier
{
match(input,28,FOLLOW_28_in_primary3798); if (failed) return ;
match(input,Identifier,FOLLOW_Identifier_in_primary3800); if (failed) return ;
@@ -11785,7 +11785,7 @@
}
} while (true);
- // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:860:73: ( identifierSuffix )?
+ // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:860:144: ( identifierSuffix )?
int alt154=2;
switch ( input.LA(1) ) {
case 41:
@@ -12039,7 +12039,7 @@
switch (alt154) {
case 1 :
- // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:860:74: identifierSuffix
+ // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:860:145: identifierSuffix
{
pushFollow(FOLLOW_identifierSuffix_in_primary3805);
identifierSuffix();
@@ -14192,8 +14192,8 @@
// $ANTLR start synpred238
public final void synpred238_fragment() throws RecognitionException {
- // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:860:56: ( '.' Identifier )
- // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:860:56: '.' Identifier
+ // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:860:127: ( '.' Identifier )
+ // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:860:127: '.' Identifier
{
match(input,28,FOLLOW_28_in_synpred2383798); if (failed) return ;
match(input,Identifier,FOLLOW_Identifier_in_synpred2383800); if (failed) return ;
@@ -14204,8 +14204,8 @@
// $ANTLR start synpred239
public final void synpred239_fragment() throws RecognitionException {
- // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:860:74: ( identifierSuffix )
- // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:860:74: identifierSuffix
+ // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:860:145: ( identifierSuffix )
+ // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:860:145: identifierSuffix
{
pushFollow(FOLLOW_identifierSuffix_in_synpred2393805);
identifierSuffix();
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilder.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilder.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -24,6 +24,7 @@
import org.drools.base.accumulators.MVELAccumulatorFunctionExecutor;
import org.drools.base.mvel.DroolsMVELFactory;
import org.drools.base.mvel.MVELAccumulator;
+import org.drools.compiler.Dialect;
import org.drools.lang.descr.AccumulateDescr;
import org.drools.lang.descr.BaseDescr;
import org.drools.lang.descr.PatternDescr;
@@ -32,7 +33,6 @@
import org.drools.rule.Pattern;
import org.drools.rule.RuleConditionElement;
import org.drools.rule.builder.AccumulateBuilder;
-import org.drools.rule.builder.Dialect;
import org.drools.rule.builder.PatternBuilder;
import org.drools.rule.builder.RuleBuildContext;
import org.drools.spi.Accumulator;
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAnalysisResult.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAnalysisResult.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAnalysisResult.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -21,7 +21,7 @@
import java.util.List;
import java.util.Map;
-import org.drools.rule.builder.Dialect.AnalysisResult;
+import org.drools.compiler.Dialect.AnalysisResult;
/**
* An analysis result implementation for the MVEL dialect
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilder.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilder.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -7,9 +7,9 @@
import org.drools.base.mvel.DroolsMVELFactory;
import org.drools.base.mvel.DroolsMVELKnowledgeHelper;
import org.drools.base.mvel.MVELConsequence;
+import org.drools.compiler.Dialect;
import org.drools.compiler.RuleError;
import org.drools.rule.builder.ConsequenceBuilder;
-import org.drools.rule.builder.Dialect;
import org.drools.rule.builder.RuleBuildContext;
import org.drools.spi.KnowledgeHelper;
import org.mvel.ASTNode;
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -15,9 +15,9 @@
import org.drools.base.mvel.DroolsMVELFactory;
import org.drools.base.mvel.DroolsMVELKnowledgeHelper;
import org.drools.commons.jci.readers.MemoryResourceReader;
+import org.drools.compiler.Dialect;
import org.drools.compiler.ImportError;
import org.drools.compiler.PackageBuilder;
-import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.compiler.RuleError;
import org.drools.lang.descr.AccumulateDescr;
import org.drools.lang.descr.AndDescr;
@@ -36,7 +36,6 @@
import org.drools.rule.Package;
import org.drools.rule.builder.AccumulateBuilder;
import org.drools.rule.builder.ConsequenceBuilder;
-import org.drools.rule.builder.Dialect;
import org.drools.rule.builder.FromBuilder;
import org.drools.rule.builder.GroupElementBuilder;
import org.drools.rule.builder.PatternBuilder;
@@ -65,41 +64,40 @@
implements
Dialect {
- public final static String ID = "MVELDialect";
+ public final static String ID = "MVELDialect";
- private final static String EXPRESSION_DIALECT_NAME = "MVEL";
+ private final static String EXPRESSION_DIALECT_NAME = "MVEL";
- private final MVELRuleClassBuilder rule = new MVELRuleClassBuilder();
+ private final MVELRuleClassBuilder rule = new MVELRuleClassBuilder();
- private final PatternBuilder pattern = new PatternBuilder( );
- private final QueryBuilder query = new QueryBuilder();
- private final MVELAccumulateBuilder accumulate = new MVELAccumulateBuilder();
- private final SalienceBuilder salience = new MVELSalienceBuilder();
- private final MVELEvalBuilder eval = new MVELEvalBuilder();
- private final MVELPredicateBuilder predicate = new MVELPredicateBuilder();
- private final MVELReturnValueBuilder returnValue = new MVELReturnValueBuilder();
- private final MVELConsequenceBuilder consequence = new MVELConsequenceBuilder();
+ private final PatternBuilder pattern = new PatternBuilder();
+ private final QueryBuilder query = new QueryBuilder();
+ private final MVELAccumulateBuilder accumulate = new MVELAccumulateBuilder();
+ private final SalienceBuilder salience = new MVELSalienceBuilder();
+ private final MVELEvalBuilder eval = new MVELEvalBuilder();
+ private final MVELPredicateBuilder predicate = new MVELPredicateBuilder();
+ private final MVELReturnValueBuilder returnValue = new MVELReturnValueBuilder();
+ private final MVELConsequenceBuilder consequence = new MVELConsequenceBuilder();
//private final JavaRuleClassBuilder rule = new JavaRuleClassBuilder();
- private final MVELFromBuilder from = new MVELFromBuilder();
+ private final MVELFromBuilder from = new MVELFromBuilder();
- private final Map interceptors;
+ private Map interceptors;
- private List results;
+ private List results;
//private final JavaFunctionBuilder function = new JavaFunctionBuilder();
private MemoryResourceReader src;
- private Package pkg;
- private PackageBuilderConfiguration configuration;
- private final TypeResolver typeResolver;
- private final ClassFieldExtractorCache classFieldExtractorCache;
- private final MVELExprAnalyzer analyzer;
+ private Package pkg;
+ private MVELDialectConfiguration configuration;
+ private TypeResolver typeResolver;
+ private ClassFieldExtractorCache classFieldExtractorCache;
+ private MVELExprAnalyzer analyzer;
+ private StaticMethodImportResolverFactory staticImportFactory;
+ private ClassImportResolverFactory importFactory;
- private final StaticMethodImportResolverFactory staticImportFactory;
- private final ClassImportResolverFactory importFactory;
+ private boolean strictMode;
- private boolean strictMode;
-
public void addFunction(FunctionDescr functionDescr,
TypeResolver typeResolver) {
throw new UnsupportedOperationException( "MVEL does not support functions" );
@@ -109,14 +107,17 @@
// a map of registered builders
private Map builders;
- public MVELDialect(final PackageBuilder builder) {
+ public MVELDialect() {
+ }
+
+ public void init(PackageBuilder builder) {
AbstractParser.setLanguageLevel( 4 );
this.pkg = builder.getPackage();
- this.configuration = builder.getPackageBuilderConfiguration();
+ this.configuration = (MVELDialectConfiguration) builder.getPackageBuilderConfiguration().getDialectConfiguration( "mvel" );
this.typeResolver = builder.getTypeResolver();
this.classFieldExtractorCache = builder.getClassFieldExtractorCache();
- this.strictMode = true;
+ this.strictMode = this.configuration.isStrict();
this.analyzer = new MVELExprAnalyzer();
@@ -184,7 +185,10 @@
public void init(RuleDescr ruleDescr) {
//MVEL: Compiler change
System.out.println("MVEL: MVELDialect.init with ruleDescr:" + ruleDescr);
- final String ruleClassName = JavaDialect.getUniqueLegalName( this.pkg.getName(),
+
+ //MVEL:test null to Fix failing test on org.drools.rule.builder.dialect.mvel.MVELConsequenceBuilderTest.testImperativeCodeError()
+ String pkgName = this.pkg == null? "": this.pkg.getName();
+ final String ruleClassName = JavaDialect.getUniqueLegalName( pkgName,
ruleDescr.getName(),
"mvel",
this.src );
@@ -206,7 +210,7 @@
mapping.setStartLine( ruleDescr.getConsequenceLine() );
mapping.setOffset( ruleDescr.getConsequenceOffset() );
System.out.println("MVEL: Adding mvel mappings for:" + name + " at line: " + mapping.getStartLine());
-
+
context.getPkg().getPackageCompilationData().getLineMappings().put( name, mapping );
}
@@ -235,7 +239,7 @@
index + 1 );
try {
- Class cls = configuration.getClassLoader().loadClass( className );
+ Class cls = this.configuration.getPackageBuilderConfiguration().getClassLoader().loadClass( className );
Method[] methods = cls.getDeclaredMethods();
for ( int i = 0; i < methods.length; i++ ) {
if ( methods[i].equals( "methodName" ) ) {
@@ -341,7 +345,7 @@
//this.configuration.get
parserContext.setStrictTypeEnforcement( strictMode );
-
+
if ( interceptors != null ) {
parserContext.setInterceptors( interceptors );
}
@@ -362,11 +366,11 @@
(Class) globalTypes.get( identifier ) );
}
- Map mvelVars = ((MVELAnalysisResult)analysis).getMvelVariables();
+ Map mvelVars = ((MVELAnalysisResult) analysis).getMvelVariables();
if ( mvelVars != null ) {
for ( Iterator it = mvelVars.entrySet().iterator(); it.hasNext(); ) {
Entry entry = (Entry) it.next();
- parserContext.addInput( (String)entry.getKey(),
+ parserContext.addInput( (String) entry.getKey(),
(Class) entry.getValue() );
}
}
@@ -374,7 +378,7 @@
if ( outerDeclarations != null ) {
for ( Iterator it = outerDeclarations.entrySet().iterator(); it.hasNext(); ) {
Entry entry = (Entry) it.next();
- parserContext.addInput( (String)entry.getKey(),
+ parserContext.addInput( (String) entry.getKey(),
((Declaration) entry.getValue()).getExtractor().getExtractToClass() );
}
}
@@ -383,10 +387,10 @@
KnowledgeHelper.class );
ExpressionCompiler compiler = new ExpressionCompiler( text );
-
+
//MVEL Debugging support
compiler.setDebugSymbols( true );
-
+
Serializable expr = compiler.compile( parserContext );
return expr;
}
@@ -504,5 +508,4 @@
return 0;
}
}
-}
-
+}
\ No newline at end of file
Copied: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialectConfiguration.java (from rev 13516, labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialectConfiguration.java)
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialectConfiguration.java (rev 0)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialectConfiguration.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -0,0 +1,57 @@
+package org.drools.rule.builder.dialect.mvel;
+
+import org.drools.compiler.Dialect;
+import org.drools.compiler.DialectConfiguration;
+import org.drools.compiler.PackageBuilder;
+import org.drools.compiler.PackageBuilderConfiguration;
+
+/**
+ * The MVEL dialect.
+ *
+ * drools.dialect.mvel.strict = <true|false>
+ *
+ * Default strict is true, which means all expressions and the consequence are type safe.
+ * However dynamic mode is still used while executed nested accessors in the field constraints.
+ *
+ */
+public class MVELDialectConfiguration
+ implements
+ DialectConfiguration {
+
+ private MVELDialect dialect;
+ private PackageBuilderConfiguration conf;
+
+ private boolean strict;
+
+ public Dialect getDialect() {
+ if ( this.dialect == null ) {
+ this.dialect = new MVELDialect();
+ }
+ return this.dialect;
+ }
+
+ public void init(PackageBuilderConfiguration conf) {
+ this.conf = conf;
+ setStrict( getStrict() );
+ }
+
+ public PackageBuilderConfiguration getPackageBuilderConfiguration() {
+ return this.conf;
+ }
+
+ public void setStrict(boolean strict) {
+ this.strict = strict;
+ }
+
+ public boolean isStrict() {
+ return this.strict;
+ }
+
+ private boolean getStrict() {
+ final String prop = this.conf.getChainedProperties().getProperty( "drools.dialect.mvel.strict",
+ "true" );
+ return Boolean.valueOf( prop ).booleanValue();
+
+ }
+
+}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilder.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilder.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -23,6 +23,7 @@
import org.drools.base.mvel.DroolsMVELFactory;
import org.drools.base.mvel.MVELEvalExpression;
+import org.drools.compiler.Dialect;
import org.drools.compiler.RuleError;
import org.drools.lang.descr.BaseDescr;
import org.drools.lang.descr.EvalDescr;
@@ -30,7 +31,6 @@
import org.drools.rule.EvalCondition;
import org.drools.rule.Pattern;
import org.drools.rule.RuleConditionElement;
-import org.drools.rule.builder.Dialect;
import org.drools.rule.builder.RuleBuildContext;
import org.drools.rule.builder.RuleConditionBuilder;
import org.drools.spi.DeclarationScopeResolver;
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -20,6 +20,7 @@
import org.drools.base.dataproviders.MVELDataProvider;
import org.drools.base.mvel.DroolsMVELFactory;
+import org.drools.compiler.Dialect;
import org.drools.compiler.RuleError;
import org.drools.lang.descr.AccessorDescr;
import org.drools.lang.descr.BaseDescr;
@@ -27,7 +28,6 @@
import org.drools.rule.From;
import org.drools.rule.Pattern;
import org.drools.rule.RuleConditionElement;
-import org.drools.rule.builder.Dialect;
import org.drools.rule.builder.FromBuilder;
import org.drools.rule.builder.RuleBuildContext;
import org.drools.spi.DataProvider;
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilder.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilder.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -23,11 +23,11 @@
import org.drools.base.mvel.DroolsMVELFactory;
import org.drools.base.mvel.MVELPredicateExpression;
+import org.drools.compiler.Dialect;
import org.drools.compiler.RuleError;
import org.drools.lang.descr.PredicateDescr;
import org.drools.rule.Declaration;
import org.drools.rule.PredicateConstraint;
-import org.drools.rule.builder.Dialect;
import org.drools.rule.builder.PredicateBuilder;
import org.drools.rule.builder.RuleBuildContext;
import org.mvel.ExpressionCompiler;
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilder.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilder.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -23,10 +23,10 @@
import org.drools.base.mvel.DroolsMVELFactory;
import org.drools.base.mvel.MVELReturnValueExpression;
+import org.drools.compiler.Dialect;
import org.drools.lang.descr.ReturnValueRestrictionDescr;
import org.drools.rule.Declaration;
import org.drools.rule.ReturnValueRestriction;
-import org.drools.rule.builder.Dialect;
import org.drools.rule.builder.ReturnValueBuilder;
import org.drools.rule.builder.RuleBuildContext;
import org.mvel.ExpressionCompiler;
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilder.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilder.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -4,8 +4,8 @@
import org.drools.base.mvel.DroolsMVELFactory;
import org.drools.base.mvel.MVELSalienceExpression;
+import org.drools.compiler.Dialect;
import org.drools.compiler.RuleError;
-import org.drools.rule.builder.Dialect;
import org.drools.rule.builder.RuleBuildContext;
import org.drools.rule.builder.SalienceBuilder;
import org.mvel.ExpressionCompiler;
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/resources/META-INF/drools.default.packagebuilder.conf
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/resources/META-INF/drools.default.packagebuilder.conf 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/resources/META-INF/drools.default.packagebuilder.conf 2007-07-16 00:31:13 UTC (rev 13539)
@@ -1,7 +1,10 @@
drools.dialect.default = java
-drools.dialect.java = org.drools.rule.builder.dialect.java.JavaDialect
-drools.dialect.mvel = org.drools.rule.builder.dialect.mvel.MVELDialect
-drools.compiler = ECLIPSE
+drools.dialect.java = org.drools.rule.builder.dialect.java.JavaDialectConfiguration
+drools.dialect.java.compiler = ECLIPSE
+
+drools.dialect.mvel = org.drools.rule.builder.dialect.mvel.MVELDialectConfiguration
+drools.dialect.mvel.strict = true
+
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
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.mvel
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.mvel 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.mvel 2007-07-16 00:31:13 UTC (rev 13539)
@@ -171,7 +171,8 @@
return new @{ruleClassName}.@{className}();
}
- public void init(java.lang.Object context,
+ public void init(java.lang.Object workingMemoryContext,
+ java.lang.Object context,
org.drools.spi.Tuple leftTuple,
org.drools.rule.Declaration[] declarations,
org.drools.WorkingMemory workingMemory) throws Exception {
@@ -186,7 +187,8 @@
}
- public void accumulate(java.lang.Object context,
+ public void accumulate(java.lang.Object workingMemoryContext,
+ java.lang.Object context,
org.drools.spi.Tuple leftTuple,
org.drools.common.InternalFactHandle handle,
org.drools.rule.Declaration[] declarations,
@@ -205,7 +207,8 @@
@foreach{globals as identifier} @{identifier}@end{","} );
}
- public void reverse(java.lang.Object context,
+ public void reverse(java.lang.Object workingMemoryContext,
+ java.lang.Object context,
org.drools.spi.Tuple leftTuple,
org.drools.common.InternalFactHandle handle,
org.drools.rule.Declaration[] declarations,
@@ -224,7 +227,8 @@
@foreach{globals as identifier} @{identifier}@end{","} );
}
- public Object getResult(java.lang.Object context,
+ public Object getResult(java.lang.Object workingMemoryContext,
+ java.lang.Object context,
org.drools.spi.Tuple leftTuple,
org.drools.rule.Declaration[] declarations,
org.drools.WorkingMemory workingMemory) throws Exception {
@@ -241,6 +245,10 @@
public boolean supportsReverse() {
return @{supportsReverse};
}
+
+ public Object createWorkingMemoryContext() {
+ return null;
+ }
@includeByRef{hashCode(hashCode = hashCode)}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g 2007-07-16 00:31:13 UTC (rev 13539)
@@ -857,7 +857,7 @@
| 'super' superSuffix
| literal
| 'new' creator
- | i=Identifier { identifiers.add( $i.text ); } ('.' Identifier)* (identifierSuffix)?
+ | i=Identifier { if( ! "(".equals( input.LT(1) == null ? "" : input.LT(1).getText() ) ) identifiers.add( $i.text ); } ('.' Identifier)* (identifierSuffix)?
| primitiveType ('[' ']')* '.' 'class'
| 'void' '.' 'class'
;
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/compiler/Java5Test.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/compiler/Java5Test.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/compiler/Java5Test.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -3,6 +3,7 @@
import java.io.InputStreamReader;
import org.drools.DroolsTestCase;
+import org.drools.rule.builder.dialect.java.JavaDialectConfiguration;
public class Java5Test extends DroolsTestCase {
@@ -15,16 +16,19 @@
return;
}
final PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
- conf.setCompiler( PackageBuilderConfiguration.ECLIPSE );
- conf.setJavaLanguageLevel( "1.5" );
- final PackageBuilder builder = new PackageBuilder( conf );
+ JavaDialectConfiguration javaConf = ( JavaDialectConfiguration ) conf.getDialectConfiguration( "java" );
+ javaConf.setCompiler( JavaDialectConfiguration.ECLIPSE );
+ javaConf.setJavaLanguageLevel( "1.5" );
+
+ final PackageBuilder builder = new PackageBuilder( );
builder.addPackageFromDrl( new InputStreamReader( this.getClass().getResourceAsStream( "java5_rule.drl" ) ) );
assertFalse( builder.hasErrors() );
}
public void testJava14Defaults() throws Exception {
final PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
- conf.setCompiler( PackageBuilderConfiguration.JANINO );
+ JavaDialectConfiguration javaConf = ( JavaDialectConfiguration ) conf.getDialectConfiguration( "java" );
+ javaConf.setCompiler( JavaDialectConfiguration.JANINO );
final PackageBuilder builder = new PackageBuilder( conf );
builder.addPackageFromDrl( new InputStreamReader( this.getClass().getResourceAsStream( "java5_rule.drl" ) ) );
assertTrue( builder.hasErrors() );
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderConfigurationTest.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderConfigurationTest.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderConfigurationTest.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -1,84 +1,419 @@
package org.drools.compiler;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
import java.util.Properties;
import junit.framework.TestCase;
+import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.TypeResolver;
+import org.drools.lang.descr.AndDescr;
+import org.drools.lang.descr.AttributeDescr;
+import org.drools.lang.descr.BaseDescr;
+import org.drools.lang.descr.EvalDescr;
+import org.drools.lang.descr.FunctionDescr;
+import org.drools.lang.descr.FunctionImportDescr;
+import org.drools.lang.descr.ImportDescr;
+import org.drools.lang.descr.PackageDescr;
+import org.drools.lang.descr.RuleDescr;
+import org.drools.rule.Package;
+import org.drools.rule.Pattern;
+import org.drools.rule.Rule;
+import org.drools.rule.RuleConditionElement;
+import org.drools.rule.builder.AccumulateBuilder;
+import org.drools.rule.builder.ConsequenceBuilder;
+import org.drools.rule.builder.FromBuilder;
+import org.drools.rule.builder.GroupElementBuilder;
+import org.drools.rule.builder.PatternBuilder;
+import org.drools.rule.builder.PredicateBuilder;
+import org.drools.rule.builder.QueryBuilder;
+import org.drools.rule.builder.ReturnValueBuilder;
+import org.drools.rule.builder.RuleBuildContext;
+import org.drools.rule.builder.RuleClassBuilder;
+import org.drools.rule.builder.RuleConditionBuilder;
+import org.drools.rule.builder.SalienceBuilder;
+import org.drools.rule.builder.dialect.java.JavaDialect;
+import org.drools.rule.builder.dialect.java.JavaDialectConfiguration;
+import org.drools.rule.builder.dialect.mvel.MVELDialect;
+import org.drools.util.ChainedProperties;
+
public class PackageBuilderConfigurationTest extends TestCase {
+ protected void setUp() throws Exception {
+ System.getProperties().remove( "drools.dialect.java.compiler" );
+ System.getProperties().remove( "drools.dialect.default" );
+ }
+
+ protected void tearDown() throws Exception {
+ System.getProperties().remove( "drools.dialect.java.compiler" );
+ System.getProperties().remove( "drools.dialect.default" );
+ }
+
+ public void testIgnoreDetauls() {
+ // check standard chained properties, that includes defaults
+ ChainedProperties chainedProperties = new ChainedProperties( null,
+ "packagebuilder.conf",
+ true );
+ System.out.println( chainedProperties.getProperty( "drools.dialect.java.compiler",
+ null ) );
+ assertNotNull( chainedProperties.getProperty( "drools.dialect.java.compiler",
+ null ) );
+
+
+ // now check that chained properties can ignore defaults
+ chainedProperties = new ChainedProperties( null,
+ "packagebuilder.conf",
+ false );
+ System.out.println( chainedProperties.getProperty( "drools.dialect.java.compiler",
+ null ) );
+ assertNull( chainedProperties.getProperty( "drools.dialect.java.compiler",
+ null ) );
+
+
+ // now check it can find defaults again.
+ chainedProperties = new ChainedProperties( null,
+ "packagebuilder.conf",
+ true );
+ System.out.println( chainedProperties.getProperty( "drools.dialect.java.compiler",
+ null ) );
+ assertNotNull( chainedProperties.getProperty( "drools.dialect.java.compiler",
+ null ) );
+ }
+
public void testSystemProperties() {
PackageBuilderConfiguration cfg = new PackageBuilderConfiguration();
- assertEquals( PackageBuilderConfiguration.ECLIPSE,
- cfg.getCompiler() );
+ JavaDialectConfiguration javaConf = (JavaDialectConfiguration) cfg.getDialectConfiguration( "java" );
+ assertEquals( JavaDialectConfiguration.ECLIPSE,
+ javaConf.getCompiler() );
- System.setProperty( "drools.compiler",
+ System.setProperty( "drools.dialect.java.compiler",
"JANINO" );
cfg = new PackageBuilderConfiguration();
- assertEquals( PackageBuilderConfiguration.JANINO,
- cfg.getCompiler() );
+ javaConf = (JavaDialectConfiguration) cfg.getDialectConfiguration( "java" );
+ assertEquals( JavaDialectConfiguration.JANINO,
+ javaConf.getCompiler() );
- final PackageBuilderConfiguration cfg2 = new PackageBuilderConfiguration();
- assertEquals( cfg.getCompiler(),
- cfg2.getCompiler() );
+ PackageBuilderConfiguration cfg2 = new PackageBuilderConfiguration();
+ JavaDialectConfiguration javaConf2 = (JavaDialectConfiguration) cfg2.getDialectConfiguration( "java" );
+ assertEquals( javaConf.getCompiler(),
+ javaConf2.getCompiler() );
- System.setProperty( "drools.compiler",
+ System.setProperty( "drools.dialect.java.compiler",
"ECLIPSE" );
cfg = new PackageBuilderConfiguration();
- assertEquals( PackageBuilderConfiguration.ECLIPSE,
- cfg.getCompiler() );
+ javaConf = (JavaDialectConfiguration) cfg.getDialectConfiguration( "java" );
+ assertEquals( JavaDialectConfiguration.ECLIPSE,
+ javaConf.getCompiler() );
- cfg2.setCompiler( PackageBuilderConfiguration.ECLIPSE );
- assertEquals( PackageBuilderConfiguration.ECLIPSE,
- cfg2.getCompiler() );
+ javaConf2.setCompiler( JavaDialectConfiguration.ECLIPSE );
+ assertEquals( JavaDialectConfiguration.ECLIPSE,
+ javaConf2.getCompiler() );
- cfg2.setCompiler( PackageBuilderConfiguration.JANINO );
- assertEquals( PackageBuilderConfiguration.JANINO,
- cfg2.getCompiler() );
+ javaConf2.setCompiler( JavaDialectConfiguration.JANINO );
+ assertEquals( JavaDialectConfiguration.JANINO,
+ javaConf2.getCompiler() );
final PackageBuilderConfiguration cfg3 = new PackageBuilderConfiguration();
-
- assertEquals( cfg.getCompiler(),
- cfg3.getCompiler() );
-
- System.getProperties().remove( "drools.compiler" );
-
+ JavaDialectConfiguration javaConf3 = (JavaDialectConfiguration) cfg3.getDialectConfiguration( "java" );
+ assertEquals( javaConf.getCompiler(),
+ javaConf3.getCompiler() );
}
public void testProgrammaticProperties() {
PackageBuilderConfiguration cfg = new PackageBuilderConfiguration();
- assertEquals( "java",
- cfg.getDefaultDialect() );
+ assertTrue( cfg.getDefaultDialect() instanceof JavaDialect );
Properties properties = new Properties();
properties.setProperty( "drools.dialect.default",
- "tea" );
+ "mvel" );
PackageBuilderConfiguration cfg1 = new PackageBuilderConfiguration( properties );
- assertEquals( "tea",
- cfg1.getDefaultDialect() );
+ assertTrue( cfg1.getDefaultDialect() instanceof MVELDialect );
- final PackageBuilderConfiguration cfg2 = new PackageBuilderConfiguration(properties);
- assertEquals( cfg1.getDefaultDialect(),
- cfg2.getDefaultDialect() );
+ final PackageBuilderConfiguration cfg2 = new PackageBuilderConfiguration( properties );
+ assertEquals( cfg1.getDefaultDialect().getClass(),
+ cfg2.getDefaultDialect().getClass() );
+ }
- properties = new Properties();
- properties.setProperty( "drools.dialect.default",
- "coke" );
- PackageBuilderConfiguration cfg3 = new PackageBuilderConfiguration( properties );
- assertEquals( "coke",
- cfg3.getDefaultDialect() );
+ public void testMockDialect() {
+ Package pkg = new Package( "org.pkg1" );
- cfg2.setDefaultDialect( "orange" );
- assertEquals( "orange",
- cfg2.getDefaultDialect() );
+ PackageBuilderConfiguration cfg1 = new PackageBuilderConfiguration();
+ MockDialectConfiguration mockConf = new MockDialectConfiguration();
+ cfg1.getDialectRegistry().addDialectConfiguration( "mock",
+ mockConf );
+ cfg1.setDefaultDialect( "mock" );
- cfg2.setDefaultDialect( "lemonade" );
- assertEquals( "lemonade",
- cfg2.getDefaultDialect() );
+ PackageBuilder builder = new PackageBuilder( pkg,
+ cfg1 );
- final PackageBuilderConfiguration cfg4 = new PackageBuilderConfiguration();
+ MockDialect mockDialect2 = (MockDialect) builder.getPackageBuilderConfiguration().getDefaultDialect();
+ assertSame( mockConf.getDialect(),
+ mockDialect2 );
- assertEquals( cfg.getDefaultDialect(),
- cfg4.getDefaultDialect() );
-
+ assertSame( builder,
+ mockDialect2.getPackageBuilder() );
+ assertSame( pkg,
+ mockDialect2.getPkg() );
+ assertNull( mockDialect2.getRuleDescr() );
+
+ RuleDescr ruleDescr = new RuleDescr( "test rule" );
+ ruleDescr.addAttribute( new AttributeDescr( "dialect",
+ "mock" ) );
+ ruleDescr.setLhs( new AndDescr() );
+ EvalDescr evalDescr = new EvalDescr();
+ ruleDescr.getLhs().addDescr( evalDescr );
+
+ PackageDescr pkgDescr = new PackageDescr( "org.pkg1" );
+ pkgDescr.addImport( new ImportDescr( "java.util.HashMap" ) );
+ FunctionImportDescr functionImportDescr = new FunctionImportDescr();
+ functionImportDescr.setTarget( "System.out.println" );
+ pkgDescr.addFunctionImport( functionImportDescr );
+
+ pkgDescr.addRule( ruleDescr );
+
+ builder.addPackage( pkgDescr );
+
+ assertSame( ruleDescr,
+ mockDialect2.getRuleDescr() );
+ assertTrue( mockDialect2.getImport().contains( "java.util.HashMap" ) );
+ assertTrue( mockDialect2.getStaticImport().contains( "System.out.println" ) );
+ assertEquals( "eval was built",
+ evalDescr.getContent() );
+ assertEquals( "consequence was built",
+ ruleDescr.getConsequence() );
+ assertTrue( mockDialect2.isCompileAll() );
+
+ assertNotNull( pkg.getRule( "test rule" ) );
+
}
+
+ public static class MockDialectConfiguration
+ implements
+ DialectConfiguration {
+ private MockDialect dialect = new MockDialect();
+ private PackageBuilderConfiguration conf;
+
+ public Dialect getDialect() {
+ return this.dialect;
+ }
+
+ public PackageBuilderConfiguration getPackageBuilderConfiguration() {
+ return this.conf;
+ }
+
+ public void init(PackageBuilderConfiguration configuration) {
+ this.conf = configuration;
+ }
+
+ }
+
+ public static class MockDialect
+ implements
+ Dialect {
+ private PackageBuilder builder;
+ private Package pkg;
+ private RuleDescr ruleDescr;
+ private Rule rule;
+
+ private List imports = new ArrayList();
+ private List staticImports = new ArrayList();
+
+ private boolean compileAll = false;
+
+ public void init(PackageBuilder builder) {
+ this.builder = builder;
+
+ }
+
+ public void init(Package pkg) {
+ this.pkg = pkg;
+ }
+
+ public void init(RuleDescr ruleDescr) {
+ this.ruleDescr = ruleDescr;
+ }
+
+ public PackageBuilder getPackageBuilder() {
+ return builder;
+ }
+
+ public Package getPkg() {
+ return pkg;
+ }
+
+ public RuleDescr getRuleDescr() {
+ return ruleDescr;
+ }
+
+ public void addFunction(FunctionDescr functionDescr,
+ TypeResolver typeResolver) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void addImport(String importEntry) {
+ this.imports.add( importEntry );
+ }
+
+ public List getImport() {
+ return this.imports;
+ }
+
+ public void addStaticImport(String importEntry) {
+ this.imports.add( importEntry );
+ }
+
+ public List getStaticImport() {
+ return this.imports;
+ }
+
+ public void addRule(RuleBuildContext context) {
+ this.rule = context.getRule();
+ }
+
+ public Rule getRule() {
+ return this.rule;
+ }
+
+ public AnalysisResult analyzeBlock(RuleBuildContext context,
+ BaseDescr descr,
+ String text) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public AnalysisResult analyzeExpression(RuleBuildContext context,
+ BaseDescr descr,
+ Object content) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void compileAll() {
+ this.compileAll = true;
+ }
+
+ public boolean isCompileAll() {
+ return this.compileAll;
+ }
+
+ public AccumulateBuilder getAccumulateBuilder() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public RuleConditionBuilder getBuilder(Class clazz) {
+ if ( clazz == EvalDescr.class ) {
+ return getEvalBuilder();
+ } else if ( clazz == AndDescr.class ) {
+ return new GroupElementBuilder();
+ } else {
+ throw new RuntimeException( "clazz " + clazz + " is not yet configured " );
+ }
+ }
+
+ public Map getBuilders() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public ClassFieldExtractorCache getClassFieldExtractorCache() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public ConsequenceBuilder getConsequenceBuilder() {
+ return new MockConsequenceBuilder();
+ }
+
+ public RuleConditionBuilder getEvalBuilder() {
+ return new MockEvalBuilder();
+ }
+
+ public String getExpressionDialectName() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public FromBuilder getFromBuilder() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public PatternBuilder getPatternBuilder() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public PredicateBuilder getPredicateBuilder() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public QueryBuilder getQueryBuilder() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public List getResults() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public ReturnValueBuilder getReturnValueBuilder() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public RuleClassBuilder getRuleClassBuilder() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public SalienceBuilder getSalienceBuilder() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public TypeResolver getTypeResolver() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public String getId() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ }
+
+ public static class MockEvalBuilder
+ implements
+ RuleConditionBuilder {
+
+ public RuleConditionElement build(RuleBuildContext context,
+ BaseDescr descr) {
+ EvalDescr evalDescr = (EvalDescr) descr;
+ evalDescr.setContent( "eval was built" );
+ return null;
+ }
+
+ public RuleConditionElement build(RuleBuildContext context,
+ BaseDescr descr,
+ Pattern prefixPattern) {
+ return null;
+ }
+
+ }
+
+ public static class MockConsequenceBuilder
+ implements
+ ConsequenceBuilder {
+
+ public void build(RuleBuildContext context) {
+ context.getRuleDescr().setConsequence( "consequence was built" );
+ }
+
+ }
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -81,6 +81,7 @@
import org.drools.rule.ReturnValueConstraint;
import org.drools.rule.Rule;
import org.drools.rule.builder.dialect.java.JavaDialect;
+import org.drools.rule.builder.dialect.java.JavaDialectConfiguration;
import org.drools.ruleflow.common.core.Process;
import org.drools.ruleflow.core.impl.RuleFlowProcessImpl;
import org.drools.spi.Activation;
@@ -1010,7 +1011,8 @@
// test JANINO with property settings
PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
- conf.setCompiler( PackageBuilderConfiguration.JANINO );
+ JavaDialectConfiguration javaConf = ( JavaDialectConfiguration ) conf.getDialectConfiguration( "java" );
+ javaConf.setCompiler( JavaDialectConfiguration.JANINO );
builder = new PackageBuilder( conf );
dialect = (JavaDialect) dialectField.get( builder );
compiler = (JavaCompiler) compilerField.get( dialect );
@@ -1019,7 +1021,8 @@
// test eclipse jdt core with property settings and default source level
conf = new PackageBuilderConfiguration();
- conf.setCompiler( PackageBuilderConfiguration.ECLIPSE );
+ javaConf = ( JavaDialectConfiguration ) conf.getDialectConfiguration( "java" );
+ javaConf.setCompiler( JavaDialectConfiguration.ECLIPSE );
builder = new PackageBuilder( conf );
dialect = (JavaDialect) dialectField.get( builder );
compiler = (JavaCompiler) compilerField.get( dialect );
@@ -1241,7 +1244,8 @@
public void testJaninoWithStaticImports() throws Exception {
PackageBuilderConfiguration cfg = new PackageBuilderConfiguration();
- cfg.setCompiler( PackageBuilderConfiguration.JANINO );
+ JavaDialectConfiguration javaConf = ( JavaDialectConfiguration ) cfg.getDialectConfiguration( "java" );
+ javaConf.setCompiler( JavaDialectConfiguration.JANINO );
PackageBuilder bldr = new PackageBuilder(cfg);
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/integrationtests/AccumulateTest.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/integrationtests/AccumulateTest.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/integrationtests/AccumulateTest.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -137,17 +137,17 @@
wm.setGlobal( "results",
results );
+ wm.insert( new Person( "Bob",
+ "stilton",
+ 20 ) );
+ wm.insert( new Person( "Mark",
+ "provolone" ) );
wm.insert( new Cheese( "stilton",
10 ) );
wm.insert( new Cheese( "brie",
5 ) );
wm.insert( new Cheese( "provolone",
150 ) );
- wm.insert( new Person( "Bob",
- "stilton",
- 20 ) );
- wm.insert( new Person( "Mark",
- "provolone" ) );
wm.fireAllRules();
@@ -175,17 +175,17 @@
wm.setGlobal( "results",
results );
+ wm.insert( new Person( "Bob",
+ "stilton",
+ 20 ) );
+ wm.insert( new Person( "Mark",
+ "provolone" ) );
wm.insert( new Cheese( "stilton",
10 ) );
wm.insert( new Cheese( "brie",
5 ) );
wm.insert( new Cheese( "provolone",
150 ) );
- wm.insert( new Person( "Bob",
- "stilton",
- 20 ) );
- wm.insert( new Person( "Mark",
- "provolone" ) );
wm.fireAllRules();
@@ -756,4 +756,74 @@
results.size() );
}
+
+ public void testMVELAccumulate2WM() throws Exception {
+
+ // read in the source
+ final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateMVEL.drl" ) );
+ final RuleBase ruleBase = loadRuleBase( reader );
+
+ final WorkingMemory wm1 = ruleBase.newStatefulSession();
+ final List results1 = new ArrayList();
+
+ wm1.setGlobal( "results",
+ results1 );
+
+ final WorkingMemory wm2 = ruleBase.newStatefulSession();
+ final List results2 = new ArrayList();
+
+ wm2.setGlobal( "results",
+ results2 );
+
+ wm1.insert( new Person( "Bob",
+ "stilton",
+ 20 ) );
+ wm1.insert( new Person( "Mark",
+ "provolone" ) );
+
+ wm2.insert( new Person( "Bob",
+ "stilton",
+ 20 ) );
+ wm2.insert( new Person( "Mark",
+ "provolone" ) );
+
+ wm1.insert( new Cheese( "stilton",
+ 10 ) );
+ wm1.insert( new Cheese( "brie",
+ 5 ) );
+ wm2.insert( new Cheese( "stilton",
+ 10 ) );
+ wm1.insert( new Cheese( "provolone",
+ 150 ) );
+ wm2.insert( new Cheese( "brie",
+ 5 ) );
+ wm2.insert( new Cheese( "provolone",
+ 150 ) );
+ wm1.fireAllRules();
+
+ wm2.fireAllRules();
+
+ Assert.assertEquals( new Integer( 165 ),
+ results1.get( 0 ) );
+ Assert.assertEquals( new Integer( 10 ),
+ results1.get( 1 ) );
+ Assert.assertEquals( new Integer( 150 ),
+ results1.get( 2 ) );
+ Assert.assertEquals( new Integer( 10 ),
+ results1.get( 3 ) );
+ Assert.assertEquals( new Integer( 210 ),
+ results1.get( 4 ) );
+
+ Assert.assertEquals( new Integer( 165 ),
+ results2.get( 0 ) );
+ Assert.assertEquals( new Integer( 10 ),
+ results2.get( 1 ) );
+ Assert.assertEquals( new Integer( 150 ),
+ results2.get( 2 ) );
+ Assert.assertEquals( new Integer( 10 ),
+ results2.get( 3 ) );
+ Assert.assertEquals( new Integer( 210 ),
+ results2.get( 4 ) );
+ }
+
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -462,6 +462,67 @@
}
+ public void testCollectModifyAlphaRestriction() throws Exception {
+ // read in the source
+ final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_CollectAlphaRestriction.drl" ) );
+ final RuleBase ruleBase = loadRuleBase( reader );
+
+ final WorkingMemory wm = ruleBase.newStatefulSession();
+ final List results = new ArrayList();
+
+ wm.setGlobal( "results",
+ results );
+
+ final Cheese[] cheese = new Cheese[]{new Cheese( "stilton",
+ 10 ), new Cheese( "stilton",
+ 2 ), new Cheese( "stilton",
+ 5 ), new Cheese( "brie",
+ 15 ), new Cheese( "brie",
+ 16 ), new Cheese( "provolone",
+ 8 )};
+
+ final FactHandle[] cheeseHandles = new FactHandle[cheese.length];
+ for ( int i = 0; i < cheese.length; i++ ) {
+ cheeseHandles[i] = wm.insert( cheese[i] );
+ }
+
+ // ---------------- 1st scenario
+ int fireCount = 0;
+ wm.fireAllRules();
+ Assert.assertEquals( ++fireCount,
+ results.size() );
+ Assert.assertEquals( 3,
+ ((Collection) results.get( fireCount - 1 )).size() );
+ Assert.assertEquals( ArrayList.class.getName(),
+ results.get( fireCount - 1 ).getClass().getName() );
+
+ // ---------------- 2nd scenario
+ final int index = 1;
+ cheese[index].setType( "brie" );
+ wm.update( cheeseHandles[index],
+ cheese[index] );
+ wm.fireAllRules();
+
+ Assert.assertEquals( ++fireCount,
+ results.size() );
+ Assert.assertEquals( 2,
+ ((Collection) results.get( fireCount - 1 )).size() );
+ Assert.assertEquals( ArrayList.class.getName(),
+ results.get( fireCount - 1 ).getClass().getName() );
+
+ // ---------------- 3rd scenario
+ wm.retract( cheeseHandles[2] );
+ wm.fireAllRules();
+
+ Assert.assertEquals( ++fireCount,
+ results.size() );
+ Assert.assertEquals( 1,
+ ((Collection) results.get( fireCount - 1 )).size() );
+ Assert.assertEquals( ArrayList.class.getName(),
+ results.get( fireCount - 1 ).getClass().getName() );
+
+ }
+
private RuleBase loadRuleBase(final Reader reader) throws IOException,
DroolsParserException,
Exception {
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -94,6 +94,7 @@
import org.drools.rule.InvalidRulePackage;
import org.drools.rule.Package;
import org.drools.rule.Rule;
+import org.drools.rule.builder.dialect.java.JavaDialectConfiguration;
import org.drools.xml.XmlDumper;
/** Run all the tests with the ReteOO engine implementation */
@@ -640,9 +641,11 @@
list.get( 0 ) );
}
- public void testJaninoEval() throws Exception {
+ public void testJaninoEval() throws Exception {
final PackageBuilderConfiguration config = new PackageBuilderConfiguration();
- config.setCompiler( PackageBuilderConfiguration.JANINO );
+ JavaDialectConfiguration javaConf = ( JavaDialectConfiguration ) config.getDialectConfiguration( "java" );
+ javaConf.setCompiler( JavaDialectConfiguration.JANINO );
+
final PackageBuilder builder = new PackageBuilder( config );
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "eval_rule_test.drl" ) ) );
final Package pkg = builder.getPackage();
@@ -3332,6 +3335,58 @@
//Thread.currentThread().wait();
}
-
+ public void testBindingsOnConnectiveExpressions() throws Exception {
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_bindings.drl" ) ) );
+ final Package pkg = builder.getPackage();
+ final RuleBase ruleBase = getRuleBase();
+ ruleBase.addPackage( pkg );
+ final WorkingMemory workingMemory = ruleBase.newStatefulSession();
+
+ final List results = new ArrayList();
+ workingMemory.setGlobal( "results",
+ results );
+
+ workingMemory.insert( new Cheese( "stilton", 15 ) );
+
+ workingMemory.fireAllRules();
+
+ assertEquals( 2,
+ results.size() );
+ assertEquals( "stilton",
+ results.get(0) );
+ assertEquals( new Integer(15),
+ results.get(1) );
+ }
+
+ public void testMultipleFroms() throws Exception {
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_multipleFroms.drl" ) ) );
+ final Package pkg = builder.getPackage();
+
+ final RuleBase ruleBase = getRuleBase();
+ ruleBase.addPackage( pkg );
+ final WorkingMemory workingMemory = ruleBase.newStatefulSession();
+
+ final List results = new ArrayList();
+ workingMemory.setGlobal( "results",
+ results );
+
+ final Cheesery cheesery = new Cheesery();
+ cheesery.addCheese( new Cheese( "stilton", 15 ) );
+ cheesery.addCheese( new Cheese( "brie", 10 ) );
+
+ workingMemory.setGlobal( "cheesery", cheesery );
+
+ workingMemory.fireAllRules();
+
+ assertEquals( 2,
+ results.size() );
+ assertEquals( 2,
+ ((List)results.get(0)).size() );
+ assertEquals( 2,
+ ((List)results.get(1)).size() );
+ }
+
}
\ No newline at end of file
Deleted: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultExpanderResolverTest.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultExpanderResolverTest.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultExpanderResolverTest.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -1,81 +0,0 @@
-package org.drools.lang.dsl;
-
-/*
- * Copyright 2005 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import junit.framework.TestCase;
-
-public class DefaultExpanderResolverTest extends TestCase {
-
- // public void testResolve() throws Exception {
- // final DefaultExpanderResolver res = new DefaultExpanderResolver();
- // final Expander mock1 = new MockExpander();
- // res.addExpander( "mock1.dsl",
- // mock1 );
- // assertEquals( mock1,
- // res.get( "mock1.dsl",
- // null ) );
- // res.addExpander( "mock2.dsl",
- // new MockExpander() );
- // assertNotSame( mock1,
- // res.get( "mock2.dsl",
- // null ) );
- //
- // final MockExpander def = new MockExpander();
- // res.addExpander( "*",
- // def );
- // assertEquals( def,
- // res.get( "nothing.here",
- // null ) );
- //
- // }
- //
- // public void testDefault() throws Exception {
- //
- // final InputStreamReader reader = new InputStreamReader( this.getClass().getResourceAsStream( "test.dsl" ) );
- //
- // final DefaultExpanderResolver res = new DefaultExpanderResolver( reader );
- // final DefaultExpander exp = (DefaultExpander) res.get( "oooh",
- // null );
- // assertNotNull( exp );
- //
- // assertEquals( "Person(name==\"foo\")",
- // exp.expand( "when",
- // "Person has name of foo" ) );
- // assertEquals( "wild();",
- // exp.expand( "then",
- // "Go wild" ) );
- // assertEquals( "something",
- // exp.expand( "when",
- // "nothing" ) );
- // assertEquals( "something",
- // exp.expand( "then",
- // "nothing" ) );
- //
- // }
- //
- public void testFindNone() {
- // final DefaultExpanderResolver exp = new DefaultExpanderResolver();
- // try {
- // exp.get( "nothing.dsl",
- // "" );
- // fail( "should have thrown an exception when it can't find an expander." );
- // } catch ( final IllegalArgumentException e ) {
- // assertNotNull( e.getMessage() );
- // }
- }
-
-}
\ No newline at end of file
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilderTest.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilderTest.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilderTest.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -4,6 +4,7 @@
import junit.framework.TestCase;
+import org.drools.compiler.Dialect;
import org.drools.compiler.DialectRegistry;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderConfiguration;
@@ -13,7 +14,6 @@
import org.drools.lang.descr.PatternDescr;
import org.drools.lang.descr.RuleDescr;
import org.drools.rule.Accumulate;
-import org.drools.rule.builder.Dialect;
import org.drools.rule.builder.RuleBuildContext;
public class JavaAccumulateBuilderTest extends TestCase {
@@ -43,13 +43,13 @@
accumDescr.setResultCode( "new Integer( x )" );
org.drools.rule.Package pkg = new org.drools.rule.Package( "org.drools" );
- PackageBuilder pkgBuilder = new PackageBuilder( pkg );
- DialectRegistry registry = new DialectRegistry();
- Dialect java = new JavaDialect(pkgBuilder);
- registry.addDialect( "java", java );
+ final PackageBuilder pkgBulider = new PackageBuilder(pkg);
+ final PackageBuilderConfiguration conf = pkgBulider.getPackageBuilderConfiguration();
+ Dialect dialect = pkgBulider.getPackageBuilderConfiguration().getDialectRegistry().getDialectConfiguration( "java" ).getDialect();
+
+
RuleDescr ruleDescr = new RuleDescr("test rule");
- PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
- RuleBuildContext context = new RuleBuildContext( conf, pkg, ruleDescr, registry, java);
+ RuleBuildContext context = new RuleBuildContext( conf, pkg, ruleDescr, conf.getDialectRegistry(), dialect);
Accumulate accumulate = (Accumulate) builder.build( context, accumDescr );
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/RuleBuilderTest.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/RuleBuilderTest.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/RuleBuilderTest.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -27,6 +27,7 @@
import org.drools.base.ClassTypeResolver;
import org.drools.base.TypeResolver;
+import org.drools.compiler.Dialect;
import org.drools.compiler.DialectRegistry;
import org.drools.compiler.DrlParser;
import org.drools.compiler.PackageBuilder;
@@ -84,14 +85,13 @@
typeResolver.addImport( pkgDescr.getName() + ".*" );
typeResolver.addImport( "java.lang.*" );
- final RuleBuilder builder = new RuleBuilder( );
+ final RuleBuilder builder = new RuleBuilder( );
- JavaDialect dialect = new JavaDialect( new PackageBuilder(pkg) ) ;
- DialectRegistry registry = new DialectRegistry();
- registry.addDialect( "java", dialect );
+ final PackageBuilder pkgBulider = new PackageBuilder(pkg);
+ final PackageBuilderConfiguration conf = pkgBulider.getPackageBuilderConfiguration();
+ Dialect dialect = pkgBulider.getPackageBuilderConfiguration().getDialectRegistry().getDialectConfiguration( "java" ).getDialect();
- final PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
- RuleBuildContext context = new RuleBuildContext(conf, pkg, ruleDescr, registry, dialect);
+ RuleBuildContext context = new RuleBuildContext(conf, pkg, ruleDescr, conf.getDialectRegistry(), dialect);
builder.build( context );
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/InstrumentedBuildContent.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/InstrumentedBuildContent.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/InstrumentedBuildContent.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -3,11 +3,11 @@
*/
package org.drools.rule.builder.dialect.mvel;
+import org.drools.compiler.Dialect;
import org.drools.compiler.DialectRegistry;
import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.lang.descr.RuleDescr;
import org.drools.rule.Package;
-import org.drools.rule.builder.Dialect;
import org.drools.rule.builder.RuleBuildContext;
import org.drools.spi.DeclarationScopeResolver;
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -2,6 +2,7 @@
import java.util.HashMap;
import java.util.Map;
+import java.util.Properties;
import junit.framework.TestCase;
@@ -14,6 +15,7 @@
import org.drools.common.AgendaItem;
import org.drools.common.InternalFactHandle;
import org.drools.common.PropagationContextImpl;
+import org.drools.compiler.DialectConfiguration;
import org.drools.compiler.DialectRegistry;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderConfiguration;
@@ -35,16 +37,14 @@
final RuleDescr ruleDescr = new RuleDescr( "rule 1" );
ruleDescr.setConsequence( "modify (cheese) {price = 5 }; retract (cheese)" );
- MVELDialect mvelDialect = new MVELDialect( new PackageBuilder( pkg ) );
- DialectRegistry registry = new DialectRegistry();
- registry.addDialect( "mvel",
- mvelDialect );
- final PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
+ PackageBuilder pkgBuilder = new PackageBuilder( pkg );
+ final PackageBuilderConfiguration conf = pkgBuilder.getPackageBuilderConfiguration();
+ MVELDialect mvelDialect = ( MVELDialect ) ( (DialectConfiguration) conf.getDialectConfiguration( "mvel" ) ).getDialect();
final InstrumentedBuildContent context = new InstrumentedBuildContent( conf,
pkg,
ruleDescr,
- registry,
+ conf.getDialectRegistry(),
mvelDialect );
final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();
@@ -100,16 +100,17 @@
final RuleDescr ruleDescr = new RuleDescr( "rule 1" );
ruleDescr.setConsequence( "if (cheese.price == 10) { cheese.price = 5; }" );
- MVELDialect mvelDialect = new MVELDialect( new PackageBuilder( pkg ) );
- DialectRegistry registry = new DialectRegistry();
- registry.addDialect( "default",
- mvelDialect );
+ Properties properties = new Properties();
+ properties.setProperty( "drools.dialect.default",
+ "mvel" );
+ PackageBuilderConfiguration cfg1 = new PackageBuilderConfiguration( properties );
+ MVELDialect mvelDialect = ( MVELDialect) cfg1.getDefaultDialect();
final PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
final InstrumentedBuildContent context = new InstrumentedBuildContent( conf,
pkg,
ruleDescr,
- registry,
+ conf.getDialectRegistry(),
mvelDialect );
final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilderTest.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilderTest.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilderTest.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -12,6 +12,7 @@
import org.drools.base.ClassFieldExtractorCache;
import org.drools.base.ClassObjectType;
import org.drools.common.InternalFactHandle;
+import org.drools.compiler.DialectConfiguration;
import org.drools.compiler.DialectRegistry;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderConfiguration;
@@ -32,17 +33,15 @@
public void testSimpleExpression() {
final Package pkg = new Package( "pkg1" );
final RuleDescr ruleDescr = new RuleDescr( "rule 1" );
+
+ PackageBuilder pkgBuilder = new PackageBuilder( pkg );
+ final PackageBuilderConfiguration conf = pkgBuilder.getPackageBuilderConfiguration();
+ MVELDialect mvelDialect = ( MVELDialect ) ( (DialectConfiguration) conf.getDialectConfiguration( "mvel" ) ).getDialect();
- MVELDialect mvelDialect = new MVELDialect( new PackageBuilder( pkg ) );
- DialectRegistry registry = new DialectRegistry();
- registry.addDialect( "mvel",
- mvelDialect );
- final PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
-
final InstrumentedBuildContent context = new InstrumentedBuildContent( conf,
pkg,
ruleDescr,
- registry,
+ conf.getDialectRegistry(),
mvelDialect );
final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -14,6 +14,7 @@
import org.drools.base.ClassObjectType;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
+import org.drools.compiler.DialectConfiguration;
import org.drools.compiler.DialectRegistry;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderConfiguration;
@@ -36,16 +37,14 @@
final Package pkg = new Package( "pkg1" );
final RuleDescr ruleDescr = new RuleDescr( "rule 1" );
- MVELDialect mvelDialect = new MVELDialect( new PackageBuilder( pkg ) );
- DialectRegistry registry = new DialectRegistry();
- registry.addDialect( "mvel",
- mvelDialect );
- final PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
+ PackageBuilder pkgBuilder = new PackageBuilder( pkg );
+ final PackageBuilderConfiguration conf = pkgBuilder.getPackageBuilderConfiguration();
+ MVELDialect mvelDialect = ( MVELDialect ) ( (DialectConfiguration) conf.getDialectConfiguration( "mvel" ) ).getDialect();
final InstrumentedBuildContent context = new InstrumentedBuildContent( conf,
pkg,
ruleDescr,
- registry,
+ conf.getDialectRegistry(),
mvelDialect );
final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -16,6 +16,7 @@
import org.drools.base.evaluators.Operator;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
+import org.drools.compiler.DialectConfiguration;
import org.drools.compiler.DialectRegistry;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderConfiguration;
@@ -38,16 +39,14 @@
final Package pkg = new Package( "pkg1" );
final RuleDescr ruleDescr = new RuleDescr( "rule 1" );
- MVELDialect mvelDialect = new MVELDialect( new PackageBuilder( pkg ) );
- DialectRegistry registry = new DialectRegistry();
- registry.addDialect( "mvel",
- mvelDialect );
- final PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
+ PackageBuilder pkgBuilder = new PackageBuilder( pkg );
+ final PackageBuilderConfiguration conf = pkgBuilder.getPackageBuilderConfiguration();
+ MVELDialect mvelDialect = ( MVELDialect ) ( (DialectConfiguration) conf.getDialectConfiguration( "mvel" ) ).getDialect();
final InstrumentedBuildContent context = new InstrumentedBuildContent( conf,
pkg,
ruleDescr,
- registry,
+ conf.getDialectRegistry(),
mvelDialect );
final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilderTest.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilderTest.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilderTest.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -11,6 +11,7 @@
import org.drools.WorkingMemory;
import org.drools.base.ClassObjectType;
import org.drools.common.InternalFactHandle;
+import org.drools.compiler.DialectConfiguration;
import org.drools.compiler.DialectRegistry;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderConfiguration;
@@ -30,16 +31,14 @@
ruleDescr.setSalience( "p.age + 20" );
ruleDescr.setConsequence( "" );
- MVELDialect mvelDialect = new MVELDialect( new PackageBuilder( pkg ) );
- DialectRegistry registry = new DialectRegistry();
- registry.addDialect( "mvel",
- mvelDialect );
- final PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
+ PackageBuilder pkgBuilder = new PackageBuilder( pkg );
+ final PackageBuilderConfiguration conf = pkgBuilder.getPackageBuilderConfiguration();
+ MVELDialect mvelDialect = ( MVELDialect ) ( (DialectConfiguration) conf.getDialectConfiguration( "mvel" ) ).getDialect();
final InstrumentedBuildContent context = new InstrumentedBuildContent( conf,
pkg,
ruleDescr,
- registry,
+ conf.getDialectRegistry(),
mvelDialect );
final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateMVEL.drl
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateMVEL.drl 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateMVEL.drl 2007-07-16 00:31:13 UTC (rev 13539)
@@ -27,7 +27,7 @@
result( total ) )
then
results.add($totalAmount);
-end
+end
rule "Constraints everywhere" salience 80
dialect "mvel"
@@ -39,7 +39,7 @@
action( cheesery.addCheese( $cheese ); ),
result( cheesery ) );
then
- results.add(new Integer($cheesery.getTotalAmount()));
+ results.add($cheesery.getTotalAmount());
end
rule "Source pattern binds" salience 70
Copied: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_CollectAlphaRestriction.drl (from rev 13536, labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_CollectAlphaRestriction.drl)
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_CollectAlphaRestriction.drl (rev 0)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_CollectAlphaRestriction.drl 2007-07-16 00:31:13 UTC (rev 13539)
@@ -0,0 +1,12 @@
+package org.drools;
+
+import java.util.ArrayList;
+
+global java.util.List results;
+
+rule "Collect Alpha Restriction" salience 70
+ when
+ $cheeseList : ArrayList(size > 0) from collect( Cheese( type == "stilton" ) );
+ then
+ results.add($cheeseList);
+end
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_MapAccess.drl
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_MapAccess.drl 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_MapAccess.drl 2007-07-16 00:31:13 UTC (rev 13539)
@@ -6,7 +6,7 @@
rule "map access"
when
- $m : Map( this['name'] == "Edson", this.surname == "Tirelli", this['age'] == 28 )
+ $m : Map( this['name'] == "Edson", this.surname == "Tirelli", this.age == 28 )
then
results.add( $m );
end
\ No newline at end of file
Copied: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_bindings.drl (from rev 13501, labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_bindings.drl)
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_bindings.drl (rev 0)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_bindings.drl 2007-07-16 00:31:13 UTC (rev 13539)
@@ -0,0 +1,11 @@
+package org.drools;
+
+global java.util.List results;
+
+rule "bindings"
+when
+ Cheese( $t : type == "stilton" || $p : price == 10 )
+then
+ results.add( $t );
+ results.add( new Integer( $p ) );
+end
\ No newline at end of file
Copied: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_multipleFroms.drl (from rev 13513, labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_multipleFroms.drl)
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_multipleFroms.drl (rev 0)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_multipleFroms.drl 2007-07-16 00:31:13 UTC (rev 13539)
@@ -0,0 +1,16 @@
+package org.drools
+
+import java.util.ArrayList;
+
+global org.drools.Cheesery cheesery;
+global java.util.List results;
+
+rule MyRule
+ dialect "java"
+when
+ $i : ArrayList() from collect(Cheese() from cheesery.getCheeses())
+ $k : ArrayList() from collect(Cheese() from cheesery.getCheeses())
+then
+ results.add( $i );
+ results.add( $k );
+end
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/.classpath
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/.classpath 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/.classpath 2007-07-16 00:31:13 UTC (rev 13539)
@@ -6,8 +6,8 @@
<classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel14/1.2pre3/mvel14-1.2pre3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar"/>
<classpathentry kind="var" path="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel14/1.2pre3/mvel14-1.2pre3.jar"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar"/>
</classpath>
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/Agenda.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/Agenda.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/Agenda.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -1,18 +1,50 @@
package org.drools;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
import org.drools.spi.Activation;
import org.drools.spi.ActivationGroup;
import org.drools.spi.AgendaGroup;
import org.drools.spi.RuleFlowGroup;
+/**
+ * Agenda interface for the WorkingMemory
+ *
+ */
public interface Agenda {
+ /**
+ * Returns the WorkignMemory for this Agenda
+ * @return
+ * The WorkingMemory
+ */
public WorkingMemory getWorkingMemory();
- public org.drools.util.LinkedList getScheduledItems();
-
+ /**
+ * Sets the Agenda's focus to the specified AgendaGroup
+ * @param agendaGroup
+ * @return
+ */
public boolean setFocus(AgendaGroup agendaGroup);
+ /**
+ * Sets the Agenda's focus to the specified AgendaGroup
+ * @param agendaGroup
+ * @return
+ */
public void setFocus(String name);
public AgendaGroup getFocus();
Deleted: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/ConcurrentStatelessSession.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/ConcurrentStatelessSession.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/ConcurrentStatelessSession.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -1,14 +0,0 @@
-package org.drools;
-
-import java.util.List;
-
-import org.drools.event.AgendaEventListener;
-import org.drools.spi.AgendaFilter;
-import org.drools.spi.GlobalResolver;
-
-public interface ConcurrentStatelessSession {
-
- void asyncExecute(Object object);
- void asyncExecute(Object[] list);
- void asyncExecute(List list);
-}
Copied: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/EventManager.java (from rev 13501, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/EventManager.java)
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/EventManager.java (rev 0)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/EventManager.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -0,0 +1,104 @@
+package org.drools;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.Serializable;
+import java.util.List;
+
+import org.drools.event.AgendaEventListener;
+import org.drools.event.AgendaEventSupport;
+import org.drools.event.RuleFlowEventListener;
+import org.drools.event.RuleFlowEventSupport;
+import org.drools.event.WorkingMemoryEventListener;
+import org.drools.event.WorkingMemoryEventSupport;
+
+/**
+ * The EventManager class is implemented by classes wishing to add,remove and get the various Drools EventListeners.
+ *
+ */
+public interface EventManager
+ extends
+ Serializable {
+ /**
+ * Add an event listener.
+ *
+ * @param listener
+ * The listener to add.
+ */
+ public void addEventListener(WorkingMemoryEventListener listener);
+
+ /**
+ * Remove an event listener.
+ *
+ * @param listener
+ * The listener to remove.
+ */
+ public void removeEventListener(WorkingMemoryEventListener listener);
+
+ /**
+ * Returns all event listeners.
+ *
+ * @return listeners The listeners.
+ */
+ public List getWorkingMemoryEventListeners();
+
+ /**
+ * Add an event listener.
+ *
+ * @param listener
+ * The listener to add.
+ */
+ public void addEventListener(AgendaEventListener listener);
+
+ /**
+ * Remove an event listener.
+ *
+ * @param listener
+ * The listener to remove.
+ */
+ public void removeEventListener(AgendaEventListener listener);
+
+ /**
+ * Returns all event listeners.
+ *
+ * @return listeners The listeners.
+ */
+ public List getAgendaEventListeners();
+
+ /**
+ * Add an event listener.
+ *
+ * @param listener
+ * The listener to add.
+ */
+ public void addEventListener(RuleFlowEventListener listener);
+
+ /**
+ * Remove an event listener.
+ *
+ * @param listener
+ * The listener to remove.
+ */
+ public void removeEventListener(RuleFlowEventListener listener);
+
+ /**
+ * Returns all event listeners.
+ *
+ * @return listeners The listeners.
+ */
+ public List getRuleFlowEventListeners();
+}
\ No newline at end of file
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/FactException.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/FactException.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/FactException.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -19,8 +19,6 @@
/**
* Base exception indicating an error in manipulating facts.
*
- * @author <a href="mailto:mark.proctor at jboss.com">Mark Proctor</a>
- * @author <a href="mailto:bob at werken.com">Bob McWhirter</a>
*/
public class FactException extends RuntimeDroolsException {
/**
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/InitialFact.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/InitialFact.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/InitialFact.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -18,6 +18,10 @@
* limitations under the License.
*/
+/**
+ * Initial fact, automatically put into the network. This fact is needed by 'not' CEs
+ * when they are the CEs in the rule.
+ */
public interface InitialFact
extends
Serializable {
Deleted: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/NoSuchFactHandleException.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/NoSuchFactHandleException.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/NoSuchFactHandleException.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -1,75 +0,0 @@
-package org.drools;
-
-/*
- * Copyright 2005 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Indicates an attempt to retract, update or retrieve a fact object that is no
- * longer present.
- *
- * @see FactHandle
- * @see WorkingMemory#getFactHandle
- *
- * @author <a href="mailto:simon at redhillconsulting.com.au">Simon Harris </a>
- *
- * @version $Id: NoSuchFactObjectException.java,v 1.3 2003/11/19 21:31:09 bob
- * Exp $
- */
-public class NoSuchFactHandleException extends FactException {
- /**
- *
- */
- private static final long serialVersionUID = -4900120393032700935L;
- /** Invalid fact object. */
- private final Object object;
-
- /**
- * @see java.lang.Exception#Exception()
- *
- * @param object
- * The invalid fact object.
- */
- public NoSuchFactHandleException(final Object object) {
- super( createMessage( object ) );
- this.object = object;
- }
-
- /**
- * @see java.lang.Exception#Exception(Throwable cause)
- *
- * @param object
- * The invalid fact object.
- */
- public NoSuchFactHandleException(final Object object,
- final Throwable cause) {
- super( createMessage( object ),
- cause );
- this.object = object;
- }
-
- /**
- * Retrieve the invalid Object.
- *
- * @return The invalid fact object.
- */
- public Object getObject() {
- return this.object;
- }
-
- private static String createMessage(final Object object) {
- return object == null ? "null fact object" : "no such fact handle for object:" + object;
- }
-}
\ No newline at end of file
Deleted: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/NoSuchFactObjectException.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/NoSuchFactObjectException.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/NoSuchFactObjectException.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -1,76 +0,0 @@
-package org.drools;
-
-/*
- * Copyright 2005 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Indicates an attempt to retract, update or retrieve a fact object that is no
- * longer present.
- *
- * @see FactHandle
- * @see WorkingMemory#assertObject
- * @see WorkingMemory#retractObject
- * @see WorkingMemory#getObject
- *
- * @author <a href="mailto:bob at werken.com">bob mcwhirter </a>
- *
- * @version $Id: NoSuchFactObjectException.java,v 1.3 2003/11/19 21:31:09 bob
- * Exp $
- */
-public class NoSuchFactObjectException extends FactException {
- /**
- *
- */
- private static final long serialVersionUID = 400L;
- /** Invalid fact handle. */
- private final FactHandle handle;
-
- /**
- * @see java.lang.Exception#Exception()
- *
- * @param object
- * The invalid fact object.
- */
- public NoSuchFactObjectException(final FactHandle handle) {
- super( createMessage( handle ) );
- this.handle = handle;
- }
-
- /**
- * @see java.lang.Exception#Exception()
- *
- * @param object
- * The invalid fact object.
- */
- public NoSuchFactObjectException(final FactHandle handle,
- final Throwable cause) {
- super( createMessage( handle ) );
- this.handle = handle;
- }
-
- /**
- * Retrieve the invalid <code>FactHandle</code>.
- *
- * @return The invalid fact handle.
- */
- public FactHandle getFactHandle() {
- return this.handle;
- }
-
- private static String createMessage(final FactHandle handle) {
- return handle == null ? "null fact object" : "no such fact object for handle:" + handle.toExternalForm();
- }
-}
\ No newline at end of file
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/ObjectFilter.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/ObjectFilter.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/ObjectFilter.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -1,5 +1,16 @@
package org.drools;
+/**
+ * ObjectFilter is used with WorkingMemories to filter out instances during Iteration
+ * @author mproctor
+ *
+ */
public interface ObjectFilter {
+
+ /**
+ * Returning true means the Iterator accepts, and thus returns, the current Object.
+ * @param object
+ * @return
+ */
boolean accept(Object object);
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/Otherwise.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/Otherwise.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/Otherwise.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -4,7 +4,8 @@
* This class is essentually a named fact that will be asserted when the engine
* has not matched any rules.
*
- * @author Michael Neale
+ * This class is not currently used.
+ *
*
*/
public class Otherwise {
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/PackageIntegrationException.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/PackageIntegrationException.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/PackageIntegrationException.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -25,10 +25,6 @@
* @see RuleBase#addRule
* @see RuleBase#addPackage
*
- * @author <a href="mailto:bob at eng.werken.com">bob mcwhirter </a>
- *
- * @version $Id: RuleIntegrationException.java,v 1.6 2004/09/17 00:14:06
- * mproctor Exp $
*/
public class PackageIntegrationException extends IntegrationException {
/**
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/QueryResult.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/QueryResult.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/QueryResult.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -1,4 +1,19 @@
package org.drools;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
import java.util.Map;
@@ -22,23 +37,53 @@
this.queryResults = queryResults;
}
+ /**
+ * Return a map of Declarations where the key is the identifier and the value
+ * is the Declaration.
+ *
+ * @return
+ * The Map of Declarations.
+ */
public Map getDeclarations() {
return this.queryResults.getDeclarations();
}
+ /**
+ * Returns the Object for int position in the Tuple
+ *
+ * @param i
+ * @return
+ * The Object
+ */
public Object get(final int i) {
//adjust for the DroolsQuery object
return getObject( this.tuple.get( i + 1 ));
}
+ /**
+ * Return the Object for the given Declaration identifer.
+ * @param identifier
+ * @return
+ * The Object
+ */
public Object get(final String identifier) {
return get( (Declaration) this.queryResults.getDeclarations().get( identifier ) );
}
+ /**
+ * Return the Object for the given Declaration.
+ * @param identifier
+ * @return
+ * The Object
+ */
public Object get(final Declaration declaration) {
return declaration.getValue( (InternalWorkingMemory) workingMemory, getObject( this.tuple.get( declaration ) ) );
}
+ /**
+ * Return the FactHandles for the Tuple.
+ * @return
+ */
public FactHandle[] getFactHandles() {
// Strip the DroolsQuery fact
final FactHandle[] src = this.tuple.getFactHandles();
@@ -51,12 +96,22 @@
return dst;
}
+ /**
+ * The size of the Tuple; i.e. the number of columns (FactHandles) in this row result.
+ * @return
+ */
public int size() {
// Adjust for the DroolsQuery object
return this.tuple.getFactHandles().length - 1;
}
- private Object getObject(InternalFactHandle handle) {
+ /**
+ * Get the Object for the given FactHandle
+ * @param handle
+ * @return
+ */
+ private Object getObject(FactHandle factHandle) {
+ InternalFactHandle handle = ( InternalFactHandle ) factHandle;
if ( handle.isShadowFact() ) {
return ((ShadowProxy) handle.getObject()).getShadowedObject();
} else {
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/QueryResults.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/QueryResults.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/QueryResults.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -1,4 +1,19 @@
package org.drools;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
import java.util.HashMap;
import java.util.Iterator;
@@ -10,6 +25,11 @@
import org.drools.rule.Query;
import org.drools.spi.Tuple;
+/**
+ * Returned QueryResults instance for a requested named query. from here you can iterate the returned data, or
+ * get a specific row. All the available Declarations used in the query can also be accessed.
+ *
+ */
public class QueryResults {
private Query query;
@@ -35,10 +55,22 @@
this );
}
+ /**
+ * Returns an Iterator for the results.
+ *
+ * @return
+ */
public Iterator iterator() {
return new QueryResultsIterator( this.results.iterator() );
}
+ /**
+ * Return a map of Declarations where the key is the identifier and the value
+ * is the Declaration.
+ *
+ * @return
+ * The Map of Declarations.
+ */
public Map getDeclarations() {
final Declaration[] declarations = this.query.getDeclarations();
@@ -52,11 +84,15 @@
return this.declarations;
}
+ /**
+ * The results size
+ * @return
+ */
public int size() {
return this.results.size();
}
- class QueryResultsIterator
+ private class QueryResultsIterator
implements
Iterator {
private Iterator iterator;
Deleted: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/ReteConcurrentStatelessSession.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/ReteConcurrentStatelessSession.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/ReteConcurrentStatelessSession.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -1,63 +0,0 @@
-package org.drools;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.drools.event.AgendaEventListener;
-import org.drools.spi.AgendaFilter;
-import org.drools.spi.GlobalResolver;
-import org.drools.util.concurrent.locks.BlockingQueue;
-import org.drools.util.concurrent.locks.LinkedBlockingQueue;
-import org.drools.util.concurrent.locks.Queue;
-
-public class ReteConcurrentStatelessSession implements ConcurrentStatelessSession {
- private BlockingQueue queue;
-
- public void asyncExecute(Object object) {
- this.queue.offer( object );
- }
-
- public void asyncExecute(Object[] list) {
- this.queue.offer( list );
- }
-
- public void asyncExecute(List list) {
- this.queue.offer( list );
- }
-
-
- public class ProducerConsumer implements Runnable {
- private WorkingMemory workingMemory;
- private BlockingQueue queue;
-
-
- public ProducerConsumer(WorkingMemory workingMemory, BlockingQueue queue) {
- this.workingMemory = workingMemory;
- this.queue = queue;
- }
-
- public void run() {
- while (true) {
- try {
- Object object = this.queue.take();
- if ( object instanceof Object[] ) {
- this.workingMemory.insert( object );
- } else if ( object instanceof List ) {
- List list = ( List ) object;
- for ( Iterator it = list.iterator(); it.hasNext(); ) {
- this.workingMemory.insert( it.next() );
- }
- } else {
- Object[] objects = ( Object[] ) object;
- for ( int i = 0, length = objects.length; i < length; i++ ) {
- this.workingMemory.insert( objects[i] );
- }
- }
- Thread.sleep( 100 );
- } catch(InterruptedException e) {
- return;
- }
- }
- }
- }
-}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/RuleBase.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/RuleBase.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/RuleBase.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -33,10 +33,6 @@
* </p>
*
* @see WorkingMemory
- *
- * @author <a href="mailto:bob at werken.com">bob mcwhirter </a>
- *
- * @version $Id: RuleBase.java,v 1.2 2005/08/04 23:33:30 mproctor Exp $
*/
public interface RuleBase
extends
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -43,11 +43,6 @@
* mutable again. This is to avoid inconsistent behavior inside rulebase.
*
* NOTE: This API is under review and may change in the future.
- *
- * Created: 16/05/2006
- * @author <a href="mailto:tirelli at post.com">Edson Tirelli</a>
- *
- * @version $Id$
*/
/**
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/RuleBaseFactory.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/RuleBaseFactory.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/RuleBaseFactory.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -21,7 +21,6 @@
/**
* This is a utility to create rule bases based on the type of engine you wish to use.
*
- * @author Michael Neale
*/
public class RuleBaseFactory {
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/StatelessSession.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/StatelessSession.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/StatelessSession.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -19,26 +19,8 @@
* Care should be used when using the async versions of the methods, consult the javadoc for
* the specific information.
*/
-public interface StatelessSession {
- public void addEventListener(final WorkingMemoryEventListener listener);
-
- public void removeEventListener(final WorkingMemoryEventListener listener);
-
- public List getWorkingMemoryEventListeners();
-
- public void addEventListener(final AgendaEventListener listener);
-
- public void removeEventListener(final AgendaEventListener listener);
-
- public List getAgendaEventListeners();
-
- public void addEventListener(final RuleFlowEventListener listener);
-
- public void removeEventListener(final RuleFlowEventListener listener);
-
- public List getRuleFlowEventListeners();
-
-
+public interface StatelessSession extends EventManager {
+
void setAgendaFilter(AgendaFilter agendaFilter);
/**
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/WorkingMemory.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/WorkingMemory.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/WorkingMemory.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -39,103 +39,55 @@
* the RuleBase reference is transient. Please see the RuleBase interface for serializing
* in WorkingMemories from an InputStream.
*
- * @author <a href="mailto:bob at eng.werken.com">bob mcwhirter </a>
*/
-public interface WorkingMemory
- extends
- Serializable {
- /**
- * Add an event listener.
- *
- * @param listener
- * The listener to add.
- */
- public void addEventListener(WorkingMemoryEventListener listener);
+public interface WorkingMemory extends EventManager {
/**
- * Remove an event listener.
- *
- * @param listener
- * The listener to remove.
+ * Returns the Agenda for this WorkingMemory. While the WorkingMemory interface is considered public, the Agenda interface
+ * is more subject to change.
+ * @return
+ * the Agenda
*/
- public void removeEventListener(WorkingMemoryEventListener listener);
-
- /**
- * Returns all event listeners.
- *
- * @return listeners The listeners.
- */
- public List getWorkingMemoryEventListeners();
-
- /**
- * Add an event listener.
- *
- * @param listener
- * The listener to add.
- */
- public void addEventListener(AgendaEventListener listener);
-
- /**
- * Remove an event listener.
- *
- * @param listener
- * The listener to remove.
- */
- public void removeEventListener(AgendaEventListener listener);
-
- /**
- * Add an event listener.
- *
- * @param listener
- * The listener to add.
- */
- public void addEventListener(RuleFlowEventListener listener);
-
- /**
- * Remove an event listener.
- *
- * @param listener
- * The listener to remove.
- */
- public void removeEventListener(RuleFlowEventListener listener);
-
- /**
- * Returns all event listeners.
- *
- * @return listeners The listeners.
- */
- public List getAgendaEventListeners();
-
public Agenda getAgenda();
/**
- * Set a specific piece of global in this working memory. Null values will return doing nothign
+ * Set a specific instance as a global in this working memory. Null values will return doing nothing.
+ * The global identifier and its type must be declared in the drl.
*
- * @param name
- * the name under which to populate the data
+ * @param identifier
+ * the identifier under which to populate the data
* @param value
* the global value, cannot be null
*/
- void setGlobal(String name,
+ void setGlobal(String identifier,
Object value);
/**
- * Retrieve a specific piece of global data by name
+ * Retrieve a specific instance of global data by identifier
*
- * @return application data or null if nothing is set under this name
+ * @return application data or null if nothing is set under this identifier
*/
- Object getGlobal(String name);
+ Object getGlobal(String identifier);
+
/**
- * Delegate used to resolve any global names not found in the global map.
+ * Sets the GlobalResolver instance to be used when resolving globals, replaces the current GlobalResolver.
+ * Typcicaly a delegating GlobalResolver is created that first gets a reference to the current GlobalResolver,
+ * for delegating
+ *
* @param globalResolver
*/
void setGlobalResolver(GlobalResolver globalResolver);
+ /**
+ * Returns the current GlobalResolver
+ *
+ * @return
+ */
GlobalResolver getGlobalResolver();
/**
- * Retrieve the <code>RuleBase</code> of this working memory.
+ * Retrieve the <code>RuleBase</code> for this working memory.
*
* @return The <code>RuleBase</code>.
*/
@@ -145,7 +97,7 @@
* Fire all items on the agenda until empty.
*
* @throws FactException
- * If an error occurs.
+ * If a RuntimeException error occurs.
*/
void fireAllRules() throws FactException;
@@ -153,7 +105,7 @@
* Fire all items on the agenda until empty, using the given AgendaFiler
*
* @throws FactException
- * If an error occurs.
+ * If a RuntimeException error occurs.
*/
void fireAllRules(AgendaFilter agendaFilter) throws FactException;
@@ -161,7 +113,7 @@
* Fire all items on the agenda until empty or at most 'fireLimit' rules have fired
*
* @throws FactException
- * If an error occurs.
+ * If a RuntimeException error occurs.
*/
void fireAllRules( int fireLimit ) throws FactException;
@@ -170,54 +122,84 @@
* until empty or at most 'fireLimit' rules have fired
*
* @throws FactException
- * If an error occurs.
+ * If a RuntimeException error occurs.
*/
void fireAllRules(final AgendaFilter agendaFilter, int fireLimit ) throws FactException;
/**
* Retrieve the object associated with a <code>FactHandle</code>.
*
- * @see #containsObject
*
* @param handle
* The fact handle.
*
* @return The associated object.
- *
- * @throws NoSuchFactObjectException
- * If no object is known to be associated with the specified
- * handle.
*/
- Object getObject(FactHandle handle) throws NoSuchFactObjectException;
+ Object getObject(FactHandle handle);
/**
* Retrieve the <code>FactHandle</code> associated with an Object.
*
- * @see #containsObject
- *
* @param object
* The object.
*
* @return The associated fact handle.
- *
- * @throws NoSuchFactHandleException
- * If no handle is known to be associated with the specified
- * object.
*/
- FactHandle getFactHandle(Object object) throws NoSuchFactHandleException;
+ FactHandle getFactHandle(Object object);
+ /**
+ * Returns an Iterator for the Objects in the Working Memory. This Iterator is not thread safe.
+ * @return
+ * the Iterator
+ */
Iterator iterateObjects();
+ /**
+ * Returns an Iterator for the Objects in the Working Memory. This Iterator will filter out
+ * any objects that the ObjectFilter does not accept. This Iterator is not thread safe.
+ *
+ * @param filter
+ *
+ * @return
+ * the Iterator
+ */
Iterator iterateObjects(ObjectFilter filter);
+ /**
+ * Returns an Iterator for the FactHandles in the Working Memory. This Iterator is not thread safe.
+ * @return
+ * the Iterator
+ */
Iterator iterateFactHandles();
+ /**
+ * Returns an Iterator for the Objects in the Working Memory. This Iterator will filter out
+ * any objects that the ObjectFilter does not accept. This Iterator is not thread safe.
+ *
+ * @param filter
+ *
+ * @return
+ * the Iterator
+ */
Iterator iterateFactHandles(ObjectFilter filter);
+ /**
+ * Returns the AgendaGroup which has the current WorkingMemory focus. The AgendaGroup interface is subject to change.
+ * @return
+ * the AgendaGroup
+ */
public AgendaGroup getFocus();
+ /**
+ * Set the focus to the specified AgendaGroup
+ * @param focus
+ */
void setFocus(String focus);
+ /**
+ * Set the focus to the specified AgendaGroup
+ * @param focus
+ */
void setFocus(AgendaGroup focus);
@@ -230,7 +212,7 @@
* @return The new fact-handle associated with the object.
*
* @throws FactException
- * If an error occurs.
+ * If a RuntimeException error occurs.
*/
FactHandle insert(Object object) throws FactException;
@@ -248,10 +230,25 @@
*/
public QueryResults getQueryResults(String query);
+ /**
+ * Retrieve the QueryResults of the specified query and arguments
+ *
+ * @param query
+ * The name of the query.
+ *
+ * @param arguments
+ * The arguments used for the query
+ *
+ * @return The QueryResults of the specified query.
+ * If no results match the query it is empty.
+ *
+ * @throws IllegalArgumentException
+ * if no query named "query" is found in the rulebase
+ */
public QueryResults getQueryResults(String query, Object[] arguments);
/**
- * Assert a fact registering JavaBean <code>PropertyChangeListeners</code>
+ * Insert a fact registering JavaBean <code>PropertyChangeListeners</code>
* on the Object to automatically trigger <code>update</code> calls
* if <code>dynamic</code> is <code>true</code>.
*
@@ -264,7 +261,7 @@
* @return The new fact-handle associated with the object.
*
* @throws FactException
- * If an error occurs.
+ * If a RuntimeException error occurs.
*/
FactHandle insert(Object object,
boolean dynamic) throws FactException;
@@ -276,12 +273,13 @@
* The fact-handle associated with the fact to retract.
*
* @throws FactException
- * If an error occurs.
+ * If a RuntimeException error occurs.
*/
void retract(FactHandle handle) throws FactException;
/**
- * Modify a fact.
+ * Inform the WorkingMemory that a Fact has been modified and that it
+ * should now update the network.
*
* @param handle
* The fact-handle associated with the fact to modify.
@@ -289,13 +287,22 @@
* The new value of the fact.
*
* @throws FactException
- * If an error occurs.
+ * If a RuntimeException error occurs.
*/
void update(FactHandle handle,
Object object) throws FactException;
+ /**
+ *
+ * @param factHandle
+ */
public void modifyRetract(final FactHandle factHandle);
+ /**
+ *
+ * @param factHandle
+ * @param object
+ */
public void modifyInsert(final FactHandle factHandle,
final Object object);
@@ -308,13 +315,12 @@
void setAsyncExceptionHandler(AsyncExceptionHandler handler);
/**
- * Clear the Agenda
- *
+ * Clear the Agenda. Iterates over each AgendaGroup cancalling all Activations.
*/
void clearAgenda();
/**
- * Clear the Agenda Group
+ * Clear the Agenda Group, cancelling all its Activations.
*/
public void clearAgendaGroup(String group);
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/audit/WorkingMemoryFileLogger.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/audit/WorkingMemoryFileLogger.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/audit/WorkingMemoryFileLogger.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -22,6 +22,7 @@
import java.util.ArrayList;
import java.util.List;
+import org.drools.EventManager;
import org.drools.WorkingMemory;
import org.drools.audit.event.LogEvent;
import com.thoughtworks.xstream.XStream;
@@ -53,8 +54,8 @@
* Creates a new WorkingMemoryFileLogger for the given working memory.
* @param workingMemory
*/
- public WorkingMemoryFileLogger(final WorkingMemory workingMemory) {
- super( workingMemory );
+ public WorkingMemoryFileLogger(final EventManager eventManager) {
+ super( eventManager );
}
/**
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/audit/WorkingMemoryLogger.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/audit/WorkingMemoryLogger.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/audit/WorkingMemoryLogger.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -20,6 +20,7 @@
import java.util.Iterator;
import java.util.List;
+import org.drools.EventManager;
import org.drools.FactHandle;
import org.drools.WorkingMemory;
import org.drools.audit.event.ActivationLogEvent;
@@ -71,18 +72,18 @@
RuleFlowEventListener {
private final List filters = new ArrayList();
- private WorkingMemory workingMemory;
+ private EventManager eventManager;
/**
* Creates a new working memory logger for the given working memory.
*
* @param workingMemory
*/
- public WorkingMemoryLogger(final WorkingMemory workingMemory) {
- this.workingMemory = workingMemory;
- workingMemory.addEventListener( (WorkingMemoryEventListener) this );
- workingMemory.addEventListener( (AgendaEventListener) this );
- workingMemory.addEventListener( (RuleFlowEventListener) this );
+ public WorkingMemoryLogger(final EventManager eventManager) {
+ this.eventManager = eventManager;
+ this.eventManager.addEventListener( (WorkingMemoryEventListener) this );
+ this.eventManager.addEventListener( (AgendaEventListener) this );
+ this.eventManager.addEventListener( (RuleFlowEventListener) this );
}
/**
@@ -181,7 +182,7 @@
filterLogEvent( new ActivationLogEvent( LogEvent.ACTIVATION_CREATED,
getActivationId( event.getActivation() ),
event.getActivation().getRule().getName(),
- extractDeclarations( event.getActivation() ),
+ extractDeclarations( event.getActivation(), workingMemory ),
event.getActivation().getRule().getRuleFlowGroup() ) );
}
@@ -193,7 +194,7 @@
filterLogEvent( new ActivationLogEvent( LogEvent.ACTIVATION_CANCELLED,
getActivationId( event.getActivation() ),
event.getActivation().getRule().getName(),
- extractDeclarations( event.getActivation() ),
+ extractDeclarations( event.getActivation(), workingMemory ),
event.getActivation().getRule().getRuleFlowGroup() ) );
}
@@ -205,7 +206,7 @@
filterLogEvent( new ActivationLogEvent( LogEvent.BEFORE_ACTIVATION_FIRE,
getActivationId( event.getActivation() ),
event.getActivation().getRule().getName(),
- extractDeclarations( event.getActivation() ),
+ extractDeclarations( event.getActivation(), workingMemory ),
event.getActivation().getRule().getRuleFlowGroup() ) );
}
@@ -217,7 +218,7 @@
filterLogEvent( new ActivationLogEvent( LogEvent.AFTER_ACTIVATION_FIRE,
getActivationId( event.getActivation() ),
event.getActivation().getRule().getName(),
- extractDeclarations( event.getActivation() ),
+ extractDeclarations( event.getActivation(), workingMemory ),
event.getActivation().getRule().getRuleFlowGroup() ) );
}
@@ -231,7 +232,7 @@
* @param activation The activation from which the declarations should be extracted
* @return A String represetation of the declarations of the activation.
*/
- private String extractDeclarations(final Activation activation) {
+ private String extractDeclarations(final Activation activation, final WorkingMemory workingMemory) {
final StringBuffer result = new StringBuffer();
final Tuple tuple = activation.getTuple();
final Declaration[] declarations = activation.getRule().getDeclarations();
@@ -244,7 +245,7 @@
// This handle is now invalid, probably due to an fact retraction
continue;
}
- final Object value = declaration.getValue( (InternalWorkingMemory) workingMemory, this.workingMemory.getObject( handle ) );
+ final Object value = declaration.getValue( (InternalWorkingMemory) workingMemory, workingMemory.getObject( handle ) );
result.append( declaration.getIdentifier() );
result.append( "=" );
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -123,7 +123,7 @@
return (BaseClassFieldExtractor) newClass.getConstructors()[0].newInstance( params );
}
} catch ( final Exception e ) {
- System.out.println( e );
+ //e.printStackTrace();
throw new RuntimeDroolsException( e );
}
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/ClassObjectFilter.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/ClassObjectFilter.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/ClassObjectFilter.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -2,13 +2,27 @@
import org.drools.ObjectFilter;
+/**
+ * Filters Objects by Class, only accepting Classes of the specified type
+ * @author mproctor
+ *
+ */
public class ClassObjectFilter implements ObjectFilter {
private Class clazz;
+ /**
+ * The Allowed Class type
+ * @param clazz
+ */
public ClassObjectFilter(Class clazz) {
this.clazz = clazz;
}
+ /**
+ * Returning true means the Iterator accepts, and thus returns, the current Object's Class type.
+ * @param object
+ * @return
+ */
public boolean accept(Object object) {
return object.getClass().isAssignableFrom( this.clazz );
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/ClassTypeResolver.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/ClassTypeResolver.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/ClassTypeResolver.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -30,7 +30,7 @@
public class ClassTypeResolver
implements
TypeResolver {
- private List imports;
+ private List imports = Collections.EMPTY_LIST;
private ClassLoader classLoader;
@@ -63,14 +63,14 @@
if ( classLoader == null ) {
throw new RuntimeDroolsException( "ClassTypeResolver cannot have a null parent ClassLoader" );
}
-
+
this.classLoader = classLoader;
}
public void setClassLoader(ClassLoader classLoader) {
this.classLoader = classLoader;
}
-
+
/*
* (non-Javadoc)
*
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/accumulators/JavaAccumulatorFunctionExecutor.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/accumulators/JavaAccumulatorFunctionExecutor.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/accumulators/JavaAccumulatorFunctionExecutor.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -53,7 +53,8 @@
/* (non-Javadoc)
* @see org.drools.spi.Accumulator#init(java.lang.Object, org.drools.spi.Tuple, org.drools.rule.Declaration[], org.drools.WorkingMemory)
*/
- public void init(Object context,
+ public void init(Object workingMemoryContext,
+ Object context,
Tuple leftTuple,
Declaration[] declarations,
WorkingMemory workingMemory) throws Exception {
@@ -63,7 +64,8 @@
/* (non-Javadoc)
* @see org.drools.spi.Accumulator#accumulate(java.lang.Object, org.drools.spi.Tuple, org.drools.common.InternalFactHandle, org.drools.rule.Declaration[], org.drools.rule.Declaration[], org.drools.WorkingMemory)
*/
- public void accumulate(Object context,
+ public void accumulate(Object workingMemoryContext,
+ Object context,
Tuple leftTuple,
InternalFactHandle handle,
Declaration[] declarations,
@@ -78,7 +80,8 @@
value );
}
- public void reverse(Object context,
+ public void reverse(Object workingMemoryContext,
+ Object context,
Tuple leftTuple,
InternalFactHandle handle,
Declaration[] declarations,
@@ -96,7 +99,8 @@
/* (non-Javadoc)
* @see org.drools.spi.Accumulator#getResult(java.lang.Object, org.drools.spi.Tuple, org.drools.rule.Declaration[], org.drools.WorkingMemory)
*/
- public Object getResult(Object context,
+ public Object getResult(Object workingMemoryContext,
+ Object context,
Tuple leftTuple,
Declaration[] declarations,
WorkingMemory workingMemory) throws Exception {
@@ -115,4 +119,8 @@
this.expression = expression;
}
+ public Object createWorkingMemoryContext() {
+ // no working memory context needed
+ return null;
+ }
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/accumulators/MVELAccumulatorFunctionExecutor.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/accumulators/MVELAccumulatorFunctionExecutor.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/accumulators/MVELAccumulatorFunctionExecutor.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -18,6 +18,7 @@
package org.drools.base.accumulators;
import java.io.Serializable;
+import java.util.Map;
import org.drools.WorkingMemory;
import org.drools.base.mvel.DroolsMVELFactory;
@@ -36,18 +37,18 @@
implements
Accumulator {
- private static final long serialVersionUID = 400L;
+ private static final long serialVersionUID = 400L;
- private final Object dummy = new Object();
- private final DroolsMVELFactory factory;
- private final Serializable expression;
+ private final Object dummy = new Object();
+ private final DroolsMVELFactory model;
+ private final Serializable expression;
private final AccumulateFunction function;
public MVELAccumulatorFunctionExecutor(final DroolsMVELFactory factory,
final Serializable expression,
final AccumulateFunction function) {
super();
- this.factory = factory;
+ this.model = factory;
this.expression = expression;
this.function = function;
}
@@ -62,7 +63,8 @@
/* (non-Javadoc)
* @see org.drools.spi.Accumulator#init(java.lang.Object, org.drools.spi.Tuple, org.drools.rule.Declaration[], org.drools.WorkingMemory)
*/
- public void init(Object context,
+ public void init(Object workingMemoryContext,
+ Object context,
Tuple leftTuple,
Declaration[] declarations,
WorkingMemory workingMemory) throws Exception {
@@ -72,43 +74,51 @@
/* (non-Javadoc)
* @see org.drools.spi.Accumulator#accumulate(java.lang.Object, org.drools.spi.Tuple, org.drools.common.InternalFactHandle, org.drools.rule.Declaration[], org.drools.rule.Declaration[], org.drools.WorkingMemory)
*/
- public void accumulate(Object context,
+ public void accumulate(Object workingMemoryContext,
+ Object context,
Tuple leftTuple,
InternalFactHandle handle,
Declaration[] declarations,
Declaration[] innerDeclarations,
WorkingMemory workingMemory) throws Exception {
- this.factory.setContext( leftTuple,
- null,
- handle.getObject(),
- workingMemory );
+ DroolsMVELFactory factory = (DroolsMVELFactory) workingMemoryContext;
+ factory.setContext( leftTuple,
+ null,
+ handle.getObject(),
+ workingMemory,
+ (Map) context );
final Object value = MVEL.executeExpression( this.expression,
this.dummy,
- this.factory );
+ factory );
this.function.accumulate( context,
value );
}
- public void reverse(Object context,
+ public void reverse(Object workingMemoryContext,
+ Object context,
Tuple leftTuple,
InternalFactHandle handle,
Declaration[] declarations,
Declaration[] innerDeclarations,
WorkingMemory workingMemory) throws Exception {
- this.factory.setContext( leftTuple,
- null,
- handle.getObject(),
- workingMemory );
+ DroolsMVELFactory factory = (DroolsMVELFactory) workingMemoryContext;
+ factory.setContext( leftTuple,
+ null,
+ handle.getObject(),
+ workingMemory,
+ (Map) context );
final Object value = MVEL.executeExpression( this.expression,
this.dummy,
- this.factory );
- this.function.reverse( context, value );
+ factory );
+ this.function.reverse( context,
+ value );
}
/* (non-Javadoc)
* @see org.drools.spi.Accumulator#getResult(java.lang.Object, org.drools.spi.Tuple, org.drools.rule.Declaration[], org.drools.WorkingMemory)
*/
- public Object getResult(Object context,
+ public Object getResult(Object workingMemoryContext,
+ Object context,
Tuple leftTuple,
Declaration[] declarations,
WorkingMemory workingMemory) throws Exception {
@@ -119,4 +129,8 @@
return this.function.supportsReverse();
}
+ public Object createWorkingMemoryContext() {
+ return this.model.clone();
+ }
+
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/dataproviders/MVELDataProvider.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/dataproviders/MVELDataProvider.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/dataproviders/MVELDataProvider.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -38,7 +38,8 @@
this.factory.setContext( tuple,
null,
null,
- wm );
+ wm,
+ null );
//this.expression.
final Object result = MVEL.executeExpression( this.expression,
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/evaluators/ObjectFactory.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/evaluators/ObjectFactory.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/evaluators/ObjectFactory.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -464,21 +464,21 @@
final Object object1, final FieldValue object2) {
final Object value = object2.getValue();
final Collection col = (Collection) extractor.getValue( workingMemory, object1 );
- return col.contains( value );
+ return ( col == null ) ? false : col.contains( value );
}
public boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
final VariableContextEntry context, final Object left) {
final Object value = context.declaration.getExtractor().getValue( workingMemory, left );
final Collection col = (Collection) ((ObjectVariableContextEntry) context).right;
- return col.contains( value );
+ return ( col == null ) ? false : col.contains( value );
}
public boolean evaluateCachedLeft(InternalWorkingMemory workingMemory,
final VariableContextEntry context, final Object right) {
final Object value = ((ObjectVariableContextEntry) context).left;
final Collection col = (Collection) context.extractor.getValue( workingMemory, right );
- return col.contains( value );
+ return ( col == null ) ? false : col.contains( value );
}
public boolean evaluate(InternalWorkingMemory workingMemory,
@@ -487,7 +487,7 @@
final Extractor extractor2, final Object object2) {
final Object value = extractor2.getValue( workingMemory, object2 );
final Collection col = (Collection) extractor1.getValue( workingMemory, object1 );
- return col.contains( value );
+ return ( col == null ) ? false : col.contains( value );
}
public String toString() {
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -1,41 +1,37 @@
package org.drools.base.mvel;
-import org.drools.FactHandle;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
import org.drools.WorkingMemory;
import org.drools.rule.Declaration;
import org.drools.spi.KnowledgeHelper;
import org.drools.spi.Tuple;
import org.mvel.CompileException;
import org.mvel.integration.VariableResolver;
-import org.mvel.integration.VariableResolverFactory;
import org.mvel.integration.impl.BaseVariableResolverFactory;
-import org.mvel.integration.impl.ClassImportResolverFactory;
-import org.mvel.integration.impl.MapVariableResolver;
-import org.mvel.integration.impl.StaticMethodImportResolverFactory;
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
+public class DroolsMVELFactory extends BaseVariableResolverFactory
+ implements
+ Serializable,
+ Cloneable {
-public class DroolsMVELFactory extends BaseVariableResolverFactory implements Serializable {
+ private static final long serialVersionUID = 1504379613555271045L;
+
/**
* Holds the instance of the variables.
*/
- //private Map variables;
- // public DroolsMVELFactory(Map variables) {
- // this.variables = variables;
- // }
- private Tuple tuple;
- private KnowledgeHelper knowledgeHelper;
- private Object object;
- private Map localDeclarations;
- private Map previousDeclarations;
- private Map globals;
+ private Tuple tuple;
+ private KnowledgeHelper knowledgeHelper;
+ private Object object;
+ private Map localDeclarations;
+ private Map previousDeclarations;
+ private Map globals;
- private WorkingMemory workingMemory;
+ private WorkingMemory workingMemory;
- private Map variables;
+ private Map localVariables;
public DroolsMVELFactory(final Map previousDeclarations,
final Map localDeclarations,
@@ -43,7 +39,6 @@
this.previousDeclarations = previousDeclarations;
this.localDeclarations = localDeclarations;
this.globals = globals;
- //this.variables = new HashMap();
}
public Object getObject() {
@@ -57,11 +52,13 @@
public void setContext(final Tuple tuple,
final KnowledgeHelper knowledgeHelper,
final Object object,
- final WorkingMemory workingMemory) {
+ final WorkingMemory workingMemory,
+ final Map variables) {
this.tuple = tuple;
this.knowledgeHelper = knowledgeHelper;
this.object = object;
this.workingMemory = workingMemory;
+ this.localVariables = variables;
}
public KnowledgeHelper getKnowledgeHelper() {
@@ -76,6 +73,16 @@
return this.workingMemory.getGlobal( identifier );
}
+ public Object getLocalValue(final String identifier) {
+ return this.localVariables.get( identifier );
+ }
+
+ public void setLocalValue(final String identifier,
+ final Object value) {
+ this.localVariables.put( identifier,
+ value );
+ }
+
public VariableResolver createVariable(String name,
Object value) {
VariableResolver vr = getVariableResolver( name );
@@ -83,12 +90,12 @@
vr.setValue( value );
return vr;
} else {
- if ( this.variables == null ) {
- this.variables = new HashMap();
+ if ( this.localVariables == null ) {
+ this.localVariables = new HashMap();
}
addResolver( name,
- vr = new MapVariableResolver( this.variables,
- name ) );
+ vr = new LocalVariableResolver( this,
+ name ) );
vr.setValue( value );
return vr;
}
@@ -101,20 +108,20 @@
if ( vr != null && vr.getType() != null ) {
throw new CompileException( "variable already defined within scope: " + vr.getType() + " " + name );
} else {
- if ( this.variables == null ) {
- this.variables = new HashMap();
+ if ( this.localVariables == null ) {
+ this.localVariables = new HashMap();
}
addResolver( name,
- vr = new MapVariableResolver( this.variables,
- name,
- type ) );
+ vr = new LocalVariableResolver( this,
+ name,
+ type ) );
vr.setValue( value );
return vr;
}
}
public boolean isResolveable(String name) {
- if ( DroolsMVELKnowledgeHelper.DROOLS.equals( name ) ) {
+ if ( DroolsMVELKnowledgeHelper.DROOLS.equals( name ) ) {
addResolver( DroolsMVELKnowledgeHelper.DROOLS,
new DroolsMVELKnowledgeHelper( this ) );
return true;
@@ -139,8 +146,8 @@
return true;
} else if ( this.variableResolvers != null && this.variableResolvers.containsKey( name ) ) {
addResolver( name,
- new MapVariableResolver( this.variableResolvers,
- name ) );
+ new LocalVariableResolver( this,
+ name ) );
return true;
} else if ( nextFactory != null ) {
return nextFactory.isResolveable( name );
@@ -165,4 +172,10 @@
return false;
}
}
+
+ public Object clone() {
+ return new DroolsMVELFactory( this.previousDeclarations,
+ this.localDeclarations,
+ this.globals );
+ }
}
Copied: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/LocalVariableResolver.java (from rev 13501, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/LocalVariableResolver.java)
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/LocalVariableResolver.java (rev 0)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/LocalVariableResolver.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -0,0 +1,109 @@
+/**
+ * MVEL (The MVFLEX Expression Language)
+ *
+ * Copyright (C) 2007 Christopher Brock, MVFLEX/Valhalla Project and the Codehaus
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.drools.base.mvel;
+
+import org.mvel.CompileException;
+import org.mvel.DataConversion;
+import org.mvel.integration.VariableResolver;
+
+import java.util.Map;
+
+public class LocalVariableResolver implements VariableResolver {
+ private String name;
+ private Class knownType;
+ private DroolsMVELFactory factory;
+
+ private boolean cache = false;
+
+ public LocalVariableResolver(DroolsMVELFactory factory, String name) {
+ this.factory = factory;
+ this.name = name;
+ }
+
+ public LocalVariableResolver(DroolsMVELFactory factory, String name, Class knownType) {
+ this.name = name;
+ this.knownType = knownType;
+ this.factory = factory;
+ }
+
+ public LocalVariableResolver(DroolsMVELFactory factory, String name, boolean cache) {
+ this.factory = factory;
+ this.name = name;
+ this.cache = cache;
+ }
+
+ public LocalVariableResolver(DroolsMVELFactory factory, String name, Class knownType, boolean cache) {
+ this.name = name;
+ this.knownType = knownType;
+ this.factory = factory;
+ this.cache = cache;
+ }
+
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public void setStaticType(Class knownType) {
+ this.knownType = knownType;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public Class getType() {
+ return knownType;
+ }
+
+ public void setValue(Object value) {
+ if (knownType != null && value != null && value.getClass() != knownType) {
+ if (!DataConversion.canConvert(knownType, value.getClass())) {
+ throw new CompileException("cannot assign " + value.getClass().getName() + " to type: "
+ + knownType.getName());
+ }
+ try {
+ value = DataConversion.convert(value, knownType);
+ }
+ catch (Exception e) {
+ throw new CompileException("cannot convert value of " + value.getClass().getName()
+ + " to: " + knownType.getName());
+ }
+ }
+
+ this.factory.setLocalValue( this.name, value );
+ }
+
+ public Object getValue() {
+ return this.factory.getLocalValue( this.name );
+ }
+
+ public int getFlags() {
+ return 0;
+ }
+
+
+ public boolean isCache() {
+ return cache;
+ }
+
+ public void setCache(boolean cache) {
+ this.cache = cache;
+ }
+}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELAccumulator.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELAccumulator.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELAccumulator.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -19,6 +19,7 @@
import java.io.Serializable;
import java.util.HashMap;
+import java.util.Map;
import org.drools.WorkingMemory;
import org.drools.common.InternalFactHandle;
@@ -38,7 +39,7 @@
private static final long serialVersionUID = 400L;
- private final DroolsMVELFactory factory;
+ private final DroolsMVELFactory model;
private final Serializable init;
private final Serializable action;
private final Serializable reverse;
@@ -50,7 +51,7 @@
final Serializable reverse,
final Serializable result) {
super();
- this.factory = factory;
+ this.model = factory;
this.init = init;
this.action = action;
this.reverse = reverse;
@@ -67,71 +68,87 @@
/* (non-Javadoc)
* @see org.drools.spi.Accumulator#init(java.lang.Object, org.drools.spi.Tuple, org.drools.rule.Declaration[], org.drools.WorkingMemory)
*/
- public void init(Object context,
+ public void init(Object workingMemoryContext,
+ Object context,
Tuple leftTuple,
Declaration[] declarations,
WorkingMemory workingMemory) throws Exception {
- this.factory.setContext( leftTuple,
- null,
- null,
- workingMemory );
+ DroolsMVELFactory factory = (DroolsMVELFactory) workingMemoryContext;
+ factory.setContext( leftTuple,
+ null,
+ null,
+ workingMemory,
+ (Map) context );
MVEL.executeExpression( this.init,
- context,
- this.factory );
+ null,
+ factory );
}
/* (non-Javadoc)
* @see org.drools.spi.Accumulator#accumulate(java.lang.Object, org.drools.spi.Tuple, org.drools.common.InternalFactHandle, org.drools.rule.Declaration[], org.drools.rule.Declaration[], org.drools.WorkingMemory)
*/
- public void accumulate(Object context,
+ public void accumulate(Object workingMemoryContext,
+ Object context,
Tuple leftTuple,
InternalFactHandle handle,
Declaration[] declarations,
Declaration[] innerDeclarations,
WorkingMemory workingMemory) throws Exception {
- this.factory.setContext( leftTuple,
- null,
- handle.getObject(),
- workingMemory );
+ DroolsMVELFactory factory = (DroolsMVELFactory) workingMemoryContext;
+ factory.setContext( leftTuple,
+ null,
+ handle.getObject(),
+ workingMemory,
+ (Map) context );
MVEL.executeExpression( this.action,
- context,
- this.factory );
+ null,
+ factory );
}
- public void reverse(Object context,
+ public void reverse(Object workingMemoryContext,
+ Object context,
Tuple leftTuple,
InternalFactHandle handle,
Declaration[] declarations,
Declaration[] innerDeclarations,
WorkingMemory workingMemory) throws Exception {
- this.factory.setContext( leftTuple,
- null,
- handle.getObject(),
- workingMemory );
+ DroolsMVELFactory factory = (DroolsMVELFactory) workingMemoryContext;
+ factory.setContext( leftTuple,
+ null,
+ handle.getObject(),
+ workingMemory,
+ (Map) context );
MVEL.executeExpression( this.reverse,
- context,
- this.factory );
+ null,
+ factory );
}
/* (non-Javadoc)
* @see org.drools.spi.Accumulator#getResult(java.lang.Object, org.drools.spi.Tuple, org.drools.rule.Declaration[], org.drools.WorkingMemory)
*/
- public Object getResult(Object context,
+ public Object getResult(Object workingMemoryContext,
+ Object context,
Tuple leftTuple,
Declaration[] declarations,
WorkingMemory workingMemory) throws Exception {
- this.factory.setContext( leftTuple,
- null,
- null,
- workingMemory );
+ DroolsMVELFactory factory = (DroolsMVELFactory) workingMemoryContext;
+ factory.setContext( leftTuple,
+ null,
+ null,
+ workingMemory,
+ (Map) context );
final Object result = MVEL.executeExpression( this.result,
- context,
- this.factory );
+ null,
+ factory );
return result;
}
public boolean supportsReverse() {
- return this.reverse != null ;
+ return this.reverse != null;
}
+ public Object createWorkingMemoryContext() {
+ return this.model.clone();
+ }
+
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -29,7 +29,8 @@
this.factory.setContext( knowledgeHelper.getTuple(),
knowledgeHelper,
null,
- workingMemory );
+ workingMemory,
+ null );
//MVEL: Core change
System.out.println("MVEL:Executing expression " + ((CompiledExpression)expr).getSourceName());
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELEvalExpression.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELEvalExpression.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELEvalExpression.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -31,7 +31,8 @@
this.factory.setContext( tuple,
null,
null,
- workingMemory );
+ workingMemory,
+ null );
final Boolean result = (Boolean) MVEL.executeExpression( this.expr,
new Object(),
this.factory );
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELPredicateExpression.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELPredicateExpression.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELPredicateExpression.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -31,9 +31,10 @@
this.factory.setContext( tuple,
null,
object,
- workingMemory );
+ workingMemory,
+ null );
final Boolean result = (Boolean) MVEL.executeExpression( this.expr,
- null,
+ object,
this.factory );
return result.booleanValue();
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueExpression.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueExpression.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueExpression.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -32,7 +32,8 @@
this.factory.setContext( tuple,
null,
object,
- workingMemory );
+ workingMemory,
+ null );
return org.drools.base.FieldFactory.getFieldValue( MVEL.executeExpression( this.expr,
null,
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELSalienceExpression.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELSalienceExpression.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/mvel/MVELSalienceExpression.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -28,7 +28,8 @@
this.factory.setContext( tuple,
null,
null,
- workingMemory );
+ workingMemory,
+ null );
return ((Integer) MVEL.executeExpression( this.expr,
this.factory )).intValue();
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -30,13 +30,12 @@
import org.drools.Agenda;
import org.drools.FactException;
import org.drools.FactHandle;
-import org.drools.NoSuchFactHandleException;
-import org.drools.NoSuchFactObjectException;
import org.drools.ObjectFilter;
import org.drools.Otherwise;
import org.drools.QueryResults;
import org.drools.RuleBase;
import org.drools.RuleBaseConfiguration;
+import org.drools.RuntimeDroolsException;
import org.drools.WorkingMemory;
import org.drools.RuleBaseConfiguration.AssertBehaviour;
import org.drools.RuleBaseConfiguration.LogicalOverride;
@@ -309,25 +308,6 @@
return this.handleFactory;
}
-// public void setGlobals(Map globals) {
-// //this.globals = globals;
-// }
-
-// /**
-// * @see WorkingMemory
-// */
-// public Map getGlobals() {
-// try {
-// this.lock.lock();
-// return this.globals;
-// } finally {
-// this.lock.unlock();
-// }
-// }
-
- /**
- * @see WorkingMemory
- */
public void setGlobal(final String identifier,
final Object value) {
// Cannot set null values
@@ -346,7 +326,7 @@
throw new RuntimeException( "Illegal class for global. " + "Expected [" + type.getName() + "], " + "found [" + value.getClass().getName() + "]." );
} else {
- this.globalResolver.setGlobal( identifier,
+ this.globalResolver.setGlobal( identifier,
value );
}
} finally {
@@ -362,7 +342,7 @@
this.lock.unlock();
}
}
-
+
public GlobalResolver getGlobalResolver() {
return this.globalResolver;
}
@@ -371,9 +351,6 @@
return this.id;
}
- /**
- * @see WorkingMemory
- */
public Object getGlobal(final String identifier) {
try {
this.lock.lock();
@@ -383,33 +360,18 @@
}
}
- /**
- * Retrieve the rule-firing <code>Agenda</code> for this
- * <code>WorkingMemory</code>.
- *
- * @return The <code>Agenda</code>.
- */
public Agenda getAgenda() {
return this.agenda;
}
- /**
- * Clear the Agenda
- */
public void clearAgenda() {
this.agenda.clearAgenda();
}
- /**
- * Clear the Agenda Group
- */
public void clearAgendaGroup(final String group) {
this.agenda.clearAgendaGroup( group );
}
- /**
- * @see WorkingMemory
- */
public RuleBase getRuleBase() {
return this.ruleBase;
}
@@ -418,9 +380,6 @@
this.halt = true;
}
- /**
- * @see WorkingMemory
- */
public synchronized void fireAllRules() throws FactException {
fireAllRules( null,
-1 );
@@ -469,10 +428,11 @@
}
} finally {
this.firing = false;
- if ( noneFired ) {
- doOtherwise( agendaFilter,
- fireLimit );
- }
+ // @todo (mproctor) disabling Otherwise management for now, not happy with the current implementation
+// if ( noneFired ) {
+// doOtherwise( agendaFilter,
+// fireLimit );
+// }
}
}
@@ -755,7 +715,7 @@
// assert
handle = this.handleFactory.newFactHandle( object );
addHandleToMaps( handle );
-
+
key = new EqualityKey( handle );
handle.setEqualityKey( key );
this.tms.put( key );
@@ -801,7 +761,7 @@
handle.setEqualityKey( key );
key.addFactHandle( handle );
addHandleToMaps( handle );
-
+
}
} else {
@@ -809,7 +769,7 @@
addHandleToMaps( handle );
key.addFactHandle( handle );
handle.setEqualityKey( key );
-
+
}
} else {
@@ -834,7 +794,7 @@
}
handle = this.handleFactory.newFactHandle( object );
addHandleToMaps( handle );
-
+
}
if ( dynamic ) {
@@ -856,7 +816,7 @@
Object object,
Rule rule,
Activation activation) {
- if( activation != null ) {
+ if ( activation != null ) {
// release resources so that they can be GC'ed
activation.getPropagationContext().releaseResources();
}
@@ -908,7 +868,7 @@
Object object,
PropagationContext propagationContext) throws FactException;
- protected void removePropertyChangeListener(final FactHandle handle) throws NoSuchFactObjectException {
+ protected void removePropertyChangeListener(final FactHandle handle) {
Object object = null;
try {
object = getObject( handle );
@@ -926,15 +886,15 @@
// stop processing JavaBean PropertyChangeEvents
// on the retracted Object
} catch ( final IllegalArgumentException e ) {
- System.err.println( "Warning: The removePropertyChangeListener method" + " on the class " + object.getClass() + " does not take" + " a simple PropertyChangeListener argument" + " so Drools will be unable to stop processing JavaBean"
+ throw new RuntimeDroolsException( "Warning: The removePropertyChangeListener method on the class " + object.getClass() + " does not take a simple PropertyChangeListener argument so Drools will be unable to stop processing JavaBean"
+ " PropertyChangeEvents on the retracted Object" );
} catch ( final IllegalAccessException e ) {
- System.err.println( "Warning: The removePropertyChangeListener method" + " on the class " + object.getClass() + " is not public" + " so Drools will be unable to stop processing JavaBean" + " PropertyChangeEvents on the retracted Object" );
+ throw new RuntimeDroolsException( "Warning: The removePropertyChangeListener method on the class " + object.getClass() + " is not public so Drools will be unable to stop processing JavaBean PropertyChangeEvents on the retracted Object" );
} catch ( final InvocationTargetException e ) {
- System.err.println( "Warning: The removePropertyChangeL istener method" + " on the class " + object.getClass() + " threw an InvocationTargetException" + " so Drools will be unable to stop processing JavaBean"
+ throw new RuntimeDroolsException( "Warning: The removePropertyChangeL istener method on the class " + object.getClass() + " threw an InvocationTargetException so Drools will be unable to stop processing JavaBean"
+ " PropertyChangeEvents on the retracted Object: " + e.getMessage() );
} catch ( final SecurityException e ) {
- System.err.println( "Warning: The SecurityManager controlling the class " + object.getClass() + " did not allow the lookup of a" + " removePropertyChangeListener method" + " so Drools will be unable to stop processing JavaBean"
+ throw new RuntimeDroolsException( "Warning: The SecurityManager controlling the class " + object.getClass() + " did not allow the lookup of a removePropertyChangeListener method so Drools will be unable to stop processing JavaBean"
+ " PropertyChangeEvents on the retracted Object: " + e.getMessage() );
}
}
@@ -967,7 +927,7 @@
}
removePropertyChangeListener( handle );
- if( activation != null ) {
+ if ( activation != null ) {
// release resources so that they can be GC'ed
activation.getPropagationContext().releaseResources();
}
@@ -1010,7 +970,6 @@
removeHandleFromMaps( handle );
-
this.handleFactory.destroyFactHandle( handle );
if ( !this.actionQueue.isEmpty() ) {
@@ -1062,7 +1021,7 @@
return;
}
- if( activation != null ) {
+ if ( activation != null ) {
// release resources so that they can be GC'ed
activation.getPropagationContext().releaseResources();
}
@@ -1123,7 +1082,7 @@
this.handleFactory.increaseFactHandleRecency( handle );
- if( activation != null ) {
+ if ( activation != null ) {
// release resources so that they can be GC'ed
activation.getPropagationContext().releaseResources();
}
@@ -1189,7 +1148,7 @@
return;
}
- if( activation != null ) {
+ if ( activation != null ) {
// release resources so that they can be GC'ed
activation.getPropagationContext().releaseResources();
}
@@ -1344,8 +1303,6 @@
try {
update( getFactHandle( object ),
object );
- } catch ( final NoSuchFactHandleException e ) {
- // Not a fact so unable to process the chnage event
} catch ( final FactException e ) {
throw new RuntimeException( e.getMessage() );
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/common/DefaultAgenda.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/common/DefaultAgenda.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/common/DefaultAgenda.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -161,13 +161,6 @@
item.cancel();
}
- /* (non-Javadoc)
- * @see org.drools.common.AgendaI#getScheduledItems()
- */
- public org.drools.util.LinkedList getScheduledItems() {
- return this.scheduledActivations;
- }
-
public void addAgendaGroup(final AgendaGroup agendaGroup) {
this.agendaGroups.put( agendaGroup.getName(),
agendaGroup );
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/concurrent/CommandExecutor.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/concurrent/CommandExecutor.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/concurrent/CommandExecutor.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -9,6 +9,12 @@
import org.drools.util.concurrent.locks.BlockingQueue;
import org.drools.util.concurrent.locks.LinkedBlockingQueue;
+/**
+ * The CommandExecutor is a Producer/Consumer style classes that provides a queue of Commands
+ * in a LinkedBlockingQueue. This the run() method loops for continously until shutdown() is
+ * called.
+ *
+ */
public class CommandExecutor implements Runnable, Serializable {
private WorkingMemory workingMemory;
private BlockingQueue queue;
@@ -21,10 +27,22 @@
this.queue = new LinkedBlockingQueue();
}
+ /**
+ * Allows the looping run() method to execute.
+ *
+ */
public void shutdown() {
this.run = false;
}
+ /**
+ * Submit a Command for execution
+ *
+ * @param command
+ *
+ * @return
+ * return the Future
+ */
public Future submit(Command command) {
this.queue.offer( command );
// we know our commands also implement Future
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/concurrent/ExecutorService.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/concurrent/ExecutorService.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/concurrent/ExecutorService.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -6,10 +6,36 @@
import java.io.Serializable;
-
+/**
+ * This class instance is configed by the RuleBaseConfiguration and is responsible for thread management
+ * of the async services.
+ *
+ */
public interface ExecutorService extends Serializable {
+
+ /**
+ * The CommandExecutor is a producer/consumer style class that handles the queue and execution
+ * of the async actions
+ * @param executor
+ */
public void setCommandExecutor(CommandExecutor executor);
+
+ /**
+ * Submit a command for execution, adds it ot the commandExecutor's queue
+ * @param command
+ * @return
+ */
Future submit(Command command);
+
+ /**
+ * Shutdown this ExecutorService
+ *
+ */
void shutDown();
+
+ /**
+ * Startup this ExecutorService, typically called on first submit for lazy startup.
+ *
+ */
void startUp();
}
\ No newline at end of file
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -18,6 +18,7 @@
import java.util.Arrays;
+import org.drools.RuleBaseConfiguration;
import org.drools.common.BetaConstraints;
import org.drools.common.EmptyBetaConstraints;
import org.drools.common.InternalFactHandle;
@@ -82,7 +83,7 @@
final BetaConstraints sourceBinder,
final BetaConstraints resultBinder,
final Accumulate accumulate,
- final boolean unwrapRightObject ) {
+ final boolean unwrapRightObject) {
super( id,
leftInput,
rightInput,
@@ -116,13 +117,13 @@
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
- final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
+ final AccumulateMemory memory = (AccumulateMemory) workingMemory.getNodeMemory( this );
AccumulateResult accresult = new AccumulateResult();
if ( !workingMemory.isSequential() ) {
- memory.getTupleMemory().add( leftTuple );
- memory.getCreatedHandles().put( leftTuple,
+ memory.betaMemory.getTupleMemory().add( leftTuple );
+ memory.betaMemory.getCreatedHandles().put( leftTuple,
accresult,
false );
}
@@ -130,29 +131,32 @@
final Object accContext = this.accumulate.createContext();
accresult.context = accContext;
- this.accumulate.init( accContext,
+ this.accumulate.init( memory.workingMemoryContext,
+ accContext,
leftTuple,
workingMemory );
- final Iterator it = memory.getFactHandleMemory().iterator( leftTuple );
+ final Iterator it = memory.betaMemory.getFactHandleMemory().iterator( leftTuple );
this.constraints.updateFromTuple( workingMemory,
leftTuple );
for ( FactEntry entry = (FactEntry) it.next(); entry != null; entry = (FactEntry) it.next() ) {
InternalFactHandle handle = entry.getFactHandle();
if ( this.constraints.isAllowedCachedLeft( handle.getObject() ) ) {
- if( this.unwrapRightObject ) {
+ if ( this.unwrapRightObject ) {
// if there is a subnetwork, handle must be unwrapped
- handle = ((ReteTuple) handle.getObject()).getLastHandle();
+ handle = ((ReteTuple) handle.getObject()).getLastHandle();
}
- this.accumulate.accumulate( accContext,
+ this.accumulate.accumulate( memory.workingMemoryContext,
+ accContext,
leftTuple,
handle,
workingMemory );
}
}
- final Object result = this.accumulate.getResult( accContext,
+ final Object result = this.accumulate.getResult( memory.workingMemoryContext,
+ accContext,
leftTuple,
workingMemory );
@@ -191,9 +195,9 @@
public void retractTuple(final ReteTuple leftTuple,
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
- final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
- memory.getTupleMemory().remove( leftTuple );
- final AccumulateResult accresult = (AccumulateResult) memory.getCreatedHandles().remove( leftTuple );
+ final AccumulateMemory memory = (AccumulateMemory) workingMemory.getNodeMemory( this );
+ memory.betaMemory.getTupleMemory().remove( leftTuple );
+ final AccumulateResult accresult = (AccumulateResult) memory.betaMemory.getCreatedHandles().remove( leftTuple );
// if tuple was propagated
if ( accresult.handle != null ) {
@@ -221,23 +225,23 @@
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
- final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
- memory.getFactHandleMemory().add( handle );
+ final AccumulateMemory memory = (AccumulateMemory) workingMemory.getNodeMemory( this );
+ memory.betaMemory.getFactHandleMemory().add( handle );
if ( workingMemory.isSequential() ) {
// do nothing here, as we know there are no left tuples at this stage in sequential mode.
return;
- }
+ }
this.constraints.updateFromFactHandle( workingMemory,
handle );
// need to clone the tuples to avoid concurrent modification exceptions
- Entry[] tuples = memory.getTupleMemory().toArray();
+ Entry[] tuples = memory.betaMemory.getTupleMemory().toArray();
for ( int i = 0; i < tuples.length; i++ ) {
ReteTuple tuple = (ReteTuple) tuples[i];
if ( this.constraints.isAllowedCachedRight( tuple ) ) {
- if( this.accumulate.supportsReverse() || context.getType() == PropagationContext.ASSERTION ) {
+ if ( this.accumulate.supportsReverse() || context.getType() == PropagationContext.ASSERTION ) {
modifyTuple( true,
tuple,
handle,
@@ -265,15 +269,15 @@
public void retractObject(final InternalFactHandle handle,
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
- final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
- if ( !memory.getFactHandleMemory().remove( handle ) ) {
+ final AccumulateMemory memory = (AccumulateMemory) workingMemory.getNodeMemory( this );
+ if ( !memory.betaMemory.getFactHandleMemory().remove( handle ) ) {
return;
}
this.constraints.updateFromFactHandle( workingMemory,
handle );
// need to clone the tuples to avoid concurrent modification exceptions
- Entry[] tuples = memory.getTupleMemory().toArray();
+ Entry[] tuples = memory.betaMemory.getTupleMemory().toArray();
for ( int i = 0; i < tuples.length; i++ ) {
ReteTuple tuple = (ReteTuple) tuples[i];
if ( this.constraints.isAllowedCachedRight( tuple ) ) {
@@ -301,8 +305,8 @@
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
- final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
- AccumulateResult accresult = (AccumulateResult) memory.getCreatedHandles().get( leftTuple );
+ final AccumulateMemory memory = (AccumulateMemory) workingMemory.getNodeMemory( this );
+ AccumulateResult accresult = (AccumulateResult) memory.betaMemory.getCreatedHandles().get( leftTuple );
// if tuple was propagated
if ( accresult.handle != null ) {
@@ -316,49 +320,55 @@
accresult.handle = null;
}
- if( this.unwrapRightObject ) {
+ if ( this.unwrapRightObject ) {
// if there is a subnetwork, handle must be unwrapped
- handle = ((ReteTuple) handle.getObject()).getLastHandle();
+ handle = ((ReteTuple) handle.getObject()).getLastHandle();
}
-
+
if ( context.getType() == PropagationContext.ASSERTION ) {
// assertion
if ( accresult.context == null ) {
final Object accContext = this.accumulate.createContext();
- this.accumulate.init( accContext,
+ this.accumulate.init( memory.workingMemoryContext,
+ accContext,
leftTuple,
workingMemory );
accresult.context = accContext;
}
- this.accumulate.accumulate( accresult.context,
+ this.accumulate.accumulate( memory.workingMemoryContext,
+ accresult.context,
leftTuple,
handle,
workingMemory );
- } else if( context.getType() == PropagationContext.MODIFICATION ) {
+ } else if ( context.getType() == PropagationContext.MODIFICATION ) {
// modification
- if( isAssert ) {
- this.accumulate.accumulate( accresult.context,
+ if ( isAssert ) {
+ this.accumulate.accumulate( memory.workingMemoryContext,
+ accresult.context,
leftTuple,
handle,
workingMemory );
} else {
- this.accumulate.reverse( accresult.context,
+ this.accumulate.reverse( memory.workingMemoryContext,
+ accresult.context,
leftTuple,
handle,
workingMemory );
}
} else {
// retraction
- this.accumulate.reverse( accresult.context,
+ this.accumulate.reverse( memory.workingMemoryContext,
+ accresult.context,
leftTuple,
handle,
workingMemory );
}
- final Object result = this.accumulate.getResult( accresult.context,
+ final Object result = this.accumulate.getResult( memory.workingMemoryContext,
+ accresult.context,
leftTuple,
workingMemory );
@@ -389,9 +399,9 @@
public void updateSink(final TupleSink sink,
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
- final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
+ final AccumulateMemory memory = (AccumulateMemory) workingMemory.getNodeMemory( this );
- final Iterator it = memory.getCreatedHandles().iterator();
+ final Iterator it = memory.betaMemory.getCreatedHandles().iterator();
for ( ObjectEntry entry = (ObjectEntry) it.next(); entry != null; entry = (ObjectEntry) it.next() ) {
AccumulateResult accresult = (AccumulateResult) entry.getValue();
@@ -435,9 +445,27 @@
return "[ " + this.getClass().getName() + "(" + this.id + ") ]";
}
+ /**
+ * Creates a BetaMemory for the BetaNode's memory.
+ */
+ public Object createMemory(final RuleBaseConfiguration config) {
+ AccumulateMemory memory = new AccumulateMemory();
+ memory.betaMemory = this.constraints.createBetaMemory( config );
+ memory.workingMemoryContext = this.accumulate.createWorkingMemoryContext();
+ return memory;
+ }
+
+ public static class AccumulateMemory {
+ private static final long serialVersionUID = -5487673715134696118L;
+
+ public Object workingMemoryContext;
+ public BetaMemory betaMemory;
+ }
+
private static class AccumulateResult {
// keeping attributes public just for performance
public InternalFactHandle handle;
public Object context;
}
+
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/CollectNode.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/CollectNode.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/CollectNode.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -234,7 +234,8 @@
for ( int i = 0; i < tuples.length; i++ ) {
ReteTuple tuple = (ReteTuple) tuples[i];
if ( this.constraints.isAllowedCachedRight( tuple ) ) {
- this.modifyTuple( tuple,
+ this.modifyTuple( true,
+ tuple,
handle,
context,
workingMemory );
@@ -266,7 +267,8 @@
ReteTuple tuple = (ReteTuple) tuples[i];
if ( this.constraints.isAllowedCachedRight( tuple ) ) {
- this.modifyTuple( tuple,
+ this.modifyTuple( false,
+ tuple,
handle,
context,
workingMemory );
@@ -283,7 +285,8 @@
* @param context
* @param workingMemory
*/
- public void modifyTuple(final ReteTuple leftTuple,
+ public void modifyTuple(final boolean isAssert,
+ final ReteTuple leftTuple,
InternalFactHandle handle,
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
@@ -311,7 +314,11 @@
} else if ( context.getType() == PropagationContext.RETRACTION ) {
((Collection) result.handle.getObject()).remove( handle.getObject() );
} else if ( context.getType() == PropagationContext.MODIFICATION ) {
- // nothing to do
+ if( isAssert ) {
+ ((Collection) result.handle.getObject()).add( handle.getObject() );
+ } else {
+ ((Collection) result.handle.getObject()).remove( handle.getObject() );
+ }
}
// First alpha node filters
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -122,7 +122,7 @@
this.hashableSinks.remove( (ObjectSinkNode) sink );
}
- if ( this.hashableSinks.isEmpty() ) {
+ if ( this.hashableSinks != null && this.hashableSinks.isEmpty() ) {
this.hashableSinks = null;
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/Rete.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/Rete.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/Rete.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -320,7 +320,8 @@
return;
}
- String pkgName = cls.getPackage().getName();
+ Package pkg = cls.getPackage();
+ String pkgName = (pkg != null) ? pkg.getName() : "";
if ( "org.drools.reteoo".equals( pkgName ) || "org.drools.base".equals( pkgName ) ) {
// We don't shadow internal classes
this.shadowEnabled = false;
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -18,11 +18,11 @@
import java.io.Serializable;
+import org.drools.common.EventSupport;
import org.drools.RuleBaseConfiguration;
import org.drools.common.BinaryHeapQueueAgendaGroup;
import org.drools.common.AgendaItem;
import org.drools.common.BaseNode;
-import org.drools.common.EventSupport;
import org.drools.common.InternalAgenda;
import org.drools.common.InternalAgendaGroup;
import org.drools.common.InternalFactHandle;
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/builder/AccumulateBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/builder/AccumulateBuilder.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/builder/AccumulateBuilder.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -58,8 +58,9 @@
// get builder for the pattern
final ReteooComponentBuilder builder = utils.getBuilderFor( sourcePattern );
- // save tuple source for later if needed
+ // save tuple source and current pattern offset for later if needed
final TupleSource tupleSource = context.getTupleSource();
+ final int currentPatternIndex = context.getCurrentPatternOffset();
// builds the source pattern
builder.build( context,
@@ -103,6 +104,7 @@
existSubNetwort ) ) );
// source pattern was bound, so nulling context
context.setObjectSource( null );
+ context.setCurrentPatternOffset( currentPatternIndex );
}
/**
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/builder/CollectBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/builder/CollectBuilder.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/reteoo/builder/CollectBuilder.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -56,8 +56,9 @@
// get builder for the pattern
final ReteooComponentBuilder builder = utils.getBuilderFor( sourcePattern );
- // save tuple source for later if needed
+ // save tuple source and pattern offset for later if needed
final TupleSource tupleSource = context.getTupleSource();
+ final int currentPatternIndex = context.getCurrentPatternOffset();
// builds the source pattern
builder.build( context,
@@ -97,6 +98,7 @@
existSubNetwort ) ) );
// source pattern was bound, so nulling context
context.setObjectSource( null );
+ context.setCurrentPatternOffset( currentPatternIndex );
}
/**
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/rule/Accumulate.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/rule/Accumulate.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/rule/Accumulate.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -88,11 +88,13 @@
* @param workingMemory
* @throws Exception
*/
- public void init(final Object context,
+ public void init(final Object workingMemoryContext,
+ final Object context,
final Tuple leftTuple,
final WorkingMemory workingMemory) {
try {
- this.accumulator.init( context,
+ this.accumulator.init( workingMemoryContext,
+ context,
leftTuple,
this.requiredDeclarations,
workingMemory );
@@ -111,12 +113,14 @@
* @param workingMemory
* @throws Exception
*/
- public void accumulate(final Object context,
+ public void accumulate(final Object workingMemoryContext,
+ final Object context,
final Tuple leftTuple,
final InternalFactHandle handle,
final WorkingMemory workingMemory) {
try {
- this.accumulator.accumulate( context,
+ this.accumulator.accumulate( workingMemoryContext,
+ context,
leftTuple,
handle,
this.requiredDeclarations,
@@ -137,12 +141,14 @@
* @param workingMemory
* @throws Exception
*/
- public void reverse(final Object context,
+ public void reverse(final Object workingMemoryContext,
+ final Object context,
final Tuple leftTuple,
final InternalFactHandle handle,
final WorkingMemory workingMemory) {
try {
- this.accumulator.reverse( context,
+ this.accumulator.reverse( workingMemoryContext,
+ context,
leftTuple,
handle,
this.requiredDeclarations,
@@ -162,11 +168,13 @@
* @return
* @throws Exception
*/
- public Object getResult(final Object context,
+ public Object getResult(final Object workingMemoryContext,
+ final Object context,
final Tuple leftTuple,
final WorkingMemory workingMemory) {
try {
- return this.accumulator.getResult( context,
+ return this.accumulator.getResult( workingMemoryContext,
+ context,
leftTuple,
this.requiredDeclarations,
workingMemory );
@@ -208,5 +216,9 @@
public Declaration resolveDeclaration(final String identifier) {
return (Declaration) this.sourcePattern.getInnerDeclarations().get( identifier );
}
+
+ public Object createWorkingMemoryContext() {
+ return this.accumulator.createWorkingMemoryContext();
+ }
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -209,7 +209,6 @@
this.localDeclarations,
ctx.workingMemory );
} catch ( final Exception e ) {
- e.printStackTrace();
throw new RuntimeDroolsException( "Exception executing predicate " + this.expression,
e );
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/ruleflow/instance/impl/RuleFlowProcessInstanceImpl.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/ruleflow/instance/impl/RuleFlowProcessInstanceImpl.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/ruleflow/instance/impl/RuleFlowProcessInstanceImpl.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -23,8 +23,8 @@
import java.util.List;
import org.drools.Agenda;
+import org.drools.common.EventSupport;
import org.drools.WorkingMemory;
-import org.drools.common.EventSupport;
import org.drools.common.InternalWorkingMemory;
import org.drools.event.ActivationCancelledEvent;
import org.drools.event.ActivationCreatedEvent;
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/spi/Accumulator.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/spi/Accumulator.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/spi/Accumulator.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -33,6 +33,13 @@
Invoker {
/**
+ * Creates and return a context object for each working memory instance
+ *
+ * @return
+ */
+ public Object createWorkingMemoryContext();
+
+ /**
* Creates the context object for an accumulator session.
* The context is passed as a parameter to every subsequent accumulator
* method call in the same session.
@@ -49,7 +56,8 @@
* @param workingMemory
* @throws Exception
*/
- public void init(Object context,
+ public void init(Object workingMemoryContext,
+ Object context,
Tuple leftTuple,
Declaration[] declarations,
WorkingMemory workingMemory) throws Exception;
@@ -64,7 +72,8 @@
* @param workingMemory
* @throws Exception
*/
- public void accumulate(Object context,
+ public void accumulate(Object workingMemoryContext,
+ Object context,
Tuple leftTuple,
InternalFactHandle handle,
Declaration[] declarations,
@@ -89,7 +98,8 @@
* @param workingMemory
* @throws Exception
*/
- public void reverse(Object context,
+ public void reverse(Object workingMemoryContext,
+ Object context,
Tuple leftTuple,
InternalFactHandle handle,
Declaration[] declarations,
@@ -105,7 +115,8 @@
* @return
* @throws Exception
*/
- public Object getResult(Object context,
+ public Object getResult(Object workingMemoryContext,
+ Object context,
Tuple leftTuple,
Declaration[] declarations,
WorkingMemory workingMemory) throws Exception;
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/util/ChainedProperties.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/util/ChainedProperties.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/util/ChainedProperties.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -23,8 +23,11 @@
this( null,
confFileName );
}
+ public ChainedProperties(ClassLoader classLoader, String confFileName) {
+ this(classLoader, confFileName, true);
+ }
- public ChainedProperties(ClassLoader classLoader, String confFileName) {
+ public ChainedProperties(ClassLoader classLoader, String confFileName, boolean populateDefaults) {
if ( classLoader == null ) {
classLoader = Thread.currentThread().getContextClassLoader();
if ( classLoader == null ) {
@@ -69,6 +72,10 @@
if ( confClassLoader != null && confClassLoader != classLoader ) {
loadProperties( confClassLoader.getResource( "META-INF/drools." + confFileName ), this.props );
}
+
+ if ( !populateDefaults ) {
+ return;
+ }
// load default, only use the first one as there should only be one
confClassLoader = classLoader;
@@ -130,29 +137,38 @@
}
public void mapStartsWith(Map map,
- String startsWith) {
+ String startsWith,
+ boolean includeSubProperties) {
for ( Iterator it = this.props.iterator(); it.hasNext(); ) {
Properties props = (Properties) it.next();
mapStartsWith( map,
props,
- startsWith );
+ startsWith,
+ includeSubProperties );
}
for ( Iterator it = this.defaultProps.iterator(); it.hasNext(); ) {
Properties props = (Properties) it.next();
mapStartsWith( map,
props,
- startsWith );
+ startsWith,
+ includeSubProperties );
}
}
private void mapStartsWith(Map map,
Properties properties,
- String startsWith) {
+ String startsWith,
+ boolean includeSubProperties) {
Enumeration enumeration = properties.propertyNames();
while ( enumeration.hasMoreElements() ) {
String key = (String) enumeration.nextElement();
- if ( key.startsWith( startsWith ) ) {
+ if ( key.startsWith( startsWith ) ) {
+ if ( !includeSubProperties && key.substring( startsWith.length() + 1 ).indexOf( '.' ) > 0 ) {
+ // +1 to the length, as we do allow the direct property, just not ones below it
+ // This key has sub properties beyond the given startsWith, so skip
+ continue;
+ }
if ( !map.containsKey( key ) ) {
map.put( key,
properties.getProperty( key ) );
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/test/java/org/drools/base/EvaluatorFactoryTest.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/test/java/org/drools/base/EvaluatorFactoryTest.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/test/java/org/drools/base/EvaluatorFactoryTest.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -54,6 +54,7 @@
final List list = new ArrayList();
list.add( "foo" );
+ list.add( null );
Collection col = Arrays.asList( new String[] { "foo", "bar", null} );
@@ -63,6 +64,9 @@
{"foo", "!=", "bar", Boolean.TRUE},
{list, "contains", "foo", Boolean.TRUE},
{list, "contains", "bar", Boolean.FALSE},
+ {list, "contains", null, Boolean.TRUE},
+ {null, "contains", "bar", Boolean.FALSE},
+ {null, "contains", null, Boolean.FALSE},
{list, "==", null, Boolean.FALSE},
{list, "!=", null, Boolean.TRUE},
{null, "==", null, Boolean.TRUE},
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/test/java/org/drools/reteoo/AccumulateNodeTest.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/test/java/org/drools/reteoo/AccumulateNodeTest.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/test/java/org/drools/reteoo/AccumulateNodeTest.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -25,6 +25,7 @@
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
import org.drools.common.PropagationContextImpl;
+import org.drools.reteoo.AccumulateNode.AccumulateMemory;
import org.drools.rule.Accumulate;
import org.drools.rule.Declaration;
import org.drools.rule.Pattern;
@@ -86,7 +87,7 @@
this.node.addTupleSink( this.sink );
- this.memory = (BetaMemory) this.workingMemory.getNodeMemory( this.node );
+ this.memory = ((AccumulateMemory) this.workingMemory.getNodeMemory( this.node )).betaMemory;
// check memories are empty
assertEquals( 0,
@@ -372,7 +373,7 @@
objectSource,
this.accumulate );
- final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( accumulateNode );
+ final BetaMemory memory = ((AccumulateMemory) this.workingMemory.getNodeMemory( this.node )).betaMemory;
assertNotNull( memory );
}
@@ -389,7 +390,7 @@
this.workingMemory = new ReteooWorkingMemory( 1,
(ReteooRuleBase) RuleBaseFactory.newRuleBase( conf ) );
- this.memory = (BetaMemory) this.workingMemory.getNodeMemory( this.node );
+ this.memory = ((AccumulateMemory) this.workingMemory.getNodeMemory( this.node )).betaMemory;
final DefaultFactHandle f0 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "cheese" );
final DefaultFactHandle f1 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "other cheese" );
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/test/java/org/drools/reteoo/MockAccumulator.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/test/java/org/drools/reteoo/MockAccumulator.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/test/java/org/drools/reteoo/MockAccumulator.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -57,7 +57,8 @@
return this;
}
- public void init(Object context,
+ public void init(Object workingMemoryContext,
+ Object context,
Tuple leftTuple,
Declaration[] declarations,
WorkingMemory workingMemory) throws Exception {
@@ -66,7 +67,8 @@
this.workingMemory = workingMemory;
}
- public void accumulate(Object context,
+ public void accumulate(Object workingMemoryContext,
+ Object context,
Tuple leftTuple,
InternalFactHandle handle,
Declaration[] declarations,
@@ -75,14 +77,16 @@
this.matchingObjects.add( handle.getObject() );
}
- public Object getResult(Object context,
+ public Object getResult(Object workingMemoryContext,
+ Object context,
Tuple leftTuple,
Declaration[] declarations,
WorkingMemory workingMemory) throws Exception {
return this.matchingObjects;
}
- public void reverse(Object context,
+ public void reverse(Object workingMemoryContext,
+ Object context,
Tuple leftTuple,
InternalFactHandle handle,
Declaration[] declarations,
@@ -95,4 +99,8 @@
return false;
}
+ public Object createWorkingMemoryContext() {
+ return null;
+ }
+
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/test/java/org/drools/reteoo/OtherwiseTest.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/test/java/org/drools/reteoo/OtherwiseTest.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/test/java/org/drools/reteoo/OtherwiseTest.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -66,7 +66,11 @@
}
- public void testOtherwiseFiringWithOneRule() throws Exception {
+ /**
+ * @TODO: this is a future to be implemented in the future
+ * @throws Exception
+ */
+ public void FIXME_testOtherwiseFiringWithOneRule() throws Exception {
final RuleBase ruleBase = RuleBaseFactory.newRuleBase( RuleBase.RETEOO );
final Package pkg = new Package( "Miss Manners" );
@@ -87,7 +91,11 @@
}
- public void testOtherwiseFiringMultipleRules() throws Exception {
+ /**
+ * @TODO: this is a future to be implemented in the future
+ * @throws Exception
+ */
+ public void FIXME_testOtherwiseFiringMultipleRules() throws Exception {
final RuleBase ruleBase = RuleBaseFactory.newRuleBase( RuleBase.RETEOO );
final Package pkg = new Package( "Miss Manners" );
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/ExternalSheetListenerTest.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/ExternalSheetListenerTest.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/ExternalSheetListenerTest.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -12,8 +12,6 @@
import org.drools.Agenda;
import org.drools.FactException;
import org.drools.FactHandle;
-import org.drools.NoSuchFactHandleException;
-import org.drools.NoSuchFactObjectException;
import org.drools.ObjectFilter;
import org.drools.QueryResults;
import org.drools.RuleBase;
@@ -166,8 +164,7 @@
return null;
}
- public FactHandle getFactHandle(Object arg0)
- throws NoSuchFactHandleException {
+ public FactHandle getFactHandle(Object arg0) {
return null;
}
@@ -183,8 +180,7 @@
return null;
}
- public Object getObject(FactHandle arg0)
- throws NoSuchFactObjectException {
+ public Object getObject(FactHandle arg0) {
return null;
}
@@ -354,6 +350,11 @@
// TODO Auto-generated method stub
return null;
}
+
+ public List getRuleFlowEventListeners() {
+ // TODO Auto-generated method stub
+ return null;
+ }
};
}
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/DRLInfo.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/DRLInfo.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/DRLInfo.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -5,6 +5,7 @@
import java.util.Iterator;
import java.util.List;
+import org.drools.compiler.Dialect;
import org.drools.compiler.DroolsError;
import org.drools.lang.descr.FunctionDescr;
import org.drools.lang.descr.PackageDescr;
@@ -12,13 +13,12 @@
import org.drools.rule.LineMappings;
import org.drools.rule.Package;
import org.drools.rule.PackageCompilationData;
-import org.drools.rule.builder.Dialect;
public class DRLInfo {
private static final DroolsError[] EMPTY_DROOLS_ERROR_ARRAY = new DroolsError[0];
private static final List EMPTY_LIST = Collections.unmodifiableList(Collections.EMPTY_LIST);
-
+
private String sourcePathName;
private PackageDescr packageDescr;
private List parserErrors;
@@ -48,14 +48,14 @@
throw new IllegalArgumentException("Null package");
}
this.compiledPackage = compiledPackage;
- this.builderErrors =
+ this.builderErrors =
builderErrors == null ? EMPTY_DROOLS_ERROR_ARRAY : builderErrors;
}
public String getSourcePathName() {
return sourcePathName;
}
-
+
public PackageDescr getPackageDescr() {
return packageDescr;
}
@@ -63,11 +63,11 @@
public List getParserErrors() {
return parserErrors;
}
-
+
public Package getPackage() {
return compiledPackage;
}
-
+
public DroolsError[] getBuilderErrors() {
return builderErrors;
}
@@ -75,11 +75,11 @@
public String getPackageName() {
return packageDescr.getName();
}
-
+
public boolean isCompiled() {
return compiledPackage != null;
}
-
+
public RuleInfo[] getRuleInfos() {
if (ruleInfos == null) {
List ruleInfosList = new ArrayList();
@@ -92,10 +92,10 @@
}
return ruleInfos;
}
-
+
public RuleInfo getRuleInfo(int drlLineNumber) {
RuleInfo[] ruleInfos = getRuleInfos();
-
+
int ruleLine = -1;
RuleInfo result = null;
for (int i = 0; i < ruleInfos.length; i++) {
@@ -108,14 +108,14 @@
}
return result;
}
-
+
public class RuleInfo {
-
+
private final RuleDescr ruleDescr;
// cached entries
private transient String className;
private transient int consequenceJavaLineNumber = -1;
-
+
public RuleInfo(RuleDescr ruleDescr) {
if (ruleDescr == null) {
throw new IllegalArgumentException("Null ruleDescr");
@@ -126,7 +126,7 @@
public Dialect getDialect() {
return ruleDescr.getDialect();
}
-
+
public String getSourcePathName() {
return DRLInfo.this.getSourcePathName();
}
@@ -157,13 +157,13 @@
}
PackageCompilationData data = compiledPackage
.getPackageCompilationData();
-
+
System.out.println("MVEL:DRLInfo.getConsequenceJavaLineNumber: Getting mappings for " + getClassName());
-
+
LineMappings mappings = data.getLineMappings(className);
consequenceJavaLineNumber = mappings.getOffset();
-
- System.out.println("MVEL:DRLInfo.getConsequenceJavaLineNumber:"
+
+ System.out.println("MVEL:DRLInfo.getConsequenceJavaLineNumber:"
+ " Calculated consequenceJavaLineNumber: " + consequenceJavaLineNumber);
System.out.println(" MVEL: startLINE " + mappings.getStartLine());
System.out.println(" MVEL: DRLLine "+getConsequenceDrlLineNumber());
@@ -192,7 +192,7 @@
}
return functionInfos;
}
-
+
public FunctionInfo getFunctionInfo(int drlLineNumber) {
FunctionInfo[] functionInfos = getFunctionInfos();
int functionLine = -1;
@@ -207,14 +207,14 @@
}
return result;
}
-
+
public class FunctionInfo {
-
+
private FunctionDescr functionDescr;
// cached entries
private transient String className;
private transient int javaLineNumber = -1;
-
+
public FunctionInfo(FunctionDescr functionDescr) {
if (functionDescr == null) {
throw new IllegalArgumentException("Null functionDescr");
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/DroolsEclipsePlugin.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/DroolsEclipsePlugin.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/DroolsEclipsePlugin.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -36,6 +36,7 @@
import org.drools.eclipse.preferences.IDroolsConstants;
import org.drools.eclipse.util.ProjectClassLoader;
import org.drools.lang.descr.PackageDescr;
+import org.drools.rule.builder.dialect.java.JavaDialectConfiguration;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceVisitor;
@@ -303,7 +304,8 @@
IJavaProject project = JavaCore.create(resource.getProject());
newLoader = ProjectClassLoader.getProjectClassLoader(project);
String level = project.getOption(JavaCore.COMPILER_COMPLIANCE, true);
- builder_configuration.setJavaLanguageLevel(level);
+ JavaDialectConfiguration javaConf = ( JavaDialectConfiguration ) builder_configuration.getDialectConfiguration( "java" );
+ javaConf.setJavaLanguageLevel(level);
}
try {
builder_configuration.setClassLoader(newLoader);
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-examples/drools-examples-brms/.classpath
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-examples/drools-examples-brms/.classpath 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-examples/drools-examples-brms/.classpath 2007-07-16 00:31:13 UTC (rev 13539)
@@ -3,6 +3,6 @@
<classpathentry excluding="resources/" kind="src" path="src/main"/>
<classpathentry kind="src" path="src/main/resources"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry combineaccessrules="false" kind="src" path="/drools-core"/>
+ <classpathentry kind="con" path="DROOLS/JBoss Rules"/>
<classpathentry kind="output" path="bin"/>
</classpath>
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-jbrms/src/main/java/org/drools/brms/server/builder/BRMSPackageBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-jbrms/src/main/java/org/drools/brms/server/builder/BRMSPackageBuilder.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-jbrms/src/main/java/org/drools/brms/server/builder/BRMSPackageBuilder.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -24,6 +24,7 @@
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+import java.util.Properties;
import java.util.jar.JarEntry;
import java.util.jar.JarInputStream;
@@ -38,6 +39,8 @@
import org.drools.repository.PackageItem;
import org.drools.repository.RulesRepositoryException;
import org.drools.rule.MapBackedClassLoader;
+import org.drools.rule.builder.dialect.java.JavaDialectConfiguration;
+import org.drools.util.ChainedProperties;
/**
* This decorates the drools-compiler PackageBuilder
@@ -51,16 +54,16 @@
private List<DSLMappingFile> dslFiles;
private DefaultExpander expander;
- /** the default compiler. This is nominally JANINO but can be overridden by setting drools.compiler to ECLIPSE */
- static int COMPILER = getPreferredBRMSCompiler();
-
/**
* This will give you a fresh new PackageBuilder
* using the given classpath.
*/
public static BRMSPackageBuilder getInstance(List<JarInputStream> classpath) {
-
- MapBackedClassLoader loader = new MapBackedClassLoader( BRMSPackageBuilder.class.getClassLoader() );
+ ClassLoader parentClassLoader = Thread.currentThread().getContextClassLoader();
+ if ( parentClassLoader == null ) {
+ parentClassLoader = BRMSPackageBuilder.class.getClassLoader();
+ }
+ MapBackedClassLoader loader = new MapBackedClassLoader( parentClassLoader );
try {
for ( JarInputStream jis : classpath ) {
JarEntry entry = null;
@@ -80,12 +83,23 @@
} catch ( IOException e ) {
throw new RulesRepositoryException( e );
}
+
- PackageBuilderConfiguration config = new PackageBuilderConfiguration();
- config.setClassLoader( loader );
- config.setCompiler( COMPILER );
+ // See if we can find a packagebuilder.conf
+ // We do this manually here, as we cannot rely on PackageBuilder doing this correctly
+ // note this chainedProperties already checks System properties too
+ ChainedProperties chainedProperties = new ChainedProperties( BRMSPackageBuilder.class.getClassLoader(), // pass this as it searches currentThread anyway
+ "packagebuilder.conf",
+ false ); // false means it ignores any default values
+
+ // the default compiler. This is nominally JANINO but can be overridden by setting drools.dialect.java.compiler to ECLIPSE
+ Properties properties = new Properties();
+ properties.setProperty( "drools.dialect.java.compiler",
+ chainedProperties.getProperty( "drools.dialect.java.compiler", "JANINO" ) );
+ PackageBuilderConfiguration pkgConf = new PackageBuilderConfiguration( properties );
+ pkgConf.setClassLoader( loader );
- return new BRMSPackageBuilder( config );
+ return new BRMSPackageBuilder( pkgConf );
}
@@ -95,10 +109,10 @@
* mainly in tomcat, grrr...
*/
static int getPreferredBRMSCompiler() {
- if (System.getProperty( "drools.compiler", "JANINO" ).equals( "ECLIPSE" )) {
- return PackageBuilderConfiguration.ECLIPSE;
+ if (System.getProperty( "drools.dialect.java.compiler", "JANINO" ).equals( "ECLIPSE" )) {
+ return JavaDialectConfiguration.ECLIPSE;
} else {
- return PackageBuilderConfiguration.JANINO;
+ return JavaDialectConfiguration.JANINO;
}
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-jbrms/src/test/java/org/drools/brms/server/builder/BRMSPackageBuilderTest.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-jbrms/src/test/java/org/drools/brms/server/builder/BRMSPackageBuilderTest.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-jbrms/src/test/java/org/drools/brms/server/builder/BRMSPackageBuilderTest.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -28,6 +28,7 @@
import org.drools.lang.descr.PackageDescr;
import org.drools.lang.dsl.DSLMappingFile;
import org.drools.rule.Package;
+import org.drools.rule.builder.dialect.java.JavaDialectConfiguration;
public class BRMSPackageBuilderTest extends TestCase {
@@ -35,6 +36,14 @@
public void testEmpty() {
}
+
+ public void setUp() {
+ System.getProperties().remove( "drools.dialect.java.compiler" );
+ }
+
+ public void tearDown() {
+ System.getProperties().remove( "drools.dialect.java.compiler" );
+ }
// @FIXME rule "abc" is null and the Packge has no namespace
public void testPartialPackage() throws Exception {
@@ -51,7 +60,8 @@
builder.addPackageFromDrl( new StringReader(header) );
assertFalse(builder.hasErrors());
- assertEquals(PackageBuilderConfiguration.JANINO, builder.getPackageBuilderConfiguration().getCompiler());
+ JavaDialectConfiguration javaConf = ( JavaDialectConfiguration ) builder.getPackageBuilderConfiguration().getDialectConfiguration( "java" );
+ assertEquals(JavaDialectConfiguration.JANINO, javaConf.getCompiler());
String ruleAtom = "rule foo \n when \n Person() \n then \n System.out.println(42); end";
builder.addPackageFromDrl( new StringReader(ruleAtom) );
@@ -105,16 +115,52 @@
assertNotNull(builder.getDSLExpander());
}
- public void testDefaultCompiler() {
- assertEquals(PackageBuilderConfiguration.JANINO, BRMSPackageBuilder.COMPILER);
- assertEquals(PackageBuilderConfiguration.JANINO, BRMSPackageBuilder.getPreferredBRMSCompiler());
- System.setProperty( "drools.compiler", "ECLIPSE" );
- assertEquals(PackageBuilderConfiguration.ECLIPSE, BRMSPackageBuilder.getPreferredBRMSCompiler());
- System.setProperty( "drools.compiler", "" );
- assertEquals(PackageBuilderConfiguration.JANINO, BRMSPackageBuilder.getPreferredBRMSCompiler());
+// public void testDefaultCompiler() {
+// assertEquals(JavaDialectConfiguration.JANINO, BRMSPackageBuilder.COMPILER);
+// assertEquals(PackageBuilderConfiguration.JANINO, BRMSPackageBuilder.getPreferredBRMSCompiler());
+// System.setProperty( "drools.compiler", "ECLIPSE" );
+// assertEquals(PackageBuilderConfiguration.ECLIPSE, BRMSPackageBuilder.getPreferredBRMSCompiler());
+// System.setProperty( "drools.compiler", "" );
+// assertEquals(PackageBuilderConfiguration.JANINO, BRMSPackageBuilder.getPreferredBRMSCompiler());
+// }
+
+ // @FIXME rule "abc" is null and the Packge has no namespace
+ public void testDefaultCompiler() throws Exception {
+
+ JarInputStream jis = new JarInputStream( this.getClass().getResourceAsStream( "/billasurf.jar" ) );
+ List<JarInputStream> l = new ArrayList<JarInputStream>();
+ l.add( jis );
+ BRMSPackageBuilder builder = BRMSPackageBuilder.getInstance( l );
+
+ PackageDescr pc = new PackageDescr("foo.bar");
+ builder.addPackage( pc );
+
+ String header = "import com.billasurf.Person\n import com.billasurf.Board";
+ builder.addPackageFromDrl( new StringReader(header) );
+ assertFalse(builder.hasErrors());
+
+ JavaDialectConfiguration javaConf = ( JavaDialectConfiguration ) builder.getPackageBuilderConfiguration().getDialectConfiguration( "java" );
+ assertEquals(JavaDialectConfiguration.JANINO, javaConf.getCompiler());
}
+
+ public void testEclipseCompiler() throws Exception {
+ System.setProperty( "drools.dialect.java.compiler", "ECLIPSE" );
+ JarInputStream jis = new JarInputStream( this.getClass().getResourceAsStream( "/billasurf.jar" ) );
+ List<JarInputStream> l = new ArrayList<JarInputStream>();
+ l.add( jis );
+ BRMSPackageBuilder builder = BRMSPackageBuilder.getInstance( l );
+
+ PackageDescr pc = new PackageDescr("foo.bar");
+ builder.addPackage( pc );
+
+ String header = "import com.billasurf.Person\n import com.billasurf.Board";
+ builder.addPackageFromDrl( new StringReader(header) );
+ assertFalse(builder.hasErrors());
+
+ JavaDialectConfiguration javaConf = ( JavaDialectConfiguration ) builder.getPackageBuilderConfiguration().getDialectConfiguration( "java" );
+ assertEquals(JavaDialectConfiguration.ECLIPSE, javaConf.getCompiler());
+ }
-
}
\ No newline at end of file
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-jsr94/src/main/java/org/drools/jsr94/rules/ObjectFilterAdapter.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-jsr94/src/main/java/org/drools/jsr94/rules/ObjectFilterAdapter.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-jsr94/src/main/java/org/drools/jsr94/rules/ObjectFilterAdapter.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -2,6 +2,11 @@
import javax.rules.ObjectFilter;
+/**
+ * Adaptor class, that makes JSR94 ObjectFilters work from a delegating Drools ObjectFilter
+ * @author mproctor
+ *
+ */
public class ObjectFilterAdapter implements org.drools.ObjectFilter {
private ObjectFilter filter;
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-jsr94/src/main/java/org/drools/jsr94/rules/StatefulRuleSessionImpl.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-jsr94/src/main/java/org/drools/jsr94/rules/StatefulRuleSessionImpl.java 2007-07-15 20:54:16 UTC (rev 13538)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-jsr94/src/main/java/org/drools/jsr94/rules/StatefulRuleSessionImpl.java 2007-07-16 00:31:13 UTC (rev 13539)
@@ -32,7 +32,6 @@
import org.drools.FactException;
import org.drools.FactHandle;
-import org.drools.NoSuchFactObjectException;
import org.drools.StatefulSession;
import org.drools.WorkingMemory;
import org.drools.jsr94.rules.admin.RuleExecutionSetImpl;
More information about the jboss-svn-commits
mailing list