You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2005/12/07 01:42:51 UTC

svn commit: r354635 - /maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java

Author: jdcasey
Date: Tue Dec  6 16:42:46 2005
New Revision: 354635

URL: http://svn.apache.org/viewcvs?rev=354635&view=rev
Log:
PR: MNG-1471
Submitted By: Edwin Punzalan
Reviewed By: John Casey

Applied patch, with small logic fix. This patch will validate that if a systemPath is specified for a dependency, it is absolute. It's possible to use expressions in this path, but by the time it's validated in this step, those expressions will have been resolved.

My change was to add the same validation to managed dependencies.


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

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java?rev=354635&r1=354634&r2=354635&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java Tue Dec  6 16:42:46 2005
@@ -29,6 +29,7 @@
 import org.apache.maven.model.Resource;
 import org.codehaus.plexus.util.StringUtils;
 
+import java.io.File;
 import java.util.Iterator;
 import java.util.List;
 
@@ -86,11 +87,24 @@
 
             validateStringNotEmpty( "dependencies.dependency.version", result, d.getVersion(), dependencySourceHint( d ) );
 
-            if ( Artifact.SCOPE_SYSTEM.equals( d.getScope() ) && StringUtils.isEmpty( d.getSystemPath() ) )
+            if ( Artifact.SCOPE_SYSTEM.equals( d.getScope() ) )
             {
-                result.addMessage( "For dependency " + d + ": system-scoped dependency must specify systemPath." );
+                String systemPath = d.getSystemPath();
+                
+                if ( StringUtils.isEmpty( systemPath ) )
+                {
+                    result.addMessage( "For dependency " + d + ": system-scoped dependency must specify systemPath." );
+                }
+                else
+                {
+                    if ( ! new File( systemPath ).isAbsolute() )
+                    {
+                        result.addMessage( "For dependency " + d + ": system-scoped dependency must " +
+                                "specify an absolute path systemPath." );
+                    }
+                }
             }
-            else if ( !Artifact.SCOPE_SYSTEM.equals( d.getScope() ) && StringUtils.isNotEmpty( d.getSystemPath() ) )
+            else if ( StringUtils.isNotEmpty( d.getSystemPath() ) )
             {
                 result.addMessage(
                     "For dependency " + d + ": only dependency with system scope can specify systemPath." );
@@ -110,12 +124,24 @@
                 validateSubElementStringNotEmpty( d, "dependencyManagement.dependencies.dependency.groupId", result,
                                                   d.getGroupId() );
 
-                if ( Artifact.SCOPE_SYSTEM.equals( d.getScope() ) && StringUtils.isEmpty( d.getSystemPath() ) )
+                if ( Artifact.SCOPE_SYSTEM.equals( d.getScope() ) )
                 {
-                    result.addMessage(
-                        "For managed dependency " + d + ": system-scoped dependency must specify systemPath." );
+                    String systemPath = d.getSystemPath();
+                    
+                    if ( StringUtils.isEmpty( systemPath ) )
+                    {
+                        result.addMessage( "For managed dependency " + d + ": system-scoped dependency must specify systemPath." );
+                    }
+                    else
+                    {
+                        if ( ! new File( systemPath ).isAbsolute() )
+                        {
+                            result.addMessage( "For managed dependency " + d + ": system-scoped dependency must " +
+                                    "specify an absolute path systemPath." );
+                        }
+                    }
                 }
-                else if ( !Artifact.SCOPE_SYSTEM.equals( d.getScope() ) && StringUtils.isNotEmpty( d.getSystemPath() ) )
+                else if ( StringUtils.isNotEmpty( d.getSystemPath() ) )
                 {
                     result.addMessage(
                         "For managed dependency " + d + ": only dependency with system scope can specify systemPath." );