[jboss-svn-commits] JBL Code SVN: r32783 - in labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server: util and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri May 7 10:31:00 EDT 2010


Author: eaa
Date: 2010-05-07 10:30:59 -0400 (Fri, 07 May 2010)
New Revision: 32783

Modified:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/util/VerifierRunner.java
Log:
GUVNOR-536 Improve error messages when verifier fails
       - ServiceImplementation: Verifier Runtime Exception is converted to a Serializable exception
       - VerifierRunner: Now checks for errors after running verifier process and throw a RuntimeException if it finds any. 

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java	2010-05-07 14:22:14 UTC (rev 32782)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java	2010-05-07 14:30:59 UTC (rev 32783)
@@ -2262,9 +2262,15 @@
             throw new DetailedSerializableException( "Unable to load a required class.",
                                                      e.getMessage() );
         } catch ( ConsequenceException e ) {
-            log.error( "There was an error executing the consequence of rule [" + e.getRule().getName() + "]: " + e.getMessage() );
-            throw new DetailedSerializableException( "There was an error executing the consequence of rule [" + e.getRule().getName() + "]",
-                                                     e.getMessage() );
+            String messageShort = "There was an error executing the consequence of rule [" + e.getRule().getName() + "]";
+            String messageLong = e.getMessage();
+            if (e.getCause() != null){
+                messageLong += "\nCAUSED BY "+e.getCause().getMessage();
+            }
+
+            log.error( messageShort+": "+messageLong );
+            throw new DetailedSerializableException( messageShort,
+                                                     messageLong );
         } catch ( Exception e ) {
             log.error( "Unable to run the scenario: " + e.getMessage() );
             throw new DetailedSerializableException( "Unable to run the scenario.",
@@ -2911,14 +2917,18 @@
         if ( log.isDebugEnabled() ) {
             log.debug( "constraints rules: " + constraintRules );
         }
-        if ( AssetFormats.DECISION_TABLE_GUIDED.equals( asset.metaData.format ) || AssetFormats.DECISION_SPREADSHEET_XLS.equals( asset.metaData.format ) ) {
-            return runner.verify( drl,
-                                  VerifierConfiguration.VERIFYING_SCOPE_DECISION_TABLE,
-                                  constraintRules );
-        } else {
-            return runner.verify( drl,
-                                  VerifierConfiguration.VERIFYING_SCOPE_SINGLE_RULE,
-                                  constraintRules );
+        try{
+            if ( AssetFormats.DECISION_TABLE_GUIDED.equals( asset.metaData.format ) || AssetFormats.DECISION_SPREADSHEET_XLS.equals( asset.metaData.format ) ) {
+                return runner.verify( drl,
+                                      VerifierConfiguration.VERIFYING_SCOPE_DECISION_TABLE,
+                                      constraintRules );
+            } else {
+                return runner.verify( drl,
+                                      VerifierConfiguration.VERIFYING_SCOPE_SINGLE_RULE,
+                                      constraintRules );
+            }
+        } catch (Throwable t){
+            throw new SerializableException( t.getMessage() );
         }
     }
 }

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/util/VerifierRunner.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/util/VerifierRunner.java	2010-05-07 14:22:14 UTC (rev 32782)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/util/VerifierRunner.java	2010-05-07 14:30:59 UTC (rev 32783)
@@ -18,6 +18,7 @@
 import org.drools.verifier.Verifier;
 import org.drools.verifier.VerifierConfiguration;
 import org.drools.verifier.VerifierConfigurationImpl;
+import org.drools.verifier.VerifierError;
 import org.drools.verifier.builder.VerifierBuilderFactory;
 import org.drools.verifier.data.VerifierReport;
 
@@ -38,12 +39,12 @@
 
         verifier.addResourcesToVerify( ResourceFactory.newReaderResource( new StringReader( drl ) ),
                                        ResourceType.DRL );
-        verifier.fireAnalysis();
-        VerifierReport res = verifier.getResult();
+        VerifierReport res = fireAnalysis();
 
         return VerifierReportCreator.doReport( res );
     }
 
+
     public AnalysisReport verify(PackageItem packageItem,
                                  String scope, Collection<String> additionalVerifierRules) {
         this.packageItem = packageItem;
@@ -66,13 +67,27 @@
 
         addToRulesVerifier();
 
-        verifier.fireAnalysis();
+        this.fireAnalysis();
 
         VerifierReport report = verifier.getResult();
 
         return VerifierReportCreator.doReport( report );
     }
 
+    private VerifierReport fireAnalysis() throws RuntimeException {
+        verifier.fireAnalysis();
+        if (verifier.hasErrors()) {
+            StringBuilder message = new StringBuilder("Verifier Errors:\n");
+            for (VerifierError verifierError : verifier.getErrors()) {
+                message.append("\t");
+                message.append(verifierError.getMessage());
+                message.append("\n");
+            }
+            throw new RuntimeException(message.toString());
+        }
+        return verifier.getResult();
+    }
+
     private void initVerifier(String scope, Collection<String> additionalVerifierRules) {
         VerifierConfiguration conf = new DefaultVerifierConfiguration();
         if(useDefaultConfig){



More information about the jboss-svn-commits mailing list