[jboss-svn-commits] JBL Code SVN: r32091 - in labs/jbossrules/trunk/drools-verifier/src: main/java/org/drools/verifier/data and 25 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Mar 15 07:32:41 EDT 2010


Author: Rikkola
Date: 2010-03-15 07:32:39 -0400 (Mon, 15 Mar 2010)
New Revision: 32091

Added:
   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/Overlap.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Reason.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/ReasonType.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/report/components/
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/report/components/CauseTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/overlaps/
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/overlaps/RestrictionsTest.drl
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/report/
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/report/components/
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/report/components/Causes.drl
Removed:
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/CauseType.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/RangeCheckCause.java
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/
Modified:
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Consequence.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Constraint.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Field.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Pattern.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Restriction.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubPattern.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubRule.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/TextConsequence.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierEvalDescr.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierPredicateDescr.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierRule.java
   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/VerifierReport.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierReportImpl.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/AlwaysTrue.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Cause.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Gap.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Incompatibility.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/MissingNumberPattern.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/MissingRange.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Opposites.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Redundancy.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/java/org/drools/verifier/report/components/VerifierMessageBase.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/VerifierRangeCheckMessage.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/html/ComponentsReportVisitor.java
   labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/html/MissingRangesReportVisitor.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/alwaysFalse/Patterns.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/alwaysFalse/Rules.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/alwaysTrue/Patterns.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/alwaysTrue/Rules.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/incoherence/Patterns.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/incoherence/Restrictions.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/missingEquality/MissingEquality.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/opposites/Restrictions.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/optimisation/PatternOrder.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/optimisation/RestrictionOrder.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/overlaps/Restrictions.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/Redundancy.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/Consequences.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Restrictions.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubPatterns.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/TestBase.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifyingScopeTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/equivalence/EquivalentRulesTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/incompatibility/IncompatibilityBase.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/incompatibility/IncompatibilityPatternsTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/incompatibility/IncompatibilityRestrictionsTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositePatternsTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositeRestrictionsTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositesBase.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/overlaps/OverlappingRestrictionsTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/WarningsTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubPatternsTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubRulesTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/FindPatterns.drl
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/VerifyingScope.drl
Log:
JBRULES-2451 : Better verifier message reporting

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Consequence.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Consequence.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Consequence.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -24,4 +24,7 @@
 
     public ConsequenceType getConsequenceType();
 
+    public String getRuleGuid();
+    
+    public String getRuleName();
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Constraint.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Constraint.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Constraint.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -1,7 +1,6 @@
 package org.drools.verifier.components;
 
 import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.CauseType;
 
 /**
  *
@@ -20,10 +19,6 @@
         return VerifierComponentType.CONSTRAINT;
     }
 
-    public CauseType getCauseType() {
-        return CauseType.CONSTRAINT;
-    }
-
     public int getLineNumber() {
         return lineNumber;
     }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Field.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Field.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Field.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -1,7 +1,6 @@
 package org.drools.verifier.components;
 
 import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.CauseType;
 
 /**
  * 
@@ -30,10 +29,6 @@
         return VerifierComponentType.FIELD;
     }
 
-    public CauseType getCauseType() {
-        return CauseType.FIELD;
-    }
-
     public String getName() {
         return name;
     }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Pattern.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Pattern.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Pattern.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -1,7 +1,6 @@
 package org.drools.verifier.components;
 
 import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.CauseType;
 
 /**
  *
@@ -22,10 +21,6 @@
     private boolean               isPatternExists  = false;
     private boolean               isPatternForall  = false;
 
-    public CauseType getCauseType() {
-        return CauseType.PATTERN;
-    }
-
     public boolean isPatternNot() {
         return isPatternNot;
     }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Restriction.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Restriction.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Restriction.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -2,7 +2,6 @@
 
 import org.drools.base.evaluators.Operator;
 import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.CauseType;
 
 /**
  * 
@@ -34,10 +33,6 @@
 
     protected Operator operator;
 
-    public CauseType getCauseType() {
-        return CauseType.RESTRICTION;
-    }
-
     public abstract RestrictionType getRestrictionType();
 
     @Override

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubPattern.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubPattern.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubPattern.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -3,8 +3,6 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import org.drools.verifier.report.components.CauseType;
-
 /**
  * Instance of this class represents a possible combination of Constraints under
  * one Pattern. Each possibility returns true if all the Constraints in the
@@ -49,10 +47,6 @@
         return pattern.isPatternForall();
     }
 
-    public CauseType getCauseType() {
-        return CauseType.SUB_PATTERN;
-    }
-
     public void setPattern(Pattern pattern) {
         this.pattern = pattern;
     }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubRule.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubRule.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubRule.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -6,7 +6,6 @@
 import java.util.Set;
 
 import org.drools.verifier.components.Consequence.ConsequenceType;
-import org.drools.verifier.report.components.CauseType;
 
 /**
  * Instance of this class represents a possible combination of
@@ -25,10 +24,6 @@
 
     private VerifierRule       rule;
 
-    public CauseType getCauseType() {
-        return CauseType.SUB_RULE;
-    }
-
     public Set<RuleComponent> getItems() {
         return items;
     }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/TextConsequence.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/TextConsequence.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/TextConsequence.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -1,7 +1,5 @@
 package org.drools.verifier.components;
 
-import org.drools.verifier.report.components.CauseType;
-
 public class TextConsequence extends RuleComponent
     implements
     Consequence {
@@ -12,10 +10,6 @@
         return ConsequenceType.TEXT;
     }
 
-    public CauseType getCauseType() {
-        return CauseType.CONSEQUENCE;
-    }
-
     public void setText(String text) {
         this.text = text;
     }
@@ -27,4 +21,8 @@
     public VerifierComponentType getVerifierComponentType() {
         return VerifierComponentType.CONSEQUENCE;
     }
+
+    public String toString() {
+        return "TextConsequence: {\n" + text + "\n";
+    }
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierEvalDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierEvalDescr.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierEvalDescr.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -1,7 +1,6 @@
 package org.drools.verifier.components;
 
 import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.CauseType;
 
 /**
  *
@@ -14,10 +13,6 @@
     private String content;
     private String classMethodName;
 
-    public CauseType getCauseType() {
-        return CauseType.EVAL;
-    }
-
     public String getClassMethodName() {
         return classMethodName;
     }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierPredicateDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierPredicateDescr.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierPredicateDescr.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -1,7 +1,6 @@
 package org.drools.verifier.components;
 
 import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.CauseType;
 
 /**
  *
@@ -14,10 +13,6 @@
     private String content;
     private String classMethodName;
 
-    public CauseType getCauseType() {
-        return CauseType.PREDICATE;
-    }
-
     public String getClassMethodName() {
         return classMethodName;
     }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierRule.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierRule.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierRule.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -8,7 +8,6 @@
 
 import org.drools.verifier.components.Consequence.ConsequenceType;
 import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.CauseType;
 
 /**
  *
@@ -40,10 +39,6 @@
 
     private Map<String, List<String>> otherInfo       = new HashMap<String, List<String>>();
 
-    public CauseType getCauseType() {
-        return CauseType.RULE;
-    }
-
     public void setAttributes(Map<String, String> attributes) {
         this.attributes = attributes;
     }

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 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierComponent.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -1,13 +1,16 @@
 package org.drools.verifier.data;
 
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 
 import org.drools.verifier.components.VerifierComponentType;
+import org.drools.verifier.report.components.Cause;
 
 public abstract class VerifierComponent
     implements
-    Comparable<VerifierComponent> {
+    Comparable<VerifierComponent>,
+    Cause {
 
     static class GuidFactory {
 
@@ -42,4 +45,8 @@
     public int compareTo(VerifierComponent another) {
         return this.guid.compareTo( another.getGuid() );
     }
+
+    public Collection<Cause> getCauses() {
+        return null;
+    }
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierReport.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierReport.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierReport.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -4,7 +4,7 @@
 
 import org.drools.verifier.report.components.Gap;
 import org.drools.verifier.report.components.MissingNumberPattern;
-import org.drools.verifier.report.components.RangeCheckCause;
+import org.drools.verifier.report.components.MissingRange;
 import org.drools.verifier.report.components.Severity;
 import org.drools.verifier.report.components.VerifierMessageBase;
 
@@ -24,12 +24,10 @@
 
     public VerifierData getVerifierData();
 
-    public Collection<RangeCheckCause> getRangeCheckCauses();
+    public Collection<MissingRange> getRangeCheckCauses();
 
-    public Collection<RangeCheckCause> getRangeCheckCausesByFieldId(int id);
+    public Collection<Gap> getGapsByFieldId(String fieldId);
 
-    public Collection<Gap> getGapsByFieldId(int fieldId);
-
     public void add(VerifierMessageBase note);
 
     /**
@@ -41,6 +39,6 @@
      */
     public Collection<VerifierMessageBase> getBySeverity(Severity severity);
 
-    public Collection<RangeCheckCause> getRangeCheckCausesByFieldId(String guid);
+    public Collection<MissingRange> getRangeCheckCausesByFieldId(String guid);
 
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierReportImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierReportImpl.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierReportImpl.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -9,7 +9,7 @@
 
 import org.drools.verifier.report.components.Gap;
 import org.drools.verifier.report.components.MissingNumberPattern;
-import org.drools.verifier.report.components.RangeCheckCause;
+import org.drools.verifier.report.components.MissingRange;
 import org.drools.verifier.report.components.Severity;
 import org.drools.verifier.report.components.VerifierMessageBase;
 
@@ -75,8 +75,8 @@
         return gapsByFieldId.get( fieldId );
     }
 
-    public Collection<RangeCheckCause> getRangeCheckCauses() {
-        Collection<RangeCheckCause> result = new ArrayList<RangeCheckCause>();
+    public Collection<MissingRange> getRangeCheckCauses() {
+        Collection<MissingRange> result = new ArrayList<MissingRange>();
 
         result.addAll( gapsById.values() );
         result.addAll( missingNumberPatternsById.values() );
@@ -93,8 +93,8 @@
                                             missingNumberPattern );
     }
 
-    public Collection<RangeCheckCause> getRangeCheckCausesByFieldId(String id) {
-        Collection<RangeCheckCause> result = new ArrayList<RangeCheckCause>();
+    public Collection<MissingRange> getRangeCheckCausesByFieldId(String id) {
+        Collection<MissingRange> result = new ArrayList<MissingRange>();
 
         result.addAll( gapsByFieldId.get( id ) );
 
@@ -115,13 +115,4 @@
         return this.data;
     }
 
-    public Collection<Gap> getGapsByFieldId(int fieldId) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public Collection<RangeCheckCause> getRangeCheckCausesByFieldId(int id) {
-        // TODO Auto-generated method stub
-        return null;
-    }
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/AlwaysTrue.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/AlwaysTrue.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/AlwaysTrue.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -1,37 +1,58 @@
 package org.drools.verifier.report.components;
 
+import java.util.Arrays;
+import java.util.Collection;
+
 /**
  * Pattern, rule or similar that is always satisfied.
  * 
  * @author trikkola
  * 
  */
-public class AlwaysTrue implements Cause {
+public class AlwaysTrue
+    implements
+    Reason,
+    Cause {
 
-	private static int index = 0;
+    private static int              index = 0;
 
-	private final String guid = String.valueOf( index++ );
+    private final String            guid  = String.valueOf( index++ );
 
-	private final Cause cause;
+    private final Cause             impactedComponent;
 
-	/**
-	 * 
-	 * @param cause
-	 *            Component that is always satisfied.
-	 */
-	public AlwaysTrue(Cause cause) {
-		this.cause = cause;
-	}
+    private final Collection<Cause> causes;
 
-	public CauseType getCauseType() {
-		return CauseType.ALWAYS_TRUE;
-	}
+    /**
+     * 
+     * @param cause
+     *            Component that is always satisfied.
+     */
+    public AlwaysTrue(Cause cause,
+                      Collection<Cause> causes) {
+        this.impactedComponent = cause;
+        this.causes = causes;
+    }
 
-	public String getGuid() {
-		return guid;
-	}
+    public AlwaysTrue(Cause cause,
+                      Cause... causes) {
+        this.impactedComponent = cause;
+        this.causes = Arrays.asList( causes );
+    }
 
-	public Cause getCause() {
-		return cause;
-	}
+    public ReasonType getReasonType() {
+        return ReasonType.ALWAYS_TRUE;
+    }
+
+    public String getGuid() {
+        return guid;
+    }
+
+    public Cause getCause() {
+        return impactedComponent;
+    }
+
+    public Collection<Cause> getCauses() {
+        return causes;
+    }
+
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Cause.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Cause.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Cause.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -1,13 +1,15 @@
 package org.drools.verifier.report.components;
 
+import java.util.Collection;
 
 /**
  *
+ * Cause for a Reason.
+ * 
  * @author Toni Rikkola
  */
 public interface Cause {
 
-    public String getGuid();
+    public Collection<Cause> getCauses();
 
-    public CauseType getCauseType();
 }

Deleted: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/CauseType.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/CauseType.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/CauseType.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -1,29 +0,0 @@
-package org.drools.verifier.report.components;
-
-public class CauseType {
-
-    public static final CauseType RULE              = new CauseType( "RULE" );
-    public static final CauseType FIELD             = new CauseType( "FIELD" );
-    public static final CauseType GAP               = new CauseType( "GAP" );
-    public static final CauseType PATTERN           = new CauseType( "PATTERN" );
-    public static final CauseType RESTRICTION       = new CauseType( "RESTRICTION" );
-    public static final CauseType SUB_PATTERN       = new CauseType( "SUB_PATTERN" );
-    public static final CauseType SUB_RULE          = new CauseType( "SUB_RULE" );
-    public static final CauseType SOURCE            = new CauseType( "SOURCE" );
-    public static final CauseType RANGE_CHECK_CAUSE = new CauseType( "RANGE_CHECK_CAUSE" );
-    public static final CauseType REDUNDANCY        = new CauseType( "REDUNDANCY" );
-    public static final CauseType EVAL              = new CauseType( "EVAL" );
-    public static final CauseType PREDICATE         = new CauseType( "PREDICATE" );
-    public static final CauseType CONSTRAINT        = new CauseType( "CONSTRAINT" );
-    public static final CauseType CONSEQUENCE       = new CauseType( "CONSEQUENCE" );
-    public static final CauseType SUBSUMPTION       = new CauseType( "SUBSUMPTION" );
-    public static final CauseType OPPOSITE          = new CauseType( "OPPOSITE" );
-    public static final CauseType INCOMPATIBLE      = new CauseType( "INCOMPATIBLE" );
-    public static final CauseType ALWAYS_TRUE       = new CauseType( "ALWAYS_TRUE" );
-
-    public final String           type;
-
-    public CauseType(String type) {
-        this.type = type;
-    }
-}

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Equivalence.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -0,0 +1,51 @@
+package org.drools.verifier.report.components;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import org.drools.verifier.data.VerifierComponent;
+
+/**
+ * Object type that indicates a equivalence between two objects.
+ * 
+ * Equivalence happens when the LHS of the rules are redundant, but the LHS is different.
+ * 
+ * @author Toni Rikkola
+ */
+public class Equivalence
+    implements
+    Cause {
+
+    private final List<VerifierComponent> items = new ArrayList<VerifierComponent>( 2 );
+    private final Collection<Cause>       causes;
+
+    public Equivalence(VerifierComponent first,
+                       VerifierComponent second) {
+        items.add( first );
+        items.add( second );
+        this.causes = Collections.emptyList();
+    }
+
+    public Equivalence(VerifierComponent first,
+                       VerifierComponent second,
+                       Collection<Cause> causes) {
+        items.add( first );
+        items.add( second );
+        this.causes = causes;
+    }
+
+    public List<VerifierComponent> getItems() {
+        return items;
+    }
+
+    @Override
+    public String toString() {
+        return "Equivalency between: (" + items.get( 0 ) + ") and (" + items.get( 1 ) + ").";
+    }
+
+    public Collection<Cause> getCauses() {
+        return causes;
+    }
+}

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Gap.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Gap.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Gap.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -1,5 +1,7 @@
 package org.drools.verifier.report.components;
 
+import java.util.Collection;
+
 import org.drools.base.evaluators.Operator;
 import org.drools.verifier.components.Field;
 import org.drools.verifier.components.LiteralRestriction;
@@ -8,53 +10,56 @@
  * 
  * @author Toni Rikkola
  */
-public class Gap extends MissingRange implements RangeCheckCause,
-		Comparable<MissingRange> {
+public class Gap extends MissingRange
+    implements
+    Comparable<MissingRange> {
 
-	private final LiteralRestriction restriction;
+    private final LiteralRestriction restriction;
 
-	public int compareTo(MissingRange another) {
-		return super.compareTo(another);
-	}
+    public int compareTo(MissingRange another) {
+        return super.compareTo( another );
+    }
 
-	public CauseType getCauseType() {
-		return CauseType.GAP;
-	}
+    /**
+     * 
+     * @param field
+     *            Field from where the value is missing.
+     * @param evaluator
+     *            Evaluator for the missing value.
+     * @param cause
+     *            The restriction that the gap begins from.
+     */
+    public Gap(Field field,
+               Operator operator,
+               LiteralRestriction restriction) {
+        super( field,
+               operator );
 
-	/**
-	 * 
-	 * @param field
-	 *            Field from where the value is missing.
-	 * @param evaluator
-	 *            Evaluator for the missing value.
-	 * @param cause
-	 *            The restriction that the gap begins from.
-	 */
-	public Gap(Field field, Operator operator, LiteralRestriction restriction) {
-		super(field, operator);
+        this.restriction = restriction;
+    }
 
-		this.restriction = restriction;
-	}
+    public String getRuleName() {
+        return restriction.getRuleName();
+    }
 
-	public String getRuleName() {
-		return restriction.getRuleName();
-	}
+    public LiteralRestriction getRestriction() {
+        return restriction;
+    }
 
-	public LiteralRestriction getRestriction() {
-		return restriction;
-	}
+    public String getValueAsString() {
+        return restriction.getValueAsString();
+    }
 
-	public String getValueAsString() {
-		return restriction.getValueAsString();
-	}
+    public Object getValueAsObject() {
+        return restriction.getValueAsObject();
+    }
 
-	public Object getValueAsObject() {
-		return restriction.getValueAsObject();
-	}
+    @Override
+    public String toString() {
+        return "Gap: (" + field + ") " + getOperator() + " " + getValueAsString() + " from rule: [" + getRuleName() + "]";
+    }
 
-	@Override
-	public String toString() {
-		return "Gap: (" + field + ") " + getOperator() + " "
-				+ getValueAsString() + " from rule: [" + getRuleName() + "]";
-	}
+    public Collection<Cause> getCauses() {
+        return null;
+    }
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Incompatibility.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Incompatibility.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Incompatibility.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -1,45 +1,51 @@
 package org.drools.verifier.report.components;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
 /**
+ * Object type that indicates an incompatibility between two objects.
  * 
- * Two causes are incompatible.
- * <p>
- * For example: Restrictions (a > b) and (a == b)
+ * Incompatibility happens when there is no value that would satisfy both objects.
  * 
+ * 
+ * Example: 
+ * A: x > 10
+ * B: x == 100
+ * 
  * @author Toni Rikkola
  */
-public class Incompatibility implements Cause {
+public class Incompatibility
+    implements
+    Cause {
 
-	private static int index = 0;
+    private final Cause  left;
+    private final Cause  right;
 
-	private final String guid = String.valueOf( index++ );
+    public Incompatibility(Cause left,
+                           Cause right) {
+        this.left = left;
+        this.right = right;
+    }
 
-	private final Cause left;
-	private final Cause right;
+    public Cause getLeft() {
+        return left;
+    }
 
-	public Incompatibility(Cause left, Cause right) {
-		this.left = left;
-		this.right = right;
-	}
+    public Cause getRight() {
+        return right;
+    }
 
-	public String getGuid() {
-		return guid;
-	}
+    @Override
+    public String toString() {
+        return "(" + getLeft() + ") and (" + getRight() + ") are incompatible.";
+    }
 
-	public CauseType getCauseType() {
-		return CauseType.INCOMPATIBLE;
-	}
-
-	public Cause getLeft() {
-		return left;
-	}
-
-	public Cause getRight() {
-		return right;
-	}
-
-	@Override
-	public String toString() {
-		return "(" + getLeft() + ") and (" + getRight() + ") are incompatible.";
-	}
+    public Collection<Cause> getCauses() {
+        List<Cause> list = new ArrayList<Cause>();
+        list.add( left );
+        list.add( right );
+        return list;
+    }
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/MissingNumberPattern.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/MissingNumberPattern.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/MissingNumberPattern.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -2,6 +2,7 @@
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.util.Collection;
 import java.util.Locale;
 
 import org.drools.base.evaluators.Operator;
@@ -13,7 +14,6 @@
  */
 public class MissingNumberPattern extends MissingRange
     implements
-    RangeCheckCause,
     Comparable<MissingRange> {
 
     private final String valueType;
@@ -24,10 +24,6 @@
         return super.compareTo( another );
     }
 
-    public CauseType getCauseType() {
-        return CauseType.RANGE_CHECK_CAUSE;
-    }
-
     public MissingNumberPattern(Field field,
                                 Operator operator,
                                 String valueType,
@@ -82,4 +78,8 @@
     public String toString() {
         return "Missing restriction " + operator + " " + value;
     }
+
+    public Collection<Cause> getCauses() {
+        return null;
+    }
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/MissingRange.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/MissingRange.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/MissingRange.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -5,7 +5,9 @@
 
 public abstract class MissingRange
     implements
-    Comparable<MissingRange> {
+    Comparable<MissingRange>,
+    Reason,
+    Cause {
 
     private static int       index = 0;
     protected final String   guid  = String.valueOf( index++ );
@@ -19,6 +21,10 @@
         this.operator = operator;
     }
 
+    public ReasonType getReasonType() {
+        return ReasonType.MISSING_VALUE;
+    }
+
     /**
      * Takes the given operator e, and returns a reversed version of it.
      * 
@@ -58,4 +64,9 @@
     public Operator getOperator() {
         return operator;
     }
+
+    public abstract Object getValueAsObject();
+
+    public abstract String getValueAsString();
+
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Opposites.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Opposites.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Opposites.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -1,25 +1,30 @@
 package org.drools.verifier.report.components;
 
 /**
+ * Object type that indicates an opposity between two objects.
  * 
- * Two causes are opposites.
- * <p>
- * For example: Restrictions (a > b) and (a <= b)
  * 
+ * Opposity happens when only the values that would satisfy object A 
+ * can not satisfy object B.
+ * 
+ * Example: 
+ * A: a == 10
+ * B: a != 10
+ * 
  * @author Toni Rikkola
  */
-public class Opposites extends Incompatibility implements Cause {
+public class Opposites extends Incompatibility
+    implements
+    Cause {
 
-	public Opposites(Cause left, Cause right) {
-		super(left, right);
-	}
+    public Opposites(Cause left,
+                     Cause right) {
+        super( left,
+               right );
+    }
 
-	public CauseType getCauseType() {
-		return CauseType.OPPOSITE;
-	}
-
-	@Override
-	public String toString() {
-		return "Opposites: (" + getLeft() + ") and (" + getRight() + ").";
-	}
+    @Override
+    public String toString() {
+        return "Opposites: (" + getLeft() + ") and (" + getRight() + ").";
+    }
 }

Added: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Overlap.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Overlap.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Overlap.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -0,0 +1,44 @@
+package org.drools.verifier.report.components;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.drools.verifier.data.VerifierComponent;
+
+/**
+ * Object type that indicates an overlap between two objects.
+ * 
+ * Overlap happens when only some values can satisfy both objects
+ * 
+ * Example "values between 1 and 9 can satisfy both":
+ * A: x > 10 
+ * B: x < 0 
+ * 
+ * @author toni rikkola
+ */
+public class Overlap
+    implements
+    Cause {
+
+    private final List<Cause> items = new ArrayList<Cause>( 2 );
+
+    public Overlap(VerifierComponent first,
+                   VerifierComponent second) {
+        items.add( first );
+        items.add( second );
+    }
+
+    public List<Cause> getItems() {
+        return items;
+    }
+
+    public Collection<Cause> getCauses() {
+        return items;
+    }
+
+    @Override
+    public String toString() {
+        return "Overlap between: (" + items.get( 0 ) + ") and (" + items.get( 1 ) + ").";
+    }
+}

Deleted: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/RangeCheckCause.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/RangeCheckCause.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/RangeCheckCause.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -1,19 +0,0 @@
-package org.drools.verifier.report.components;
-
-import org.drools.base.evaluators.Operator;
-import org.drools.verifier.components.Field;
-
-/**
- * 
- * @author Toni Rikkola
- */
-public interface RangeCheckCause extends Cause {
-
-	public Field getField();
-
-	public Object getValueAsObject();
-
-	public String getValueAsString();
-
-	public Operator getOperator();
-}

Added: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Reason.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Reason.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Reason.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -0,0 +1,17 @@
+package org.drools.verifier.report.components;
+
+import java.util.Collection;
+
+/**
+ * 
+ * Reason why something is wrong.
+ * 
+ * @author trikkola
+ *
+ */
+public interface Reason {
+
+    public Collection<Cause> getCauses();
+
+    public ReasonType getReasonType();
+}

Added: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/ReasonType.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/ReasonType.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/ReasonType.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -0,0 +1,23 @@
+package org.drools.verifier.report.components;
+
+/**
+ * 
+ * @author trikkola
+ *
+ */
+public class ReasonType {
+
+    public static final ReasonType MISSING_VALUE = new ReasonType( "MISSING_VALUE" );
+    public static final ReasonType REDUNDANT     = new ReasonType( "REDUNDANT" );
+    public static final ReasonType SUBSUMPTANT   = new ReasonType( "SUBSUMPTANT" );
+    public static final ReasonType ALWAYS_TRUE   = new ReasonType( "ALWAYS_TRUE" );
+    public static final ReasonType ALWAYS_FALSE  = new ReasonType( "ALWAYS_FALSE" );
+    public static final ReasonType INCOMPATIBLE  = new ReasonType( "INCOMPATIBLE" );
+    public static final ReasonType OPPOSITY      = new ReasonType( "OPPOSITY" );
+
+    public final String            type;
+
+    public ReasonType(String type) {
+        this.type = type;
+    }
+}

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Redundancy.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Redundancy.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Redundancy.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -1,42 +1,47 @@
 package org.drools.verifier.report.components;
 
 import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 
+import org.drools.verifier.data.VerifierComponent;
+
 /**
- * Presents a redundancy between two Causes. The link between them can be WEAK
- * or STRONG.
+ * Object type that indicates a redundancy between two objects.
  * 
- * WEAK redundancy is for example two VerifierRules, but not their rule
- * possibilities. STRONG redundancy includes possibilities.
+ * Redundancy happens when all the possible values satisfy both objects.
  * 
+ * Example:
+ * A: x == 10
+ * B: x == 10
+ * 
  * @author Toni Rikkola
  */
 public class Redundancy
     implements
     Cause {
 
-    private static int        index = 0;
+    private final List<VerifierComponent> items = new ArrayList<VerifierComponent>( 2 );
 
-    private final String      guid  = String.valueOf( index++ );
+    private final Collection<Cause>       causes;
 
-    private final List<Cause> items = new ArrayList<Cause>( 2 );
-
-    public Redundancy(Cause first,
-                      Cause second) {
+    public Redundancy(VerifierComponent first,
+                      VerifierComponent second) {
         items.add( first );
         items.add( second );
+        this.causes = Collections.emptyList();
     }
 
-    public String getGuid() {
-        return guid;
+    public Redundancy(VerifierComponent first,
+                      VerifierComponent second,
+                      Collection<Cause> causes) {
+        items.add( first );
+        items.add( second );
+        this.causes = causes;
     }
 
-    public CauseType getCauseType() {
-        return CauseType.REDUNDANCY;
-    }
-
-    public List<Cause> getItems() {
+    public List<VerifierComponent> getItems() {
         return items;
     }
 
@@ -44,4 +49,8 @@
     public String toString() {
         return "Redundancy between: (" + items.get( 0 ) + ") and (" + items.get( 1 ) + ").";
     }
+
+    public Collection<Cause> getCauses() {
+        return causes;
+    }
 }

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 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Subsumption.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -1,42 +1,62 @@
 package org.drools.verifier.report.components;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import org.drools.verifier.data.VerifierComponent;
+
 /**
+ * Object type that indicates a subsumption between two objects.
  * 
+ * Subsumption happens when all possible the values for component A,
+ * are able to satisfy component B and only some values that are able to 
+ * satisfy component B are able to satisfy component A.
+ * 
+ * Example "if x is more than 1 both restrictions are satisfied":
+ * A: x > 10 
+ * B: x > 1 
+ * 
  * @author Toni Rikkola
  */
-public class Subsumption implements Cause {
+public class Subsumption
+    implements
+    Cause {
 
-	private static int index = 0;
+    private final VerifierComponent left;
+    private final VerifierComponent right;
+    private final Collection<Cause> causes;
 
-	private final String guid = String.valueOf( index++ );
+    public Subsumption(VerifierComponent left,
+                       VerifierComponent right) {
+        this.left = left;
+        this.right = right;
+        this.causes = Collections.emptyList();
+    }
 
-	private final Cause left;
-	private final Cause right;
+    public Subsumption(VerifierComponent left,
+                       VerifierComponent right,
+                       Collection<Cause> causes) {
+        this.left = left;
+        this.right = right;
+        this.causes = causes;
+    }
 
-	public Subsumption(Cause left, Cause right) {
-		this.left = left;
-		this.right = right;
-	}
+    public VerifierComponent getLeft() {
+        return left;
+    }
 
-	public String getGuid() {
-		return guid;
-	}
+    public VerifierComponent getRight() {
+        return right;
+    }
 
-	public CauseType getCauseType() {
-		return CauseType.SUBSUMPTION;
-	}
+    @Override
+    public String toString() {
+        return "Subsumption between: (" + getLeft() + ") and (" + getRight() + ").";
+    }
 
-	public Cause getLeft() {
-		return left;
-	}
-
-	public Cause getRight() {
-		return right;
-	}
-
-	@Override
-	public String toString() {
-		return "Subsumption between: (" + getLeft() + ") and (" + getRight()
-				+ ").";
-	}
+    public Collection<Cause> getCauses() {
+        return causes;
+    }
 }

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 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/VerifierMessage.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -1,59 +1,94 @@
 package org.drools.verifier.report.components;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Map;
 
 /**
  * 
  * @author Toni Rikkola
  */
 public class VerifierMessage extends VerifierMessageBase {
-	private static final long serialVersionUID = 9190003495068712452L;
+    private static final long         serialVersionUID = 9190003495068712452L;
 
-	protected final Collection<Cause> causes;
+    protected final Collection<Cause> causes;
 
-	public VerifierMessage(Severity severity, MessageType messageType,
-			Cause faulty, String message, Collection<Cause> causes) {
-		super(severity, messageType, faulty, message);
+    public VerifierMessage(Map<String, String> impactedRules,
+                           Severity severity,
+                           MessageType messageType,
+                           Cause faulty,
+                           String message,
+                           Collection<Cause> causes) {
+        super( impactedRules,
+               severity,
+               messageType,
+               faulty,
+               message );
 
-		this.causes = causes;
-	}
+        this.causes = causes;
+    }
 
-	public VerifierMessage(Severity severity, MessageType messageType,
-			Cause faulty, String message) {
-		super(severity, messageType, faulty, message);
+    public VerifierMessage(Map<String, String> impactedRules,
+                           Severity severity,
+                           MessageType messageType,
+                           Cause faulty,
+                           String message,
+                           Cause cause) {
+        super( impactedRules,
+               severity,
+               messageType,
+               faulty,
+               message );
 
-		this.causes = Collections.emptyList();
-	}
+        Collection<Cause> causes = new ArrayList<Cause>();
+        causes.add( cause );
 
-	public Collection<Cause> getCauses() {
-		return causes;
-	}
+        this.causes = causes;
+    }
 
-	@Override
-	public String toString() {
-		StringBuffer str = new StringBuffer(severity.getSingular());
+    public VerifierMessage(Map<String, String> impactedRules,
+                           Severity severity,
+                           MessageType messageType,
+                           Cause faulty,
+                           String message) {
+        super( impactedRules,
+               severity,
+               messageType,
+               faulty,
+               message );
 
-		str.append(" id = ");
-		str.append(id);
-		str.append(":\n");
+        this.causes = Collections.emptyList();
+    }
 
-		if (faulty != null) {
-			str.append("faulty : ");
-			str.append(faulty);
-			str.append(", ");
-		}
+    public Collection<Cause> getCauses() {
+        return causes;
+    }
 
-		str.append(message);
-		str.append(" \n\tCauses are [ \n");
+    @Override
+    public String toString() {
+        StringBuffer str = new StringBuffer( severity.getSingular() );
 
-		for (Cause cause : causes) {
-			str.append("\t\t");
-			str.append(cause);
-			str.append("\n");
-		}
-		str.append("\t]");
+        str.append( " id = " );
+        str.append( id );
+        str.append( ":\n" );
 
-		return str.toString();
-	}
+        if ( faulty != null ) {
+            str.append( "faulty : " );
+            str.append( faulty );
+            str.append( ", " );
+        }
+
+        str.append( message );
+        str.append( " \n\tCauses are [ \n" );
+
+        for ( Cause cause : causes ) {
+            str.append( "\t\t" );
+            str.append( cause );
+            str.append( "\n" );
+        }
+        str.append( "\t]" );
+
+        return str.toString();
+    }
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/VerifierMessageBase.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/VerifierMessageBase.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/VerifierMessageBase.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -2,80 +2,99 @@
 
 import java.io.Serializable;
 import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * 
  * @author Toni Rikkola
  */
-abstract public class VerifierMessageBase implements Serializable,
-		Comparable<VerifierMessageBase> {
-	private static final long serialVersionUID = 9190003495068712452L;
+abstract public class VerifierMessageBase
+    implements
+    Serializable,
+    Comparable<VerifierMessageBase> {
+    private static final long   serialVersionUID = 9190003495068712452L;
 
-	private static int index = 0;
+    private static int          index            = 0;
 
-	protected final Severity severity;
-	protected final MessageType messageType;
+    // <guid,rule name>
+    private Map<String, String> impactedRules    = new HashMap<String, String>();
 
-	protected final int id = index++;
-	protected final Cause faulty;
-	protected final String message;
+    protected final Severity    severity;
+    protected final MessageType messageType;
 
-	public int compareTo(VerifierMessageBase o) {
-		if (id == o.getId()) {
-			return 0;
-		}
+    protected final int         id               = index++;
+    protected final Cause       faulty;
+    protected final String      message;
 
-		return (id > o.getId() ? 1 : -1);
-	}
+    public int compareTo(VerifierMessageBase o) {
+        if ( id == o.getId() ) {
+            return 0;
+        }
 
-	protected VerifierMessageBase(Severity severity, MessageType messageType,
-			Cause faulty, String message) {
-		this.severity = severity;
-		this.messageType = messageType;
-		this.faulty = faulty;
-		this.message = message;
-	}
+        return (id > o.getId() ? 1 : -1);
+    }
 
-	public int getId() {
-		return id;
-	}
+    protected VerifierMessageBase(Map<String, String> impactedRules,
+                                  Severity severity,
+                                  MessageType messageType,
+                                  Cause faulty,
+                                  String message) {
+        this.impactedRules = impactedRules;
+        this.severity = severity;
+        this.messageType = messageType;
+        this.faulty = faulty;
+        this.message = message;
+    }
 
-	public String getMessage() {
-		return message;
-	}
+    public int getId() {
+        return id;
+    }
 
-	public Cause getFaulty() {
-		return faulty;
-	}
+    public String getMessage() {
+        return message;
+    }
 
-	public MessageType getMessageType() {
-		return messageType;
-	}
+    public Cause getFaulty() {
+        return faulty;
+    }
 
-	public Severity getSeverity() {
-		return severity;
-	}
+    public MessageType getMessageType() {
+        return messageType;
+    }
 
-	@Override
-	public String toString() {
-		StringBuffer str = new StringBuffer(severity.singular);
+    public Severity getSeverity() {
+        return severity;
+    }
 
-		str.append(" id = ");
-		str.append(id);
-		str.append(":\n");
+    @Override
+    public String toString() {
+        StringBuffer str = new StringBuffer( severity.singular );
 
-		if (faulty != null) {
-			str.append("faulty : ");
-			str.append(faulty);
-			str.append(", ");
-		}
+        str.append( " id = " );
+        str.append( id );
+        str.append( ":\n" );
 
-		str.append(message);
+        if ( faulty != null ) {
+            str.append( "faulty : " );
+            str.append( faulty );
+            str.append( ", " );
+        }
 
-		str.append("\t]");
+        str.append( message );
 
-		return str.toString();
-	}
+        str.append( "\t]" );
 
-	public abstract Collection<? extends Cause> getCauses();
+        return str.toString();
+    }
+
+    public void setImpactedRules(Map<String, String> impactedRules) {
+        this.impactedRules = impactedRules;
+    }
+
+    public Map<String, String> getImpactedRules() {
+        return impactedRules;
+    }
+
+    public abstract Collection<Cause> getCauses();
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/VerifierRangeCheckMessage.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/VerifierRangeCheckMessage.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/VerifierRangeCheckMessage.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -1,24 +1,40 @@
 package org.drools.verifier.report.components;
 
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashMap;
 
 public class VerifierRangeCheckMessage extends VerifierMessageBase {
-	private static final long serialVersionUID = -2403507929285633672L;
+    private static final long        serialVersionUID = -2403507929285633672L;
 
-	private Collection<RangeCheckCause> causes;
+    private Collection<MissingRange> causes;
 
-	public VerifierRangeCheckMessage(Severity severity, Cause faulty,
-			String message, Collection<RangeCheckCause> causes) {
-		super(severity, MessageType.RANGE_CHECK, faulty, message);
+    public VerifierRangeCheckMessage(Severity severity,
+                                     Cause faulty,
+                                     String message,
+                                     Collection<MissingRange> causes) {
+        super( new HashMap<String, String>(),
+               severity,
+               MessageType.RANGE_CHECK,
+               faulty,
+               message );
 
-		this.causes = causes;
-	}
+        this.causes = causes;
+    }
 
-	public Collection<RangeCheckCause> getCauses() {
-		return causes;
-	}
+    public Collection<MissingRange> getMissingRanges() {
+        return causes;
+    }
 
-	public void setCauses(Collection<RangeCheckCause> reasons) {
-		this.causes = reasons;
-	}
+    public Collection<Cause> getCauses() {
+        Collection<Cause> causes = new ArrayList<Cause>();
+        for ( Cause cause : this.causes ) {
+            causes.add( cause );
+        }
+        return causes;
+    }
+
+    public void setCauses(Collection<MissingRange> reasons) {
+        this.causes = reasons;
+    }
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/html/ComponentsReportVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/html/ComponentsReportVisitor.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/html/ComponentsReportVisitor.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -12,7 +12,7 @@
 import org.drools.verifier.components.VerifierRule;
 import org.drools.verifier.data.VerifierData;
 import org.drools.verifier.data.VerifierReport;
-import org.drools.verifier.report.components.RangeCheckCause;
+import org.drools.verifier.report.components.MissingRange;
 import org.mvel2.templates.TemplateRuntime;
 
 class ComponentsReportVisitor extends ReportVisitor {
@@ -130,7 +130,7 @@
                  rules );
 
         if ( field.getFieldType() == Field.DOUBLE || field.getFieldType() == Field.DATE || field.getFieldType() == Field.INT ) {
-            Collection<RangeCheckCause> causes = result.getRangeCheckCausesByFieldId( field.getGuid() );
+            Collection<MissingRange> causes = result.getRangeCheckCausesByFieldId( field.getGuid() );
             Collection<Restriction> restrictions = data.getRestrictionsByFieldGuid( field.getGuid() );
             map.put( "ranges",
                      "Ranges:" + MissingRangesReportVisitor.visitRanges( UrlFactory.PREVIOUS_FOLDER,

Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/html/MissingRangesReportVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/html/MissingRangesReportVisitor.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/html/MissingRangesReportVisitor.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -12,7 +12,7 @@
 import org.drools.verifier.components.Restriction;
 import org.drools.verifier.components.VerifierComponentType;
 import org.drools.verifier.data.VerifierData;
-import org.drools.verifier.report.components.RangeCheckCause;
+import org.drools.verifier.report.components.MissingRange;
 import org.drools.verifier.report.components.VerifierRangeCheckMessage;
 import org.mvel2.templates.TemplateRuntime;
 
@@ -23,11 +23,11 @@
 
     public static Collection<String> visitRestrictionsCollection(String sourceFolder,
                                                                  Collection<Restriction> restrictions,
-                                                                 Collection<RangeCheckCause> causes) {
+                                                                 Collection<MissingRange> causes) {
         Multimap<Object, DataRow> dt = new TreeMultimap<Object, DataRow>();
         Collection<String> stringRows = new ArrayList<String>();
 
-        for ( RangeCheckCause cause : causes ) {
+        for ( MissingRange cause : causes ) {
             dt.put( cause.getValueAsObject(),
                     new DataRow( null,
                                  null,
@@ -102,13 +102,13 @@
 
     public static String visitRanges(String sourceFolder,
                                      Collection<Restriction> restrictions,
-                                     Collection<RangeCheckCause> causes) {
+                                     Collection<MissingRange> collection) {
         Map<String, Object> map = new HashMap<String, Object>();
 
         map.put( "lines",
                  visitRestrictionsCollection( sourceFolder,
                                               restrictions,
-                                              causes ) );
+                                              collection ) );
 
         String myTemplate = readFile( "ranges.htm" );
 
@@ -159,7 +159,7 @@
         map.put( "ranges",
                  visitRanges( UrlFactory.THIS_FOLDER,
                               restrictions,
-                              message.getCauses() ) );
+                              message.getMissingRanges() ) );
 
         String myTemplate = readFile( "missingRange.htm" );
 

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 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/Consequence.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -9,6 +9,9 @@
 import org.drools.verifier.report.components.Severity;
 import org.drools.verifier.report.components.MessageType;
 
+import java.util.Map;
+import java.util.HashMap;
+
 #declare any global variables here
 global VerifierReport result;
 
@@ -21,7 +24,11 @@
 			guid matches $c.ruleGuid
 		)
 	then
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $r.getGuid(), $r.getRuleName());
+		
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.WARNING,
 								MessageType.MISSING_COMPONENT,
 								$r,

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/alwaysFalse/Patterns.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/alwaysFalse/Patterns.drl	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/alwaysFalse/Patterns.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -17,6 +17,9 @@
 
 import org.drools.verifier.data.VerifierReport;
 
+import java.util.Map;
+import java.util.HashMap;
+
 global VerifierReport result;
 
 #
@@ -54,8 +57,12 @@
 		
 		$r :VerifierRule( guid == $p.ruleGuid )
 	then 
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $r.getGuid(), $r.getRuleName());
+	
 		# Report an error
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.ERROR,
 								MessageType.ALWAYS_FALSE,
 								$p,

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/alwaysFalse/Rules.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/alwaysFalse/Rules.drl	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/alwaysFalse/Rules.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -16,6 +16,12 @@
 
 import org.drools.verifier.data.VerifierReport;
 
+import java.util.Map;
+import java.util.HashMap;
+
+import java.util.Map;
+import java.util.HashMap;
+
 global VerifierReport result;
 
 #
@@ -45,8 +51,12 @@
 			)
 		)
 	then 
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $r.getGuid(), $r.getRuleName());
+		
 		# Report an error
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.ERROR,
 								MessageType.ALWAYS_FALSE,
 								$r,

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/alwaysTrue/Patterns.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/alwaysTrue/Patterns.drl	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/alwaysTrue/Patterns.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -20,6 +20,9 @@
 
 import org.drools.verifier.data.VerifierReport;
 
+import java.util.Map;
+import java.util.HashMap;
+
 global VerifierReport result;
 
 
@@ -38,7 +41,7 @@
 			)
 		)
 	then 
-		insert( new AlwaysTrue( $pp ));
+		insert( new AlwaysTrue( $pp , a, b ));
 end
 /*
 #
@@ -112,7 +115,11 @@
 		
 		$r :VerifierRule( guid matches $p.ruleGuid )
 	then 
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $r.getGuid(), $r.getRuleName());
+		
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.NOTE,
 								MessageType.ALWAYS_TRUE,
 								$p,

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/alwaysTrue/Rules.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/alwaysTrue/Rules.drl	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/alwaysTrue/Rules.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -20,6 +20,9 @@
 
 import org.drools.verifier.data.VerifierReport;
 
+import java.util.Map;
+import java.util.HashMap;
+
 global VerifierReport result;
 
 #
@@ -76,7 +79,11 @@
 			)
 		)
 	then 
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $r.getGuid(), $r.getRuleName());
+		
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.WARNING,
 								MessageType.ALWAYS_TRUE,
 								$r,

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/incoherence/Patterns.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/incoherence/Patterns.drl	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/incoherence/Patterns.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -18,6 +18,8 @@
 
 import java.util.Collection;
 import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
 
 import org.drools.base.evaluators.Operator;
 
@@ -76,11 +78,15 @@
 			guid matches $rp.ruleGuid
 		)
 	then
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $r.getGuid(), $r.getRuleName());
+	
 		Collection list = new ArrayList();
 		list.add( $p1 );
 		list.add( $p2 );
 
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.WARNING,
 								MessageType.INCOHERENCE,
 								$r,
@@ -142,11 +148,15 @@
 			guid matches $rp.ruleGuid
 		)
 	then
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $r.getGuid(), $r.getRuleName());
+	
 		Collection list = new ArrayList();
 		list.add( $p1 );
 		list.add( $p2 );
 
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.WARNING,
 								MessageType.INCOHERENCE,
 								$r,
@@ -207,11 +217,15 @@
 			guid matches $rp.ruleGuid
 		)
 	then
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $r.getGuid(), $r.getRuleName());
+	
 		Collection list = new ArrayList();
 		list.add( $p1 );
 		list.add( $p2 );
 
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.WARNING,
 								MessageType.INCOHERENCE,
 								$r,
@@ -272,11 +286,15 @@
 			guid matches $rp.ruleGuid
 		)
 	then
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $r.getGuid(), $r.getRuleName());
+	
 		Collection list = new ArrayList();
 		list.add( $p1 );
 		list.add( $p2 );
 
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.WARNING,
 								MessageType.INCOHERENCE,
 								$r,
@@ -338,11 +356,15 @@
 			guid matches $rp.ruleGuid
 		)
 then
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $r.getGuid(), $r.getRuleName());
+	
 		Collection list = new ArrayList();
 		list.add( $p1 );
 		list.add( $p2 );
 
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.WARNING,
 								MessageType.INCOHERENCE,
 								$r,
@@ -404,11 +426,15 @@
 			guid matches $rp.ruleGuid
 		)
 then
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $r.getGuid(), $r.getRuleName());
+	
 		Collection list = new ArrayList();
 		list.add( $p1 );
 		list.add( $p2 );
 
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.WARNING,
 								MessageType.INCOHERENCE,
 								$r,
@@ -469,11 +495,15 @@
 			guid matches $rp.ruleGuid
 		)
 then
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $r.getGuid(), $r.getRuleName());
+	
 		Collection list = new ArrayList();
 		list.add( $p1 );
 		list.add( $p2 );
 
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.WARNING,
 								MessageType.INCOHERENCE,
 								$r,
@@ -535,11 +565,15 @@
 			guid matches $rp.ruleGuid
 		)
 then
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $r.getGuid(), $r.getRuleName());
+	
 		Collection list = new ArrayList();
 		list.add( $p1 );
 		list.add( $p2 );
 
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.WARNING,
 								MessageType.INCOHERENCE,
 								$r,

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/incoherence/Restrictions.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/incoherence/Restrictions.drl	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/incoherence/Restrictions.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -15,6 +15,8 @@
 
 import java.util.Collection;
 import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
 
 import org.drools.base.evaluators.Operator;
 
@@ -56,11 +58,15 @@
 
 		$p :Pattern( guid matches $pp.patternGuid )
 	then
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $p.getRuleGuid(), $p.getRuleName());
+	
 		Collection list = new ArrayList();
 		list.add( $r1 );
 		list.add( $r2 );
 
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.ERROR,
 								MessageType.INCOHERENCE,
 								$p,
@@ -102,11 +108,15 @@
 
 		$p :Pattern( guid matches $pp.patternGuid )
 	then
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $p.getRuleGuid(), $p.getRuleName());
+		
 		Collection list = new ArrayList();
 		list.add( $r1 );
 		list.add( $r2 );
 
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.ERROR,
 								MessageType.INCOHERENCE,
 								$p,
@@ -148,11 +158,15 @@
 
 		$p :Pattern( guid matches $pp.patternGuid )
 	then
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $p.getRuleGuid(), $p.getRuleName());
+		
 		Collection list = new ArrayList();
 		list.add( $r1 );
 		list.add( $r2 );
 
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.ERROR,
 								MessageType.INCOHERENCE,
 								$p,
@@ -194,11 +208,15 @@
 
 		$p :Pattern( guid matches $pp.patternGuid )
 	then
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $p.getRuleGuid(), $p.getRuleName());
+		
 		Collection list = new ArrayList();
 		list.add( $r1 );
 		list.add( $r2 );
 
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.ERROR,
 								MessageType.INCOHERENCE,
 								$p,
@@ -240,11 +258,15 @@
 
 		$p :Pattern( guid matches $pp.patternGuid )
 	then
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $p.getRuleGuid(), $p.getRuleName());
+		
 		Collection list = new ArrayList();
 		list.add( $r1 );
 		list.add( $r2 );
 
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.ERROR,
 								MessageType.INCOHERENCE,
 								$p,
@@ -287,11 +309,15 @@
 
 		$p :Pattern( guid matches $pp.patternGuid )
 	then
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $p.getRuleGuid(), $p.getRuleName());
+		
 		Collection list = new ArrayList();
 		list.add( $r1 );
 		list.add( $r2 );
 
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.ERROR,
 								MessageType.INCOHERENCE,
 								$p,
@@ -331,11 +357,15 @@
 
 		$p :Pattern( guid matches $pp.patternGuid )
 	then
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $p.getRuleGuid(), $p.getRuleName());
+		
 		Collection list = new ArrayList();
 		list.add( $r1 );
 		list.add( $r2 );
 
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.ERROR,
 								MessageType.INCOHERENCE,
 								$p,

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/missingEquality/MissingEquality.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/missingEquality/MissingEquality.drl	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/missingEquality/MissingEquality.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -14,8 +14,11 @@
 import org.drools.verifier.report.components.MessageType;
 import org.drools.verifier.data.VerifierReport;
 
+import java.util.Map;
+import java.util.HashMap;
 
 
+
 #declare any global variables here
 global VerifierReport result;
 
@@ -84,6 +87,7 @@
 		)
 	then
 		result.add( new VerifierMessage(
+								new HashMap<String, String>(),
 								Severity.WARNING,
 								MessageType.MISSING_EQUALITY,
 								$r,
@@ -215,6 +219,7 @@
 		)
 	then
 		result.add( new VerifierMessage(
+								new HashMap<String, String>(),
 								Severity.WARNING,
 								MessageType.MISSING_EQUALITY,
 								$r,

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/opposites/Restrictions.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/opposites/Restrictions.drl	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/opposites/Restrictions.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -8,7 +8,6 @@
 
 import org.drools.verifier.report.components.Cause;
 import org.drools.verifier.report.components.MissingRange;
-import org.drools.verifier.report.components.VerifierMessage;
 import org.drools.verifier.report.components.Severity;
 import org.drools.verifier.report.components.MessageType;
 import org.drools.verifier.report.components.Opposites;
@@ -82,7 +81,7 @@
 
 		# Check that there is not already a pair with these values.
 		not Opposites( 
-			left == $left, 
+	        left == $left,
 			right == $right 
 		)
 		not Opposites( 

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/optimisation/PatternOrder.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/optimisation/PatternOrder.drl	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/optimisation/PatternOrder.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -17,6 +17,9 @@
 import org.drools.verifier.report.components.MessageType;
 import org.drools.verifier.data.VerifierReport;
 
+import java.util.Map;
+import java.util.HashMap;
+
 #declare any global variables here
 global VerifierReport result;
 
@@ -53,10 +56,14 @@
 			guid matches $eval.ruleGuid
 		)
 	then	
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $rule.getGuid(), $rule.getRuleName());
+	
 		Collection list = new ArrayList();
 		list.add( $eval );
 		list.add( $other );
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.NOTE,
 								MessageType.OPTIMISATION,
 								$rule,

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/optimisation/RestrictionOrder.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/optimisation/RestrictionOrder.drl	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/optimisation/RestrictionOrder.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -23,6 +23,9 @@
 import org.drools.verifier.report.components.MessageType;
 import org.drools.verifier.data.VerifierReport;
 
+import java.util.Map;
+import java.util.HashMap;
+
 #declare any global variables here
 global VerifierReport result;
 
@@ -83,10 +86,14 @@
 			guid == $sp.patternGuid
 		)
 	then
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $pattern.getRuleGuid(), $pattern.getRuleName());
+	
 		Collection list = new ArrayList();
 		list.add( $r1 );
 		list.add( $r2 );
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.NOTE,
 								MessageType.OPTIMISATION,
 								$pattern,
@@ -157,10 +164,14 @@
 			guid == $r1.patternGuid
 		)
 	then
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $pattern.getGuid(), $pattern.getRuleName());
+	
 		Collection list = new ArrayList();
 		list.add( $r1 );
 		list.add( $r2 );
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.NOTE,
 								MessageType.OPTIMISATION,
 								$pattern,
@@ -199,10 +210,14 @@
 			guid == $predicate.ruleGuid
 		)
 	then
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $rule.getGuid(), $rule.getRuleName());
+	
 		Collection list = new ArrayList();
 		list.add( $predicate );
 		list.add( $other );
 		result.add( new VerifierMessage(
+								impactedRules,
 								Severity.NOTE,
 								MessageType.OPTIMISATION,
 								$rule,

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/overlaps/Restrictions.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/overlaps/Restrictions.drl	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/overlaps/Restrictions.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -1,5 +1,5 @@
 #created on: 2.2.2008
-package org.drools.verifier.overlaps.restrictions
+package org.drools.verifier.overlaps
 
 #list any import classes here.
 import java.util.Collection;
@@ -10,10 +10,9 @@
 import org.drools.verifier.components.LiteralRestriction;
 
 import org.drools.verifier.report.components.Subsumption;
-import org.drools.verifier.report.components.VerifierMessage;
-import org.drools.verifier.report.components.CauseType;
 import org.drools.verifier.report.components.Severity;
 import org.drools.verifier.report.components.MessageType;
+import org.drools.verifier.report.components.Overlap;
 
 #declare any global variables here
 global VerifierReport result;
@@ -33,18 +32,19 @@
 rule "Find overlapping restrictions"
 	when
 		# There is subsumption between two restrictions
-		$subsumption :Subsumption(
-			left.causeType == CauseType.RESTRICTION,
-			$leftGuid :left.guid,
-			$rightGuid :right.guid
-		)
 		
-		$left :LiteralRestriction(
-			guid matches $leftGuid
-		)
+		$left :LiteralRestriction()
 		$right :LiteralRestriction(
-			guid matches $rightGuid
+			guid != $left.guid
 		)
+		
+		$subsumption :Subsumption(
+			left.guid == $left.guid,
+			left.verifierComponentType == $left.verifierComponentType,
+			right.guid == $right.guid,
+			right.verifierComponentType == $right.verifierComponentType
+		)
+		
 		# There is no restriction between these two restrictions.
 		not	$center :LiteralRestriction(
 				fieldGuid matches $left.fieldGuid,
@@ -52,14 +52,6 @@
 				eval( $center.compareValues( $right ) == -1 )
 		)
 	then 
-		Collection causes = new ArrayList();
-		causes.add( $left );
-		causes.add( $right );
-
-		String message = "Restriction " + $left + " overlaps " + $right + ".";
-
-		result.add(new VerifierMessage(
-						Severity.NOTE, MessageType.OVERLAP,
-						$subsumption, message, causes ) );
-
+		insert( new Overlap( $left, $right ) );
 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 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Notes.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -16,11 +16,13 @@
 import org.drools.verifier.report.components.Redundancy;
 import org.drools.verifier.report.components.VerifierMessage;
 import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.CauseType;
 import org.drools.verifier.report.components.Severity;
 import org.drools.verifier.report.components.MessageType;
 
+import java.util.Map;
+import java.util.HashMap;
 
+
 #
 # Dependencies:
 #
@@ -32,21 +34,26 @@
 rule "Find redundant restrictions from pattern possibilities"
 	salience -100
 	when
-		$r :Redundancy(
-			items[0].causeType == CauseType.RESTRICTION
-		)
+		$r :Redundancy()
 
 		$pp :SubPattern(
 			items contains $r.items[0],
 			items contains $r.items[1]
 		)
 	then
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $pp.getRuleGuid(), $pp.getRuleName());
+		
 		Collection causes = new ArrayList();
 		causes.addAll( $r.getItems() );
 
 		result.add(new VerifierMessage(
-						Severity.NOTE, MessageType.REDUNDANCY,
-						$r, "Same restriction exists twice.", causes ) );
+						impactedRules,
+						Severity.NOTE, 
+						MessageType.REDUNDANCY,
+						$r, 
+						"Same restriction exists twice.", 
+						causes ) );
 end
 
 #
@@ -58,20 +65,25 @@
 rule "Find redundant pattern possibilities from rule possibilities"
 	salience -100
 	when
-		$r :Redundancy(
-			items[0].causeType == CauseType.SUB_PATTERN
-		)
+		$r :Redundancy()
 
-		SubRule(
+		$sr :SubRule(
 			items contains $r.items[0],
 			items contains $r.items[1]
 		)
 	then
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $sr.getRuleGuid(), $sr.getRuleName());
+		
 		Collection causes = new ArrayList();
 		causes.addAll( $r.getItems() );
 
 		result.add(new VerifierMessage(
-						Severity.NOTE, MessageType.REDUNDANCY,
-						$r, "Two pattern possibilities with redundant restrictions exists twice in the same rule.", causes ) );
+						impactedRules,
+						Severity.NOTE, 
+						MessageType.REDUNDANCY,
+						$r, 
+						"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/Redundancy.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Redundancy.drl	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Redundancy.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -10,7 +10,9 @@
 #import org.drools.verifier.data.VerifierReport;
 import org.drools.verifier.report.components.Redundancy;
 import org.drools.verifier.report.components.Subsumption;
+import org.drools.verifier.data.VerifierReport;
 
+global VerifierReport result;
 
 #
 # If two objects are subsumptant to each others that makes them redundant.
@@ -25,7 +27,6 @@
 		$sub :Subsumption( )
 		
 		Subsumption(
-			guid != $sub.guid,
 			left == $sub.right,
 			right == $sub.left
 		)

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 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Warnings.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -16,15 +16,20 @@
 
 import org.drools.verifier.data.VerifierReport;
 
+import org.drools.verifier.components.RuleComponent;
 import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.Equivalence;
 import org.drools.verifier.report.components.Subsumption;
 import org.drools.verifier.report.components.VerifierMessage;
 import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.CauseType;
 import org.drools.verifier.report.components.Severity;
 import org.drools.verifier.report.components.MessageType;
 
+import java.util.Map;
+import java.util.HashMap;
 
+
+
 rule "Find redundant LHS"
 	@verifying_scopes(knowledge-package, decision-table)
 	when
@@ -35,7 +40,6 @@
 			guid != $left.guid 
 		)
 		
-		
 		$leftSubRules : ArrayList() 
 			from collect( 
 				SubRule(
@@ -72,8 +76,16 @@
 end
 
 rule "Find equivalent Rules" extends "Find redundant LHS"
+	# This rule needs to fire after "Find redundant rules"
+	# or the not Reduncancy( ... ) does not check correctly.
+	salience -1
 	when
 		
+		not Equivalence(
+			items contains $left,
+			items contains $right
+		)
+		
 		# RHS should not be redundant		
 		$leftConsequence : Consequence(
 			guid == $left.consequenceGuid,
@@ -87,14 +99,29 @@
 			items contains $leftConsequence,
 			items contains $rightConsequence
 		)
+		
+		$causes : ArrayList()
+        	from collect( 
+              	Subsumption( 
+              		left memberOf $rightSubRules, 
+              		right memberOf $leftSubRules 
+              	) 
+            )
 	then
-		Collection causes = new ArrayList();
-		causes.add( $left );
-		causes.add( $right );
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $leftConsequence.getRuleGuid(), $leftConsequence.getRuleName());
+		impactedRules.put( $rightConsequence.getRuleGuid(), $rightConsequence.getRuleName());
 
+		Equivalence equivalence = new Equivalence( $left, $right, $causes );
+		insert( equivalence );
+
 		result.add(new VerifierMessage(
-						Severity.WARNING, MessageType.EQUIVALANCE,
-						$left, "Rule is equivalent to rule " + $right.getRuleName() + ".", causes ) );
+						impactedRules,
+						Severity.WARNING, 
+						MessageType.EQUIVALANCE,
+						$left, 
+						"Rule is equivalent to rule " + $right.getRuleName() + ".", 
+						equivalence ) );
 end
 
 
@@ -113,8 +140,13 @@
 #
 rule "Find redundant rules" extends "Find redundant LHS"
 	when
-	
-		# RHS need to be redundant		
+		
+		not Redundancy(
+			items contains $left,
+			items contains $right
+		)
+		
+		# RHS needs to be redundant		
 		$leftConsequence : Consequence(
 			guid == $left.consequenceGuid,
 			consequenceType == $left.consequenceType
@@ -128,14 +160,35 @@
 			items contains $rightConsequence
 		)
 
+		$causes : ArrayList()
+        	from collect( 
+              	Subsumption( 
+              		(
+              			left memberOf $rightSubRules 
+              			&& 
+              			right memberOf $leftSubRules
+              		) || (
+	              		right memberOf $rightSubRules
+	              		&& 
+    	          		left memberOf $leftSubRules 
+              		) 
+              	) 
+            )
 	then
-		Collection causes = new ArrayList();
-		causes.add( $left );
-		causes.add( $right );
-
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $leftConsequence.getRuleGuid(), $leftConsequence.getRuleName());
+		impactedRules.put( $rightConsequence.getRuleGuid(), $rightConsequence.getRuleName());
+		
+		Redundancy redundancy = new Redundancy( $left, $right, $causes );
+		insert( redundancy );
+		
 		result.add(new VerifierMessage(
-						Severity.WARNING, MessageType.REDUNDANCY,
-						$left, "Rule is redundant to rule " + $right.getRuleName() + ".", causes ) );
+						impactedRules,
+						Severity.WARNING, 
+						MessageType.REDUNDANCY,
+						$left, 
+						"Rules " + $right.getRuleName() + " and.", 
+						redundancy ) );
 end
 
 
@@ -156,24 +209,37 @@
 	@verifying_scopes(knowledge-package, decision-table)
 	salience -100
 	when
-		$subsumption:Subsumption(
-			left.causeType == CauseType.SUB_RULE
+		$left :VerifierRule()
+		$right :VerifierRule( 
+			guid != $left.guid 
 		)
 		
+		$subsumption :Subsumption(
+			left == $left,
+			right == $right
+		)
+		
 		# No redundacy
 		not Subsumption(
-			left.causeType == CauseType.SUB_RULE,
 			left == $subsumption.right,
 			right == $subsumption.left
 		)
 
 	then
+		Map<String,String> impactedRules = new HashMap<String,String>();
+		impactedRules.put( $left.getGuid(), $left.getRuleName());
+		impactedRules.put( $right.getGuid(), $right.getRuleName());
+		
 		Collection causes = new ArrayList();
 		causes.add( $subsumption.getLeft() );
 		causes.add( $subsumption.getRight() );
 
 		result.add(new VerifierMessage(
-						Severity.WARNING, MessageType.SUBSUMPTION,
-						$subsumption, "Rules are subsumptant.", causes ) );
+						impactedRules,
+						Severity.WARNING, 
+						MessageType.SUBSUMPTION,
+						$subsumption, 
+						"Rules are subsumptant.", 
+						causes ) );
 end
 

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Consequences.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Consequences.drl	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Consequences.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -4,9 +4,10 @@
 
 import org.drools.verifier.components.TextConsequence;
 import org.drools.verifier.report.components.Subsumption;
+import org.drools.verifier.data.VerifierReport;
 
+global VerifierReport result;
 
-
 #
 #
 rule "Subsumptant consequences"

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Restrictions.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Restrictions.drl	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Restrictions.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -7,7 +7,9 @@
 import org.drools.verifier.components.LiteralRestriction;
 import org.drools.verifier.report.components.Subsumption;
 
+import org.drools.verifier.data.VerifierReport;
 
+global VerifierReport result;
 
 #
 # Fires when two restrictions are subsumptant.

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubPatterns.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubPatterns.drl	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubPatterns.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -9,12 +9,14 @@
 import org.drools.verifier.components.Source;
 import org.drools.verifier.report.components.Redundancy;
 import org.drools.verifier.report.components.Subsumption;
-import org.drools.verifier.report.components.CauseType;
 
+import org.drools.verifier.data.VerifierReport;
 
+import java.util.ArrayList;
+
 #declare any global variables here
+global VerifierReport result
 
-
 #
 # Fires when two pattern possibilities are subsumptant.
 # Creates a Subsumption object.
@@ -40,9 +42,7 @@
 			patternForall == $subPattern1.patternForall 
 		)
 		# Check if sources are equal or subsumptant 
-		$sourceSubsumption :Subsumption(
-			left.causeType == CauseType.SOURCE
-		)
+		$sourceSubsumption :Subsumption()
 		Source(
 			guid == $subPattern1.sourceGuid,
 			verifierComponentType == $subPattern1.sourceType,
@@ -64,12 +64,22 @@
 				right memberOf $subPattern2.items
 			)
 		)
-#		not Subsumption(
-#				left memberOf $subPattern1.items,
-#				right not memberOf $subPattern2.items
-#		)
+		
+		$causes : ArrayList()
+        	from collect( 
+              	Subsumption(
+      				left memberOf $subPattern1.items,  			
+          			right memberOf $subPattern2.items
+              	) 
+            )
 	then
-		insert( new Subsumption( $subPattern1, $subPattern2 ) );
+		insert( 
+			new Subsumption( 
+				$subPattern1, 
+				$subPattern2, 
+				$causes 
+			) 
+		);
 end
 
 #
@@ -112,10 +122,20 @@
 				right memberOf $subPattern2.items
 			)
 		)
-#		not Subsumption(
-#				left memberOf $subPattern1.items,
-#				right not memberOf $subPattern2.items
-#		)
+		
+		$causes : ArrayList()
+        	from collect( 
+              	Subsumption(
+      				left memberOf $subPattern1.items,  			
+          			right memberOf $subPattern2.items
+              	) 
+            )
 	then
-		insert( new Subsumption( $subPattern1, $subPattern2 ) );
+		insert( 
+			new Subsumption( 
+				$subPattern1, 
+				$subPattern2,
+				$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 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubRules.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -9,7 +9,6 @@
 import org.drools.verifier.components.Consequence;
 import org.drools.verifier.report.components.Redundancy;
 import org.drools.verifier.report.components.Subsumption;
-import org.drools.verifier.report.components.CauseType;
 
 
 #declare any global variables here

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/TestBase.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/TestBase.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/TestBase.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -13,6 +13,7 @@
 import org.drools.RuleBase;
 import org.drools.RuleBaseFactory;
 import org.drools.StatelessSession;
+import org.drools.builder.KnowledgeBuilderError;
 import org.drools.compiler.DrlParser;
 import org.drools.compiler.PackageBuilder;
 import org.drools.lang.descr.PackageDescr;
@@ -46,6 +47,13 @@
 
         Package pkg = builder.getPackage();
 
+        if ( builder.hasErrors() ) {
+            for ( KnowledgeBuilderError error : builder.getErrors() ) {
+                System.out.println( error.getMessage() );
+            }
+            fail( "Builder has errors" );
+        }
+
         assertTrue( "Package was null.",
                     pkg != null );
 

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-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -51,7 +51,7 @@
                       result.getBySeverity( Severity.ERROR ).size() );
         assertEquals( 6,
                       result.getBySeverity( Severity.WARNING ).size() );
-        assertEquals( 5,
+        assertEquals( 1,
                       result.getBySeverity( Severity.NOTE ).size() );
 
     }
@@ -186,6 +186,12 @@
 
         boolean works = verifier.fireAnalysis();
 
+        if ( !works ) {
+            for ( VerifierError error : verifier.getErrors() ) {
+                System.out.println( error.getMessage() );
+            }
+            fail( "Could not run verifier" );
+        }
         assertTrue( works );
 
         VerifierReport result = verifier.getResult();

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifyingScopeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifyingScopeTest.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifyingScopeTest.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -40,8 +40,14 @@
 
         boolean works = verifier.fireAnalysis();
 
-        assertTrue( works );
+        if ( !works ) {
+            for ( VerifierError error : verifier.getErrors() ) {
+                System.out.println( error.getMessage() );
+            }
 
+            fail( "Error when building in verifier" );
+        }
+
         VerifierReport result = verifier.getResult();
         assertNotNull( result );
         assertEquals( 0,

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/equivalence/EquivalentRulesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/equivalence/EquivalentRulesTest.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/equivalence/EquivalentRulesTest.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -53,13 +53,13 @@
         for ( VerifierMessageBase message : warnings ) {
             //            System.out.println( message );
             if ( message.getMessageType().equals( MessageType.EQUIVALANCE ) ) {
-                //                System.out.println( message );
+//                                System.out.println( message );
                 counter++;
             }
         }
 
         // Has at least one item.
-        assertEquals( 2,
+        assertEquals( 1,
                       counter );
 
         verifier.dispose();

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/incompatibility/IncompatibilityBase.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/incompatibility/IncompatibilityBase.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/incompatibility/IncompatibilityBase.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -7,50 +7,52 @@
 import java.util.Set;
 
 import org.drools.verifier.TestBase;
+import org.drools.verifier.components.VerifierComponentType;
+import org.drools.verifier.data.VerifierComponent;
 import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.CauseType;
 import org.drools.verifier.report.components.Incompatibility;
 
 public class IncompatibilityBase extends TestBase {
 
-	public void testDummy() {
-		// this is needed as eclipse will try to run this and produce a failure
-		// if its not here.
-		assertTrue(true);
-	}
+    public void testDummy() {
+        // this is needed as eclipse will try to run this and produce a failure
+        // if its not here.
+        assertTrue( true );
+    }
 
-	/**
-	 * Creates incompatibility map from Incompatibility objects, one rule may
-	 * have several incompatibility dependencies.
-	 * 
-	 * @param iter
-	 * @return
-	 */
-	protected Map<Cause, Set<Cause>> createIncompatibilityMap(CauseType type,
-			Iterator<Object> iter) {
+    /**
+     * Creates incompatibility map from Incompatibility objects, one rule may
+     * have several incompatibility dependencies.
+     * 
+     * @param iter
+     * @return
+     */
+    protected Map<Cause, Set<Cause>> createIncompatibilityMap(VerifierComponentType type,
+                                                              Iterator<Object> iter) {
 
-		Map<Cause, Set<Cause>> map = new HashMap<Cause, Set<Cause>>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof Incompatibility) {
-				Incompatibility r = (Incompatibility) o;
+        Map<Cause, Set<Cause>> map = new HashMap<Cause, Set<Cause>>();
+        while ( iter.hasNext() ) {
+            Object o = (Object) iter.next();
+            if ( o instanceof Incompatibility ) {
+                Incompatibility r = (Incompatibility) o;
 
-				if (r.getLeft().getCauseType() == type) {
-					Cause left = r.getLeft();
-					Cause right = r.getRight();
+                if ( ((VerifierComponent) r.getLeft()).getVerifierComponentType().equals( type ) ) {
+                    Cause left = r.getLeft();
+                    Cause right = r.getRight();
 
-					if (map.containsKey(left)) {
-						Set<Cause> set = map.get(left);
-						set.add(right);
-					} else {
-						Set<Cause> set = new HashSet<Cause>();
-						set.add(right);
-						map.put(left, set);
-					}
-				}
-			}
-		}
+                    if ( map.containsKey( left ) ) {
+                        Set<Cause> set = map.get( left );
+                        set.add( right );
+                    } else {
+                        Set<Cause> set = new HashSet<Cause>();
+                        set.add( right );
+                        map.put( left,
+                                 set );
+                    }
+                }
+            }
+        }
 
-		return map;
-	}
+        return map;
+    }
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/incompatibility/IncompatibilityPatternsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/incompatibility/IncompatibilityPatternsTest.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/incompatibility/IncompatibilityPatternsTest.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -10,92 +10,99 @@
 import org.drools.base.RuleNameMatchesAgendaFilter;
 import org.drools.verifier.TestBase;
 import org.drools.verifier.components.LiteralRestriction;
+import org.drools.verifier.components.Restriction;
 import org.drools.verifier.components.SubPattern;
-import org.drools.verifier.components.Restriction;
+import org.drools.verifier.components.VerifierComponentType;
 import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.CauseType;
 import org.drools.verifier.report.components.Incompatibility;
 
 public class IncompatibilityPatternsTest extends IncompatibilityBase {
 
-	public void testPatternsPossibilitiesIncompatibility() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Patterns.drl"));
+    public void testPatternsPossibilitiesIncompatibility() throws Exception {
+        StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Patterns.drl" ) );
 
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Incompatible Patterns"));
+        session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Incompatible Patterns" ) );
 
-		Collection<Object> data = new ArrayList<Object>();
+        Collection<Object> data = new ArrayList<Object>();
 
-		/*
-		 * Working pair
-		 */
-		SubPattern pp1 = new SubPattern();
-		SubPattern pp2 = new SubPattern();
+        /*
+         * Working pair
+         */
+        SubPattern pp1 = new SubPattern();
+        SubPattern pp2 = new SubPattern();
 
-		Restriction r1 = new LiteralRestriction();
-		pp1.add(r1);
+        Restriction r1 = new LiteralRestriction();
+        pp1.add( r1 );
 
-		Restriction r2 = new LiteralRestriction();
-		pp2.add(r2);
+        Restriction r2 = new LiteralRestriction();
+        pp2.add( r2 );
 
-		Restriction r3 = new LiteralRestriction();
-		pp1.add(r3);
+        Restriction r3 = new LiteralRestriction();
+        pp1.add( r3 );
 
-		Restriction r4 = new LiteralRestriction();
-		pp2.add(r4);
+        Restriction r4 = new LiteralRestriction();
+        pp2.add( r4 );
 
-		Incompatibility o1 = new Incompatibility(r1, r2);
-		Incompatibility o2 = new Incompatibility(r3, r4);
+        Incompatibility o1 = new Incompatibility( r1,
+                                                  r2 );
+        Incompatibility o2 = new Incompatibility( r3,
+                                                  r4 );
 
-		/*
-		 * Another working pair.
-		 */
-		SubPattern pp3 = new SubPattern();
-		SubPattern pp4 = new SubPattern();
+        /*
+         * Another working pair.
+         */
+        SubPattern pp3 = new SubPattern();
+        SubPattern pp4 = new SubPattern();
 
-		Restriction r5 = new LiteralRestriction();
-		pp3.add(r5);
+        Restriction r5 = new LiteralRestriction();
+        pp3.add( r5 );
 
-		Restriction r6 = new LiteralRestriction();
-		pp4.add(r6);
+        Restriction r6 = new LiteralRestriction();
+        pp4.add( r6 );
 
-		Restriction r7 = new LiteralRestriction();
-		pp3.add(r7);
+        Restriction r7 = new LiteralRestriction();
+        pp3.add( r7 );
 
-		Restriction r8 = new LiteralRestriction();
-		pp4.add(r8);
+        Restriction r8 = new LiteralRestriction();
+        pp4.add( r8 );
 
-		Incompatibility o3 = new Incompatibility(r5, r6);
+        Incompatibility o3 = new Incompatibility( r5,
+                                                  r6 );
 
-		data.add(r1);
-		data.add(r2);
-		data.add(r3);
-		data.add(r4);
-		data.add(r5);
-		data.add(r6);
-		data.add(r7);
-		data.add(r8);
-		data.add(pp1);
-		data.add(pp2);
-		data.add(pp3);
-		data.add(pp4);
-		data.add(o1);
-		data.add(o2);
-		data.add(o3);
+        data.add( r1 );
+        data.add( r2 );
+        data.add( r3 );
+        data.add( r4 );
+        data.add( r5 );
+        data.add( r6 );
+        data.add( r7 );
+        data.add( r8 );
+        data.add( pp1 );
+        data.add( pp2 );
+        data.add( pp3 );
+        data.add( pp4 );
+        data.add( o1 );
+        data.add( o2 );
+        data.add( o3 );
 
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
+        StatelessSessionResult sessionResult = session.executeWithResults( data );
 
-		Map<Cause, Set<Cause>> map = createIncompatibilityMap(
-				CauseType.SUB_PATTERN, sessionResult.iterateObjects());
+        Map<Cause, Set<Cause>> map = createIncompatibilityMap( VerifierComponentType.SUB_PATTERN,
+                                                               sessionResult.iterateObjects() );
 
-		assertTrue((TestBase.causeMapContains(map, pp1, pp2) ^ TestBase
-				.causeMapContains(map, pp2, pp1)));
-		assertTrue((TestBase.causeMapContains(map, pp3, pp4) ^ TestBase
-				.causeMapContains(map, pp4, pp3)));
+        assertTrue( (TestBase.causeMapContains( map,
+                                                pp1,
+                                                pp2 ) ^ TestBase.causeMapContains( map,
+                                                                                   pp2,
+                                                                                   pp1 )) );
+        assertTrue( (TestBase.causeMapContains( map,
+                                                pp3,
+                                                pp4 ) ^ TestBase.causeMapContains( map,
+                                                                                   pp4,
+                                                                                   pp3 )) );
 
-		if (!map.isEmpty()) {
-			fail("More opposites than was expected.");
-		}
-	}
+        if ( !map.isEmpty() ) {
+            fail( "More opposites than was expected." );
+        }
+    }
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/incompatibility/IncompatibilityRestrictionsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/incompatibility/IncompatibilityRestrictionsTest.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/incompatibility/IncompatibilityRestrictionsTest.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -15,7 +15,6 @@
 import org.drools.verifier.components.VariableRestriction;
 import org.drools.verifier.components.VerifierComponentType;
 import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.CauseType;
 
 public class IncompatibilityRestrictionsTest extends IncompatibilityBase {
 
@@ -63,7 +62,7 @@
 
         StatelessSessionResult sessionResult = session.executeWithResults( data );
 
-        Map<Cause, Set<Cause>> map = createIncompatibilityMap( CauseType.RESTRICTION,
+        Map<Cause, Set<Cause>> map = createIncompatibilityMap( VerifierComponentType.RESTRICTION,
                                                                sessionResult.iterateObjects() );
 
         assertTrue( (TestBase.causeMapContains( map,
@@ -121,7 +120,7 @@
 
         StatelessSessionResult sessionResult = session.executeWithResults( data );
 
-        Map<Cause, Set<Cause>> map = createIncompatibilityMap( CauseType.RESTRICTION,
+        Map<Cause, Set<Cause>> map = createIncompatibilityMap( VerifierComponentType.RESTRICTION,
                                                                sessionResult.iterateObjects() );
 
         assertTrue( (TestBase.causeMapContains( map,
@@ -179,7 +178,7 @@
 
         StatelessSessionResult sessionResult = session.executeWithResults( data );
 
-        Map<Cause, Set<Cause>> map = createIncompatibilityMap( CauseType.RESTRICTION,
+        Map<Cause, Set<Cause>> map = createIncompatibilityMap( VerifierComponentType.RESTRICTION,
                                                                sessionResult.iterateObjects() );
 
         assertTrue( (TestBase.causeMapContains( map,
@@ -245,7 +244,7 @@
 
         StatelessSessionResult sessionResult = session.executeWithResults( data );
 
-        Map<Cause, Set<Cause>> map = createIncompatibilityMap( CauseType.RESTRICTION,
+        Map<Cause, Set<Cause>> map = createIncompatibilityMap( VerifierComponentType.RESTRICTION,
                                                                sessionResult.iterateObjects() );
 
         assertTrue( (TestBase.causeMapContains( map,

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositePatternsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositePatternsTest.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositePatternsTest.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -10,90 +10,94 @@
 import org.drools.base.RuleNameMatchesAgendaFilter;
 import org.drools.verifier.TestBase;
 import org.drools.verifier.components.LiteralRestriction;
+import org.drools.verifier.components.Restriction;
 import org.drools.verifier.components.SubPattern;
-import org.drools.verifier.components.Restriction;
+import org.drools.verifier.components.VerifierComponentType;
 import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.CauseType;
 import org.drools.verifier.report.components.Opposites;
 
 public class OppositePatternsTest extends OppositesBase {
 
-	public void testPatternsPossibilitiesOpposite() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Patterns.drl"));
+    public void testPatternsPossibilitiesOpposite() throws Exception {
+        StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Patterns.drl" ) );
 
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Opposite Patterns"));
+        session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Opposite Patterns" ) );
 
-		Collection<Object> data = new ArrayList<Object>();
+        Collection<Object> data = new ArrayList<Object>();
 
-		/*
-		 * Working pair
-		 */
-		SubPattern pp1 = new SubPattern();
-		SubPattern pp2 = new SubPattern();
+        /*
+         * Working pair
+         */
+        SubPattern pp1 = new SubPattern();
+        SubPattern pp2 = new SubPattern();
 
-		Restriction r1 = new LiteralRestriction();
-		pp1.add(r1);
+        Restriction r1 = new LiteralRestriction();
+        pp1.add( r1 );
 
-		Restriction r2 = new LiteralRestriction();
-		pp2.add(r2);
+        Restriction r2 = new LiteralRestriction();
+        pp2.add( r2 );
 
-		Restriction r3 = new LiteralRestriction();
-		pp1.add(r3);
+        Restriction r3 = new LiteralRestriction();
+        pp1.add( r3 );
 
-		Restriction r4 = new LiteralRestriction();
-		pp2.add(r4);
+        Restriction r4 = new LiteralRestriction();
+        pp2.add( r4 );
 
-		Opposites o1 = new Opposites(r1, r2);
-		Opposites o2 = new Opposites(r3, r4);
+        Opposites o1 = new Opposites( r1,
+                                      r2 );
+        Opposites o2 = new Opposites( r3,
+                                      r4 );
 
-		/*
-		 * Pair that doesn't work.
-		 */
-		SubPattern pp3 = new SubPattern();
-		SubPattern pp4 = new SubPattern();
+        /*
+         * Pair that doesn't work.
+         */
+        SubPattern pp3 = new SubPattern();
+        SubPattern pp4 = new SubPattern();
 
-		Restriction r5 = new LiteralRestriction();
-		pp3.add(r5);
+        Restriction r5 = new LiteralRestriction();
+        pp3.add( r5 );
 
-		Restriction r6 = new LiteralRestriction();
-		pp4.add(r6);
+        Restriction r6 = new LiteralRestriction();
+        pp4.add( r6 );
 
-		Restriction r7 = new LiteralRestriction();
-		pp3.add(r7);
+        Restriction r7 = new LiteralRestriction();
+        pp3.add( r7 );
 
-		Restriction r8 = new LiteralRestriction();
-		pp4.add(r8);
+        Restriction r8 = new LiteralRestriction();
+        pp4.add( r8 );
 
-		Opposites o3 = new Opposites(r5, r6);
+        Opposites o3 = new Opposites( r5,
+                                      r6 );
 
-		data.add(r1);
-		data.add(r2);
-		data.add(r3);
-		data.add(r4);
-		data.add(r5);
-		data.add(r6);
-		data.add(r7);
-		data.add(r8);
-		data.add(pp1);
-		data.add(pp2);
-		data.add(pp3);
-		data.add(pp4);
-		data.add(o1);
-		data.add(o2);
-		data.add(o3);
+        data.add( r1 );
+        data.add( r2 );
+        data.add( r3 );
+        data.add( r4 );
+        data.add( r5 );
+        data.add( r6 );
+        data.add( r7 );
+        data.add( r8 );
+        data.add( pp1 );
+        data.add( pp2 );
+        data.add( pp3 );
+        data.add( pp4 );
+        data.add( o1 );
+        data.add( o2 );
+        data.add( o3 );
 
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
+        StatelessSessionResult sessionResult = session.executeWithResults( data );
 
-		Map<Cause, Set<Cause>> map = createOppositesMap(
-				CauseType.SUB_PATTERN, sessionResult.iterateObjects());
+        Map<Cause, Set<Cause>> map = createOppositesMap( VerifierComponentType.SUB_PATTERN,
+                                                         sessionResult.iterateObjects() );
 
-		assertTrue((TestBase.causeMapContains(map, pp1, pp2) ^ TestBase
-				.causeMapContains(map, pp2, pp1)));
+        assertTrue( (TestBase.causeMapContains( map,
+                                                pp1,
+                                                pp2 ) ^ TestBase.causeMapContains( map,
+                                                                                   pp2,
+                                                                                   pp1 )) );
 
-		if (!map.isEmpty()) {
-			fail("More opposites than was expected.");
-		}
-	}
+        if ( !map.isEmpty() ) {
+            fail( "More opposites than was expected." );
+        }
+    }
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositeRestrictionsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositeRestrictionsTest.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositeRestrictionsTest.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -16,7 +16,6 @@
 import org.drools.verifier.components.VariableRestriction;
 import org.drools.verifier.components.VerifierComponentType;
 import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.CauseType;
 
 public class OppositeRestrictionsTest extends OppositesBase {
 
@@ -66,7 +65,7 @@
 
         StatelessSessionResult sessionResult = session.executeWithResults( data );
 
-        Map<Cause, Set<Cause>> map = createOppositesMap( CauseType.RESTRICTION,
+        Map<Cause, Set<Cause>> map = createOppositesMap( VerifierComponentType.RESTRICTION,
                                                          sessionResult.iterateObjects() );
 
         assertTrue( (TestBase.causeMapContains( map,
@@ -112,7 +111,7 @@
 
         StatelessSessionResult sessionResult = session.executeWithResults( data );
 
-        Map<Cause, Set<Cause>> map = createOppositesMap( CauseType.RESTRICTION,
+        Map<Cause, Set<Cause>> map = createOppositesMap( VerifierComponentType.RESTRICTION,
                                                          sessionResult.iterateObjects() );
 
         assertTrue( (TestBase.causeMapContains( map,
@@ -148,7 +147,7 @@
 
         StatelessSessionResult sessionResult = session.executeWithResults( data );
 
-        Map<Cause, Set<Cause>> map = createOppositesMap( CauseType.RESTRICTION,
+        Map<Cause, Set<Cause>> map = createOppositesMap( VerifierComponentType.RESTRICTION,
                                                          sessionResult.iterateObjects() );
 
         assertTrue( (TestBase.causeMapContains( map,
@@ -184,7 +183,7 @@
 
         StatelessSessionResult sessionResult = session.executeWithResults( data );
 
-        Map<Cause, Set<Cause>> map = createOppositesMap( CauseType.RESTRICTION,
+        Map<Cause, Set<Cause>> map = createOppositesMap( VerifierComponentType.RESTRICTION,
                                                          sessionResult.iterateObjects() );
 
         assertTrue( (TestBase.causeMapContains( map,
@@ -220,7 +219,7 @@
 
         StatelessSessionResult sessionResult = session.executeWithResults( data );
 
-        Map<Cause, Set<Cause>> map = createOppositesMap( CauseType.RESTRICTION,
+        Map<Cause, Set<Cause>> map = createOppositesMap( VerifierComponentType.RESTRICTION,
                                                          sessionResult.iterateObjects() );
 
         assertTrue( (TestBase.causeMapContains( map,
@@ -308,7 +307,7 @@
 
         StatelessSessionResult sessionResult = session.executeWithResults( data );
 
-        Map<Cause, Set<Cause>> map = createOppositesMap( CauseType.RESTRICTION,
+        Map<Cause, Set<Cause>> map = createOppositesMap( VerifierComponentType.RESTRICTION,
                                                          sessionResult.iterateObjects() );
 
         assertTrue( (TestBase.causeMapContains( map,

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositesBase.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositesBase.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositesBase.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -7,50 +7,52 @@
 import java.util.Set;
 
 import org.drools.verifier.TestBase;
+import org.drools.verifier.components.VerifierComponentType;
+import org.drools.verifier.data.VerifierComponent;
 import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.CauseType;
 import org.drools.verifier.report.components.Opposites;
 
 public class OppositesBase extends TestBase {
 
-	public void testDummy() {
-		// this is needed as eclipse will try to run this and produce a failure
-		// if its not here.
-		assertTrue(true);
-	}
+    public void testDummy() {
+        // this is needed as eclipse will try to run this and produce a failure
+        // if its not here.
+        assertTrue( true );
+    }
 
-	/**
-	 * Creates opposites map from Opposites objects, one rule may have several
-	 * opposing dependencies.
-	 * 
-	 * @param iter
-	 * @return
-	 */
-	protected Map<Cause, Set<Cause>> createOppositesMap(CauseType type,
-			Iterator<Object> iter) {
+    /**
+     * Creates opposites map from Opposites objects, one rule may have several
+     * opposing dependencies.
+     * 
+     * @param iter
+     * @return
+     */
+    protected Map<Cause, Set<Cause>> createOppositesMap(VerifierComponentType type,
+                                                        Iterator<Object> iter) {
 
-		Map<Cause, Set<Cause>> map = new HashMap<Cause, Set<Cause>>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof Opposites) {
-				Opposites r = (Opposites) o;
+        Map<Cause, Set<Cause>> map = new HashMap<Cause, Set<Cause>>();
+        while ( iter.hasNext() ) {
+            Object o = (Object) iter.next();
+            if ( o instanceof Opposites ) {
+                Opposites r = (Opposites) o;
 
-				if (r.getLeft().getCauseType() == type) {
-					Cause left = r.getLeft();
-					Cause right = r.getRight();
+                if ( ((VerifierComponent) r.getLeft()).getVerifierComponentType().equals( type ) ) {
+                    Cause left = r.getLeft();
+                    Cause right = r.getRight();
 
-					if (map.containsKey(left)) {
-						Set<Cause> set = map.get(left);
-						set.add(right);
-					} else {
-						Set<Cause> set = new HashSet<Cause>();
-						set.add(right);
-						map.put(left, set);
-					}
-				}
-			}
-		}
+                    if ( map.containsKey( left ) ) {
+                        Set<Cause> set = map.get( left );
+                        set.add( right );
+                    } else {
+                        Set<Cause> set = new HashSet<Cause>();
+                        set.add( right );
+                        map.put( left,
+                                 set );
+                    }
+                }
+            }
+        }
 
-		return map;
-	}
+        return map;
+    }
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/overlaps/OverlappingRestrictionsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/overlaps/OverlappingRestrictionsTest.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/overlaps/OverlappingRestrictionsTest.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -1,116 +1,44 @@
 package org.drools.verifier.overlaps;
 
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Iterator;
 
-import org.drools.StatelessSession;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-import org.drools.base.evaluators.Operator;
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.ClassObjectFilter;
 import org.drools.verifier.TestBase;
-import org.drools.verifier.components.Field;
-import org.drools.verifier.components.LiteralRestriction;
-import org.drools.verifier.components.RuleComponent;
-import org.drools.verifier.data.VerifierReport;
-import org.drools.verifier.data.VerifierReportFactory;
-import org.drools.verifier.report.components.Severity;
-import org.drools.verifier.report.components.Subsumption;
-import org.drools.verifier.report.components.VerifierMessage;
-import org.drools.verifier.report.components.VerifierMessageBase;
+import org.drools.verifier.Verifier;
+import org.drools.verifier.builder.VerifierBuilder;
+import org.drools.verifier.builder.VerifierBuilderFactory;
+import org.drools.verifier.builder.VerifierImpl;
+import org.drools.verifier.report.components.Overlap;
 
 public class OverlappingRestrictionsTest extends TestBase {
 
-    public void testOverlap() throws Exception {
-        StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Restrictions.drl" ) );
+    // TODO: Add this feature
+    public void testOverlap() {
+        VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
 
-        session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find overlapping restrictions" ) );
+        Verifier verifier = vBuilder.newVerifier();
 
-        VerifierReport result = VerifierReportFactory.newVerifierReport();
+        verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "RestrictionsTest.drl",
+                                                                             getClass() ),
+                                       ResourceType.DRL );
 
-        Collection<Object> data = new ArrayList<Object>();
+        assertFalse( verifier.hasErrors() );
 
-        /*
-         * There restrictions overlap
-         */
-        String ruleName1 = "Rule 1";
+        boolean noProblems = verifier.fireAnalysis();
+        assertTrue( noProblems );
 
-        Field field1 = new Field();
+        Collection<Object> overlaps = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Overlap.class ) );
 
-        LiteralRestriction lr1 = new LiteralRestriction();
-        lr1.setRuleName( ruleName1 );
-        lr1.setFieldGuid( field1.getGuid() );
-        lr1.setValue( "1.0" );
-        lr1.setOperator( Operator.GREATER );
+//        for ( Object object : overlaps ) {
+//            System.out.println( object );
+//        }
 
-        LiteralRestriction lr2 = new LiteralRestriction();
-        lr2.setRuleName( ruleName1 );
-        lr2.setFieldGuid( field1.getGuid() );
-        lr2.setValue( "2.0" );
-        lr2.setOperator( Operator.GREATER );
+        assertEquals( 3,
+                      overlaps.size() );
 
-        Subsumption s1 = new Subsumption( lr1,
-                                          lr2 );
+        verifier.dispose();
 
-        /*
-         * There restrictions do not overlap
-         */
-        String ruleName2 = "Rule 2";
-
-        Field field2 = new Field();
-
-        LiteralRestriction lr3 = new LiteralRestriction();
-        lr3.setRuleName( ruleName2 );
-        lr3.setFieldGuid( field2.getGuid() );
-        lr3.setValue( "1.0" );
-        lr3.setOperator( Operator.GREATER );
-
-        LiteralRestriction lr4 = new LiteralRestriction();
-        lr4.setRuleName( ruleName2 );
-        lr4.setFieldGuid( field2.getGuid() );
-        lr4.setValue( "2.0" );
-        lr4.setOperator( Operator.GREATER );
-
-        LiteralRestriction lr5 = new LiteralRestriction();
-        lr5.setRuleName( ruleName2 );
-        lr5.setFieldGuid( field2.getGuid() );
-        lr5.setValue( "1.5" );
-        lr5.setOperator( Operator.LESS );
-
-        Subsumption s2 = new Subsumption( lr3,
-                                          lr4 );
-
-        data.add( lr1 );
-        data.add( lr2 );
-        data.add( lr3 );
-        data.add( lr4 );
-        data.add( lr5 );
-        data.add( s1 );
-        data.add( s2 );
-
-        session.setGlobal( "result",
-                           result );
-
-        session.executeWithResults( data );
-
-        Iterator<VerifierMessageBase> iter = result.getBySeverity( Severity.NOTE ).iterator();
-
-        Collection<String> ruleNames = new ArrayList<String>();
-        while ( iter.hasNext() ) {
-            Object o = (Object) iter.next();
-            if ( o instanceof VerifierMessage ) {
-                String name = ((VerifierMessage) o).getCauses().toArray( new RuleComponent[2] )[0].getRuleName();
-
-                ruleNames.add( name );
-            }
-        }
-
-        assertTrue( ruleNames.remove( ruleName1 ) );
-        assertFalse( ruleNames.remove( ruleName2 ) );
-
-        if ( !ruleNames.isEmpty() ) {
-            for ( String string : ruleNames ) {
-                fail( "Rule " + string + " caused an error." );
-            }
-        }
     }
 }

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/WarningsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/WarningsTest.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/WarningsTest.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -48,7 +48,7 @@
             }
         }
 
-        assertEquals( 2,
+        assertEquals( 1,
                       counter );
 
         verifier.dispose();

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/report/components/CauseTest.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -0,0 +1,77 @@
+package org.drools.verifier.report.components;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import junit.framework.TestCase;
+
+import org.drools.builder.ResourceType;
+import org.drools.io.impl.ClassPathResource;
+import org.drools.verifier.Verifier;
+import org.drools.verifier.builder.VerifierBuilder;
+import org.drools.verifier.builder.VerifierBuilderFactory;
+import org.drools.verifier.data.VerifierReport;
+
+public class CauseTest extends TestCase {
+
+    public void testCauseTrace() throws Exception {
+
+        VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+        // Check that the builder works.
+        assertFalse( vBuilder.hasErrors() );
+        assertEquals( 0,
+                      vBuilder.getErrors().size() );
+
+        Verifier verifier = vBuilder.newVerifier();
+
+        verifier.addResourcesToVerify( new ClassPathResource( "Causes.drl",
+                                                              getClass() ),
+                                       ResourceType.DRL );
+
+        assertFalse( verifier.hasErrors() );
+        assertEquals( 0,
+                      verifier.getErrors().size() );
+
+        boolean works = verifier.fireAnalysis();
+
+        assertTrue( works );
+
+        VerifierReport result = verifier.getResult();
+        assertNotNull( result );
+        assertEquals( 0,
+                      result.getBySeverity( Severity.ERROR ).size() );
+        Collection<VerifierMessageBase> warnings = result.getBySeverity( Severity.WARNING );
+        Collection<VerifierMessageBase> redundancyWarnings = new ArrayList<VerifierMessageBase>();
+
+        for ( VerifierMessageBase verifierMessageBase : warnings ) {
+            if ( verifierMessageBase.getMessageType().equals( MessageType.REDUNDANCY ) ) {
+                redundancyWarnings.add( verifierMessageBase );
+            }
+        }
+
+        assertEquals( 1,
+                      redundancyWarnings.size() );
+
+        VerifierMessage message = (VerifierMessage) redundancyWarnings.toArray()[0];
+
+        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()] );
+        assertEquals( 2,
+                      causes.length );
+
+        assertEquals( 0,
+                      result.getBySeverity( Severity.NOTE ).size() );
+
+    }
+}

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubPatternsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubPatternsTest.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubPatternsTest.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -12,7 +12,8 @@
 import org.drools.verifier.builder.VerifierBuilder;
 import org.drools.verifier.builder.VerifierBuilderFactory;
 import org.drools.verifier.builder.VerifierImpl;
-import org.drools.verifier.report.components.CauseType;
+import org.drools.verifier.components.VerifierComponentType;
+import org.drools.verifier.data.VerifierComponent;
 import org.drools.verifier.report.components.Subsumption;
 
 public class SubsumptantSubPatternsTest extends TestCase {
@@ -34,14 +35,18 @@
         assertFalse( verifier.hasErrors() );
 
         boolean noProblems = verifier.fireAnalysis();
-        assertTrue( noProblems );
+        if ( !noProblems ) {
+            for ( VerifierError error : verifier.getErrors() ) {
+                System.out.println( error.getMessage() );
+            }
+        }
 
         Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
 
         int count = 0;
         for ( Object object : subsumptionList ) {
             //            System.out.println( " * " + ((Subsumption) object) );
-            if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_PATTERN ) ) {
+            if ( ((VerifierComponent) ((Subsumption) object).getLeft()).getVerifierComponentType().equals( VerifierComponentType.SUB_PATTERN ) ) {
                 //                System.out.println( " ** " + ((SubPattern) ((Subsumption) object).getLeft()).getItems() + " - " + ((SubPattern) ((Subsumption) object).getRight()).getItems() );
                 count++;
             }
@@ -80,7 +85,7 @@
         int count = 0;
         for ( Object object : subsumptionList ) {
             //            System.out.println( " * " + ((Subsumption) object) );
-            if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_PATTERN ) ) {
+            if ( ((VerifierComponent) ((Subsumption) object).getLeft()).getVerifierComponentType().equals( VerifierComponentType.SUB_PATTERN ) ) {
                 count++;
             }
         }
@@ -118,7 +123,7 @@
         int count = 0;
         for ( Object object : subsumptionList ) {
             //            System.out.println( " * " + ((Subsumption) object) );
-            if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_PATTERN ) ) {
+            if ( ((VerifierComponent) ((Subsumption) object).getLeft()).getVerifierComponentType().equals( VerifierComponentType.SUB_PATTERN ) ) {
                 count++;
             }
         }
@@ -156,7 +161,7 @@
         int count = 0;
         for ( Object object : subsumptionList ) {
             System.out.println( " * " + ((Subsumption) object) );
-            if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_PATTERN ) ) {
+            if ( ((VerifierComponent) ((Subsumption) object).getLeft()).getVerifierComponentType().equals( VerifierComponentType.SUB_PATTERN ) ) {
                 count++;
             }
         }
@@ -194,7 +199,7 @@
         int count = 0;
         for ( Object object : subsumptionList ) {
             //            System.out.println( " * " + ((Subsumption) object) );
-            if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_PATTERN ) ) {
+            if ( ((VerifierComponent) ((Subsumption) object).getLeft()).getVerifierComponentType().equals( VerifierComponentType.SUB_PATTERN ) ) {
                 count++;
             }
         }

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubRulesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubRulesTest.java	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubRulesTest.java	2010-03-15 11:32:39 UTC (rev 32091)
@@ -12,7 +12,8 @@
 import org.drools.verifier.builder.VerifierBuilder;
 import org.drools.verifier.builder.VerifierBuilderFactory;
 import org.drools.verifier.builder.VerifierImpl;
-import org.drools.verifier.report.components.CauseType;
+import org.drools.verifier.components.VerifierComponentType;
+import org.drools.verifier.data.VerifierComponent;
 import org.drools.verifier.report.components.Subsumption;
 
 public class SubsumptantSubRulesTest extends TestCase {
@@ -41,7 +42,7 @@
         int count = 0;
         for ( Object object : subsumptionList ) {
             //                        System.out.println( " * " + ((Subsumption) object) );
-            if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_RULE ) ) {
+            if ( ((VerifierComponent) ((Subsumption) object).getLeft()).getVerifierComponentType().equals( VerifierComponentType.SUB_RULE ) ) {
                 //                System.out.println( " ** " + ((SubRule) ((Subsumption) object).getLeft()).getItems() + " - " + ((SubRule) ((Subsumption) object).getRight()).getItems() );
                 count++;
             }

Modified: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/FindPatterns.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/FindPatterns.drl	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/FindPatterns.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -8,6 +8,8 @@
 
 import org.drools.verifier.data.VerifierReport;
 
+import java.util.HashMap;
+
 global VerifierReport result;
 
 
@@ -17,6 +19,7 @@
 		$p :Pattern( )
 	then
 		result.add( new VerifierMessage(
+							new HashMap<String,String>(),
 							Severity.NOTE,
 							MessageType.NOT_SPECIFIED,
 							$p,

Modified: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/VerifyingScope.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/VerifyingScope.drl	2010-03-15 10:32:34 UTC (rev 32090)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/VerifyingScope.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -1,8 +1,6 @@
 #created on: 18.12.2009
 package org.drools.verifier
 
-global VerifierReport result;
-
 import java.util.ArrayList;
 
 import org.drools.verifier.data.VerifierReport;
@@ -13,14 +11,22 @@
 import org.drools.verifier.report.components.VerifierMessage;
 import org.drools.verifier.report.components.MessageType;
 
+import java.util.HashMap;
+
+global VerifierReport result;
+
 rule "Single"
 	@verifying_scopes(single-rule)
 	when
 		$a :VerifierRule()
 	then 
 		result.add(new VerifierMessage(
-						Severity.NOTE, MessageType.EQUIVALANCE,
-						$a, "", new ArrayList() ) );
+						new HashMap<String,String>(),
+						Severity.NOTE, 
+						MessageType.EQUIVALANCE,
+						$a, 
+						"", 
+						new ArrayList() ) );
 end
 
 rule "single or dtable"
@@ -29,8 +35,12 @@
 		$a :VerifierRule()
 	then 
 		result.add(new VerifierMessage(
-						Severity.NOTE, MessageType.EQUIVALANCE,
-						$a, "", new ArrayList() ) );
+						new HashMap<String,String>(),
+						Severity.NOTE, 
+						MessageType.EQUIVALANCE,
+						$a, 
+						"", 
+						new ArrayList() ) );
 end
 
 rule "no verifying scope set"
@@ -38,6 +48,10 @@
 		$a :VerifierRule()
 	then 
 		result.add(new VerifierMessage(
-						Severity.NOTE, MessageType.EQUIVALANCE,
-						$a, "", new ArrayList() ) );
+						new HashMap<String,String>(),
+						Severity.NOTE, 
+						MessageType.EQUIVALANCE,
+						$a, 
+						"", 
+						new ArrayList() ) );
 end

Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/overlaps/RestrictionsTest.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/overlaps/RestrictionsTest.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/overlaps/RestrictionsTest.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -0,0 +1,45 @@
+#created on: 25-Feb-2010
+package org.drools.verifier.overlaps
+
+#list any import classes here.
+
+
+
+#declare any global variables here
+
+
+
+
+rule "Overlap I"
+	
+	when
+		Person( 
+			age > 10, 
+			age > 1 
+		)
+	then
+	 
+end
+
+rule "Overlap II"
+	when
+		Monkey( hasBanana == true )
+		Monkey( hasBanana == true )
+	then 
+		
+end
+/*
+rule "Overlap III A"
+	when
+		Player( position < 10 )
+	then 
+		
+end
+
+rule "Overlap III B"
+	when
+		Player( position == 1 )
+	then 
+		
+end
+*/

Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/report/components/Causes.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/report/components/Causes.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/report/components/Causes.drl	2010-03-15 11:32:39 UTC (rev 32091)
@@ -0,0 +1,27 @@
+#created on: 25-Feb-2010
+package org.drools.verifier.report.components
+
+#list any import classes here.
+
+
+
+#declare any global variables here
+
+
+
+
+rule "Your First Rule"
+	when
+		Person( name == "Toni" )
+	then 
+        System.out.println( "*******************" );
+		
+end
+
+rule "Your Second Rule"
+	when
+		Person( name == "Toni" )
+	then 
+        System.out.println( "*******************" );
+		
+end



More information about the jboss-svn-commits mailing list