[jboss-svn-commits] JBL Code SVN: r12734 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/xml and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jun 21 03:00:09 EDT 2007
Author: fmeyer
Date: 2007-06-21 03:00:09 -0400 (Thu, 21 Jun 2007)
New Revision: 12734
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ForallHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PatternHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/XmlPackageReaderTest.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseCollect.xml
Log:
JBRULES-882
JBRULES-880
- support 'forall' Conditional Element
- corrected DRLDumper|XMLDumper to handle with forall CE
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java 2007-06-21 05:22:49 UTC (rev 12733)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java 2007-06-21 07:00:09 UTC (rev 12734)
@@ -23,6 +23,7 @@
import org.drools.lang.descr.AndDescr;
import org.drools.lang.descr.AttributeDescr;
import org.drools.lang.descr.CollectDescr;
+import org.drools.lang.descr.ForallDescr;
import org.drools.lang.descr.PatternDescr;
import org.drools.lang.descr.EvalDescr;
import org.drools.lang.descr.ExistsDescr;
@@ -147,9 +148,13 @@
}
- //TODO FM: FIXME
- public void visitForall() {
-
+ public void visitForallDescr(final ForallDescr descr) {
+ this.template = new String();
+ this.template += "\t\tforall ( ";
+ this.template += DrlDumper.eol;
+ this.template += processDescrList( descr.getDescrs() );
+ this.template += "\t\t)";
+ this.template += DrlDumper.eol;
}
public void visitFieldBindingDescr(final FieldBindingDescr descr) {
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ForallHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ForallHandler.java 2007-06-21 05:22:49 UTC (rev 12733)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ForallHandler.java 2007-06-21 07:00:09 UTC (rev 12734)
@@ -3,12 +3,18 @@
*/
package org.drools.xml;
+import org.drools.lang.descr.ConditionalElementDescr;
+import org.drools.lang.descr.ExistsDescr;
import org.drools.lang.descr.ForallDescr;
import org.drools.lang.descr.AndDescr;
+import org.drools.lang.descr.PatternDescr;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.ListIterator;
/**
* @author fernandomeyer
@@ -38,6 +44,16 @@
String localName) throws SAXException {
final Configuration config = this.xmlPackageReader.endConfiguration();
+ final ForallDescr forallDescr = (ForallDescr) this.xmlPackageReader.getCurrent();
+
+ final LinkedList parents = this.xmlPackageReader.getParents();
+ final ListIterator it = parents.listIterator( parents.size() );
+ it.previous();
+ final Object parent = it.previous();
+
+ final ConditionalElementDescr parentDescr = (ConditionalElementDescr) parent;
+ parentDescr.addDescr( forallDescr );
+
return null;
}
@@ -57,8 +73,10 @@
this.xmlPackageReader.startConfiguration( localName,
attrs );
+
+ ForallDescr forallDescr = new ForallDescr();
- return null;
+ return forallDescr;
}
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PatternHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PatternHandler.java 2007-06-21 05:22:49 UTC (rev 12733)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PatternHandler.java 2007-06-21 07:00:09 UTC (rev 12734)
@@ -46,6 +46,8 @@
this.validParents.add( NotDescr.class );
this.validParents.add( ExistsDescr.class );
this.validParents.add( CollectDescr.class );
+ this.validParents.add( ForallDescr.class );
+
this.validPeers = new HashSet();
this.validPeers.add( null );
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java 2007-06-21 05:22:49 UTC (rev 12733)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java 2007-06-21 07:00:09 UTC (rev 12734)
@@ -23,6 +23,7 @@
import org.drools.lang.descr.AndDescr;
import org.drools.lang.descr.AttributeDescr;
import org.drools.lang.descr.CollectDescr;
+import org.drools.lang.descr.ForallDescr;
import org.drools.lang.descr.PatternDescr;
import org.drools.lang.descr.EvalDescr;
import org.drools.lang.descr.ExistsDescr;
@@ -127,8 +128,8 @@
}
//TODO FM: FIXME
- public void visitForall() {
- System.out.println("Collect Descr");
+ public void visitForallDescr(final ForallDescr descr) {
+ this.template = "<forall>" + processDescrList( descr.getDescrs() ) + "</forall>";
}
public void visitEvalDescr(final EvalDescr descr) {
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/XmlPackageReaderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/XmlPackageReaderTest.java 2007-06-21 05:22:49 UTC (rev 12733)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/XmlPackageReaderTest.java 2007-06-21 07:00:09 UTC (rev 12734)
@@ -8,6 +8,7 @@
import org.drools.RuleBase;
import org.drools.RuleBaseConfiguration;
import org.drools.RuleBaseFactory;
+import org.drools.lang.DrlDumper;
import org.drools.lang.descr.AndDescr;
import org.drools.lang.descr.AttributeDescr;
import org.drools.lang.descr.CollectDescr;
@@ -15,6 +16,7 @@
import org.drools.lang.descr.ExistsDescr;
import org.drools.lang.descr.FieldBindingDescr;
import org.drools.lang.descr.FieldConstraintDescr;
+import org.drools.lang.descr.ForallDescr;
import org.drools.lang.descr.FunctionDescr;
import org.drools.lang.descr.GlobalDescr;
import org.drools.lang.descr.ImportDescr;
@@ -43,6 +45,29 @@
config );
}
+ public void testParseForall() throws Exception {
+ final XmlPackageReader xmlPackageReader = new XmlPackageReader();
+ xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseForall.xml" ) ) );
+ final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
+ assertNotNull( packageDescr );
+
+ XmlDumper xmldumper = new XmlDumper();
+ String str = xmldumper.dump( packageDescr );
+
+ System.out.println(str);
+
+ RuleDescr obj = (RuleDescr) packageDescr.getRules().get( 0 );
+ ForallDescr forall = (ForallDescr) obj.getLhs().getDescrs().get( 0 );
+ List forallPaterns = forall.getDescrs();
+
+ PatternDescr pattarnState = (PatternDescr) forallPaterns.get( 0 );
+ PatternDescr personState = (PatternDescr) forallPaterns.get( 1 );
+ PatternDescr cheeseState = (PatternDescr) forallPaterns.get( 2);
+
+ assertEquals( pattarnState.getObjectType(), "State" );
+ assertEquals( personState.getObjectType(), "Person" );
+ assertEquals( cheeseState.getObjectType(), "Cheese" );
+ }
public void testParseExists() throws Exception {
final XmlPackageReader xmlPackageReader = new XmlPackageReader();
@@ -117,18 +142,7 @@
}
-// //TODO: FM FIXME
-// public void testParseForall() throws Exception {
-// final XmlPackageReader xmlPackageReader = new XmlPackageReader();
-// xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseForall.xml" ) ) );
-// final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
-// assertNotNull( packageDescr );
//
-// RuleDescr obj = (RuleDescr) packageDescr.getRules().get( 0 );
-// assertEquals( obj.getLhs().getDescrs().size(),
-// 3 );
-// }
-//
// //TODO: FM FIXME
// public void testAccumulate() throws Exception {
// final XmlPackageReader xmlPackageReader = new XmlPackageReader();
Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseCollect.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseCollect.xml 2007-06-21 05:22:49 UTC (rev 12733)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseCollect.xml 2007-06-21 07:00:09 UTC (rev 12734)
@@ -1,28 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
-<package name="com.sample"
- xmlns="http://drools.org/drools-4.0"
+<package name="com.sample" xmlns="http://drools.org/drools-4.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:schemaLocation="http://drools.org/drools-4.0 drools-4.0.xsd">
-<rule name="simple_rule">
+ <import name="import java.util.List"/>
+ <import name="org.drools.Cheese"/>
+ <import name="org.drools.Cheesery"/>
- <lhs>
- <pattern object-type="Person" >
- <field-constraint field-name="hair">
- <literal-restriction evaluator="==" value="pink" />
- </field-constraint>
- <from>
- <collect>
- <pattern identifier="cheese" object-type="Cheese" >
- <field-constraint field-name="type">
- <literal-restriction evaluator="==" value="1" />
- </field-constraint>
- </pattern>
- </collect>
- </from>
- </lhs>
- <rhs>
- list.add( $cheese ); </rhs>
+ <global identifier="cheesery" type="Cheesery"/>
+ <global identifier="list" type="List"/>
+
+ <rule name="simple_rule">
+ <rule-attribute name="salience" value="10"/>
+ <rule-attribute name="no-loop" value="true"/>
+ <rule-attribute name="agenda-group" value="agenda-group"/>
+ <rule-attribute name="activation-group" value="activation-group"/>
+
+ <lhs>
+ <pattern identifier="cheese" object-type="Cheese" >
+ <field-constraint field-name="type">
+ <literal-restriction evaluator="==" value="1"/>
+ </field-constraint>
+ <from>
+ <collect>
+ <pattern object-type="Person">
+ <field-constraint field-name="hair">
+ <literal-restriction evaluator="==" value="pink" />
+ </field-constraint>
+ </pattern>
+ </collect>
+ </from>
+ </pattern>
+ </lhs>
+ <rhs> list.add( $cheese ); </rhs>
</rule>
</package>
\ No newline at end of file
More information about the jboss-svn-commits
mailing list