[jboss-svn-commits] JBL Code SVN: r5411 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/compiler test/java/org/drools/integrationtests test/resources/org/drools/integrationtests
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Aug 2 11:57:27 EDT 2006
Author: michael.neale at jboss.com
Date: 2006-08-02 11:57:15 -0400 (Wed, 02 Aug 2006)
New Revision: 5411
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/errors_in_rule.drl
Log:
JBRULES-385 - merged from 3.0.x branch, fix for too many compiler errors reported.
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-08-02 15:55:17 UTC (rev 5410)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2006-08-02 15:57:15 UTC (rev 5411)
@@ -421,20 +421,29 @@
if ( result.getErrors().length > 0 ) {
for ( int i = 0; i < result.getErrors().length; i++ ) {
CompilationProblem err = result.getErrors()[i];
+ System.out.println(err.getFileName());
+ System.out.println(err.getMessage());
+
ErrorHandler handler = (ErrorHandler) this.errorHandlers.get( err.getFileName() );
+ if (handler instanceof RuleErrorHandler) {
+ RuleErrorHandler rh = (RuleErrorHandler) handler;
+
+ }
handler.addError( err );
}
Collection errors = this.errorHandlers.values();
for ( Iterator iter = errors.iterator(); iter.hasNext(); ) {
ErrorHandler handler = (ErrorHandler) iter.next();
- if ( !(handler instanceof RuleInvokerErrorHandler) ) {
- this.results.add( handler.getError() );
- } else {
- //we don't really want to report invoker errors.
- //mostly as they can happen when there is a syntax error in the RHS
- //and otherwise, it is a programmatic error in drools itself.
- System.err.println( "!!!! An error occurred compiling the invoker: " + handler.getError() );
+ if (handler.isInError()) {
+ if ( !(handler instanceof RuleInvokerErrorHandler) ) {
+ this.results.add( handler.getError() );
+ } else {
+ //we don't really want to report invoker errors.
+ //mostly as they can happen when there is a syntax error in the RHS
+ //and otherwise, it is a programmatic error in drools itself.
+ System.err.println( "Warning: An error occurred compiling a semantic invoker. Errors should have been reported elsewhere.");
+ }
}
}
}
@@ -549,9 +558,16 @@
public abstract static class ErrorHandler {
private List errors = new ArrayList();
protected String message;
+ private boolean inError = false;
+ /** This needes to be checked if there is infact an error */
+ public boolean isInError() {
+ return inError;
+ }
+
public void addError(CompilationProblem err) {
this.errors.add( err );
+ this.inError = true;
}
/**
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2006-08-02 15:55:17 UTC (rev 5410)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2006-08-02 15:57:15 UTC (rev 5411)
@@ -808,7 +808,9 @@
}
- public void testErrorLineNumbers() throws Exception {
+ public void testErrorLineNumbers() throws Exception {
+ //this test aims to test semantic errors
+ //parser errors are another test case
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "errors_in_rule.drl" ) ) );
final Package pkg = builder.getPackage();
@@ -818,6 +820,8 @@
assertNotNull( ruleErr.getDescr() );
assertTrue( ruleErr.getLine() != -1 );
+ DroolsError errs[] = builder.getErrors();
+
assertEquals( 3,
builder.getErrors().length );
@@ -1759,8 +1763,7 @@
public void testDynamicRuleRemovals() throws Exception {
final PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Dynamic1.drl" ) ) );
- builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Dynamic2.drl" ) ) );
+ builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Dynamic1.drl" ) ) );
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Dynamic3.drl" ) ) );
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Dynamic4.drl" ) ) );
final Package pkg = builder.getPackage();
@@ -1775,6 +1778,9 @@
leapsRuleBase = (org.drools.leaps.LeapsRuleBase) ruleBase;
}
ruleBase.addPackage( pkg );
+ PackageBuilder builder2 = new PackageBuilder();
+ builder2.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Dynamic2.drl" ) ) );
+ ruleBase.addPackage( builder2.getPackage() );
final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/errors_in_rule.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/errors_in_rule.drl 2006-08-02 15:55:17 UTC (rev 5410)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/errors_in_rule.drl 2006-08-02 15:57:15 UTC (rev 5411)
@@ -14,4 +14,11 @@
then
#this is an error
list.add( ;
-end
\ No newline at end of file
+end
+
+rule "This is fine"
+ when
+ String()
+ then
+ System.out.println("hello");
+end
\ No newline at end of file
More information about the jboss-svn-commits
mailing list