[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