Copied: 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ObjEntityValidator.java
 (from r912580, 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/ObjEntityValidator.java)
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ObjEntityValidator.java?p2=cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ObjEntityValidator.java&p1=cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/ObjEntityValidator.java&r1=912580&r2=912581&rev=912581&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/ObjEntityValidator.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ObjEntityValidator.java
 Mon Feb 22 14:30:51 2010
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.project2.validate;
+package org.apache.cayenne.project2.validation;
 
 import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.map.DataMap;
@@ -26,23 +26,25 @@
 
 class ObjEntityValidator {
 
-    void validate(Object object, ConfigurationValidator validator) {
+    void validate(Object object, ValidationVisitor validationVisitor) {
         ObjEntity ent = (ObjEntity) object;
 
-        validateName(ent, object, validator);
-        validateClassName(ent, object, validator);
-        validateSuperClassName(ent, object, validator);
+        validateName(ent, object, validationVisitor);
+        validateClassName(ent, object, validationVisitor);
+        validateSuperClassName(ent, object, validationVisitor);
 
         // validate DbEntity presence
         if (ent.getDbEntity() == null && !ent.isAbstract()) {
-            validator.registerWarning("ObjEntity has no DbEntity mapping.", 
object);
+            validationVisitor.registerWarning(
+                    "ObjEntity has no DbEntity mapping.",
+                    object);
         }
     }
 
     void validateClassName(
             ObjEntity ent,
             Object object,
-            ConfigurationValidator validator) {
+            ValidationVisitor validationVisitor) {
         String className = ent.getClassName();
 
         // if mapped to default class, ignore...
@@ -54,17 +56,16 @@
         String invalidChars = helper.invalidCharsInJavaClassName(className);
 
         if (invalidChars != null) {
-            validator.registerWarning(
+            validationVisitor.registerWarning(
                     "ObjEntity Java class contains invalid characters: " + 
invalidChars,
                     object);
         }
         else if (helper.invalidDataObjectClass(className)) {
-            validator.registerWarning(
-                    "ObjEntity Java class is invalid: " + className,
-                    object);
+            validationVisitor.registerWarning("ObjEntity Java class is 
invalid: "
+                    + className, object);
         }
         else if (className.indexOf('.') < 0) {
-            validator.registerWarning(
+            validationVisitor.registerWarning(
                     "Placing Java class in default package is discouraged: " + 
className,
                     object);
         }
@@ -73,7 +74,7 @@
     void validateSuperClassName(
             ObjEntity ent,
             Object object,
-            ConfigurationValidator validator) {
+            ValidationVisitor validationVisitor) {
         String superClassName = ent.getSuperClassName();
 
         if (Util.isEmptyString(superClassName)) {
@@ -84,13 +85,13 @@
         String invalidChars = 
helper.invalidCharsInJavaClassName(superClassName);
 
         if (invalidChars != null) {
-            validator.registerWarning(
+            validationVisitor.registerWarning(
                     "ObjEntity Java superclass contains invalid characters: "
                             + invalidChars,
                     object);
         }
         else if (helper.invalidDataObjectClass(superClassName)) {
-            validator.registerWarning("ObjEntity Java superclass is invalid: "
+            validationVisitor.registerWarning("ObjEntity Java superclass is 
invalid: "
                     + superClassName, object);
         }
 
@@ -100,15 +101,12 @@
         }
     }
 
-    void validateName(
-            ObjEntity entity,
-            Object object,
-            ConfigurationValidator validator) {
+    void validateName(ObjEntity entity, Object object, ValidationVisitor 
validationVisitor) {
         String name = entity.getName();
 
         // Must have name
         if (Util.isEmptyString(name)) {
-            validator.registerError("Unnamed ObjEntity.", object);
+            validationVisitor.registerError("Unnamed ObjEntity.", object);
             return;
         }
 
@@ -124,14 +122,15 @@
             }
 
             if (name.equals(otherEnt.getName())) {
-                validator
-                        .registerError("Duplicate ObjEntity name: " + name + 
".", object);
+                validationVisitor.registerError(
+                        "Duplicate ObjEntity name: " + name + ".",
+                        object);
                 break;
             }
         }
 
         // check for dupliucates in other DataMaps
-        DataChannelDescriptor domain = (DataChannelDescriptor) validator
+        DataChannelDescriptor domain = (DataChannelDescriptor) 
validationVisitor
                 .getProject()
                 .getRootNode();
         if (domain != null) {
@@ -145,7 +144,7 @@
 
                     if (!Util.nullSafeEquals(conflictingEntity.getClassName(), 
entity
                             .getClassName())) {
-                        validator.registerWarning(
+                        validationVisitor.registerWarning(
                                 "Duplicate ObjEntity name in another DataMap: "
                                         + name
                                         + ".",

Copied: 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ObjRelationshipValidator.java
 (from r912580, 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/ObjRelationshipValidator.java)
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ObjRelationshipValidator.java?p2=cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ObjRelationshipValidator.java&p1=cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/ObjRelationshipValidator.java&r1=912580&r2=912581&rev=912581&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/ObjRelationshipValidator.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ObjRelationshipValidator.java
 Mon Feb 22 14:30:51 2010
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.project2.validate;
+package org.apache.cayenne.project2.validation;
 
 import java.util.Iterator;
 import java.util.List;
@@ -32,15 +32,15 @@
 
 class ObjRelationshipValidator {
 
-    void validate(Object object, ConfigurationValidator validator) {
+    void validate(Object object, ValidationVisitor validationVisitor) {
         ObjRelationship rel = (ObjRelationship) object;
 
         if (Util.isEmptyString(rel.getName())) {
-            validator.registerError("Unnamed ObjRelationship.", object);
+            validationVisitor.registerError("Unnamed ObjRelationship.", 
object);
         }
         // check if there are attributes having the same name
         else if (rel.getSourceEntity().getAttribute(rel.getName()) != null) {
-            validator.registerWarning("ObjRelationship "
+            validationVisitor.registerWarning("ObjRelationship "
                     + objRelationshipIdentifier(rel)
                     + " has the same name as one of ObjAttributes", object);
         }
@@ -49,20 +49,20 @@
             String invalidChars = 
helper.invalidCharsInObjPathComponent(rel.getName());
 
             if (invalidChars != null) {
-                validator.registerWarning("ObjRelationship "
+                validationVisitor.registerWarning("ObjRelationship "
                         + objRelationshipIdentifier(rel)
                         + " name contains invalid characters: "
                         + invalidChars, object);
             }
             else if (helper.invalidDataObjectProperty(rel.getName())) {
-                validator.registerWarning("ObjRelationship "
+                validationVisitor.registerWarning("ObjRelationship "
                         + objRelationshipIdentifier(rel)
                         + " name is invalid.", object);
             }
         }
 
         if (rel.getTargetEntity() == null) {
-            validator.registerWarning("ObjRelationship "
+            validationVisitor.registerWarning("ObjRelationship "
                     + objRelationshipIdentifier(rel)
                     + " has no target entity.", object);
         }
@@ -70,7 +70,7 @@
             // check for missing DbRelationship mappings
             List<DbRelationship> dbRels = rel.getDbRelationships();
             if (dbRels.size() == 0) {
-                validator.registerWarning("ObjRelationship "
+                validationVisitor.registerWarning("ObjRelationship "
                         + objRelationshipIdentifier(rel)
                         + " has no DbRelationship mapping.", object);
             }
@@ -81,7 +81,7 @@
 
                 if ((dbRels.get(0)).getSourceEntity() != expectedSrc
                         || (dbRels.get(dbRels.size() - 1)).getTargetEntity() 
!= expectedTarget) {
-                    validator.registerWarning("ObjRelationship "
+                    validationVisitor.registerWarning("ObjRelationship "
                             + objRelationshipIdentifier(rel)
                             + " has incomplete DbRelationship mapping.", 
object);
                 }
@@ -109,7 +109,7 @@
                 }
 
                 if (check) {
-                    validator
+                    validationVisitor
                             .registerWarning(
                                     "ObjRelationship "
                                             + objRelationshipIdentifier(rel)

Copied: 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ProcedureParameterValidator.java
 (from r912580, 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/ProcedureParameterValidator.java)
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ProcedureParameterValidator.java?p2=cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ProcedureParameterValidator.java&p1=cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/ProcedureParameterValidator.java&r1=912580&r2=912581&rev=912581&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/ProcedureParameterValidator.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ProcedureParameterValidator.java
 Mon Feb 22 14:30:51 2010
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.project2.validate;
+package org.apache.cayenne.project2.validation;
 
 import org.apache.cayenne.dba.TypesMapping;
 import org.apache.cayenne.map.ProcedureParameter;
@@ -24,32 +24,34 @@
 
 class ProcedureParameterValidator {
 
-    void validate(Object object, ConfigurationValidator validator) {
+    void validate(Object object, ValidationVisitor validationVisitor) {
 
         ProcedureParameter parameter = (ProcedureParameter) object;
 
         // Must have name
         if (Util.isEmptyString(parameter.getName())) {
-            validator.registerError("Unnamed ProcedureParameter.", object);
+            validationVisitor.registerError("Unnamed ProcedureParameter.", 
object);
         }
 
         // all attributes must have type
         if (parameter.getType() == TypesMapping.NOT_DEFINED) {
-            validator.registerWarning("ProcedureParameter has no type.", 
object);
+            validationVisitor.registerWarning("ProcedureParameter has no 
type.", object);
         }
 
         // VARCHAR and CHAR attributes must have max length
         if (parameter.getMaxLength() < 0
                 && (parameter.getType() == java.sql.Types.VARCHAR || 
parameter.getType() == java.sql.Types.CHAR)) {
 
-            validator.registerWarning(
+            validationVisitor.registerWarning(
                     "Character procedure parameter doesn't have max length.",
                     object);
         }
 
         // all attributes must have type
         if (parameter.getDirection() <= 0) {
-            validator.registerWarning("ProcedureParameter has no direction.", 
object);
+            validationVisitor.registerWarning(
+                    "ProcedureParameter has no direction.",
+                    object);
         }
     }
 }

Copied: 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ProcedureQueryValidator.java
 (from r912580, 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/ProcedureQueryValidator.java)
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ProcedureQueryValidator.java?p2=cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ProcedureQueryValidator.java&p1=cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/ProcedureQueryValidator.java&r1=912580&r2=912581&rev=912581&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/ProcedureQueryValidator.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ProcedureQueryValidator.java
 Mon Feb 22 14:30:51 2010
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.project2.validate;
+package org.apache.cayenne.project2.validation;
 
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.Procedure;
@@ -26,20 +26,20 @@
 
 class ProcedureQueryValidator {
 
-    void validate(Object object, ConfigurationValidator validator) {
+    void validate(Object object, ValidationVisitor validationVisitor) {
         ProcedureQuery query = (ProcedureQuery) object;
 
-        validateName(query, validator);
-        validateRoot(query, validator);
+        validateName(query, validationVisitor);
+        validateRoot(query, validationVisitor);
     }
 
-    void validateRoot(ProcedureQuery query, ConfigurationValidator validator) {
+    void validateRoot(ProcedureQuery query, ValidationVisitor 
validationVisitor) {
 
         DataMap map = query.getDataMap();
         Object root = query.getRoot();
 
         if (root == null && map != null) {
-            validator.registerWarning("Query has no root", query);
+            validationVisitor.registerWarning("Query has no root", query);
         }
 
         // procedure query only supports procedure root
@@ -48,7 +48,7 @@
 
             // procedure may have been deleted...
             if (map != null && map.getProcedure(procedure.getName()) != 
procedure) {
-                validator.registerWarning("Invalid Procedure Root - "
+                validationVisitor.registerWarning("Invalid Procedure Root - "
                         + procedure.getName(), query);
             }
 
@@ -57,17 +57,19 @@
 
         if (root instanceof String) {
             if (map != null && map.getProcedure(root.toString()) == null) {
-                validator.registerWarning("Invalid Procedure Root - " + root, 
query);
+                validationVisitor.registerWarning(
+                        "Invalid Procedure Root - " + root,
+                        query);
             }
         }
     }
 
-    void validateName(ProcedureQuery query, ConfigurationValidator validator) {
+    void validateName(ProcedureQuery query, ValidationVisitor 
validationVisitor) {
         String name = query.getName();
 
         // Must have name
         if (Util.isEmptyString(name)) {
-            validator.registerError("Unnamed Query.", query);
+            validationVisitor.registerError("Unnamed Query.", query);
             return;
         }
 
@@ -83,7 +85,9 @@
             }
 
             if (name.equals(otherQuery.getName())) {
-                validator.registerError("Duplicate Query name: " + name + ".", 
query);
+                validationVisitor.registerError(
+                        "Duplicate Query name: " + name + ".",
+                        query);
                 break;
             }
         }

Copied: 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ProcedureValidator.java
 (from r912580, 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/ProcedureValidator.java)
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ProcedureValidator.java?p2=cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ProcedureValidator.java&p1=cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/ProcedureValidator.java&r1=912580&r2=912581&rev=912581&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/ProcedureValidator.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ProcedureValidator.java
 Mon Feb 22 14:30:51 2010
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.project2.validate;
+package org.apache.cayenne.project2.validation;
 
 import java.util.List;
 
@@ -27,28 +27,28 @@
 
 class ProcedureValidator {
 
-    void validate(Object object, ConfigurationValidator validator) {
+    void validate(Object object, ValidationVisitor validationVisitor) {
         Procedure procedure = (Procedure) object;
 
-        validateName(procedure, validator);
+        validateName(procedure, validationVisitor);
 
         // check that return value is present
         if (procedure.isReturningValue()) {
             List<ProcedureParameter> parameters = 
procedure.getCallParameters();
             if (parameters.size() == 0) {
-                validator.registerWarning(
+                validationVisitor.registerWarning(
                         "Procedure returns a value, but has no parameters.",
                         object);
             }
         }
     }
 
-    void validateName(Procedure procedure, ConfigurationValidator validator) {
+    void validateName(Procedure procedure, ValidationVisitor 
validationVisitor) {
         String name = procedure.getName();
 
         // Must have name
         if (Util.isEmptyString(name)) {
-            validator.registerError("Unnamed Procedure.", procedure);
+            validationVisitor.registerError("Unnamed Procedure.", procedure);
             return;
         }
 
@@ -64,7 +64,7 @@
             }
 
             if (name.equals(otherProcedure.getName())) {
-                validator.registerError(
+                validationVisitor.registerError(
                         "Duplicate Procedure name: " + name + ".",
                         procedure);
                 break;

Copied: 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ProjectValidator.java
 (from r912580, 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/Validator.java)
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ProjectValidator.java?p2=cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ProjectValidator.java&p1=cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/Validator.java&r1=912580&r2=912581&rev=912581&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/Validator.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ProjectValidator.java
 Mon Feb 22 14:30:51 2010
@@ -16,12 +16,12 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.project2.validate;
+package org.apache.cayenne.project2.validation;
 
 import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.project2.Project;
 
-public interface Validator {
+public interface ProjectValidator {
 
-    public ConfigurationValidator validate(ConfigurationNode node, Project 
project);
+    public ValidationResults validate(ConfigurationNode node, Project project);
 }

Copied: 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/SQLTemplateValidator.java
 (from r912580, 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/SQLTemplateValidator.java)
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/SQLTemplateValidator.java?p2=cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/SQLTemplateValidator.java&p1=cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/SQLTemplateValidator.java&r1=912580&r2=912581&rev=912581&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/SQLTemplateValidator.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/SQLTemplateValidator.java
 Mon Feb 22 14:30:51 2010
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.project2.validate;
+package org.apache.cayenne.project2.validation;
 
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.query.Query;
@@ -25,15 +25,15 @@
 
 class SQLTemplateValidator {
 
-    void validate(Object object, ConfigurationValidator validator) {
+    void validate(Object object, ValidationVisitor validationVisitor) {
         SQLTemplate query = (SQLTemplate) object;
 
-        validateName(query, validator);
-        validateRoot(query, validator);
-        validateDefaultSQL(query, validator);
+        validateName(query, validationVisitor);
+        validateRoot(query, validationVisitor);
+        validateDefaultSQL(query, validationVisitor);
     }
 
-    void validateDefaultSQL(SQLTemplate query, ConfigurationValidator 
validator) {
+    void validateDefaultSQL(SQLTemplate query, ValidationVisitor 
validationVisitor) {
 
         if (Util.isEmptyString(query.getDefaultTemplate())) {
             // see if there is at least one adapter-specific template...
@@ -44,23 +44,23 @@
                 }
             }
 
-            validator.registerWarning("Query has no default SQL template", 
query);
+            validationVisitor.registerWarning("Query has no default SQL 
template", query);
         }
     }
 
-    void validateRoot(SQLTemplate query, ConfigurationValidator validator) {
+    void validateRoot(SQLTemplate query, ValidationVisitor validationVisitor) {
         DataMap map = query.getDataMap();
         if (query.getRoot() == null && map != null) {
-            validator.registerWarning("Query has no root", query);
+            validationVisitor.registerWarning("Query has no root", query);
         }
     }
 
-    void validateName(SQLTemplate query, ConfigurationValidator validator) {
+    void validateName(SQLTemplate query, ValidationVisitor validationVisitor) {
         String name = query.getName();
 
         // Must have name
         if (Util.isEmptyString(name)) {
-            validator.registerError("Unnamed Query.", query);
+            validationVisitor.registerError("Unnamed Query.", query);
             return;
         }
 
@@ -76,7 +76,9 @@
             }
 
             if (name.equals(otherQuery.getName())) {
-                validator.registerError("Duplicate Query name: " + name + ".", 
query);
+                validationVisitor.registerError(
+                        "Duplicate Query name: " + name + ".",
+                        query);
                 break;
             }
         }

Copied: 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/SelectQueryValidator.java
 (from r912580, 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/SelectQueryValidator.java)
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/SelectQueryValidator.java?p2=cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/SelectQueryValidator.java&p1=cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/SelectQueryValidator.java&r1=912580&r2=912581&rev=912581&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/SelectQueryValidator.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/SelectQueryValidator.java
 Mon Feb 22 14:30:51 2010
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.project2.validate;
+package org.apache.cayenne.project2.validation;
 
 import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.map.DataMap;
@@ -29,54 +29,51 @@
 
 class SelectQueryValidator {
 
-    void validate(Object object, ConfigurationValidator validator) {
+    void validate(Object object, ValidationVisitor validationVisitor) {
         SelectQuery query = (SelectQuery) object;
 
-        validateName(query, validator);
+        validateName(query, validationVisitor);
 
         // Resolve root to Entity for further validation
-        Entity root = validateRoot(query, validator);
+        Entity root = validateRoot(query, validationVisitor);
 
         // validate path-based parts
         if (root != null) {
-            validateQualifier(root, query.getQualifier(), validator);
+            validateQualifier(root, query.getQualifier(), validationVisitor);
 
             for (final Ordering ordering : query.getOrderings()) {
-                validateOrdering(root, ordering, validator);
+                validateOrdering(root, ordering, validationVisitor);
             }
 
             if (query.getPrefetchTree() != null) {
                 for (final PrefetchTreeNode prefetchTreeNode : query
                         .getPrefetchTree()
                         .nonPhantomNodes()) {
-                    validatePrefetch(root, prefetchTreeNode.getPath(), 
validator);
+                    validatePrefetch(root, prefetchTreeNode.getPath(), 
validationVisitor);
                 }
             }
         }
     }
 
-    void validatePrefetch(
-            Entity root,
-            String path,
-            ConfigurationValidator validator) {
+    void validatePrefetch(Entity root, String path, ValidationVisitor 
validationVisitor) {
     }
 
     void validateOrdering(
             Entity root,
             Ordering ordering,
-            ConfigurationValidator validator) {
+            ValidationVisitor validationVisitor) {
     }
 
     void validateQualifier(
             Entity root,
             Expression qualifier,
-            ConfigurationValidator validator) {
+            ValidationVisitor validationVisitor) {
     }
 
-    Entity validateRoot(SelectQuery query, ConfigurationValidator validator) {
+    Entity validateRoot(SelectQuery query, ValidationVisitor 
validationVisitor) {
         DataMap map = query.getDataMap();
         if (query.getRoot() == null && map != null) {
-            validator.registerWarning("Query has no root", query);
+            validationVisitor.registerWarning("Query has no root", query);
             return null;
         }
 
@@ -112,12 +109,12 @@
         return null;
     }
 
-    void validateName(SelectQuery query, ConfigurationValidator validator) {
+    void validateName(SelectQuery query, ValidationVisitor validationVisitor) {
         String name = query.getName();
 
         // Must have name
         if (Util.isEmptyString(name)) {
-            validator.registerError("Unnamed SelectQuery.", query);
+            validationVisitor.registerError("Unnamed SelectQuery.", query);
             return;
         }
 
@@ -134,7 +131,9 @@
             }
 
             if (name.equals(otherQuery.getName())) {
-                validator.registerError("Duplicate Query name: " + name + ".", 
query);
+                validationVisitor.registerError(
+                        "Duplicate Query name: " + name + ".",
+                        query);
                 break;
             }
         }

Copied: 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ValidationInfo.java
 (from r912580, 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/ValidationInfo.java)
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ValidationInfo.java?p2=cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ValidationInfo.java&p1=cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/ValidationInfo.java&r1=912580&r2=912581&rev=912581&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/ValidationInfo.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ValidationInfo.java
 Mon Feb 22 14:30:51 2010
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.project2.validate;
+package org.apache.cayenne.project2.validation;
 
 /**
  * ValidationInfo encapsulates information about a single node validation on 
the project
@@ -44,7 +44,7 @@
     /**
      * Returns the object identifing a location described by this 
ValidationInfo.
      */
-    public Object getValidatedObject() {
+    public Object getObject() {
         return object;
     }
 

Copied: 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ValidationResults.java
 (from r912580, 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/ConfigurationValidator.java)
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ValidationResults.java?p2=cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ValidationResults.java&p1=cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/ConfigurationValidator.java&r1=912580&r2=912581&rev=912581&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validate/ConfigurationValidator.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/validation/ValidationResults.java
 Mon Feb 22 14:30:51 2010
@@ -16,12 +16,13 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.project2.validate;
+package org.apache.cayenne.project2.validation;
 
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.configuration.ConfigurationNodeVisitor;
 import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.configuration.DataNodeDescriptor;
@@ -43,17 +44,18 @@
 import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.query.SelectQuery;
 
-public class ConfigurationValidator implements 
ConfigurationNodeVisitor<List<ValidationInfo>> {
+public class ValidationResults {
 
-    private List<ValidationInfo> validationResults = new 
ArrayList<ValidationInfo>();
-    
+    private List<ValidationInfo> validationResults;
     private int maxSeverity;
-    private Project project;
-    DefaultValidator defaultValidator;
 
-    ConfigurationValidator(Project project, DefaultValidator defaultValidator) 
{
-        this.project = project;
-        this.defaultValidator = defaultValidator;
+    public ValidationResults(ConfigurationNode node, Project project,
+            DefaultProjectValidator defaultProjectValidator) {
+        ValidationVisitor vis = new ValidationVisitor(
+                defaultProjectValidator,
+                project);
+        validationResults = node.acceptVisitor(vis);
+        this.maxSeverity = vis.getMaxSeverity();
     }
 
     public int getMaxSeverity() {
@@ -63,14 +65,33 @@
     public List<ValidationInfo> getValidationResults() {
         return validationResults;
     }
-    
+}
+
+class ValidationVisitor implements 
ConfigurationNodeVisitor<List<ValidationInfo>> {
+
+    private List<ValidationInfo> validationResults = new 
ArrayList<ValidationInfo>();
+    private int maxSeverity;
+
+    private DefaultProjectValidator defaultProjectValidator;
+    private Project project;
+
+    int getMaxSeverity() {
+        return maxSeverity;
+    }
+
     Project getProject() {
         return project;
     }
 
+    ValidationVisitor(DefaultProjectValidator defaultProjectValidator,
+            Project project) {
+        this.defaultProjectValidator = defaultProjectValidator;
+        this.project = project;
+    }
+
     public List<ValidationInfo> visitDataChannelDescriptor(
             DataChannelDescriptor channelDescriptor) {
-        defaultValidator.getDataChannelValidator().validate(
+        defaultProjectValidator.getDataChannelValidator().validate(
                 channelDescriptor,
                 this);
         Iterator<DataNodeDescriptor> it = channelDescriptor
@@ -90,7 +111,7 @@
     }
 
     public List<ValidationInfo> visitDataMap(DataMap dataMap) {
-        defaultValidator.getMapValidator().validate(dataMap, this);
+        defaultProjectValidator.getMapValidator().validate(dataMap, this);
         Iterator<Embeddable> itEmb = dataMap.getEmbeddables().iterator();
         while (itEmb.hasNext()) {
             Embeddable emb = itEmb.next();
@@ -125,17 +146,17 @@
     }
 
     public List<ValidationInfo> visitDataNodeDescriptor(DataNodeDescriptor 
nodeDescriptor) {
-        defaultValidator.getNodeValidator().validate(nodeDescriptor, this);
+        defaultProjectValidator.getNodeValidator().validate(nodeDescriptor, 
this);
         return validationResults;
     }
 
     public List<ValidationInfo> visitDbAttribute(DbAttribute attribute) {
-        defaultValidator.getDbAttrValidator().validate(attribute, this);
+        defaultProjectValidator.getDbAttrValidator().validate(attribute, this);
         return validationResults;
     }
 
     public List<ValidationInfo> visitDbEntity(DbEntity entity) {
-        defaultValidator.getDbEntityValidator().validate(entity, this);
+        defaultProjectValidator.getDbEntityValidator().validate(entity, this);
 
         Iterator<DbAttribute> itAttr = entity.getAttributes().iterator();
         while (itAttr.hasNext()) {
@@ -152,12 +173,12 @@
     }
 
     public List<ValidationInfo> visitDbRelationship(DbRelationship 
relationship) {
-        defaultValidator.getDbRelValidator().validate(relationship, this);
+        defaultProjectValidator.getDbRelValidator().validate(relationship, 
this);
         return validationResults;
     }
 
     public List<ValidationInfo> visitEmbeddable(Embeddable embeddable) {
-        defaultValidator.getEmbeddableValidator().validate(embeddable, this);
+        defaultProjectValidator.getEmbeddableValidator().validate(embeddable, 
this);
         Iterator<EmbeddableAttribute> it = 
embeddable.getAttributes().iterator();
         while (it.hasNext()) {
             EmbeddableAttribute attr = it.next();
@@ -167,19 +188,19 @@
     }
 
     public List<ValidationInfo> visitEmbeddableAttribute(EmbeddableAttribute 
attribute) {
-        defaultValidator.getEmbeddableAttributeValidator().validate(
+        defaultProjectValidator.getEmbeddableAttributeValidator().validate(
                 attribute,
                 this);
         return validationResults;
     }
 
     public List<ValidationInfo> visitObjAttribute(ObjAttribute attribute) {
-        defaultValidator.getObjAttrValidator().validate(attribute, this);
+        defaultProjectValidator.getObjAttrValidator().validate(attribute, 
this);
         return validationResults;
     }
 
     public List<ValidationInfo> visitObjEntity(ObjEntity entity) {
-        defaultValidator.getObjEntityValidator().validate(entity, this);
+        defaultProjectValidator.getObjEntityValidator().validate(entity, this);
 
         Iterator<ObjAttribute> itAttr = entity.getAttributes().iterator();
         while (itAttr.hasNext()) {
@@ -196,12 +217,12 @@
     }
 
     public List<ValidationInfo> visitObjRelationship(ObjRelationship 
relationship) {
-        defaultValidator.getObjRelValidator().validate(relationship, this);
+        defaultProjectValidator.getObjRelValidator().validate(relationship, 
this);
         return validationResults;
     }
 
     public List<ValidationInfo> visitProcedure(Procedure procedure) {
-        defaultValidator.getProcedureValidator().validate(procedure, this);
+        defaultProjectValidator.getProcedureValidator().validate(procedure, 
this);
         ProcedureParameter parameter = procedure.getResultParam();
         visitProcedureParameter(parameter);
         Iterator<ProcedureParameter> itPrOut = procedure
@@ -221,24 +242,24 @@
     }
 
     public List<ValidationInfo> visitProcedureParameter(ProcedureParameter 
parameter) {
-        defaultValidator.getProcedureParameterValidator().validate(
-                parameter,
-                this);
+        defaultProjectValidator
+                .getProcedureParameterValidator()
+                .validate(parameter, this);
         return validationResults;
     }
 
     public List<ValidationInfo> visitQuery(Query query) {
         if (query instanceof SelectQuery) {
-            defaultValidator.getSelectQueryValidator().validate(query, this);
+            defaultProjectValidator.getSelectQueryValidator().validate(query, 
this);
         }
         else if (query instanceof SQLTemplate) {
-            defaultValidator.getSqlTemplateValidator().validate(query, this);
+            defaultProjectValidator.getSqlTemplateValidator().validate(query, 
this);
         }
         else if (query instanceof ProcedureQuery) {
-            defaultValidator.getProcedureQueryValidator().validate(query, 
this);
+            
defaultProjectValidator.getProcedureQueryValidator().validate(query, this);
         }
         else if (query instanceof EJBQLQuery) {
-            defaultValidator.getEjbqlQueryValidator().validate(query, this);
+            defaultProjectValidator.getEjbqlQueryValidator().validate(query, 
this);
         }
         else {
             // ignore unknown nodes
@@ -267,9 +288,4 @@
     public void registerWarning(String message, Object object) {
         registerValidated(ValidationInfo.WARNING, message, object);
     }
-
-    /** Return collection of ValidationInfo objects from last validation. */
-    public List<ValidationInfo> validationResults() {
-        return validationResults;
-    }
 }
\ No newline at end of file


Reply via email to