Author: mar...@jb... Date: 2006-04-19 19:15:15 -0400 (Wed, 19 Apr 2006) New Revision: 3815 Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/PackageReaderTest.java labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseGlobal.xml labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseImport.xml labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParsePackageName.xml 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/PackageReader.java Log: -Added unit tests for package, globals and imports 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-19 21:34:38 UTC (rev 3814) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PackageHandler.java 2006-04-19 23:15:15 UTC (rev 3815) @@ -18,6 +18,7 @@ import java.util.HashSet; +import java.util.List; import org.drools.lang.descr.PackageDescr; import org.xml.sax.Attributes; @@ -50,6 +51,7 @@ public Object start( String uri, String localName, Attributes attrs ) throws SAXException { + packageReader.startConfiguration( localName, attrs ); String ruleSetName = attrs.getValue( "name" ); @@ -68,6 +70,42 @@ public Object end( String uri, String localName ) throws SAXException { + PackageDescr packageDescr = this.packageReader.getPackageDescr(); + Configuration config = packageReader.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", packageReader.getLocator( ) ); + } + packageDescr.addImport( importEntry ); + } + + 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", packageReader.getLocator( ) ); + } + + if ( type == null || type.trim( ).equals( "" ) ) + { + throw new SAXParseException( + "<global> must have specify a type", packageReader.getLocator( ) ); + } + packageDescr.addGlobal( identifier, type ); + } + return null; } @@ -75,4 +113,4 @@ { return PackageDescr.class; } -} \ No newline at end of file +} Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PackageReader.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PackageReader.java 2006-04-19 21:34:38 UTC (rev 3814) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PackageReader.java 2006-04-19 23:15:15 UTC (rev 3815) @@ -126,39 +126,39 @@ this.parents = new LinkedList(); this.handlers = new HashMap(); - this.handlers.put( "PackageDescr", + this.handlers.put( "package", + new PackageHandler( this ) ); + this.handlers.put( "rule", null ); - this.handlers.put( "RuleDescr", + this.handlers.put( "query", null ); - this.handlers.put( "QueryDescr", + this.handlers.put( "attribute", null ); - this.handlers.put( "AttributeDescr", - null ); - this.handlers.put( "FunctionDescr", + this.handlers.put( "function", null ); // Conditional Elements - this.handlers.put( "AndDescr", + this.handlers.put( "and", null ); - this.handlers.put( "OrDescr", + this.handlers.put( "or", null ); - this.handlers.put( "NotDescr", + this.handlers.put( "not", null ); - this.handlers.put( "ExistsDescr", + this.handlers.put( "exists", null ); - this.handlers.put( "ColumnDescr", + this.handlers.put( "column", null ); // Field Constraints - this.handlers.put( "LiteralDescr", + this.handlers.put( "literal", null ); - this.handlers.put( "PredicateDescr", + this.handlers.put( "predicate", null ); - this.handlers.put( "ReturnValueDescr", + this.handlers.put( "return-value", null ); - this.handlers.put( "BoundVariableDescr", + this.handlers.put( "bound-variable", null ); initEntityResolver(); @@ -334,10 +334,10 @@ } if ( handler == null ) { - if ( ((this.inHandledRuleSubElement == false) && (this.parents.getLast() instanceof RuleDescr)) || (this.parents.getLast() instanceof PackageDescr) ) { - throw new SAXParseException( "unknown tag '" + localName + "' in namespace '" + uri + "'", - getLocator() ); - } +// if ( ((this.inHandledRuleSubElement == false) && (this.parents.getLast() instanceof RuleDescr)) || (this.parents.getLast() instanceof PackageDescr) ) { +// throw new SAXParseException( "unknown tag '" + localName + "' in namespace '" + uri + "'", +// getLocator() ); +// } // no handler so build up the configuration startConfiguration( localName, attrs ); Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/PackageReaderTest.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/PackageReaderTest.java 2006-04-19 21:34:38 UTC (rev 3814) +++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/PackageReaderTest.java 2006-04-19 23:15:15 UTC (rev 3815) @@ -0,0 +1,52 @@ +package org.drools.xml; + +import java.io.InputStreamReader; +import java.util.List; +import java.util.Map; + +import junit.framework.TestCase; + +import org.drools.lang.descr.PackageDescr; + +public class PackageReaderTest extends TestCase { + public void testParsePackageName() throws Exception { + PackageReader packageReader = new PackageReader( ); + packageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParsePackageName.xml" ) ) ); + PackageDescr packageDescr = packageReader.getPackageDescr(); + assertNotNull( packageDescr ); + assertEquals("com.sample", packageDescr.getName() ); + } + + + public void testParseImport() throws Exception { + PackageReader packageReader = new PackageReader( ); + packageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseImport.xml" ) ) ); + PackageDescr packageDescr = packageReader.getPackageDescr(); + assertNotNull( packageDescr ); + assertEquals("com.sample", packageDescr.getName() ); + + List imports = packageDescr.getImports(); + assertEquals( 2, imports.size() ); + assertEquals("java.util.HashMap", imports.get( 0 ) ); + assertEquals("org.drools.*", imports.get( 1 ) ); + } + + public void testParseGlobal() throws Exception { + PackageReader packageReader = new PackageReader( ); + packageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseGlobal.xml" ) ) ); + PackageDescr packageDescr = packageReader.getPackageDescr(); + assertNotNull( packageDescr ); + assertEquals("com.sample", packageDescr.getName() ); + + List imports = packageDescr.getImports(); + assertEquals( 2, imports.size() ); + assertEquals("java.util.HashMap", imports.get( 0 ) ); + assertEquals("org.drools.*", imports.get( 1 ) ); + + Map globals = packageDescr.getGlobals(); + assertEquals( 2, globals.size() ); + assertEquals("com.sample.X", globals.get( "x" ) ); + assertEquals("com.sample.Yada", globals.get( "yada" ) ); + } + +} Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseGlobal.xml =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseGlobal.xml 2006-04-19 21:34:38 UTC (rev 3814) +++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseGlobal.xml 2006-04-19 23:15:15 UTC (rev 3815) @@ -0,0 +1,7 @@ +<package name="com.sample"> + <import>java.util.HashMap</import> + <import>org.drools.*</import> + + <global identifier="x">com.sample.X</global> + <global identifier="yada">com.sample.Yada</global> +</package> \ No newline at end of file Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseImport.xml =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseImport.xml 2006-04-19 21:34:38 UTC (rev 3814) +++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseImport.xml 2006-04-19 23:15:15 UTC (rev 3815) @@ -0,0 +1,4 @@ +<package name="com.sample"> + <import>java.util.HashMap</import> + <import>org.drools.*</import> +</package> \ No newline at end of file Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParsePackageName.xml =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParsePackageName.xml 2006-04-19 21:34:38 UTC (rev 3814) +++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParsePackageName.xml 2006-04-19 23:15:15 UTC (rev 3815) @@ -0,0 +1,3 @@ +<package name="com.sample"> + +</package> \ No newline at end of file |