[jboss-svn-commits] JBL Code SVN: r20781 - in labs/jbossrules/trunk/drools-clips/src: test/java/org/drools/clips and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Jun 25 23:13:04 EDT 2008
Author: mark.proctor at jboss.com
Date: 2008-06-25 23:13:04 -0400 (Wed, 25 Jun 2008)
New Revision: 20781
Modified:
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsDialect.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsEvalBuilder.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/ShellTest.java
Log:
JBRULES-720 Clips Parser
-test nodes now work
Modified: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsDialect.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsDialect.java 2008-06-26 03:12:51 UTC (rev 20780)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsDialect.java 2008-06-26 03:13:04 UTC (rev 20781)
@@ -1,6 +1,7 @@
package org.drools.rule.builder.dialect.clips;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -16,8 +17,21 @@
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageRegistry;
import org.drools.compiler.ReturnValueDescr;
+import org.drools.lang.descr.AccumulateDescr;
+import org.drools.lang.descr.AndDescr;
import org.drools.lang.descr.BaseDescr;
+import org.drools.lang.descr.CollectDescr;
+import org.drools.lang.descr.EntryPointDescr;
+import org.drools.lang.descr.EvalDescr;
+import org.drools.lang.descr.ExistsDescr;
+import org.drools.lang.descr.ForallDescr;
+import org.drools.lang.descr.FromDescr;
+import org.drools.lang.descr.FunctionDescr;
+import org.drools.lang.descr.NotDescr;
+import org.drools.lang.descr.OrDescr;
+import org.drools.lang.descr.PatternDescr;
import org.drools.lang.descr.PredicateDescr;
+import org.drools.lang.descr.QueryDescr;
import org.drools.lang.descr.ReturnValueRestrictionDescr;
import org.drools.rule.Package;
import org.drools.rule.builder.ConsequenceBuilder;
@@ -34,9 +48,12 @@
private static final ClipsEvalBuilder EVAL_BUILDER = new ClipsEvalBuilder();
private static final ClipsReturnValueBuilder RETURN_VALUE_BUILDER = new ClipsReturnValueBuilder();
private static final ClipsPredicateBuilder PREDICATE_BUILDER = new ClipsPredicateBuilder();
-
+
// a map of registered builders
private static Map builders;
+ static {
+ initBuilder();
+ }
public final static String ID = "clips";
@@ -49,7 +66,57 @@
ID );
setLanguageLevel( 5 );
}
+
+ public static void initBuilder() {
+ if ( builders != null ) {
+ return;
+ }
+ // statically adding all builders to the map
+ // but in the future we can move that to a configuration
+ // if we want to
+ builders = new HashMap();
+
+ builders.put( AndDescr.class,
+ GE_BUILDER );
+
+ builders.put( OrDescr.class,
+ GE_BUILDER );
+
+ builders.put( NotDescr.class,
+ GE_BUILDER );
+
+ builders.put( ExistsDescr.class,
+ GE_BUILDER );
+
+ builders.put( PatternDescr.class,
+ PATTERN_BUILDER );
+
+ builders.put( FromDescr.class,
+ FROM_BUILDER );
+
+ builders.put( QueryDescr.class,
+ QUERY_BUILDER );
+
+ builders.put( AccumulateDescr.class,
+ ACCUMULATE_BUILDER );
+
+ builders.put( EvalDescr.class,
+ EVAL_BUILDER );
+
+ builders.put( CollectDescr.class,
+ COLLECT_BUILDER );
+
+ builders.put( ForallDescr.class,
+ FORALL_BUILDER );
+
+ builders.put( FunctionDescr.class,
+ FUNCTION_BUILDER );
+
+ builders.put( EntryPointDescr.class,
+ ENTRY_POINT_BUILDER );
+ }
+
public String getId() {
return ID;
}
@@ -57,6 +124,10 @@
public Map getBuilders() {
return this.builders;
}
+
+ public RuleConditionBuilder getBuilder(final Class clazz) {
+ return (RuleConditionBuilder) this.builders.get( clazz );
+ }
public ConsequenceBuilder getConsequenceBuilder() {
return this.CONSEQUENCE_BUILDER;
Modified: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsEvalBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsEvalBuilder.java 2008-06-26 03:12:51 UTC (rev 20780)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsEvalBuilder.java 2008-06-26 03:13:04 UTC (rev 20781)
@@ -24,10 +24,15 @@
import org.drools.base.mvel.DroolsMVELFactory;
import org.drools.base.mvel.MVELEvalExpression;
+import org.drools.clips.Appendable;
+import org.drools.clips.FunctionHandlers;
+import org.drools.clips.LispForm;
+import org.drools.clips.StringBuilderAppendable;
import org.drools.compiler.Dialect;
import org.drools.compiler.DescrBuildError;
import org.drools.lang.descr.BaseDescr;
import org.drools.lang.descr.EvalDescr;
+import org.drools.lang.descr.PredicateDescr;
import org.drools.rule.Declaration;
import org.drools.rule.EvalCondition;
import org.drools.rule.MVELDialectRuntimeData;
@@ -71,6 +76,11 @@
public RuleConditionElement build(final RuleBuildContext context,
final BaseDescr descr,
final Pattern prefixPattern) {
+ Appendable builder = new StringBuilderAppendable();
+ EvalDescr edescr = (EvalDescr) descr;
+ FunctionHandlers.dump( (LispForm) edescr.getContent(),
+ builder );
+ edescr.setContent( builder.toString() );
return super.build(context, descr, prefixPattern);
}
Modified: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/ShellTest.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/ShellTest.java 2008-06-26 03:12:51 UTC (rev 20780)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/ShellTest.java 2008-06-26 03:13:04 UTC (rev 20781)
@@ -355,6 +355,16 @@
assertEquals( "hello mark",
new String( this.baos.toByteArray() ) );
}
+
+ public void testTest() {
+ this.shell.eval( "(import org.drools.Person)" );
+ this.shell.eval( "(defrule testRule1 (Person (age ?age1) ) (Person (name ?name) (age ?age2) ) (test(eq ?age1 (+ ?age2 3) )) => (printout t hello) )" );
+ this.shell.eval( "(assert (Person (name mark) (age 32) ) )" );
+ this.shell.eval( "(assert (Person (name bob) (age 35) ) )" );
+ this.shell.eval( "(run)" );
+ assertEquals( "hello",
+ new String( this.baos.toByteArray() ) );
+ }
public void testRun() {
this.shell.eval( "(run)" );
More information about the jboss-svn-commits
mailing list