From: <jbo...@li...> - 2006-04-20 23:33:44
|
Author: mar...@jb... Date: 2006-04-20 19:33:30 -0400 (Thu, 20 Apr 2006) New Revision: 3865 Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/EvalHandler.java labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/QueryHandler.java labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseLhs.xml labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseQuery.xml labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseRhs.xml labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseRule.xml Removed: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseSimpleRule.xml 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/BaseAbstractHandler.java labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/BoundVariableHandler.java labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ColumnHandler.java labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Configuration.java labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/DefaultConfiguration.java labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExistsHandler.java labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FieldBindingHandler.java labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FunctionHandler.java labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Handler.java labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/LhsHandler.java labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/LiteralHandler.java labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/NotHandler.java labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/OrHandler.java labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PackageHandler.java labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PredicateHandler.java labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ReturnValueHandler.java labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/RuleHandler.java labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlPackageReader.java labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/XmlPackageReaderTest.java Log: JBRULES-61 XML Bindings -Complete now except xsd 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 2006-04-20 22:39:48 UTC (rev 3864) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/AndHandler.java 2006-04-20 23:33:30 UTC (rev 3865) @@ -27,12 +27,11 @@ import org.drools.lang.descr.ExistsDescr; import org.drools.lang.descr.NotDescr; import org.drools.lang.descr.OrDescr; +import org.drools.lang.descr.QueryDescr; import org.drools.lang.descr.RuleDescr; import org.xml.sax.Attributes; import org.xml.sax.SAXException; -import java.util.Iterator; - /** * @author mproctor * @@ -47,6 +46,7 @@ if ( (this.validParents == null) && (validPeers == null) ) { this.validParents = new HashSet(); + this.validParents.add( QueryDescr.class ); this.validParents.add( RuleDescr.class ); this.validParents.add( OrDescr.class ); this.validParents.add( AndDescr.class ); @@ -59,7 +59,7 @@ this.validPeers.add( ExistsDescr.class ); this.validPeers.add( EvalDescr.class ); this.validPeers.add( ColumnDescr.class ); - + this.allowNesting = true; } } @@ -70,29 +70,29 @@ xmlPackageReader.startConfiguration( localName, attrs ); AndDescr andDescr = new AndDescr(); - + return andDescr; } public Object end(String uri, String localName) throws SAXException { Configuration config = xmlPackageReader.endConfiguration(); - - AndDescr andDescr = ( AndDescr ) this.xmlPackageReader.getCurrent(); - + + AndDescr andDescr = (AndDescr) this.xmlPackageReader.getCurrent(); + LinkedList parents = this.xmlPackageReader.getParents(); ListIterator it = parents.listIterator( parents.size() ); it.previous(); - Object parent = it.previous(); - - if ( parent.getClass() != RuleDescr.class ) { - ConditionalElementDescr ceDescr = ( ConditionalElementDescr ) parent; + Object parent = it.previous(); + + if ( parent.getClass() == RuleDescr.class || parent.getClass() == QueryDescr.class ) { + RuleDescr ruleDescr = (RuleDescr) parent; + ruleDescr.setLhs( andDescr ); + } else { + ConditionalElementDescr ceDescr = (ConditionalElementDescr) parent; ceDescr.addDescr( andDescr ); - } else { - RuleDescr ruleDescr = ( RuleDescr ) parent; - ruleDescr.setLhs( andDescr ); } - + return null; } Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/BaseAbstractHandler.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/BaseAbstractHandler.java 2006-04-20 22:39:48 UTC (rev 3864) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/BaseAbstractHandler.java 2006-04-20 23:33:30 UTC (rev 3865) @@ -1,4 +1,5 @@ package org.drools.xml; + /* * Copyright 2005 JBoss Inc * @@ -15,33 +16,27 @@ * limitations under the License. */ - - import java.util.Set; /** * @author mproctor * */ -abstract class BaseAbstractHandler -{ +abstract class BaseAbstractHandler { protected XmlPackageReader xmlPackageReader; - protected Set validPeers; - protected Set validParents; - protected boolean allowNesting; + protected Set validPeers; + protected Set validParents; + protected boolean allowNesting; - public Set getValidParents() - { + public Set getValidParents() { return this.validParents; } - public Set getValidPeers() - { + public Set getValidPeers() { return this.validPeers; } - public boolean allowNesting() - { + public boolean allowNesting() { return this.allowNesting; } } \ No newline at end of file Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/BoundVariableHandler.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/BoundVariableHandler.java 2006-04-20 22:39:48 UTC (rev 3864) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/BoundVariableHandler.java 2006-04-20 23:33:30 UTC (rev 3865) @@ -20,26 +20,16 @@ import java.util.LinkedList; import java.util.ListIterator; -import org.drools.lang.descr.AndDescr; import org.drools.lang.descr.BoundVariableDescr; import org.drools.lang.descr.ColumnDescr; -import org.drools.lang.descr.ConditionalElementDescr; -import org.drools.lang.descr.EvalDescr; -import org.drools.lang.descr.ExistsDescr; import org.drools.lang.descr.FieldBindingDescr; import org.drools.lang.descr.LiteralDescr; -import org.drools.lang.descr.NotDescr; -import org.drools.lang.descr.OrDescr; import org.drools.lang.descr.PredicateDescr; import org.drools.lang.descr.ReturnValueDescr; -import org.drools.lang.descr.RuleDescr; -import org.drools.rule.LiteralConstraint; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; -import java.util.Iterator; - /** * @author mproctor * @@ -62,7 +52,7 @@ this.validPeers.add( PredicateDescr.class ); this.validPeers.add( ReturnValueDescr.class ); this.validPeers.add( FieldBindingDescr.class ); - this.validPeers.add( BoundVariableDescr.class ); + this.validPeers.add( BoundVariableDescr.class ); this.allowNesting = false; } } @@ -72,46 +62,45 @@ Attributes attrs) throws SAXException { xmlPackageReader.startConfiguration( localName, attrs ); - - String fieldName = attrs.getValue( "field-name" ); - if ( fieldName == null || fieldName.trim( ).equals( "" ) ) - { - throw new SAXParseException( - "<bound-variable> requires a 'field-name' attribute", xmlPackageReader.getLocator( ) ); + + String fieldName = attrs.getValue( "field-name" ); + if ( fieldName == null || fieldName.trim().equals( "" ) ) { + throw new SAXParseException( "<bound-variable> requires a 'field-name' attribute", + xmlPackageReader.getLocator() ); } - - String evaluator = attrs.getValue( "evaluator" ); - if ( evaluator == null || evaluator.trim( ).equals( "" ) ) - { - throw new SAXParseException( - "<bound-variable> requires an 'evaluator' attribute", xmlPackageReader.getLocator( ) ); - } - - String identifier = attrs.getValue( "identifier" ); - if ( identifier == null || identifier.trim( ).equals( "" ) ) - { - throw new SAXParseException( - "<bound-variable> requires an 'identifier' attribute", xmlPackageReader.getLocator( ) ); - } - - BoundVariableDescr boundVariableDescr = new BoundVariableDescr( fieldName, evaluator, identifier); - + + String evaluator = attrs.getValue( "evaluator" ); + if ( evaluator == null || evaluator.trim().equals( "" ) ) { + throw new SAXParseException( "<bound-variable> requires an 'evaluator' attribute", + xmlPackageReader.getLocator() ); + } + + String identifier = attrs.getValue( "identifier" ); + if ( identifier == null || identifier.trim().equals( "" ) ) { + throw new SAXParseException( "<bound-variable> requires an 'identifier' attribute", + xmlPackageReader.getLocator() ); + } + + BoundVariableDescr boundVariableDescr = new BoundVariableDescr( fieldName, + evaluator, + identifier ); + return boundVariableDescr; } public Object end(String uri, String localName) throws SAXException { - Configuration config = xmlPackageReader.endConfiguration(); + Configuration config = xmlPackageReader.endConfiguration(); - BoundVariableDescr boundVariableDescr = ( BoundVariableDescr ) this.xmlPackageReader.getCurrent(); - + BoundVariableDescr boundVariableDescr = (BoundVariableDescr) this.xmlPackageReader.getCurrent(); + LinkedList parents = this.xmlPackageReader.getParents(); ListIterator it = parents.listIterator( parents.size() ); it.previous(); - ColumnDescr columnDescr = ( ColumnDescr ) it.previous(); - - columnDescr.addDescr( boundVariableDescr ); - + ColumnDescr columnDescr = (ColumnDescr) it.previous(); + + columnDescr.addDescr( boundVariableDescr ); + return null; } Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ColumnHandler.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ColumnHandler.java 2006-04-20 22:39:48 UTC (rev 3864) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ColumnHandler.java 2006-04-20 23:33:30 UTC (rev 3865) @@ -27,13 +27,10 @@ import org.drools.lang.descr.ExistsDescr; import org.drools.lang.descr.NotDescr; import org.drools.lang.descr.OrDescr; -import org.drools.lang.descr.RuleDescr; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; -import java.util.Iterator; - /** * @author mproctor * @@ -61,7 +58,7 @@ this.validPeers.add( ExistsDescr.class ); this.validPeers.add( EvalDescr.class ); this.validPeers.add( ColumnDescr.class ); - + this.allowNesting = false; } } @@ -71,42 +68,41 @@ Attributes attrs) throws SAXException { xmlPackageReader.startConfiguration( localName, attrs ); - + String objectType = attrs.getValue( "object-type" ); - if ( objectType == null || objectType.trim( ).equals( "" ) ) - { - throw new SAXParseException( - "<column> requires an 'object-type' attribute", xmlPackageReader.getLocator( ) ); - } + if ( objectType == null || objectType.trim().equals( "" ) ) { + throw new SAXParseException( "<column> requires an 'object-type' attribute", + xmlPackageReader.getLocator() ); + } ColumnDescr columnDescr = null; - + String identifier = attrs.getValue( "identifier" ); - if ( identifier == null || identifier.trim( ).equals( "" ) ) - { - columnDescr = new ColumnDescr( objectType ); + if ( identifier == null || identifier.trim().equals( "" ) ) { + columnDescr = new ColumnDescr( objectType ); } else { - columnDescr = new ColumnDescr( objectType, identifier ); - } - + columnDescr = new ColumnDescr( objectType, + identifier ); + } + return columnDescr; } public Object end(String uri, String localName) throws SAXException { Configuration config = xmlPackageReader.endConfiguration(); - - ColumnDescr columnDescr = ( ColumnDescr ) this.xmlPackageReader.getCurrent(); - + + ColumnDescr columnDescr = (ColumnDescr) this.xmlPackageReader.getCurrent(); + LinkedList parents = this.xmlPackageReader.getParents(); ListIterator it = parents.listIterator( parents.size() ); it.previous(); - Object parent = it.previous(); - - ConditionalElementDescr parentDescr = ( ConditionalElementDescr ) parent; + Object parent = it.previous(); + + ConditionalElementDescr parentDescr = (ConditionalElementDescr) parent; parentDescr.addDescr( columnDescr ); - + return null; } Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Configuration.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Configuration.java 2006-04-20 22:39:48 UTC (rev 3864) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Configuration.java 2006-04-20 23:33:30 UTC (rev 3865) @@ -1,4 +1,5 @@ package org.drools.xml; + /* * Copyright 2005 JBoss Inc * @@ -15,8 +16,6 @@ * limitations under the License. */ - - /** * Configuration passed to a configurable <code>SemanticComponent</code>. * @@ -31,15 +30,14 @@ * * @version $Id: Configuration.java,v 1.5 2005/01/23 18:16:20 mproctor Exp $ */ -public interface Configuration -{ +public interface Configuration { // ---------------------------------------------------------------------- // Constants // ---------------------------------------------------------------------- /** Empty <code>Configuration</code> array. */ Configuration[] EMPTY_ARRAY = new Configuration[0]; - + // ---------------------------------------------------------------------- // Interface // ---------------------------------------------------------------------- @@ -101,5 +99,5 @@ * @return All children nodes, otherwise an empty array if this node * contains no children. */ - Configuration[] getChildren(); + Configuration[] getChildren(); } \ No newline at end of file Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/DefaultConfiguration.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/DefaultConfiguration.java 2006-04-20 22:39:48 UTC (rev 3864) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/DefaultConfiguration.java 2006-04-20 23:33:30 UTC (rev 3865) @@ -1,4 +1,5 @@ package org.drools.xml; + /* * Copyright 2005 JBoss Inc * @@ -15,8 +16,6 @@ * limitations under the License. */ - - import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/EvalHandler.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/EvalHandler.java 2006-04-20 22:39:48 UTC (rev 3864) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/EvalHandler.java 2006-04-20 23:33:30 UTC (rev 3865) @@ -0,0 +1,102 @@ +package org.drools.xml; + +/* + * 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.HashSet; +import java.util.LinkedList; +import java.util.ListIterator; + +import org.drools.lang.descr.AndDescr; +import org.drools.lang.descr.ColumnDescr; +import org.drools.lang.descr.ConditionalElementDescr; +import org.drools.lang.descr.EvalDescr; +import org.drools.lang.descr.ExistsDescr; +import org.drools.lang.descr.NotDescr; +import org.drools.lang.descr.OrDescr; +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; + +/** + * @author mproctor + * + * TODO To change the template for this generated type comment go to Window - + * Preferences - Java - Code Style - Code Templates + */ +class EvalHandler extends BaseAbstractHandler + implements + Handler { + EvalHandler(XmlPackageReader xmlPackageReader) { + this.xmlPackageReader = xmlPackageReader; + + if ( (this.validParents == null) && (validPeers == null) ) { + this.validParents = new HashSet(); + this.validParents.add( AndDescr.class ); + this.validParents.add( OrDescr.class ); + + this.validPeers = new HashSet(); + this.validPeers.add( null ); + this.validPeers.add( AndDescr.class ); + this.validPeers.add( OrDescr.class ); + this.validPeers.add( NotDescr.class ); + this.validPeers.add( ExistsDescr.class ); + this.validPeers.add( EvalDescr.class ); + this.validPeers.add( ColumnDescr.class ); + + this.allowNesting = true; + } + } + + public Object start(String uri, + String localName, + Attributes attrs) throws SAXException { + xmlPackageReader.startConfiguration( localName, + attrs ); + + String expression = attrs.getValue( "expression" ); + + if ( expression == null || expression.trim().equals( "" ) ) { + throw new SAXParseException( "<eval> must have some content", + xmlPackageReader.getLocator() ); + } + + EvalDescr evalDescr = new EvalDescr( expression ); + + return evalDescr; + } + + public Object end(String uri, + String localName) throws SAXException { + Configuration config = xmlPackageReader.endConfiguration(); + + EvalDescr evalDescr = (EvalDescr) this.xmlPackageReader.getCurrent(); + + LinkedList parents = this.xmlPackageReader.getParents(); + ListIterator it = parents.listIterator( parents.size() ); + it.previous(); + Object parent = it.previous(); + + ConditionalElementDescr parentDescr = (ConditionalElementDescr) parent; + parentDescr.addDescr( evalDescr ); + + return null; + } + + public Class generateNodeFor() { + return EvalDescr.class; + } +} \ No newline at end of file Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExistsHandler.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExistsHandler.java 2006-04-20 22:39:48 UTC (rev 3864) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ExistsHandler.java 2006-04-20 23:33:30 UTC (rev 3865) @@ -25,16 +25,12 @@ import org.drools.lang.descr.ConditionalElementDescr; import org.drools.lang.descr.EvalDescr; import org.drools.lang.descr.ExistsDescr; -import org.drools.lang.descr.ExistsDescr; import org.drools.lang.descr.NotDescr; import org.drools.lang.descr.OrDescr; -import org.drools.lang.descr.RuleDescr; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; -import java.util.Iterator; - /** * @author mproctor * Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FieldBindingHandler.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FieldBindingHandler.java 2006-04-20 22:39:48 UTC (rev 3864) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FieldBindingHandler.java 2006-04-20 23:33:30 UTC (rev 3865) @@ -52,7 +52,7 @@ this.validPeers.add( PredicateDescr.class ); this.validPeers.add( ReturnValueDescr.class ); this.validPeers.add( FieldBindingDescr.class ); - this.validPeers.add( BoundVariableDescr.class ); + this.validPeers.add( BoundVariableDescr.class ); this.allowNesting = false; } } @@ -62,41 +62,38 @@ Attributes attrs) throws SAXException { xmlPackageReader.startConfiguration( localName, attrs ); - - String identifier = attrs.getValue( "identifier" ); - if ( identifier == null || identifier.trim( ).equals( "" ) ) - { - throw new SAXParseException( - "<field-binding> requires an 'identifier' attribute", xmlPackageReader.getLocator( ) ); - } - - String fieldName = attrs.getValue( "field-name" ); - if ( fieldName == null || fieldName.trim( ).equals( "" ) ) - { - throw new SAXParseException( - "<field-binding> requires a 'field-name' attribute", xmlPackageReader.getLocator( ) ); - } - - - - FieldBindingDescr fieldBindingDescr = new FieldBindingDescr( fieldName, identifier ); - + + String identifier = attrs.getValue( "identifier" ); + if ( identifier == null || identifier.trim().equals( "" ) ) { + throw new SAXParseException( "<field-binding> requires an 'identifier' attribute", + xmlPackageReader.getLocator() ); + } + + String fieldName = attrs.getValue( "field-name" ); + if ( fieldName == null || fieldName.trim().equals( "" ) ) { + throw new SAXParseException( "<field-binding> requires a 'field-name' attribute", + xmlPackageReader.getLocator() ); + } + + FieldBindingDescr fieldBindingDescr = new FieldBindingDescr( fieldName, + identifier ); + return fieldBindingDescr; } public Object end(String uri, String localName) throws SAXException { - Configuration config = xmlPackageReader.endConfiguration(); + Configuration config = xmlPackageReader.endConfiguration(); - FieldBindingDescr fieldBindingDescr = ( FieldBindingDescr ) this.xmlPackageReader.getCurrent(); - + FieldBindingDescr fieldBindingDescr = (FieldBindingDescr) this.xmlPackageReader.getCurrent(); + LinkedList parents = this.xmlPackageReader.getParents(); ListIterator it = parents.listIterator( parents.size() ); it.previous(); - ColumnDescr columnDescr = ( ColumnDescr ) it.previous(); - - columnDescr.addDescr( fieldBindingDescr ); - + ColumnDescr columnDescr = (ColumnDescr) it.previous(); + + columnDescr.addDescr( fieldBindingDescr ); + return null; } Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FunctionHandler.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FunctionHandler.java 2006-04-20 22:39:48 UTC (rev 3864) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/FunctionHandler.java 2006-04-20 23:33:30 UTC (rev 3865) @@ -47,7 +47,7 @@ this.validPeers.add( FunctionDescr.class ); this.validPeers.add( RuleDescr.class ); this.validPeers.add( QueryDescr.class ); - + this.allowNesting = false; } } @@ -56,7 +56,7 @@ String localName, Attributes attrs) throws SAXException { xmlPackageReader.startConfiguration( localName, - attrs ); + attrs ); return null; } @@ -94,7 +94,8 @@ xmlPackageReader.getLocator() ); } - functionDescr.addParameter( type, identifier ); + functionDescr.addParameter( type, + identifier ); } // we allow empty, "", bodies - but make sure that we atleast have a body element @@ -103,8 +104,7 @@ throw new SAXParseException( "function must have a <body>", xmlPackageReader.getLocator() ); } - - + functionDescr.setText( body.getText() ); PackageDescr packageDescr = this.xmlPackageReader.getPackageDescr(); Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Handler.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Handler.java 2006-04-20 22:39:48 UTC (rev 3864) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Handler.java 2006-04-20 23:33:30 UTC (rev 3865) @@ -1,4 +1,5 @@ package org.drools.xml; + /* * Copyright 2005 JBoss Inc * @@ -15,8 +16,6 @@ * limitations under the License. */ - - import java.util.Set; import org.xml.sax.Attributes; @@ -28,12 +27,14 @@ * TODO To change the template for this generated type comment go to Window - * Preferences - Java - Code Style - Code Templates */ -interface Handler -{ +interface Handler { - Object start( String uri, String localName, Attributes attrs ) throws SAXException; + Object start(String uri, + String localName, + Attributes attrs) throws SAXException; - Object end( String uri, String localName ) throws SAXException; + Object end(String uri, + String localName) throws SAXException; Set getValidParents(); Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/LhsHandler.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/LhsHandler.java 2006-04-20 22:39:48 UTC (rev 3864) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/LhsHandler.java 2006-04-20 23:33:30 UTC (rev 3865) @@ -54,7 +54,7 @@ String localName, Attributes attrs) throws SAXException { xmlPackageReader.startConfiguration( localName, - attrs ); + attrs ); return null; } @@ -92,7 +92,8 @@ xmlPackageReader.getLocator() ); } - functionDescr.addParameter( type, identifier ); + functionDescr.addParameter( type, + identifier ); } // we allow empty, "", bodies - but make sure that we atleast have a body element @@ -101,8 +102,7 @@ throw new SAXParseException( "function must have a <body>", xmlPackageReader.getLocator() ); } - - + functionDescr.setText( body.getText() ); PackageDescr packageDescr = this.xmlPackageReader.getPackageDescr(); Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/LiteralHandler.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/LiteralHandler.java 2006-04-20 22:39:48 UTC (rev 3864) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/LiteralHandler.java 2006-04-20 23:33:30 UTC (rev 3865) @@ -20,26 +20,16 @@ import java.util.LinkedList; import java.util.ListIterator; -import org.drools.lang.descr.AndDescr; import org.drools.lang.descr.BoundVariableDescr; import org.drools.lang.descr.ColumnDescr; -import org.drools.lang.descr.ConditionalElementDescr; -import org.drools.lang.descr.EvalDescr; -import org.drools.lang.descr.ExistsDescr; import org.drools.lang.descr.FieldBindingDescr; import org.drools.lang.descr.LiteralDescr; -import org.drools.lang.descr.NotDescr; -import org.drools.lang.descr.OrDescr; import org.drools.lang.descr.PredicateDescr; import org.drools.lang.descr.ReturnValueDescr; -import org.drools.lang.descr.RuleDescr; -import org.drools.rule.LiteralConstraint; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; -import java.util.Iterator; - /** * @author mproctor * @@ -62,7 +52,7 @@ this.validPeers.add( PredicateDescr.class ); this.validPeers.add( ReturnValueDescr.class ); this.validPeers.add( FieldBindingDescr.class ); - this.validPeers.add( BoundVariableDescr.class ); + this.validPeers.add( BoundVariableDescr.class ); this.allowNesting = false; } } @@ -72,46 +62,45 @@ Attributes attrs) throws SAXException { xmlPackageReader.startConfiguration( localName, attrs ); - - String fieldName = attrs.getValue( "field-name" ); - if ( fieldName == null || fieldName.trim( ).equals( "" ) ) - { - throw new SAXParseException( - "<literal> requires a 'field-name' attribute", xmlPackageReader.getLocator( ) ); + + String fieldName = attrs.getValue( "field-name" ); + if ( fieldName == null || fieldName.trim().equals( "" ) ) { + throw new SAXParseException( "<literal> requires a 'field-name' attribute", + xmlPackageReader.getLocator() ); } - - String evaluator = attrs.getValue( "evaluator" ); - if ( evaluator == null || evaluator.trim( ).equals( "" ) ) - { - throw new SAXParseException( - "<literal> requires an 'evaluator' attribute", xmlPackageReader.getLocator( ) ); - } - - String text = attrs.getValue( "value" ); - if ( text == null || text.trim( ).equals( "" ) ) - { - throw new SAXParseException( - "<literal> requires an 'value' attribute", xmlPackageReader.getLocator( ) ); - } - - LiteralDescr literalDescr = new LiteralDescr( fieldName, evaluator, text); - + + String evaluator = attrs.getValue( "evaluator" ); + if ( evaluator == null || evaluator.trim().equals( "" ) ) { + throw new SAXParseException( "<literal> requires an 'evaluator' attribute", + xmlPackageReader.getLocator() ); + } + + String text = attrs.getValue( "value" ); + if ( text == null || text.trim().equals( "" ) ) { + throw new SAXParseException( "<literal> requires an 'value' attribute", + xmlPackageReader.getLocator() ); + } + + LiteralDescr literalDescr = new LiteralDescr( fieldName, + evaluator, + text ); + return literalDescr; } public Object end(String uri, String localName) throws SAXException { - Configuration config = xmlPackageReader.endConfiguration(); + Configuration config = xmlPackageReader.endConfiguration(); - LiteralDescr literalDescr = ( LiteralDescr ) this.xmlPackageReader.getCurrent(); - + LiteralDescr literalDescr = (LiteralDescr) this.xmlPackageReader.getCurrent(); + LinkedList parents = this.xmlPackageReader.getParents(); ListIterator it = parents.listIterator( parents.size() ); it.previous(); - ColumnDescr columnDescr = ( ColumnDescr ) it.previous(); - - columnDescr.addDescr( literalDescr ); - + ColumnDescr columnDescr = (ColumnDescr) it.previous(); + + columnDescr.addDescr( literalDescr ); + return null; } Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/NotHandler.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/NotHandler.java 2006-04-20 22:39:48 UTC (rev 3864) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/NotHandler.java 2006-04-20 23:33:30 UTC (rev 3865) @@ -27,13 +27,10 @@ import org.drools.lang.descr.ExistsDescr; import org.drools.lang.descr.NotDescr; import org.drools.lang.descr.OrDescr; -import org.drools.lang.descr.RuleDescr; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; -import java.util.Iterator; - /** * @author mproctor * Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/OrHandler.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/OrHandler.java 2006-04-20 22:39:48 UTC (rev 3864) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/OrHandler.java 2006-04-20 23:33:30 UTC (rev 3865) @@ -27,12 +27,9 @@ import org.drools.lang.descr.ExistsDescr; import org.drools.lang.descr.NotDescr; import org.drools.lang.descr.OrDescr; -import org.drools.lang.descr.RuleDescr; import org.xml.sax.Attributes; import org.xml.sax.SAXException; -import java.util.Iterator; - /** * @author mproctor * @@ -48,7 +45,7 @@ if ( (this.validParents == null) && (validPeers == null) ) { this.validParents = new HashSet(); this.validParents.add( AndDescr.class ); - this.validParents.add( OrDescr.class ); + this.validParents.add( OrDescr.class ); this.validPeers = new HashSet(); this.validPeers.add( null ); @@ -58,7 +55,7 @@ this.validPeers.add( ExistsDescr.class ); this.validPeers.add( EvalDescr.class ); this.validPeers.add( ColumnDescr.class ); - + this.allowNesting = true; } } @@ -69,24 +66,24 @@ xmlPackageReader.startConfiguration( localName, attrs ); OrDescr orDescr = new OrDescr(); - + return orDescr; } public Object end(String uri, String localName) throws SAXException { Configuration config = xmlPackageReader.endConfiguration(); - - OrDescr orDescr = ( OrDescr ) this.xmlPackageReader.getCurrent(); - + + OrDescr orDescr = (OrDescr) this.xmlPackageReader.getCurrent(); + LinkedList parents = this.xmlPackageReader.getParents(); ListIterator it = parents.listIterator( parents.size() ); it.previous(); - Object parent = it.previous(); - - ConditionalElementDescr parentDescr = ( ConditionalElementDescr ) parent; + Object parent = it.previous(); + + ConditionalElementDescr parentDescr = (ConditionalElementDescr) parent; parentDescr.addDescr( orDescr ); - + return null; } Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PackageHandler.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PackageHandler.java 2006-04-20 22:39:48 UTC (rev 3864) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PackageHandler.java 2006-04-20 23:33:30 UTC (rev 3865) @@ -1,4 +1,5 @@ package org.drools.xml; + /* * Copyright 2005 JBoss Inc * @@ -15,10 +16,7 @@ * limitations under the License. */ - - import java.util.HashSet; -import java.util.List; import org.drools.lang.descr.PackageDescr; import org.xml.sax.Attributes; @@ -31,86 +29,82 @@ * TODO To change the template for this generated type comment go to Window - * Preferences - Java - Code Style - Code Templates */ -class PackageHandler extends BaseAbstractHandler implements Handler -{ - PackageHandler( XmlPackageReader xmlPackageReader ) - { +class PackageHandler extends BaseAbstractHandler + implements + Handler { + PackageHandler(XmlPackageReader xmlPackageReader) { this.xmlPackageReader = xmlPackageReader; - - if ( (this.validParents == null) && (validPeers == null) ) - { - this.validParents = new HashSet( ); + + if ( (this.validParents == null) && (validPeers == null) ) { + this.validParents = new HashSet(); this.validParents.add( null ); - this.validPeers = new HashSet( ); + this.validPeers = new HashSet(); this.validPeers.add( null ); this.allowNesting = false; } } - public Object start( String uri, String localName, Attributes attrs ) throws SAXException - { - xmlPackageReader.startConfiguration( localName, attrs ); + public Object start(String uri, + String localName, + Attributes attrs) throws SAXException { + xmlPackageReader.startConfiguration( localName, + attrs ); String ruleSetName = attrs.getValue( "name" ); - if ( ruleSetName == null || ruleSetName.trim( ).equals( "" ) ) - { - throw new SAXParseException( - "<package> requires a 'name' attribute", xmlPackageReader.getLocator( ) ); + if ( ruleSetName == null || ruleSetName.trim().equals( "" ) ) { + throw new SAXParseException( "<package> requires a 'name' attribute", + xmlPackageReader.getLocator() ); } - PackageDescr packageDescr = new PackageDescr( ruleSetName.trim( ) ); + PackageDescr packageDescr = new PackageDescr( ruleSetName.trim() ); - xmlPackageReader.setPackageDescr( packageDescr ); return packageDescr; } - public Object end( String uri, String localName ) throws SAXException - { + public Object end(String uri, + String localName) throws SAXException { PackageDescr packageDescr = this.xmlPackageReader.getPackageDescr(); - Configuration config = xmlPackageReader.endConfiguration( ); - - Configuration[] imports = config.getChildren("import"); - + Configuration config = xmlPackageReader.endConfiguration(); + + Configuration[] imports = config.getChildren( "import" ); + for ( int i = 0, length = imports.length; i < length; i++ ) { String importEntry = imports[i].getText(); - if ( importEntry == null || importEntry.trim( ).equals( "" ) ) - { - throw new SAXParseException( - "<import> cannot be blank", xmlPackageReader.getLocator( ) ); - } + if ( importEntry == null || importEntry.trim().equals( "" ) ) { + throw new SAXParseException( "<import> cannot be blank", + xmlPackageReader.getLocator() ); + } packageDescr.addImport( importEntry ); } - - Configuration[] globals = config.getChildren("global"); - + + Configuration[] globals = config.getChildren( "global" ); + for ( int i = 0, length = globals.length; i < length; i++ ) { String identifier = globals[i].getAttribute( "identifier" ); String type = globals[i].getText(); - if ( identifier == null || identifier.trim( ).equals( "" ) ) - { - throw new SAXParseException( - "<global> must have an identifier", xmlPackageReader.getLocator( ) ); + if ( identifier == null || identifier.trim().equals( "" ) ) { + throw new SAXParseException( "<global> must have an identifier", + xmlPackageReader.getLocator() ); } - - if ( type == null || type.trim( ).equals( "" ) ) - { - throw new SAXParseException( - "<global> must have specify a type", xmlPackageReader.getLocator( ) ); - } - packageDescr.addGlobal( identifier, type ); - } - + + if ( type == null || type.trim().equals( "" ) ) { + throw new SAXParseException( "<global> must have specify a type", + xmlPackageReader.getLocator() ); + } + packageDescr.addGlobal( identifier, + type ); + } + return null; } - public Class generateNodeFor() - { + public Class generateNodeFor() { return PackageDescr.class; } } Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PredicateHandler.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PredicateHandler.java 2006-04-20 22:39:48 UTC (rev 3864) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PredicateHandler.java 2006-04-20 23:33:30 UTC (rev 3865) @@ -52,7 +52,7 @@ this.validPeers.add( PredicateDescr.class ); this.validPeers.add( ReturnValueDescr.class ); this.validPeers.add( FieldBindingDescr.class ); - this.validPeers.add( BoundVariableDescr.class ); + this.validPeers.add( BoundVariableDescr.class ); this.allowNesting = false; } } @@ -62,46 +62,45 @@ Attributes attrs) throws SAXException { xmlPackageReader.startConfiguration( localName, attrs ); - - String identifier = attrs.getValue( "identifier" ); - if ( identifier == null || identifier.trim( ).equals( "" ) ) - { - throw new SAXParseException( - "<predicate> requires an 'identifier' attribute", xmlPackageReader.getLocator( ) ); - } - - String fieldName = attrs.getValue( "field-name" ); - if ( fieldName == null || fieldName.trim( ).equals( "" ) ) - { - throw new SAXParseException( - "<predicate> requires a 'field-name' attribute", xmlPackageReader.getLocator( ) ); - } - - String expression = attrs.getValue( "expression" ); - if ( expression == null || expression.trim( ).equals( "" ) ) - { - throw new SAXParseException( - "<predicate> requires an expression", xmlPackageReader.getLocator( ) ); - } - - PredicateDescr predicateDescr = new PredicateDescr( fieldName, identifier, expression ); - + + String identifier = attrs.getValue( "identifier" ); + if ( identifier == null || identifier.trim().equals( "" ) ) { + throw new SAXParseException( "<predicate> requires an 'identifier' attribute", + xmlPackageReader.getLocator() ); + } + + String fieldName = attrs.getValue( "field-name" ); + if ( fieldName == null || fieldName.trim().equals( "" ) ) { + throw new SAXParseException( "<predicate> requires a 'field-name' attribute", + xmlPackageReader.getLocator() ); + } + + String expression = attrs.getValue( "expression" ); + if ( expression == null || expression.trim().equals( "" ) ) { + throw new SAXParseException( "<predicate> requires an expression", + xmlPackageReader.getLocator() ); + } + + PredicateDescr predicateDescr = new PredicateDescr( fieldName, + identifier, + expression ); + return predicateDescr; } public Object end(String uri, String localName) throws SAXException { - Configuration config = xmlPackageReader.endConfiguration(); + Configuration config = xmlPackageReader.endConfiguration(); - PredicateDescr predicateDescr = ( PredicateDescr ) this.xmlPackageReader.getCurrent(); - + PredicateDescr predicateDescr = (PredicateDescr) this.xmlPackageReader.getCurrent(); + LinkedList parents = this.xmlPackageReader.getParents(); ListIterator it = parents.listIterator( parents.size() ); it.previous(); - ColumnDescr columnDescr = ( ColumnDescr ) it.previous(); - - columnDescr.addDescr( predicateDescr ); - + ColumnDescr columnDescr = (ColumnDescr) it.previous(); + + columnDescr.addDescr( predicateDescr ); + return null; } Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/QueryHandler.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/QueryHandler.java 2006-04-20 22:39:48 UTC (rev 3864) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/QueryHandler.java 2006-04-20 23:33:30 UTC (rev 3865) @@ -0,0 +1,95 @@ +package org.drools.xml; + +/* + * 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.HashSet; + +import org.drools.lang.descr.AndDescr; +import org.drools.lang.descr.FunctionDescr; +import org.drools.lang.descr.PackageDescr; +import org.drools.lang.descr.QueryDescr; +import org.drools.lang.descr.RuleDescr; +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; + +/** + * @author mproctor + * + * TODO To change the template for this generated type comment go to Window - + * Preferences - Java - Code Style - Code Templates + */ +class QueryHandler extends BaseAbstractHandler + implements + Handler { + QueryHandler(XmlPackageReader xmlPackageReader) { + this.xmlPackageReader = xmlPackageReader; + + if ( (this.validParents == null) && (validPeers == null) ) { + this.validParents = new HashSet(); + this.validParents.add( PackageDescr.class ); + + this.validPeers = new HashSet(); + this.validPeers.add( null ); + this.validPeers.add( FunctionDescr.class ); + this.validPeers.add( RuleDescr.class ); + this.validPeers.add( QueryDescr.class ); + + this.allowNesting = false; + } + } + + public Object start(String uri, + String localName, + Attributes attrs) throws SAXException { + xmlPackageReader.startConfiguration( localName, + attrs ); + + String queryName = attrs.getValue( "name" ); + + if ( queryName == null || queryName.trim().equals( "" ) ) { + throw new SAXParseException( "<query> requires a 'name' attribute", + xmlPackageReader.getLocator() ); + } + + QueryDescr queryDescr = new QueryDescr( queryName.trim() ); + + return queryDescr; + } + + public Object end(String uri, + String localName) throws SAXException { + Configuration config = this.xmlPackageReader.endConfiguration(); + + QueryDescr queryDescr = (QueryDescr) this.xmlPackageReader.getCurrent(); + + AndDescr lhs = (AndDescr) queryDescr.getLhs(); + + if ( lhs == null || lhs.getDescrs().isEmpty() ) { + throw new SAXParseException( "<query> requires a LHS", + xmlPackageReader.getLocator() ); + } + + this.xmlPackageReader.getPackageDescr().addRule( queryDescr ); + + return null; + } + + public Class generateNodeFor() { + return QueryDescr.class; + } +} \ No newline at end of file Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ReturnValueHandler.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ReturnValueHandler.java 2006-04-20 22:39:48 UTC (rev 3864) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/ReturnValueHandler.java 2006-04-20 23:33:30 UTC (rev 3865) @@ -20,26 +20,16 @@ import java.util.LinkedList; import java.util.ListIterator; -import org.drools.lang.descr.AndDescr; import org.drools.lang.descr.BoundVariableDescr; import org.drools.lang.descr.ColumnDescr; -import org.drools.lang.descr.ConditionalElementDescr; -import org.drools.lang.descr.EvalDescr; -import org.drools.lang.descr.ExistsDescr; import org.drools.lang.descr.FieldBindingDescr; import org.drools.lang.descr.LiteralDescr; -import org.drools.lang.descr.NotDescr; -import org.drools.lang.descr.OrDescr; import org.drools.lang.descr.PredicateDescr; import org.drools.lang.descr.ReturnValueDescr; -import org.drools.lang.descr.RuleDescr; -import org.drools.rule.LiteralConstraint; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; -import java.util.Iterator; - /** * @author mproctor * @@ -62,7 +52,7 @@ this.validPeers.add( PredicateDescr.class ); this.validPeers.add( ReturnValueDescr.class ); this.validPeers.add( FieldBindingDescr.class ); - this.validPeers.add( BoundVariableDescr.class ); + this.validPeers.add( BoundVariableDescr.class ); this.allowNesting = false; } } @@ -72,46 +62,45 @@ Attributes attrs) throws SAXException { xmlPackageReader.startConfiguration( localName, attrs ); - - String fieldName = attrs.getValue( "field-name" ); - if ( fieldName == null || fieldName.trim( ).equals( "" ) ) - { - throw new SAXParseException( - "<return-value> requires a 'field-name' attribute", xmlPackageReader.getLocator( ) ); + + String fieldName = attrs.getValue( "field-name" ); + if ( fieldName == null || fieldName.trim().equals( "" ) ) { + throw new SAXParseException( "<return-value> requires a 'field-name' attribute", + xmlPackageReader.getLocator() ); } - - String evaluator = attrs.getValue( "evaluator" ); - if ( evaluator == null || evaluator.trim( ).equals( "" ) ) - { - throw new SAXParseException( - "<return-value> requires an 'evaluator' attribute", xmlPackageReader.getLocator( ) ); - } - - String expression = attrs.getValue( "expression" ); - if ( expression == null || expression.trim( ).equals( "" ) ) - { - throw new SAXParseException( - "<return-value> requires an 'expression' attribute", xmlPackageReader.getLocator( ) ); - } - - ReturnValueDescr returnValueDescr = new ReturnValueDescr( fieldName, evaluator, expression); - + + String evaluator = attrs.getValue( "evaluator" ); + if ( evaluator == null || evaluator.trim().equals( "" ) ) { + throw new SAXParseException( "<return-value> requires an 'evaluator' attribute", + xmlPackageReader.getLocator() ); + } + + String expression = attrs.getValue( "expression" ); + if ( expression == null || expression.trim().equals( "" ) ) { + throw new SAXParseException( "<return-value> requires an 'expression' attribute", + xmlPackageReader.getLocator() ); + } + + ReturnValueDescr returnValueDescr = new ReturnValueDescr( fieldName, + evaluator, + expression ); + return returnValueDescr; } public Object end(String uri, String localName) throws SAXException { - Configuration config = xmlPackageReader.endConfiguration(); + Configuration config = xmlPackageReader.endConfiguration(); - ReturnValueDescr returnValueDescr = ( ReturnValueDescr ) this.xmlPackageReader.getCurrent(); - + ReturnValueDescr returnValueDescr = (ReturnValueDescr) this.xmlPackageReader.getCurrent(); + LinkedList parents = this.xmlPackageReader.getParents(); ListIterator it = parents.listIterator( parents.size() ); it.previous(); - ColumnDescr columnDescr = ( ColumnDescr ) it.previous(); - - columnDescr.addDescr( returnValueDescr ); - + ColumnDescr columnDescr = (ColumnDescr) it.previous(); + + columnDescr.addDescr( returnValueDescr ); + return null; } Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/RuleHandler.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/RuleHandler.java 2006-04-20 22:39:48 UTC (rev 3864) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/RuleHandler.java 2006-04-20 23:33:30 UTC (rev 3865) @@ -19,6 +19,7 @@ import java.util.HashSet; import org.drools.lang.descr.AndDescr; +import org.drools.lang.descr.AttributeDescr; import org.drools.lang.descr.FunctionDescr; import org.drools.lang.descr.PackageDescr; import org.drools.lang.descr.QueryDescr; @@ -56,19 +57,18 @@ public Object start(String uri, String localName, Attributes attrs) throws SAXException { - xmlPackageReader.startConfiguration( localName, attrs ); + xmlPackageReader.startConfiguration( localName, + attrs ); String ruleName = attrs.getValue( "name" ); - if ( ruleName == null || ruleName.trim( ).equals( "" ) ) - { - throw new SAXParseException( - "<rule> requires a 'name' attribute", xmlPackageReader.getLocator( ) ); + if ( ruleName == null || ruleName.trim().equals( "" ) ) { + throw new SAXParseException( "<rule> requires a 'name' attribute", + xmlPackageReader.getLocator() ); } - RuleDescr ruleDescr = new RuleDescr( ruleName.trim( ) ); + RuleDescr ruleDescr = new RuleDescr( ruleName.trim() ); - return ruleDescr; } @@ -76,8 +76,37 @@ String localName) throws SAXException { Configuration config = this.xmlPackageReader.endConfiguration(); - RuleDescr ruleDescr = ( RuleDescr ) this.xmlPackageReader.getCurrent(); - + RuleDescr ruleDescr = (RuleDescr) this.xmlPackageReader.getCurrent(); + + AndDescr lhs = (AndDescr) ruleDescr.getLhs(); + + if ( lhs == null ) { + throw new SAXParseException( "<rule> requires a LHS", + xmlPackageReader.getLocator() ); + } + + Configuration rhs = config.getChild( "rhs" ); + if ( rhs == null ) { + throw new SAXParseException( "<rule> requires a <rh> child element", + xmlPackageReader.getLocator() ); + } + + ruleDescr.setConsequence( rhs.getText() ); + + Configuration[] attributes = config.getChildren( "attribute" ); + for ( int i = 0, length = attributes.length; i < length; i++ ) { + String name = attributes[i].getAttribute( "name" ); + if ( name == null || name.trim().equals( "" ) ) { + throw new SAXParseException( "<attribute> requires a 'name' attribute", + xmlPackageReader.getLocator() ); + } + + String value = attributes[i].getAttribute( "value" ); + + ruleDescr.addAttribute( new AttributeDescr( name, + value ) ); + } + this.xmlPackageReader.getPackageDescr().addRule( ruleDescr ); return null; Modified: labs/jbossrules/trunk/dr... [truncated message content] |