Author: mic...@jb... Date: 2006-05-09 02:10:15 -0400 (Tue, 09 May 2006) New Revision: 4145 Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java Log: improved handling of parse errors Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2006-05-09 04:41:33 UTC (rev 4144) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2006-05-09 06:10:15 UTC (rev 4145) @@ -156,6 +156,7 @@ public void addPackage(PackageDescr packageDescr) { + if ( packageDescr.getName() == null || "".equals( packageDescr.getName() ) ) { throw new MissingPackageNameException( "Missing package name for rule package." ); @@ -169,15 +170,18 @@ this.pkg = newPackage( packageDescr ); } - //iterate and compile - for ( Iterator it = packageDescr.getFunctions().iterator(); it.hasNext(); ) { - addFunction( (FunctionDescr) it.next() ); + //only try to compile if there are no parse errors + if (!hasErrors()) { + //iterate and compile + for ( Iterator it = packageDescr.getFunctions().iterator(); it.hasNext(); ) { + addFunction( (FunctionDescr) it.next() ); + } + + //iterate and compile + for ( Iterator it = packageDescr.getRules().iterator(); it.hasNext(); ) { + addRule( (RuleDescr) it.next() ); + } } - - //iterate and compile - for ( Iterator it = packageDescr.getRules().iterator(); it.hasNext(); ) { - addRule( (RuleDescr) it.next() ); - } } private Package newPackage(PackageDescr packageDescr) { Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java 2006-05-09 04:41:33 UTC (rev 4144) +++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java 2006-05-09 06:10:15 UTC (rev 4145) @@ -20,6 +20,7 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.InputStreamReader; import java.io.ObjectInput; import java.io.ObjectInputStream; import java.io.ObjectOutput; @@ -112,6 +113,12 @@ assertLength( 1, builder.getErrors() ); } + + public void testErrorsInParser() throws Exception { + PackageBuilder builder = new PackageBuilder(); + builder.addPackageFromDrl( new InputStreamReader(this.getClass().getResourceAsStream( "bad_rule.drl" )) ); + assertTrue(builder.hasErrors()); + } public void testReload() throws Exception { PackageBuilder builder = new PackageBuilder(); Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java 2006-05-09 04:41:33 UTC (rev 4144) +++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java 2006-05-09 06:10:15 UTC (rev 4145) @@ -535,6 +535,12 @@ assertFalse( parser.hasErrors() ); } + public void testNotBindindShouldBarf() throws Exception { + RuleParser parser = parseResource( "not_with_binding_error.drl"); + parser.compilation_unit(); + assertTrue( parser.hasErrors() ); + } + public void testSimpleQuery() throws Exception { QueryDescr query = parseResource( "simple_query.drl" ).query(); |