[jboss-svn-commits] JBL Code SVN: r32093 - in labs/jbossrules/trunk/drools-verifier/src: main/java/org/drools/verifier/report/components and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Mar 15 09:57:52 EDT 2010


Author: Rikkola
Date: 2010-03-15 09:57:51 -0400 (Mon, 15 Mar 2010)
New Revision: 32093

Modified:
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierComponent.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Equivalence.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Subsumption.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/VerifierMessage.java
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/Consequence.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Notes.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Warnings.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubRules.drl
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/report/components/CauseTest.java
Log:
JBRULES-2451 : Better verifier message reporting

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierComponent.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierComponent.java	2010-03-15 13:37:40 UTC (rev 32092)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierComponent.java	2010-03-15 13:57:51 UTC (rev 32093)
@@ -1,6 +1,7 @@
 package org.drools.verifier.data;
 
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -47,6 +48,6 @@
     }
 
     public Collection<Cause> getCauses() {
-        return null;
+        return Collections.emptyList();
     }
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Equivalence.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Equivalence.java	2010-03-15 13:37:40 UTC (rev 32092)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Equivalence.java	2010-03-15 13:57:51 UTC (rev 32093)
@@ -25,7 +25,9 @@
                        VerifierComponent second) {
         items.add( first );
         items.add( second );
-        this.causes = Collections.emptyList();
+        this.causes = new ArrayList<Cause>();
+        causes.add( first );
+        causes.add( second );
     }
 
     public Equivalence(VerifierComponent first,

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Subsumption.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Subsumption.java	2010-03-15 13:37:40 UTC (rev 32092)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Subsumption.java	2010-03-15 13:57:51 UTC (rev 32093)
@@ -2,8 +2,6 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
 
 import org.drools.verifier.data.VerifierComponent;
 
@@ -32,7 +30,9 @@
                        VerifierComponent right) {
         this.left = left;
         this.right = right;
-        this.causes = Collections.emptyList();
+        this.causes = new ArrayList<Cause>();
+        causes.add( left );
+        causes.add( right );
     }
 
     public Subsumption(VerifierComponent left,

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/VerifierMessage.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/VerifierMessage.java	2010-03-15 13:37:40 UTC (rev 32092)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/VerifierMessage.java	2010-03-15 13:57:51 UTC (rev 32093)
@@ -73,22 +73,50 @@
         str.append( id );
         str.append( ":\n" );
 
+        if ( !getImpactedRules().isEmpty() ) {
+            str.append( "Impacted rules:\n" );
+            for ( String ruleName : getImpactedRules().values() ) {
+                str.append( "    -" + ruleName + "\n" );
+            }
+        }
+
         if ( faulty != null ) {
             str.append( "faulty : " );
             str.append( faulty );
-            str.append( ", " );
+            str.append( "\n" );
         }
 
         str.append( message );
-        str.append( " \n\tCauses are [ \n" );
+        str.append( " \n\tCause trace: \n" );
+        str.append( printCauses( 8,
+                                 causes ) );
 
+        return str.toString();
+    }
+
+    private StringBuffer printCauses(int spaces,
+                                     Collection<Cause> causes) {
+
+        StringBuffer buffer = new StringBuffer();
+
         for ( Cause cause : causes ) {
-            str.append( "\t\t" );
-            str.append( cause );
-            str.append( "\n" );
+            for ( int i = 0; i < spaces; i++ ) {
+                buffer.append( " " );
+            }
+            buffer.append( cause.toString() );
+            buffer.append( "\n" );
+
+            Collection<Cause> childCauses = cause.getCauses();
+            if ( childCauses == null ) {
+                System.out.println( cause );
+            }
+            if ( !childCauses.isEmpty() ) {
+                buffer.append( printCauses( spaces * 2,
+                                            childCauses ) );
+            }
         }
-        str.append( "\t]" );
 
-        return str.toString();
+        return buffer;
     }
+
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/Consequence.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/Consequence.drl	2010-03-15 13:37:40 UTC (rev 32092)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/Consequence.drl	2010-03-15 13:57:51 UTC (rev 32093)
@@ -31,6 +31,6 @@
 								impactedRules,
 								Severity.WARNING,
 								MessageType.MISSING_COMPONENT,
-								$r,
+								null,
 								$r + " has no RHS." ) );
 end

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Notes.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Notes.drl	2010-03-15 13:37:40 UTC (rev 32092)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Notes.drl	2010-03-15 13:57:51 UTC (rev 32093)
@@ -51,7 +51,7 @@
 						impactedRules,
 						Severity.NOTE, 
 						MessageType.REDUNDANCY,
-						$r, 
+						null, 
 						"Same restriction exists twice.", 
 						causes ) );
 end
@@ -82,7 +82,7 @@
 						impactedRules,
 						Severity.NOTE, 
 						MessageType.REDUNDANCY,
-						$r, 
+						null, 
 						"Two pattern possibilities with redundant restrictions exists twice in the same rule.", 
 						causes ) );
 end

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Warnings.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Warnings.drl	2010-03-15 13:37:40 UTC (rev 32092)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Warnings.drl	2010-03-15 13:57:51 UTC (rev 32093)
@@ -119,7 +119,7 @@
 						impactedRules,
 						Severity.WARNING, 
 						MessageType.EQUIVALANCE,
-						$left, 
+						null, 
 						"Rule is equivalent to rule " + $right.getRuleName() + ".", 
 						equivalence ) );
 end
@@ -186,7 +186,7 @@
 						impactedRules,
 						Severity.WARNING, 
 						MessageType.REDUNDANCY,
-						$left, 
+						null, 
 						"Rules " + $right.getRuleName() + " and.", 
 						redundancy ) );
 end
@@ -231,14 +231,13 @@
 		impactedRules.put( $right.getGuid(), $right.getRuleName());
 		
 		Collection causes = new ArrayList();
-		causes.add( $subsumption.getLeft() );
-		causes.add( $subsumption.getRight() );
+		causes.add( $subsumption );
 
 		result.add(new VerifierMessage(
 						impactedRules,
 						Severity.WARNING, 
 						MessageType.SUBSUMPTION,
-						$subsumption, 
+						null, 
 						"Rules are subsumptant.", 
 						causes ) );
 end

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubRules.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubRules.drl	2010-03-15 13:37:40 UTC (rev 32092)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubRules.drl	2010-03-15 13:57:51 UTC (rev 32093)
@@ -36,11 +36,21 @@
 				right memberOf $subRule2.items
 			)
 		)
-#		not Subsumption(
-#				left memberOf $subRule1.items,
-#				right not memberOf $subRule2.items
-#		)
+		
+		$causes : ArrayList()
+        	from collect( 
+              	Subsumption(
+      				left memberOf $subRule1.items,  			
+          			right memberOf $subRule2.items
+              	) 
+            )
 	then
-		insert( new Subsumption( $subRule1, $subRule2 ) );
+		insert( 
+			new Subsumption( 
+				$subRule1, 
+				$subRule2,
+				$causes 
+			) 
+		);
 end
 

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/report/components/CauseTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/report/components/CauseTest.java	2010-03-15 13:37:40 UTC (rev 32092)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/report/components/CauseTest.java	2010-03-15 13:57:51 UTC (rev 32093)
@@ -55,21 +55,38 @@
 
         VerifierMessage message = (VerifierMessage) redundancyWarnings.toArray()[0];
 
+        //        System.out.println( message );
+
         assertEquals( 2,
                       message.getImpactedRules().size() );
 
         assertTrue( message.getImpactedRules().values().contains( "Your First Rule" ) );
         assertTrue( message.getImpactedRules().values().contains( "Your Second Rule" ) );
 
-        // TODO: Test causes
         Cause[] causes = message.getCauses().toArray( new Cause[message.getCauses().size()] );
 
         assertEquals( 1,
                       causes.length );
-        causes = causes[0].getCauses().toArray( new Cause[message.getCauses().size()] );
+        causes = causes[0].getCauses().toArray( new Cause[causes[0].getCauses().size()] );
+
         assertEquals( 2,
                       causes.length );
 
+        causes = causes[0].getCauses().toArray( new Cause[causes[0].getCauses().size()] );
+
+        assertEquals( 1,
+                      causes.length );
+
+        causes = causes[0].getCauses().toArray( new Cause[causes[0].getCauses().size()] );
+
+        assertEquals( 1,
+                      causes.length );
+
+        causes = causes[0].getCauses().toArray( new Cause[causes[0].getCauses().size()] );
+
+        assertEquals( 2,
+                      causes.length );
+
         assertEquals( 0,
                       result.getBySeverity( Severity.NOTE ).size() );
 



More information about the jboss-svn-commits mailing list