[jboss-svn-commits] JBL Code SVN: r32303 - in labs/jbossrules/trunk/drools-verifier/src: test/java/org/drools/verifier and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Mar 30 09:43:53 EDT 2010


Author: Rikkola
Date: 2010-03-30 09:43:52 -0400 (Tue, 30 Mar 2010)
New Revision: 32303

Modified:
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/VerifierImpl.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java
Log:
Better error reporting if verifiable resources have errors or PackageDescr can not be created.

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/VerifierImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/VerifierImpl.java	2010-03-30 12:09:17 UTC (rev 32302)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/VerifierImpl.java	2010-03-30 13:43:52 UTC (rev 32303)
@@ -14,6 +14,7 @@
 import org.drools.builder.KnowledgeBuilderFactory;
 import org.drools.builder.ResourceType;
 import org.drools.compiler.DrlParser;
+import org.drools.compiler.DroolsError;
 import org.drools.compiler.DroolsParserException;
 import org.drools.io.Resource;
 import org.drools.lang.descr.PackageDescr;
@@ -185,7 +186,7 @@
 
         // TODO: Other than DRL
         if ( type.matchesExtension( ".drl" ) ) {
-            DrlParser p = new DrlParser();
+            DrlParser drlParser = new DrlParser();
 
             try {
 
@@ -202,11 +203,17 @@
                     }
                 } while ( line != null );
 
-                PackageDescr pkg = p.parse( drl.toString() );
+                PackageDescr pkg = drlParser.parse( drl.toString() );
 
-                addPackageDescr( pkg );
+                if ( drlParser.hasErrors() ) {
+                    addVerifierErrors( drlParser );
+                } else if ( pkg == null ) {
+                    errors.add( new VerifierError( "Verifier could not form a PackageDescr from the resources that it was trying to verify." ) );
+                } else {
+                    addPackageDescr( pkg );
 
-                addDrlData( drl.toString() );
+                    addDrlData( drl.toString() );
+                }
 
                 reader.close();
 
@@ -218,6 +225,12 @@
         }
     }
 
+    private void addVerifierErrors(DrlParser p) {
+        for ( DroolsError droolsError : p.getErrors() ) {
+            errors.add( new VerifierError( droolsError.getMessage() ) );
+        }
+    }
+
     /**
      * 
      * Adds meta data from DRL to package and rule.

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java	2010-03-30 12:09:17 UTC (rev 32302)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java	2010-03-30 13:43:52 UTC (rev 32303)
@@ -56,6 +56,50 @@
 
     }
 
+    public void testVerifierInvalidDRLs() {
+        VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+        // Check that the builder works.
+        assertFalse( vBuilder.hasErrors() );
+        assertEquals( 0,
+                      vBuilder.getErrors().size() );
+
+        Verifier verifier = vBuilder.newVerifier();
+
+        String drl = "This will not work";
+
+        verifier.addResourcesToVerify( new ReaderResource( new StringReader( drl ) ),
+                                       ResourceType.DRL );
+
+        assertTrue( verifier.hasErrors() );
+
+        assertEquals( 3,
+                      verifier.getErrors().size() );
+
+    }
+
+    public void testVerifierNullPackageDescr() {
+        VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+        // Check that the builder works.
+        assertFalse( vBuilder.hasErrors() );
+        assertEquals( 0,
+                      vBuilder.getErrors().size() );
+
+        Verifier verifier = vBuilder.newVerifier();
+
+        String drl = "#This will not work";
+
+        verifier.addResourcesToVerify( new ReaderResource( new StringReader( drl ) ),
+                                       ResourceType.DRL );
+
+        assertTrue( verifier.hasErrors() );
+
+        assertEquals( 1,
+                      verifier.getErrors().size() );
+
+    }
+
     public void testFactTypesFromJar() {
         VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
 



More information about the jboss-svn-commits mailing list