[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