Author: bentmann
Date: Fri Aug  7 13:13:30 2009
New Revision: 801987

URL: http://svn.apache.org/viewvc?rev=801987&view=rev
Log:
o Extended validation

Modified:
    
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java

Modified: 
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java?rev=801987&r1=801986&r2=801987&view=diff
==============================================================================
--- 
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
 (original)
+++ 
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
 Fri Aug  7 13:13:30 2009
@@ -132,6 +132,8 @@
 
         validateStringNotEmpty( "version", problems, false, model.getVersion() 
);
 
+        boolean warnOnBadBoolean = request.getValidationLevel() < 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0;
+
         for ( Dependency d : model.getDependencies() )
         {
             validateId( "dependencies.dependency.artifactId", problems, 
d.getArtifactId() );
@@ -165,6 +167,12 @@
                 addViolation( problems, false,
                     "For dependency " + d + ": only dependency with system 
scope can specify systemPath." );
             }
+
+            if ( request.getValidationLevel() >= 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 )
+            {
+                validateBoolean( "dependencies.dependency.optional", problems, 
warnOnBadBoolean, d.getOptional(),
+                                 d.getManagementKey() );
+            }
         }
 
         DependencyManagement mgmt = model.getDependencyManagement();
@@ -201,6 +209,12 @@
                     addViolation( problems, false,
                         "For managed dependency " + d + ": only dependency 
with system scope can specify systemPath." );
                 }
+
+                if ( request.getValidationLevel() >= 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 )
+                {
+                    validateBoolean( 
"dependencyManagement.dependencies.dependency.optional", problems,
+                                     warnOnBadBoolean, d.getOptional(), 
d.getManagementKey() );
+                }
             }
         }
 
@@ -220,11 +234,17 @@
 
                     validateStringNotEmpty( "build.plugins.plugin.version", 
problems, warnOnMissingPluginVersion,
                                             p.getVersion(), p.getKey() );
+
+                    validateBoolean( "build.plugins.plugin.inherited", 
problems, warnOnBadBoolean, p.getInherited(),
+                                     p.getKey() );
+
+                    validateBoolean( "build.plugins.plugin.extensions", 
problems, warnOnBadBoolean, p.getExtensions(),
+                                     p.getKey() );
                 }
 
-                validateResources( problems, build.getResources(), 
"build.resources.resource" );
+                validateResources( problems, build.getResources(), 
"build.resources.resource", request );
 
-                validateResources( problems, build.getTestResources(), 
"build.testResources.testResource" );
+                validateResources( problems, build.getTestResources(), 
"build.testResources.testResource", request );
             }
 
             Reporting reporting = model.getReporting();
@@ -322,11 +342,16 @@
         }
     }
 
-    private void validateResources( ModelProblemCollector problems, 
List<Resource> resources, String prefix )
+    private void validateResources( ModelProblemCollector problems, 
List<Resource> resources, String prefix, ModelBuildingRequest request )
     {
+        boolean warnOnBadBoolean = request.getValidationLevel() < 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0;
+
         for ( Resource resource : resources )
         {
             validateStringNotEmpty( prefix + ".directory", problems, false, 
resource.getDirectory() );
+
+            validateBoolean( prefix + ".filtering", problems, 
warnOnBadBoolean, resource.getFiltering(),
+                             resource.getDirectory() );
         }
     }
 
@@ -388,11 +413,11 @@
 
         if ( sourceHint != null )
         {
-            addViolation( problems, false, "'" + fieldName + "' is missing for 
" + sourceHint );
+            addViolation( problems, warning, "'" + fieldName + "' is missing 
for " + sourceHint );
         }
         else
         {
-            addViolation( problems, false, "'" + fieldName + "' is missing." );
+            addViolation( problems, warning, "'" + fieldName + "' is missing." 
);
         }
 
         return false;
@@ -470,6 +495,31 @@
         return false;
     }
 
+    private boolean validateBoolean( String fieldName, ModelProblemCollector 
problems, boolean warning, String string,
+                                     String sourceHint )
+    {
+        if ( string == null || string.length() <= 0 )
+        {
+            return true;
+        }
+
+        if ( "true".equalsIgnoreCase( string ) || "false".equalsIgnoreCase( 
string ) )
+        {
+            return true;
+        }
+
+        if ( sourceHint != null )
+        {
+            addViolation( problems, warning, "'" + fieldName + "' must be 
'true' or 'false' for " + sourceHint );
+        }
+        else
+        {
+            addViolation( problems, warning, "'" + fieldName + "' must be 
'true' or 'false'." );
+        }
+
+        return false;
+    }
+
     private void addViolation( ModelProblemCollector problems, boolean 
warning, String message )
     {
         if ( warning )


Reply via email to