[jboss-svn-commits] JBL Code SVN: r12687 - in labs/jbossrules/trunk/drools-compiler/src: main/resources/META-INF and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Jun 19 03:08:19 EDT 2007
Author: fmeyer
Date: 2007-06-19 03:08:19 -0400 (Tue, 19 Jun 2007)
New Revision: 12687
Added:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/CollectHandler.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/FromHandler.java
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/AndHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/LiteralRestrictionHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/RestrictionConnectiveHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ReturnValueRestrictionHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/VariableRestrictionsHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlPackageReader.java
labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-4.0.xsd
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTest.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_ParseFrom.xml
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseRule.xml
Log:
JBRULES-880 - Tests and resources for xml parser
JBRULES-883 - <and> <or> nesting inside CEs
JBRULES-886 - 'from' keyword support
JBRULES-887 - Add "collect" conditional element
JBRULES-934 - 'accumulate' keyword support
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/AndHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/AndHandler.java 2007-06-19 06:49:51 UTC (rev 12686)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/AndHandler.java 2007-06-19 07:08:19 UTC (rev 12687)
@@ -41,10 +41,8 @@
this.validParents.add( QueryDescr.class );
this.validParents.add( RuleDescr.class );
this.validParents.add( OrDescr.class );
- this.validParents.add( AndDescr.class );
this.validParents.add( LiteralRestrictionHandler.class );
-
this.validPeers = new HashSet();
this.validPeers.add( null );
this.validPeers.add( AndDescr.class );
@@ -78,16 +76,15 @@
final ListIterator it = parents.listIterator( parents.size() );
it.previous();
final Object parent = it.previous();
-
-
- if (parent instanceof RuleDescr || parent instanceof QueryDescr) {
+
+ if ( parent instanceof RuleDescr || parent instanceof QueryDescr ) {
final RuleDescr ruleDescr = (RuleDescr) parent;
ruleDescr.setLhs( andDescr );
} else if ( parent instanceof ConditionalElementDescr ) {
final ConditionalElementDescr ceDescr = (ConditionalElementDescr) parent;
ceDescr.addDescr( andDescr );
}
-
+
return null;
}
Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/CollectHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/CollectHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/CollectHandler.java 2007-06-19 07:08:19 UTC (rev 12687)
@@ -0,0 +1,61 @@
+/**
+ *
+ */
+package org.drools.xml;
+
+import java.util.HashSet;
+
+import org.drools.lang.descr.CollectDescr;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+/**
+ * @author fernandomeyer
+ *
+ */
+public class CollectHandler extends BaseAbstractHandler implements Handler {
+
+ CollectHandler(final XmlPackageReader xmlPackageReader) {
+ this.xmlPackageReader = xmlPackageReader;
+
+ if ( (this.validParents == null) && (this.validPeers == null) ) {
+ this.validParents = new HashSet();
+
+// this.validParents.add( LiteralRestrictionHandler.class );
+
+ this.validPeers = new HashSet();
+// this.validPeers.add( null );
+// this.validPeers.add( AndDescr.class );
+
+ this.allowNesting = true;
+ }
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.drools.xml.Handler#end(java.lang.String, java.lang.String)
+ */
+ public Object end(String uri,
+ String localName) throws SAXException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.xml.Handler#generateNodeFor()
+ */
+ public Class generateNodeFor() {
+ return CollectDescr.class;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.xml.Handler#start(java.lang.String, java.lang.String, org.xml.sax.Attributes)
+ */
+ public Object start(String uri,
+ String localName,
+ Attributes attrs) throws SAXException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ForallHandler.java 2007-06-19 07:08:19 UTC (rev 12687)
@@ -0,0 +1,65 @@
+/**
+ *
+ */
+package org.drools.xml;
+
+import java.util.HashSet;
+
+import org.drools.lang.descr.ForallDescr;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+/**
+ * @author fernandomeyer
+ *
+ */
+public class ForallHandler extends BaseAbstractHandler implements Handler {
+
+ ForallHandler(final XmlPackageReader xmlPackageReader) {
+ this.xmlPackageReader = xmlPackageReader;
+
+ if ( (this.validParents == null) && (this.validPeers == null) ) {
+ this.validParents = new HashSet();
+
+// this.validParents.add( LiteralRestrictionHandler.class );
+
+ this.validPeers = new HashSet();
+// this.validPeers.add( null );
+// this.validPeers.add( AndDescr.class );
+
+ this.allowNesting = true;
+ }
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.drools.xml.Handler#end(java.lang.String, java.lang.String)
+ */
+ public Object end(String uri,
+ String localName) throws SAXException {
+ final Configuration config = this.xmlPackageReader.endConfiguration();
+
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.xml.Handler#generateNodeFor()
+ */
+ public Class generateNodeFor() {
+ return ForallDescr.class;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.xml.Handler#start(java.lang.String, java.lang.String, org.xml.sax.Attributes)
+ */
+ public Object start(String uri,
+ String localName,
+ Attributes attrs) throws SAXException {
+
+ this.xmlPackageReader.startConfiguration( localName,
+ attrs );
+
+ return null;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FromHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FromHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FromHandler.java 2007-06-19 07:08:19 UTC (rev 12687)
@@ -0,0 +1,61 @@
+/**
+ *
+ */
+package org.drools.xml;
+
+import java.util.HashSet;
+
+import org.drools.lang.descr.FromDescr;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+/**
+ * @author fernandomeyer
+ *
+ */
+public class FromHandler extends BaseAbstractHandler implements Handler {
+
+ FromHandler(final XmlPackageReader xmlPackageReader) {
+ this.xmlPackageReader = xmlPackageReader;
+
+ if ( (this.validParents == null) && (this.validPeers == null) ) {
+ this.validParents = new HashSet();
+
+// this.validParents.add( LiteralRestrictionHandler.class );
+
+ this.validPeers = new HashSet();
+// this.validPeers.add( null );
+// this.validPeers.add( AndDescr.class );
+
+ this.allowNesting = true;
+ }
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.drools.xml.Handler#end(java.lang.String, java.lang.String)
+ */
+ public Object end(String uri,
+ String localName) throws SAXException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.xml.Handler#generateNodeFor()
+ */
+ public Class generateNodeFor() {
+ return FromDescr.class;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.xml.Handler#start(java.lang.String, java.lang.String, org.xml.sax.Attributes)
+ */
+ public Object start(String uri,
+ String localName,
+ Attributes attrs) throws SAXException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/LiteralRestrictionHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/LiteralRestrictionHandler.java 2007-06-19 06:49:51 UTC (rev 12686)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/LiteralRestrictionHandler.java 2007-06-19 07:08:19 UTC (rev 12687)
@@ -39,15 +39,14 @@
if ( (this.validParents == null) && (this.validPeers == null) ) {
this.validParents = new HashSet();
this.validParents.add( FieldConstraintDescr.class );
- this.validParents.add( AndDescr.class );
- this.validParents.add( OrDescr.class );
+ this.validParents.add( RestrictionConnectiveDescr.class );
this.validPeers = new HashSet();
this.validPeers.add( null );
this.validPeers.add( LiteralRestrictionDescr.class );
this.validPeers.add( ReturnValueRestrictionDescr.class );
this.validPeers.add( VariableRestrictionDescr.class );
- this.validPeers.add( RestrictionConnectiveDescr.class );
+ //this.validPeers.add( RestrictionConnectiveDescr.class );
this.allowNesting = false;
}
}
@@ -85,20 +84,15 @@
final LinkedList parents = this.xmlPackageReader.getParents();
final ListIterator it = parents.listIterator( parents.size() );
it.previous();
-
- //TODO: correct classcastexception in AndDescr.
Object parent = it.previous();
-
+
if (parent instanceof FieldConstraintDescr) {
final FieldConstraintDescr fieldConstriantDescr = (FieldConstraintDescr) parent;
fieldConstriantDescr.addRestriction( literalDescr );
- } else if ( parent instanceof ConditionalElementDescr ) {
- final ConditionalElementDescr conditionDescr = (ConditionalElementDescr) parent;
-
-
-
-// System.out.println("LiteralRestriction");
+ } else if ( parent instanceof RestrictionConnectiveDescr ) {
+ final RestrictionConnectiveDescr restrictionDescr = (RestrictionConnectiveDescr) parent;
+ restrictionDescr.addRestriction( literalDescr );
}
return null;
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/RestrictionConnectiveHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/RestrictionConnectiveHandler.java 2007-06-19 06:49:51 UTC (rev 12686)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/RestrictionConnectiveHandler.java 2007-06-19 07:08:19 UTC (rev 12687)
@@ -20,8 +20,10 @@
import java.util.LinkedList;
import java.util.ListIterator;
+import org.drools.lang.descr.AndDescr;
import org.drools.lang.descr.FieldConstraintDescr;
import org.drools.lang.descr.LiteralRestrictionDescr;
+import org.drools.lang.descr.OrDescr;
import org.drools.lang.descr.RestrictionConnectiveDescr;
import org.drools.lang.descr.ReturnValueRestrictionDescr;
import org.drools.lang.descr.VariableRestrictionDescr;
@@ -38,6 +40,11 @@
class RestrictionConnectiveHandler extends BaseAbstractHandler
implements
Handler {
+
+ public final static String AND = "and-restriction-connective";
+ public final static String OR = "or-restriction-connective";
+
+
RestrictionConnectiveHandler(final XmlPackageReader xmlPackageReader) {
this.xmlPackageReader = xmlPackageReader;
@@ -51,7 +58,7 @@
this.validPeers.add( ReturnValueRestrictionDescr.class );
this.validPeers.add( VariableRestrictionDescr.class );
this.validPeers.add( RestrictionConnectiveDescr.class );
- this.allowNesting = false;
+ this.allowNesting = true;
}
}
@@ -61,20 +68,13 @@
this.xmlPackageReader.startConfiguration( localName,
attrs );
- final String connective = attrs.getValue( "connective" );
- if ( connective == null || connective.trim().equals( "" ) ) {
- throw new SAXParseException( "<restriction-connective> requires a 'connective' attribute",
- this.xmlPackageReader.getLocator() );
- }
-
RestrictionConnectiveDescr connectiveDescr = null;
- if ( connective.equals( "or" ) ) {
+ if ( localName.equals( RestrictionConnectiveHandler.OR ) ) {
connectiveDescr = new RestrictionConnectiveDescr( RestrictionConnectiveDescr.OR );
- } else if (connective.equals( "and" )) {
+ } else if (localName.equals( RestrictionConnectiveHandler.AND )) {
connectiveDescr = new RestrictionConnectiveDescr( RestrictionConnectiveDescr.AND );
} else {
- throw new SAXParseException( "<connective-restriction> requires a valid 'connective' value (and,or): " + connective,
- this.xmlPackageReader.getLocator() );
+ System.out.println("IDIOTA");
}
return connectiveDescr;
@@ -87,12 +87,21 @@
final RestrictionConnectiveDescr connectiveDescr = (RestrictionConnectiveDescr) this.xmlPackageReader.getCurrent();
final LinkedList parents = this.xmlPackageReader.getParents();
- final ListIterator it = parents.listIterator( parents.size() );
- it.previous();
- final FieldConstraintDescr fieldConstriantDescr = (FieldConstraintDescr) it.previous();
+ int size = parents.size();
+ final ListIterator ite = parents.listIterator( parents.size() );
+
+ ite.previous();
- fieldConstriantDescr.addRestriction( connectiveDescr );
+ Object obj = ite.previous();
+ if ( obj instanceof FieldConstraintDescr ) {
+ final FieldConstraintDescr fieldConstriantDescr = (FieldConstraintDescr) obj;
+ fieldConstriantDescr.addRestriction( connectiveDescr );
+ } else if (obj instanceof RestrictionConnectiveDescr ) {
+ final RestrictionConnectiveDescr restconective = (RestrictionConnectiveDescr) obj;
+ restconective.addRestriction( connectiveDescr );
+ }
+
return null;
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ReturnValueRestrictionHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ReturnValueRestrictionHandler.java 2007-06-19 06:49:51 UTC (rev 12686)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ReturnValueRestrictionHandler.java 2007-06-19 07:08:19 UTC (rev 12687)
@@ -46,8 +46,7 @@
if ( (this.validParents == null) && (this.validPeers == null) ) {
this.validParents = new HashSet();
this.validParents.add( FieldConstraintDescr.class );
- this.validParents.add( AndDescr.class );
- this.validParents.add( OrDescr.class );
+ this.validParents.add( RestrictionConnectiveDescr.class );
this.validPeers = new HashSet();
this.validPeers.add( null );
@@ -101,7 +100,13 @@
if (parent instanceof FieldConstraintDescr) {
final FieldConstraintDescr fieldConstraintDescr = (FieldConstraintDescr) parent;
fieldConstraintDescr.addRestriction( returnValueDescr );
- } else {
+ } else if ( parent instanceof RestrictionConnectiveDescr ) {
+ final RestrictionConnectiveDescr rcDescr = (RestrictionConnectiveDescr) parent;
+ rcDescr.addRestriction( returnValueDescr );
+ }
+
+
+ else {
System.out.println("ReturnValueRestriction");
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/VariableRestrictionsHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/VariableRestrictionsHandler.java 2007-06-19 06:49:51 UTC (rev 12686)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/VariableRestrictionsHandler.java 2007-06-19 07:08:19 UTC (rev 12687)
@@ -45,9 +45,8 @@
if ( (this.validParents == null) && (this.validPeers == null) ) {
this.validParents = new HashSet();
this.validParents.add( FieldConstraintDescr.class );
- this.validParents.add( AndDescr.class);
- this.validParents.add( OrDescr.class);
-
+ this.validParents.add( RestrictionConnectiveDescr.class );
+
this.validPeers = new HashSet();
this.validPeers.add( null );
this.validPeers.add( LiteralRestrictionDescr.class );
@@ -97,8 +96,9 @@
if ( parent instanceof FieldConstraintDescr ) {
final FieldConstraintDescr fieldConstraintDescr = (FieldConstraintDescr) parent;
fieldConstraintDescr.addRestriction( variableDescr );
- } else {
- System.out.println("variableRestriction class");
+ } else if (parent instanceof RestrictionConnectiveDescr ) {
+ final RestrictionConnectiveDescr restrictionConDescr = (RestrictionConnectiveDescr) parent;
+ restrictionConDescr.addRestriction( variableDescr );
}
return 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-19 06:49:51 UTC (rev 12686)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java 2007-06-19 07:08:19 UTC (rev 12687)
@@ -221,9 +221,17 @@
}
public void visitRestrictionConnectiveDescr(final RestrictionConnectiveDescr descr) {
- this.template = "<restriction-connective connective=";
- this.template += descr.getConnective() == RestrictionConnectiveDescr.OR ? "\"or\"" : "\"and\"" ;
- this.template += "/>" + XmlDumper.eol;
+ this.template = new String();
+ List restrictions = descr.getRestrictions();
+ String xmlTag = descr.getConnective() == RestrictionConnectiveDescr.OR
+ ? RestrictionConnectiveHandler.OR
+ : RestrictionConnectiveHandler.AND;
+
+ if ( restrictions != Collections.EMPTY_LIST ) {
+ this.template = "<" + xmlTag + ">";
+ this.template += processDescrList( restrictions );
+ this.template += "</" + xmlTag + ">";
+ }
}
private String processDescrList(final List descr) {
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlPackageReader.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlPackageReader.java 2007-06-19 06:49:51 UTC (rev 12686)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlPackageReader.java 2007-06-19 07:08:19 UTC (rev 12687)
@@ -124,6 +124,13 @@
// Conditional Elements
this.handlers.put( "lhs",
new AndHandler( this ) );
+
+ this.handlers.put( "and-restriction-connective",
+ new RestrictionConnectiveHandler( this ) );
+
+ this.handlers.put( "or-restriction-connective",
+ new RestrictionConnectiveHandler( this) );
+
this.handlers.put( "and",
new AndHandler( this ) );
this.handlers.put( "or",
@@ -150,11 +157,8 @@
new ReturnValueRestrictionHandler( this ) );
this.handlers.put( "field-binding",
new FieldBindingHandler( this ) );
- this.handlers.put( "restriction-connective",
- new RestrictionConnectiveHandler( this ) );
initEntityResolver();
-
}
/**
@@ -259,8 +263,7 @@
throw new RuntimeException( "parser must be namespace-aware" );
}
- localParser.parse( in,
- this );
+ localParser.parse( in, this );
return this.packageDescr;
}
@@ -374,8 +377,7 @@
this.current = getParent( handler.generateNodeFor() );
- final Object node = handler.end( uri,
- localName );
+ final Object node = handler.end( uri, localName );
// next
if ( node != null && !this.lastWasEndElement ) {
Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-4.0.xsd
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-4.0.xsd 2007-06-19 06:49:51 UTC (rev 12686)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-4.0.xsd 2007-06-19 07:08:19 UTC (rev 12687)
@@ -99,12 +99,8 @@
<xs:element ref="drools:exists"/>
<xs:element ref="drools:eval"/>
<xs:element ref="drools:pattern"/>
- <xs:element ref="drools:field-binding"/>
<xs:element ref="drools:field-constraint"/>
- <xs:element ref="drools:predicate"/>
- <xs:element ref="drools:literal-restriction"/>
- <xs:element ref="drools:variable-restriction"/>
- <xs:element ref="drools:return-value-restriction"/>
+
</xs:choice>
</xs:complexType>
</xs:element>
@@ -117,12 +113,7 @@
<xs:element ref="drools:exists"/>
<xs:element ref="drools:eval"/>
<xs:element ref="drools:pattern"/>
- <xs:element ref="drools:field-binding"/>
<xs:element ref="drools:field-constraint"/>
- <xs:element ref="drools:predicate"/>
- <xs:element ref="drools:literal-restriction"/>
- <xs:element ref="drools:variable-restriction"/>
- <xs:element ref="drools:return-value-restriction"/>
</xs:choice>
</xs:complexType>
</xs:element>
@@ -134,8 +125,7 @@
</xs:sequence>
</xs:complexType>
</xs:element>
-
-
+
<xs:element name="exists">
<xs:complexType>
<xs:sequence>
@@ -154,23 +144,40 @@
<xs:element name="collect">
<xs:complexType>
- <xs:choice maxOccurs="unbounded" minOccurs="0">
+ <xs:choice maxOccurs="1" minOccurs="1">
<xs:element ref="drools:pattern"/>
</xs:choice>
</xs:complexType>
</xs:element>
-<!-- Still working
+ <xs:element name="expression" type="xs:string"/>
+
+ <xs:group name="accumulate">
+ <xs:sequence>
+ <xs:element ref="drools:pattern"/>
+ <xs:element name="init" type="xs:string"/>
+ <xs:element name="action" type="xs:string"/>
+ <xs:element name="result" type="xs:string"/>
+ </xs:sequence>
+ </xs:group>
+
+
+ <xs:element name="accumulate">
+ <xs:complexType>
+ <xs:group ref="drools:accumulate"/>
+ </xs:complexType>
+ </xs:element>
+
<xs:element name="from">
<xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="source" type="xs:string" use="required"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
+ <xs:choice maxOccurs="1" minOccurs="0">
+ <xs:element ref="drools:collect"/>
+ <xs:element ref="drools:expression"/>
+ <xs:element ref="drools:accumulate"/>
+ </xs:choice>
+ </xs:complexType>
</xs:element>
--->
+
<xs:element name="eval" type="xs:string"/>
@@ -180,9 +187,10 @@
<xs:element ref="drools:field-binding"/>
<xs:element ref="drools:field-constraint"/>
<xs:element ref="drools:predicate"/>
+ <xs:element ref="drools:from"/>
<xs:element ref="drools:or"/>
<xs:element ref="drools:and"/>
- <!-- xs:element ref="drools:from"/ -->
+
</xs:choice>
<xs:attribute name="field-name" type="xs:string" use="optional"/>
<xs:attribute name="identifier" type="xs:string" use="optional"/>
@@ -196,8 +204,9 @@
<xs:element ref="drools:literal-restriction"/>
<xs:element ref="drools:variable-restriction"/>
<xs:element ref="drools:return-value-restriction"/>
- <xs:element ref="drools:restriction-connective"/>
- </xs:choice>
+ <xs:element ref="drools:and-restriction-connective"/>
+ <xs:element ref="drools:or-restriction-connective"/>
+ </xs:choice>
<xs:attribute name="field-name" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
@@ -209,12 +218,31 @@
</xs:complexType>
</xs:element>
+ <xs:element name="and-restriction-connective">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
+ <xs:element ref="drools:or-restriction-connective"/>
+ <xs:element ref="drools:literal-restriction"/>
+ <xs:element ref="drools:variable-restriction"/>
+ <xs:element ref="drools:return-value-restriction"/>
- <xs:element name="restriction-connective">
- <xs:complexType>
- <xs:attribute name="connective" type="xs:string" use="required"/>
- </xs:complexType>
- </xs:element>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="or-restriction-connective">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
+ <xs:element ref="drools:and-restriction-connective"/>
+
+ <xs:element ref="drools:literal-restriction"/>
+ <xs:element ref="drools:variable-restriction"/>
+ <xs:element ref="drools:return-value-restriction"/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+
+
<xs:element name="literal-restriction">
<xs:complexType>
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTest.java 2007-06-19 06:49:51 UTC (rev 12686)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTest.java 2007-06-19 07:08:19 UTC (rev 12687)
@@ -31,6 +31,16 @@
String buffer = readFile("test_ParseRule.xml");
+ System.out.println("-------------");
+
+ System.out.println(buffer);
+
+ System.out.println("-------------");
+
+ System.out.println(result);
+
+ System.out.println("-------------");
+
assertEqualsIgnoreWhitespace( buffer, result );
assertNotNull( result );
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-19 06:49:51 UTC (rev 12686)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/XmlPackageReaderTest.java 2007-06-19 07:08:19 UTC (rev 12687)
@@ -83,27 +83,26 @@
assertEquals( obj.getLhs().getDescrs().size(), 3);
}
- /*
- public void testParseFrom() throws Exception {
- final XmlPackageReader xmlPackageReader = new XmlPackageReader();
- xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseFrom.xml" ) ) );
- final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
- assertNotNull( packageDescr );
- assertEquals( "com.sample", packageDescr.getName() );
- fail();
- }
+
+// public void testParseFrom() throws Exception {
+// final XmlPackageReader xmlPackageReader = new XmlPackageReader();
+// xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseFrom.xml" ) ) );
+// final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
+// assertNotNull( packageDescr );
+// assertEquals( "com.sample", packageDescr.getName() );
+// fail();
+// }
+//
+//
+// public void testParseCollect() throws Exception {
+// final XmlPackageReader xmlPackageReader = new XmlPackageReader();
+// xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseCollect.xml" ) ) );
+// final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
+// assertNotNull( packageDescr );
+// assertEquals( "com.sample", packageDescr.getName() );
+// fail();
+// }
-
- public void testParseCollect() throws Exception {
- final XmlPackageReader xmlPackageReader = new XmlPackageReader();
- xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseCollect.xml" ) ) );
- final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
- assertNotNull( packageDescr );
- assertEquals( "com.sample", packageDescr.getName() );
- fail();
- }
- */
-
public void testParseImport() throws Exception {
final XmlPackageReader xmlPackageReader = new XmlPackageReader();
Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseFrom.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseFrom.xml 2007-06-19 06:49:51 UTC (rev 12686)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseFrom.xml 2007-06-19 07:08:19 UTC (rev 12687)
@@ -18,19 +18,43 @@
<rule-attribute name="activation-group" value="activation-group" />
<lhs>
- <pattern object-type="Cheese">
- <from source="unordered-fact">
- person
+ <pattern identifier="cheese" object-type="Cheese" >
+ <from>
+ <expression>
+ cheesery.getCheeses()
+ </expression>
</from>
+ </pattern>
- </pattern>
<pattern identifier="cheese" object-type="Cheese" >
<from>
- <statement>
- </statement>
+ <collect>
+ <pattern object-type="Person">
+ <field-constraint field-name="hair">
+ <literal-restriction evaluator="==" value="pink" />
+ </field-constraint>
+ </pattern>
+ </collect>
</from>
</pattern>
- </lhs>
+
+ <pattern identifier="cheese" object-type="Cheese">
+ <from>
+ <accumulate>
+ <pattern object-type="Cheese"></pattern>
+ <init>
+ int total = 0;
+ </init>
+ <action>
+ total += $cheese.getPrice();
+ </action>
+ <result>
+ new Integer( total ) )
+ </result>
+ </accumulate>
+ </from>
+ </pattern>
+ </lhs>
<rhs>
list1.add( $cheese );
</rhs>
Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseRule.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseRule.xml 2007-06-19 06:49:51 UTC (rev 12686)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseRule.xml 2007-06-19 07:08:19 UTC (rev 12687)
@@ -31,13 +31,16 @@
<or>
<and>
<field-constraint field-name="a">
- <literal-restriction evaluator=">" value="60" />
- <restriction-connective connective="and" />
- <literal-restriction evaluator="<" value="70" />
- <restriction-connective connective="or"/>
- <literal-restriction evaluator="<" value="50" />
- <restriction-connective connective="and"/>
- <literal-restriction evaluator=">" value="55" />
+ <or-restriction-connective>
+ <and-restriction-connective>
+ <literal-restriction evaluator=">" value="60" />
+ <literal-restriction evaluator="<" value="70" />
+ </and-restriction-connective>
+ <and-restriction-connective>
+ <literal-restriction evaluator="<" value="50" />
+ <literal-restriction evaluator=">" value="55" />
+ </and-restriction-connective>
+ </or-restriction-connective>
</field-constraint>
<field-constraint field-name="a3">
@@ -61,9 +64,10 @@
</field-constraint>
<field-constraint field-name="a3">
- <literal-restriction evaluator="==" value="yellow"/>
- <restriction-connective connective="and"/>
- <literal-restriction evaluator="==" value="blue" />
+ <or-restriction-connective>
+ <literal-restriction evaluator="==" value="yellow"/>
+ <literal-restriction evaluator="==" value="blue" />
+ </or-restriction-connective>
</field-constraint>
</and>
</or>
@@ -72,9 +76,10 @@
<pattern identifier="foo3" object-type="Bar" >
<field-constraint field-name="a">
- <literal-restriction evaluator="==" value="3" />
- <restriction-connective connective="or"/>
- <literal-restriction evaluator="==" value="4" />
+ <or-restriction-connective>
+ <literal-restriction evaluator="==" value="3" />
+ <literal-restriction evaluator="==" value="4" />
+ </or-restriction-connective>
</field-constraint>
<field-constraint field-name="a3">
<literal-restriction evaluator="==" value="hello" />
@@ -94,9 +99,10 @@
<pattern identifier="foo5" object-type="Bar" >
<field-constraint field-name="b">
- <return-value-restriction evaluator="==" >a4 + 1</return-value-restriction>
- <restriction-connective connective="or"/>
- <variable-restriction evaluator=">" identifier="a4" />
+ <or-restriction-connective>
+ <return-value-restriction evaluator="==" >a4 + 1</return-value-restriction>
+ <variable-restriction evaluator=">" identifier="a4" />
+ </or-restriction-connective>
</field-constraint>
</pattern>
More information about the jboss-svn-commits
mailing list