[jboss-svn-commits] JBL Code SVN: r33094 - in labs/jbossrules/trunk/drools-factconstraint/src: main/java/org/drools/factconstraints/server/predefined and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed May 26 11:20:27 EDT 2010


Author: eaa
Date: 2010-05-26 11:20:26 -0400 (Wed, 26 May 2010)
New Revision: 33094

Added:
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultFieldConstraintImpl.java
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/InvalidFieldConstraint.java
   labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraints/server/predefined/InvalidFieldConstraintTest.java
Removed:
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultConstraintImpl.java
Modified:
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultMultiRulesConstraintImpl.java
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/IntegerConstraint.java
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/MatchesConstraint.java
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/NotMatchesConstraint.java
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/NotNullConstraint.java
   labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraints/server/predefined/RangeConstraintTest.java
Log:
GUVNOR-541: Add the possibility of create Working Sets
	- DefaultContraintImpl was renamed to DefaultFieldConstraintImpl
	- New Constraint added: InvalidFieldConstraint. This Constraint will fail when a Constraint is set to a particular Field (no matter what type of Constraint)

Deleted: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultConstraintImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultConstraintImpl.java	2010-05-26 14:50:52 UTC (rev 33093)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultConstraintImpl.java	2010-05-26 15:20:26 UTC (rev 33094)
@@ -1,296 +0,0 @@
-package org.drools.factconstraints.server;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.drools.base.evaluators.Operator;
-import org.drools.factconstraints.client.ArgumentNotSetException;
-import org.drools.factconstraints.client.ConstraintConfiguration;
-import org.drools.factconstraints.client.ValidationResult;
-import org.drools.verifier.report.components.Severity;
-
-/**
- *
- * @author esteban.aliverti at gmail.com
- * @author baunax at gmail.com
- */
-public abstract class DefaultConstraintImpl implements Constraint {
-
-	private static final long serialVersionUID = 501L;
-	private long ruleNum = 0;
-
-    public static List<Operator> supportedOperators = new ArrayList<Operator>();
-    static{
-        supportedOperators.add(Operator.EQUAL);
-        supportedOperators.add(Operator.NOT_EQUAL);
-        supportedOperators.add(Operator.GREATER);
-        supportedOperators.add(Operator.GREATER_OR_EQUAL);
-        supportedOperators.add(Operator.LESS);
-        supportedOperators.add(Operator.LESS_OR_EQUAL);
-    }
-
-    private String concatRule(ConstraintConfiguration config, Map<String, Object> context) {
-        StringBuilder rule = new StringBuilder();
-
-        rule.append(this.getVerifierPackagePrefixTemplate(config, context));
-        rule.append(this.getVerifierPackageTemplate(config, context));
-        rule.append(this.getVerifierPackageSufixTemplate(config, context));
-
-        rule.append(this.getVerifierImportsPrefixTemplate(config, context));
-        rule.append(this.getVerifierImportsTemplate(config, context));
-        rule.append(this.getVerifierImportsSufixTemplate(config, context));
-
-        rule.append(this.getVerifierGlobalsPrefixTemplate(config, context));
-        rule.append(this.getVerifierGlobalsTemplate(config, context));
-        rule.append(this.getVerifierGlobalsSufixTemplate(config, context));
-
-        rule.append(this.getVerifierRuleNamePrefixTemplate(config, context));
-        rule.append(this.getVerifierRuleNameTemplate(config, context));
-        rule.append(this.getVerifierRuleNameSufixTemplate(config, context));
-
-        rule.append(this.getVerifierRuleWhenTemplate(config, context));
-
-        rule.append(this.getVerifierFieldPatternPrefixTemplate(config, context));
-        rule.append(this.getVerifierFieldPatternTemplate(config, context));
-        rule.append(this.getVerifierFieldPatternSufixTemplate(config, context));
-
-        rule.append(this.getVerifierRestrictionPatternPrefixTemplate(config, context));
-        rule.append(this.getVerifierRestrictionPatternTemplate(config, context));
-        rule.append(this.getVerifierRestrictionPatternSufixTemplate(config, context));
-
-        rule.append(this.getVerifierRuleThenTemplate(config, context));
-
-        rule.append(this.getVerifierActionPrefixTemplate(config, context));
-        rule.append(this.getVerifierActionTemplate(config, context));
-        rule.append(this.getVerifierActionSufixTemplate(config, context));
-
-        rule.append(this.getVerifierRuleEndTemplate(config, context));
-        rule.append(this.getVerifierRuleEndSufixTemplate(config, context));
-
-        return rule.toString();
-
-    }
-
-    protected String createVerifierRuleTemplate(ConstraintConfiguration config, Map<String, Object> context, String ruleName, List<String> constraints, String message) {
-        if (ruleName == null) {
-            ruleName = "Constraint_rule";
-
-        }
-        ruleName += "_" + ruleNum++;
-        String rule = this.concatRule(config, context).replace("${ruleName}", ruleName);
-        rule = rule.replace("${factType}", config.getFactType());
-        rule = rule.replace("${fieldName}", config.getFieldName());
-        if (constraints != null && !constraints.isEmpty()) {
-            String constraintsTxt = "";
-            String delimiter = "";
-            for (String c : constraints) {
-                constraintsTxt += delimiter + c + "\n";
-                if (delimiter.equals("")) {
-                    delimiter = ",";
-                }
-            }
-            rule = rule.replace("${constraints}", constraintsTxt);
-        }
-        rule = rule.replace("${message}", (message == null || message.equals("")) ? "Invalid Value" : message);
-
-        return rule;
-    }
-
-    protected Object getMandatoryArgument(String key, ConstraintConfiguration conf) throws ArgumentNotSetException {
-        if (!conf.containsArgument(key)) {
-            throw new ArgumentNotSetException("The argument " + key + " doesn't exist.");
-        }
-
-        Object value = conf.getArgumentValue(key);
-
-        if (value == null) {
-            throw new ArgumentNotSetException("The argument " + key + " is null.");
-        }
-
-        return value;
-    }
-
-    public ValidationResult validate(Object value, ConstraintConfiguration config) {
-        ValidationResult result = new ValidationResult();
-        result.setSuccess(true);
-
-        return result;
-    }
-
-    protected Map<String, Object> createContext() {
-    	return new HashMap<String, Object>();
-    }
-
-    public final String getVerifierRule(ConstraintConfiguration config) {
-        return internalVerifierRule(config, createContext());
-    }
-
-    abstract protected String internalVerifierRule(ConstraintConfiguration config, Map<String, Object> context);
-
-    public String getConstraintName() {
-    	return getClass().getName().substring(getClass().getName().lastIndexOf('.') + 1);
-    }
-
-    /* Action */
-    protected String getVerifierActionTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        StringBuilder verifierActionTemplate = new StringBuilder();
-
-          //by default, add an ERROR
-          verifierActionTemplate.append(this.addResult(Severity.ERROR));
-
-//        verifierActionTemplate.append("      System.out.println(\"doubleValue= \"+$restriction.getDoubleValue());\n");
-//        verifierActionTemplate.append("      System.out.println(\"intValue= \"+$restriction.getIntValue());\n");
-
-        return verifierActionTemplate.toString();
-    }
-
-    protected String addResult(Severity  severity){
-        StringBuilder addString = new StringBuilder();
-        addString.append("      result.add(new VerifierMessage(\n");
-        addString.append("                        impactedRules,\n");
-        if (severity.compareTo(Severity.ERROR) == 0){
-            addString.append("                        Severity.ERROR,\n");
-        }else if(severity.compareTo(Severity.NOTE) == 0){
-            addString.append("                        Severity.NOTE,\n");
-        }else if(severity.compareTo(Severity.WARNING) == 0){
-            addString.append("                        Severity.WARNING,\n");
-        }
-        addString.append("                        MessageType.NOT_SPECIFIED,\n");
-        addString.append("                        $restriction,\n");
-        addString.append("                        \"${message}\" ) );\n");
-        return addString.toString();
-    }
-
-    protected String getVerifierActionPrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        StringBuilder verifierActionPrefixTemplate = new StringBuilder();
-        verifierActionPrefixTemplate.append("      Map<String,String> impactedRules = new HashMap<String,String>();\n")
-        	.append("      impactedRules.put( $restriction.getPackagePath(), $restriction.getRuleName());\n");
-        return verifierActionPrefixTemplate.toString();
-    }
-
-    protected String getVerifierActionSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        return "";
-    }
-
-    /* Field Pattern */
-    protected String getVerifierFieldPatternTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        StringBuilder verifierFieldPatternTemplate = new StringBuilder();
-        verifierFieldPatternTemplate.append("      $field :Field(\n");
-        verifierFieldPatternTemplate.append("          objectTypeName == \"${factType}\",\n");
-        verifierFieldPatternTemplate.append("          name == \"${fieldName}\"\n");
-        verifierFieldPatternTemplate.append("      )\n");
-        return verifierFieldPatternTemplate.toString();
-    }
-
-    protected String getVerifierFieldPatternPrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        return "";
-    }
-
-    protected String getVerifierFieldPatternSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        return "";
-    }
-
-    /* Globals*/
-    protected String getVerifierGlobalsTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        return "global VerifierReport result;\n";
-    }
-
-    protected String getVerifierGlobalsPrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        return "";
-    }
-
-    protected String getVerifierGlobalsSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        return "";
-    }
-
-    /* Imports */
-    protected String getVerifierImportsTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        StringBuilder verifierImportsTemplate = new StringBuilder();
-        verifierImportsTemplate.append("import org.drools.verifier.components.*;\n");
-        verifierImportsTemplate.append("import java.util.Map;\n");
-        verifierImportsTemplate.append("import java.util.HashMap;\n");
-        verifierImportsTemplate.append("import org.drools.verifier.report.components.VerifierMessage;\n");
-        verifierImportsTemplate.append("import org.drools.verifier.data.VerifierReport;\n");
-        verifierImportsTemplate.append("import org.drools.verifier.report.components.Severity;\n");
-        verifierImportsTemplate.append("import org.drools.verifier.report.components.MessageType;\n");
-
-        return verifierImportsTemplate.toString();
-
-    }
-
-    protected String getVerifierImportsPrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        return "";
-    }
-
-    protected String getVerifierImportsSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        return "";
-    }
-
-    protected String getVerifierPackageTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        return "package org.drools.verifier.consequence\n";
-    }
-
-    protected String getVerifierPackagePrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        return "";
-    }
-
-    protected String getVerifierPackageSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        return "";
-    }
-
-    /* Restriction Pattern */
-    protected String getVerifierRestrictionPatternTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        StringBuilder verifierRestrictionPatternTemplate = new StringBuilder();
-        verifierRestrictionPatternTemplate.append("      $restriction :LiteralRestriction(\n");
-        verifierRestrictionPatternTemplate.append("            fieldPath == $field.path,\n");
-        verifierRestrictionPatternTemplate.append("            ${constraints}\n");
-        verifierRestrictionPatternTemplate.append("      )\n");
-
-        return verifierRestrictionPatternTemplate.toString();
-    }
-
-    protected String getVerifierRestrictionPatternPrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        return "";
-    }
-
-    protected String getVerifierRestrictionPatternSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        return "";
-    }
-
-    /* end */
-    protected String getVerifierRuleEndTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        return "end\n";
-    }
-
-    protected String getVerifierRuleEndSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        return "";
-    }
-
-    /* Rule Name */
-    protected String getVerifierRuleNameTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        return "rule \"${ruleName}\"\n";
-    }
-
-    protected String getVerifierRuleNamePrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        return "";
-    }
-
-    protected String getVerifierRuleNameSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        return "";
-    }
-
-    /* then */
-    protected String getVerifierRuleThenTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        return "  then\n";
-    }
-
-    /* when */
-    protected String getVerifierRuleWhenTemplate(ConstraintConfiguration config, Map<String, Object> context) {
-        return "  when\n";
-    }
-
-    public List<String> getArgumentKeys() {
-    	return new ArrayList<String>();
-    }
-}

Added: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultFieldConstraintImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultFieldConstraintImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultFieldConstraintImpl.java	2010-05-26 15:20:26 UTC (rev 33094)
@@ -0,0 +1,303 @@
+package org.drools.factconstraints.server;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.base.evaluators.Operator;
+import org.drools.factconstraints.client.ArgumentNotSetException;
+import org.drools.factconstraints.client.ConstraintConfiguration;
+import org.drools.factconstraints.client.ValidationResult;
+import org.drools.verifier.report.components.Severity;
+
+/**
+ *
+ * @author esteban.aliverti at gmail.com
+ * @author baunax at gmail.com
+ */
+public abstract class DefaultFieldConstraintImpl implements Constraint {
+
+	private static final long serialVersionUID = 501L;
+	private long ruleNum = 0;
+
+    public static final List<Operator> supportedOperators = new ArrayList<Operator>();
+    static{
+        supportedOperators.add(Operator.EQUAL);
+        supportedOperators.add(Operator.NOT_EQUAL);
+        supportedOperators.add(Operator.GREATER);
+        supportedOperators.add(Operator.GREATER_OR_EQUAL);
+        supportedOperators.add(Operator.LESS);
+        supportedOperators.add(Operator.LESS_OR_EQUAL);
+    }
+  
+
+    private String concatRule(ConstraintConfiguration config, Map<String, Object> context) {
+        StringBuilder rule = new StringBuilder();
+
+        rule.append(this.getVerifierPackagePrefixTemplate(config, context));
+        rule.append(this.getVerifierPackageTemplate(config, context));
+        rule.append(this.getVerifierPackageSufixTemplate(config, context));
+
+        rule.append(this.getVerifierImportsPrefixTemplate(config, context));
+        rule.append(this.getVerifierImportsTemplate(config, context));
+        rule.append(this.getVerifierImportsSufixTemplate(config, context));
+
+        rule.append(this.getVerifierGlobalsPrefixTemplate(config, context));
+        rule.append(this.getVerifierGlobalsTemplate(config, context));
+        rule.append(this.getVerifierGlobalsSufixTemplate(config, context));
+
+        rule.append(this.getVerifierRuleNamePrefixTemplate(config, context));
+        rule.append(this.getVerifierRuleNameTemplate(config, context));
+        rule.append(this.getVerifierRuleNameSufixTemplate(config, context));
+
+        rule.append(this.getVerifierRuleWhenTemplate(config, context));
+
+        rule.append(this.getVerifierFieldPatternPrefixTemplate(config, context));
+        rule.append(this.getVerifierFieldPatternTemplate(config, context));
+        rule.append(this.getVerifierFieldPatternSufixTemplate(config, context));
+
+        rule.append(this.getVerifierRestrictionPatternPrefixTemplate(config, context));
+        rule.append(this.getVerifierRestrictionPatternTemplate(config, context));
+        rule.append(this.getVerifierRestrictionPatternSufixTemplate(config, context));
+
+        rule.append(this.getVerifierRuleThenTemplate(config, context));
+
+        rule.append(this.getVerifierActionPrefixTemplate(config, context));
+        rule.append(this.getVerifierActionTemplate(config, context));
+        rule.append(this.getVerifierActionSufixTemplate(config, context));
+
+        rule.append(this.getVerifierRuleEndTemplate(config, context));
+        rule.append(this.getVerifierRuleEndSufixTemplate(config, context));
+
+        return rule.toString();
+
+    }
+
+    protected String createVerifierRuleTemplate(ConstraintConfiguration config, Map<String, Object> context, String ruleName, List<String> constraints, String message) {
+        if (ruleName == null) {
+            ruleName = "Constraint_rule";
+
+        }
+        ruleName += "_" + ruleNum++;
+        String rule = this.concatRule(config, context).replace("${ruleName}", ruleName);
+        rule = rule.replace("${factType}", config.getFactType());
+        rule = rule.replace("${fieldName}", config.getFieldName());
+        StringBuilder constraintsTxt = new StringBuilder();
+        if (constraints != null && !constraints.isEmpty()) {
+            for (String c : constraints) {
+                constraintsTxt.append(",\n");
+                constraintsTxt.append(c);
+            }
+        }
+        rule = rule.replace("${constraints}", constraintsTxt);
+        rule = rule.replace("${message}", (message == null || message.equals("")) ? "Invalid Value" : message);
+
+        return rule;
+    }
+
+    protected Object getMandatoryArgument(String key, ConstraintConfiguration conf) throws ArgumentNotSetException {
+        if (!conf.containsArgument(key)) {
+            throw new ArgumentNotSetException("The argument " + key + " doesn't exist.");
+        }
+
+        Object value = conf.getArgumentValue(key);
+
+        if (value == null) {
+            throw new ArgumentNotSetException("The argument " + key + " is null.");
+        }
+
+        return value;
+    }
+
+    /**
+     * Used for on-demand validation
+     * @param value
+     * @param config
+     * @return
+     * @deprecated Use drools-verifier instead of this method:
+     * {@link #getVerifierRule(org.drools.factconstraints.client.ConstraintConfiguration) }
+     */
+    @Deprecated
+    public ValidationResult validate(Object value, ConstraintConfiguration config) {
+        ValidationResult result = new ValidationResult();
+        result.setSuccess(true);
+
+        return result;
+    }
+
+    protected Map<String, Object> createContext() {
+    	return new HashMap<String, Object>();
+    }
+
+    public final String getVerifierRule(ConstraintConfiguration config) {
+        return internalVerifierRule(config, createContext());
+    }
+
+    abstract protected String internalVerifierRule(ConstraintConfiguration config, Map<String, Object> context);
+
+    public String getConstraintName() {
+    	return getClass().getName().substring(getClass().getName().lastIndexOf('.') + 1);
+    }
+
+    /* Action */
+    protected String getVerifierActionTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        StringBuilder verifierActionTemplate = new StringBuilder();
+
+          //by default, add an ERROR
+          verifierActionTemplate.append(this.addResult(Severity.ERROR));
+
+//        verifierActionTemplate.append("      System.out.println(\"doubleValue= \"+$restriction.getDoubleValue());\n");
+//        verifierActionTemplate.append("      System.out.println(\"intValue= \"+$restriction.getIntValue());\n");
+
+        return verifierActionTemplate.toString();
+    }
+
+    protected String addResult(Severity  severity){
+        StringBuilder addString = new StringBuilder();
+        addString.append("      result.add(new VerifierMessage(\n");
+        addString.append("                        impactedRules,\n");
+        if (severity.compareTo(Severity.ERROR) == 0){
+            addString.append("                        Severity.ERROR,\n");
+        }else if(severity.compareTo(Severity.NOTE) == 0){
+            addString.append("                        Severity.NOTE,\n");
+        }else if(severity.compareTo(Severity.WARNING) == 0){
+            addString.append("                        Severity.WARNING,\n");
+        }
+        addString.append("                        MessageType.NOT_SPECIFIED,\n");
+        addString.append("                        $restriction,\n");
+        addString.append("                        \"${message}\" ) );\n");
+        return addString.toString();
+    }
+
+    protected String getVerifierActionPrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        StringBuilder verifierActionPrefixTemplate = new StringBuilder();
+        verifierActionPrefixTemplate.append("      Map<String,String> impactedRules = new HashMap<String,String>();\n")
+        	.append("      impactedRules.put( $restriction.getPackagePath(), $restriction.getRuleName());\n");
+        return verifierActionPrefixTemplate.toString();
+    }
+
+    protected String getVerifierActionSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        return "";
+    }
+
+    /* Field Pattern */
+    protected String getVerifierFieldPatternTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        StringBuilder verifierFieldPatternTemplate = new StringBuilder();
+        verifierFieldPatternTemplate.append("      $field :Field(\n");
+        verifierFieldPatternTemplate.append("          objectTypeName == \"${factType}\",\n");
+        verifierFieldPatternTemplate.append("          name == \"${fieldName}\"\n");
+        verifierFieldPatternTemplate.append("      )\n");
+        return verifierFieldPatternTemplate.toString();
+    }
+
+    protected String getVerifierFieldPatternPrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        return "";
+    }
+
+    protected String getVerifierFieldPatternSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        return "";
+    }
+
+    /* Globals*/
+    protected String getVerifierGlobalsTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        return "global VerifierReport result;\n";
+    }
+
+    protected String getVerifierGlobalsPrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        return "";
+    }
+
+    protected String getVerifierGlobalsSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        return "";
+    }
+
+    /* Imports */
+    protected String getVerifierImportsTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        StringBuilder verifierImportsTemplate = new StringBuilder();
+        verifierImportsTemplate.append("import org.drools.verifier.components.*;\n");
+        verifierImportsTemplate.append("import java.util.Map;\n");
+        verifierImportsTemplate.append("import java.util.HashMap;\n");
+        verifierImportsTemplate.append("import org.drools.verifier.report.components.VerifierMessage;\n");
+        verifierImportsTemplate.append("import org.drools.verifier.data.VerifierReport;\n");
+        verifierImportsTemplate.append("import org.drools.verifier.report.components.Severity;\n");
+        verifierImportsTemplate.append("import org.drools.verifier.report.components.MessageType;\n");
+
+        return verifierImportsTemplate.toString();
+
+    }
+
+    protected String getVerifierImportsPrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        return "";
+    }
+
+    protected String getVerifierImportsSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        return "";
+    }
+
+    protected String getVerifierPackageTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        return "package org.drools.verifier.consequence\n";
+    }
+
+    protected String getVerifierPackagePrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        return "";
+    }
+
+    protected String getVerifierPackageSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        return "";
+    }
+
+    /* Restriction Pattern */
+    protected String getVerifierRestrictionPatternTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        StringBuilder verifierRestrictionPatternTemplate = new StringBuilder();
+        verifierRestrictionPatternTemplate.append("      $restriction :LiteralRestriction(\n");
+        verifierRestrictionPatternTemplate.append("            fieldPath == $field.path\n");
+        verifierRestrictionPatternTemplate.append("            ${constraints}\n");
+        verifierRestrictionPatternTemplate.append("      )\n");
+
+        return verifierRestrictionPatternTemplate.toString();
+    }
+
+    protected String getVerifierRestrictionPatternPrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        return "";
+    }
+
+    protected String getVerifierRestrictionPatternSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        return "";
+    }
+
+    /* end */
+    protected String getVerifierRuleEndTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        return "end\n";
+    }
+
+    protected String getVerifierRuleEndSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        return "";
+    }
+
+    /* Rule Name */
+    protected String getVerifierRuleNameTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        return "rule \"${ruleName}\"\n";
+    }
+
+    protected String getVerifierRuleNamePrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        return "";
+    }
+
+    protected String getVerifierRuleNameSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        return "";
+    }
+
+    /* then */
+    protected String getVerifierRuleThenTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        return "  then\n";
+    }
+
+    /* when */
+    protected String getVerifierRuleWhenTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        return "  when\n";
+    }
+
+    public List<String> getArgumentKeys() {
+    	return new ArrayList<String>();
+    }
+}

Modified: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultMultiRulesConstraintImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultMultiRulesConstraintImpl.java	2010-05-26 14:50:52 UTC (rev 33093)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultMultiRulesConstraintImpl.java	2010-05-26 15:20:26 UTC (rev 33094)
@@ -12,7 +12,7 @@
  * The counter must be handled by subclasses.
  * @author esteban.aliverti at gmail.com
  */
-public abstract class DefaultMultiRulesConstraintImpl extends DefaultConstraintImpl {
+public abstract class DefaultMultiRulesConstraintImpl extends DefaultFieldConstraintImpl {
 
 	private static final long serialVersionUID = 501L;
 	protected static final String RULE_COUNT = "ruleCount";

Modified: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/IntegerConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/IntegerConstraint.java	2010-05-26 14:50:52 UTC (rev 33093)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/IntegerConstraint.java	2010-05-26 15:20:26 UTC (rev 33094)
@@ -6,13 +6,13 @@
 
 import org.drools.factconstraints.client.ConstraintConfiguration;
 import org.drools.factconstraints.client.ValidationResult;
-import org.drools.factconstraints.server.DefaultConstraintImpl;
+import org.drools.factconstraints.server.DefaultFieldConstraintImpl;
 
 /**
  *
  * @author esteban.aliverti at gmail.com
  */
-public class IntegerConstraint extends DefaultConstraintImpl {
+public class IntegerConstraint extends DefaultFieldConstraintImpl {
 	private static final long serialVersionUID = 501L;
 	public static final String NAME = "IntegerConstraint";
 	

Added: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/InvalidFieldConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/InvalidFieldConstraint.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/InvalidFieldConstraint.java	2010-05-26 15:20:26 UTC (rev 33094)
@@ -0,0 +1,32 @@
+package org.drools.factconstraints.server.predefined;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.factconstraints.client.ConstraintConfiguration;
+import org.drools.factconstraints.client.ValidationResult;
+import org.drools.factconstraints.server.DefaultFieldConstraintImpl;
+
+/**
+ *
+ * @author esteban.aliverti at gmail.com
+ */
+public class InvalidFieldConstraint extends DefaultFieldConstraintImpl {
+	private static final long serialVersionUID = 501L;
+	public static final String NAME = "IvalidFieldConstraint";
+
+    public InvalidFieldConstraint(){}
+
+    @Override
+    protected String internalVerifierRule(ConstraintConfiguration config,
+    		Map<String, Object> context) {
+        return this.createVerifierRuleTemplate(config, context, "Invalid_Field_Constraint", null, "The field can not be used in this rule"); //I18N
+    }
+
+    @Override
+    public ValidationResult validate(Object value, ConstraintConfiguration config) {
+        return null;
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/MatchesConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/MatchesConstraint.java	2010-05-26 14:50:52 UTC (rev 33093)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/MatchesConstraint.java	2010-05-26 15:20:26 UTC (rev 33094)
@@ -5,9 +5,9 @@
 import java.util.Map;
 
 import org.drools.factconstraints.client.ConstraintConfiguration;
-import org.drools.factconstraints.server.DefaultConstraintImpl;
+import org.drools.factconstraints.server.DefaultFieldConstraintImpl;
 
-public class MatchesConstraint extends DefaultConstraintImpl {
+public class MatchesConstraint extends DefaultFieldConstraintImpl {
 
 	public static final String MATCHES_ARGUMENT = "matches";
 	private static final long serialVersionUID = 501L;

Modified: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/NotMatchesConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/NotMatchesConstraint.java	2010-05-26 14:50:52 UTC (rev 33093)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/NotMatchesConstraint.java	2010-05-26 15:20:26 UTC (rev 33094)
@@ -5,9 +5,9 @@
 import java.util.Map;
 
 import org.drools.factconstraints.client.ConstraintConfiguration;
-import org.drools.factconstraints.server.DefaultConstraintImpl;
+import org.drools.factconstraints.server.DefaultFieldConstraintImpl;
 
-public class NotMatchesConstraint extends DefaultConstraintImpl {
+public class NotMatchesConstraint extends DefaultFieldConstraintImpl {
 
 	public static final String NOT_MATCHES_ARGUMENT = "matches";
 	private static final long serialVersionUID = 501L;

Modified: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/NotNullConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/NotNullConstraint.java	2010-05-26 14:50:52 UTC (rev 33093)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/NotNullConstraint.java	2010-05-26 15:20:26 UTC (rev 33094)
@@ -6,13 +6,13 @@
 
 import org.drools.factconstraints.client.ConstraintConfiguration;
 import org.drools.factconstraints.client.ValidationResult;
-import org.drools.factconstraints.server.DefaultConstraintImpl;
+import org.drools.factconstraints.server.DefaultFieldConstraintImpl;
 
 /**
  * 
  * @author esteban.aliverti at gmail.com
  */
-public class NotNullConstraint extends DefaultConstraintImpl {
+public class NotNullConstraint extends DefaultFieldConstraintImpl {
 	private static final long serialVersionUID = 501L;
 	public static final String NAME = "NotNull";
 

Added: labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraints/server/predefined/InvalidFieldConstraintTest.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraints/server/predefined/InvalidFieldConstraintTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraints/server/predefined/InvalidFieldConstraintTest.java	2010-05-26 15:20:26 UTC (rev 33094)
@@ -0,0 +1,123 @@
+package org.drools.factconstraints.server.predefined;
+
+import java.util.Collection;
+
+import org.drools.builder.ResourceType;
+import org.drools.factconstraints.client.ConstraintConfiguration;
+import org.drools.factconstraints.client.config.SimpleConstraintConfigurationImpl;
+import org.drools.factconstraints.server.Constraint;
+import org.drools.io.ResourceFactory;
+import org.drools.verifier.Verifier;
+import org.drools.verifier.VerifierConfiguration;
+import org.drools.verifier.VerifierConfigurationImpl;
+import org.drools.verifier.VerifierError;
+import org.drools.verifier.builder.VerifierBuilder;
+import org.drools.verifier.builder.VerifierBuilderFactory;
+import org.drools.verifier.data.VerifierReport;
+import org.drools.verifier.report.components.Severity;
+import org.drools.verifier.report.components.VerifierMessageBase;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ * @author esteban.aliverti at gmail.com
+ */
+public class InvalidFieldConstraintTest {
+
+    private ConstraintConfiguration conf;
+
+    @Before
+    public void setup() {
+        conf = new SimpleConstraintConfigurationImpl();
+        conf.setFactType("Person");
+        conf.setFieldName("age");
+    }
+
+    @Test
+    public void testUsingVerifier() {
+
+        String ruleToVerify = "";
+        int fail = 0;
+
+        //FAIL
+        ruleToVerify += "package org.drools.factconstraint.test\n\n";
+        ruleToVerify += "import org.drools.factconstraint.model.*\n";
+        ruleToVerify += "rule \"rule1\"\n";
+        ruleToVerify += "   when\n";
+        ruleToVerify += "       Person(age == 20)\n";
+        ruleToVerify += "   then\n";
+        ruleToVerify += "       System.out.println(\"Rule fired\");\n";
+        ruleToVerify += "end\n\n";
+        fail++;
+
+        //OK
+        ruleToVerify += "rule \"rule2\"\n";
+        ruleToVerify += "   when\n";
+        ruleToVerify += "       Person(name == \"Peter\")\n";
+        ruleToVerify += "   then\n";
+        ruleToVerify += "       System.out.println(\"Rule fired\");\n";
+        ruleToVerify += "end\n\n";
+
+        //FAIL
+        ruleToVerify += "rule \"rule3\"\n";
+        ruleToVerify += "   when\n";
+        ruleToVerify += "       Person(name == \"Peter\")\n";
+        ruleToVerify += "       Person(age == 20)\n";
+        ruleToVerify += "   then\n";
+        ruleToVerify += "       System.out.println(\"Rule fired\");\n";
+        ruleToVerify += "end\n";
+        fail++;
+
+        //FAIL
+        ruleToVerify += "rule \"rule4\"\n";
+        ruleToVerify += "   when\n";
+        ruleToVerify += "       Number() from collect(Person(age == 20))\n";
+        ruleToVerify += "   then\n";
+        ruleToVerify += "       System.out.println(\"Rule fired\");\n";
+        ruleToVerify += "end\n";
+        fail++;
+
+
+        VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+        //VerifierConfiguration conf = new DefaultVerifierConfiguration();
+        VerifierConfiguration vconf = new VerifierConfigurationImpl();
+
+        Constraint cons = new InvalidFieldConstraint();
+        System.out.println("\n\n\n"+cons.getVerifierRule(conf)+"\n\n\n");
+        vconf.getVerifyingResources().put(ResourceFactory.newByteArrayResource(cons.getVerifierRule(conf).getBytes()), ResourceType.DRL);
+
+        Verifier verifier = vBuilder.newVerifier(vconf);
+
+        verifier.addResourcesToVerify(ResourceFactory.newByteArrayResource(ruleToVerify.getBytes()),
+                ResourceType.DRL);
+
+        if (verifier.hasErrors()) {
+            for (VerifierError error : verifier.getErrors()) {
+                System.out.println(error.getMessage());
+            }
+            throw new RuntimeException("Error building verifier");
+        }
+
+        Assert.assertFalse(verifier.hasErrors());
+
+        boolean noProblems = verifier.fireAnalysis();
+        Assert.assertTrue(noProblems);
+
+        VerifierReport result = verifier.getResult();
+
+        Collection<VerifierMessageBase> warnings = result.getBySeverity(Severity.ERROR);
+
+        int counter = 0;
+        for (VerifierMessageBase message : warnings) {
+            System.out.println(message);
+            counter++;
+        }
+
+        Assert.assertEquals(fail, counter);
+
+        verifier.dispose();
+    }
+}

Modified: labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraints/server/predefined/RangeConstraintTest.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraints/server/predefined/RangeConstraintTest.java	2010-05-26 14:50:52 UTC (rev 33093)
+++ labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraints/server/predefined/RangeConstraintTest.java	2010-05-26 15:20:26 UTC (rev 33094)
@@ -7,7 +7,6 @@
 import org.drools.factconstraints.client.ValidationResult;
 import org.drools.factconstraints.client.config.SimpleConstraintConfigurationImpl;
 import org.drools.factconstraints.server.Constraint;
-import org.drools.factconstraints.server.predefined.RangeConstraint;
 import org.drools.io.ResourceFactory;
 import org.drools.verifier.Verifier;
 import org.drools.verifier.VerifierConfiguration;
@@ -15,6 +14,8 @@
 import org.drools.verifier.VerifierError;
 import org.drools.verifier.builder.VerifierBuilder;
 import org.drools.verifier.builder.VerifierBuilderFactory;
+import org.drools.verifier.components.PatternComponent;
+import org.drools.verifier.components.RuleComponent;
 import org.drools.verifier.data.VerifierReport;
 import org.drools.verifier.report.components.Severity;
 import org.drools.verifier.report.components.VerifierMessageBase;
@@ -40,11 +41,11 @@
     }
 
     //@Test
-    public void testValidConstraint(){
+    public void testValidConstraint() {
 
         conf.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MIN, "-0.5");
         conf.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MAX, "100");
-        
+
         ValidationResult result = cons.validate(12, conf);
         Assert.assertTrue(result.isSuccess());
 
@@ -66,43 +67,43 @@
     }
 
     //@Test
-    public void testInvalidConstraint(){
+    public void testInvalidConstraint() {
 
         conf.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MIN, "-0.5");
         conf.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MAX, "100");
 
         ValidationResult result = cons.validate(new Object(), conf);
         Assert.assertFalse(result.isSuccess());
-        System.out.println("Message: "+result.getMessage());
+        System.out.println("Message: " + result.getMessage());
 
         result = cons.validate(null, conf);
         Assert.assertFalse(result.isSuccess());
-        System.out.println("Message: "+result.getMessage());
+        System.out.println("Message: " + result.getMessage());
 
         result = cons.validate("", conf);
         Assert.assertFalse(result.isSuccess());
-        System.out.println("Message: "+result.getMessage());
+        System.out.println("Message: " + result.getMessage());
 
         result = cons.validate("ABC", conf);
         Assert.assertFalse(result.isSuccess());
-        System.out.println("Message: "+result.getMessage());
+        System.out.println("Message: " + result.getMessage());
 
         result = cons.validate(new Long("-100"), conf);
         Assert.assertFalse(result.isSuccess());
-        System.out.println("Message: "+result.getMessage());
+        System.out.println("Message: " + result.getMessage());
 
         result = cons.validate(-0.5, conf);
         Assert.assertFalse(result.isSuccess());
-        System.out.println("Message: "+result.getMessage());
+        System.out.println("Message: " + result.getMessage());
 
         result = cons.validate(100, conf);
         Assert.assertFalse(result.isSuccess());
-        System.out.println("Message: "+result.getMessage());
+        System.out.println("Message: " + result.getMessage());
 
 
     }
 
-    @Test
+    //@Test
     public void testUsingVerifier() {
 
         //age constraint
@@ -217,8 +218,8 @@
         ruleToVerify += "   then\n";
         ruleToVerify += "       System.out.println(\"Rule fired\");\n";
         ruleToVerify += "end\n";
-        fail+=2;
-        
+        fail += 2;
+
         //FAIL both (creates 2 warnings) - 8,9
         ruleToVerify += "rule \"rule12\"\n";
         ruleToVerify += "   when\n";
@@ -226,7 +227,7 @@
         ruleToVerify += "   then\n";
         ruleToVerify += "       System.out.println(\"Rule fired\");\n";
         ruleToVerify += "end\n";
-        fail+=2;
+        fail += 2;
 
         VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
 
@@ -262,4 +263,107 @@
         verifier.dispose();
     }
 
+    @Test
+    public void testNestedPatternsUsingVerifier() {
+
+        System.out.println("\n\n\n\ntestNestedPatternsUsingVerifier\n");
+
+        //age constraint
+        conf.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MIN, "0");
+        conf.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MAX, "120");
+        System.out.println("Validation Rule:\n" + cons.getVerifierRule(conf) + "\n\n");
+
+        String ruleToVerify = "";
+        int fail = 0;
+
+        //OK
+        ruleToVerify += "package org.drools.factconstraint.test\n\n";
+        ruleToVerify += "import org.drools.factconstraint.model.*\n";
+//        ruleToVerify += "rule \"rule1\"\n";
+//        ruleToVerify += "   when\n";
+//        ruleToVerify += "       java.util.List() from collect(Person(age == 10))\n";
+//        ruleToVerify += "   then\n";
+//        ruleToVerify += "       System.out.println(\"Rule fired\");\n";
+//        ruleToVerify += "end\n\n";
+
+        //FAIL - 1
+        ruleToVerify += "rule \"rule2\"\n";
+        ruleToVerify += "   when\n";
+        ruleToVerify += "       java.util.List() from collect(Person(age == 10))\n";
+        ruleToVerify += "       java.util.List() from collect(Person(age == 130))\n";
+        ruleToVerify += "   then\n";
+        ruleToVerify += "       System.out.println(\"Rule fired\");\n";
+        ruleToVerify += "end\n\n";
+        fail++;
+
+        //FAIL - 2
+        ruleToVerify += "rule \"rule3\"\n";
+        ruleToVerify += "   when\n";
+        ruleToVerify += "       Person(age == 10)\n";
+        ruleToVerify += "       Person(age == 20)\n";
+        ruleToVerify += "       exists (Person (age == 130))\n";
+        ruleToVerify += "   then\n";
+        ruleToVerify += "       System.out.println(\"Rule fired\");\n";
+        ruleToVerify += "end\n\n";
+        fail++;
+
+        ruleToVerify += "rule \"rule4\"\n";
+        ruleToVerify += "   when\n";
+        ruleToVerify += "       Person(age == 10)\n";
+        ruleToVerify += "       exists (Person (age == 30) OR Person (age == 130))\n";
+        ruleToVerify += "   then\n";
+        ruleToVerify += "       System.out.println(\"Rule fired\");\n";
+        ruleToVerify += "end\n\n";
+        fail++;
+
+
+        VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+        VerifierConfiguration vconf = new VerifierConfigurationImpl();
+
+        vconf.getVerifyingResources().put(ResourceFactory.newByteArrayResource(cons.getVerifierRule(this.conf).getBytes()), ResourceType.DRL);
+
+        Verifier verifier = vBuilder.newVerifier(vconf);
+
+        verifier.addResourcesToVerify(ResourceFactory.newByteArrayResource(ruleToVerify.getBytes()),
+                ResourceType.DRL);
+
+        if (verifier.hasErrors()) {
+            for (VerifierError error : verifier.getErrors()) {
+                System.out.println(error.getMessage());
+            }
+            throw new RuntimeException("Error building verifier");
+        }
+
+        Assert.assertFalse(verifier.hasErrors());
+
+        boolean noProblems = verifier.fireAnalysis();
+        Assert.assertTrue(noProblems);
+
+        VerifierReport result = verifier.getResult();
+
+        Collection<VerifierMessageBase> errors = result.getBySeverity(Severity.ERROR);
+
+        System.out.println(errors);
+
+        Assert.assertEquals(fail, errors.size());
+
+        System.out.println("\nOrders:");
+        for (VerifierMessageBase message : errors) {
+            if (message.getFaulty() instanceof PatternComponent) {
+                int rootPatternOrderNumber = this.getRootPatternOrderNumber((PatternComponent) message.getFaulty());
+                System.out.println(((PatternComponent) message.getFaulty()).getPath()+". Order= "+rootPatternOrderNumber);
+            }
+        }
+
+        verifier.dispose();
+    }
+
+    private int getRootPatternOrderNumber(RuleComponent pattern){
+        if (pattern.getParentPatternComponent() == null){
+            return (pattern instanceof PatternComponent)?((PatternComponent)pattern).getPatternOrderNumber():pattern.getOrderNumber();
+        }else{
+            return getRootPatternOrderNumber(pattern.getParentPatternComponent());
+        }
+    }
 }



More information about the jboss-svn-commits mailing list