Author: jdcasey
Date: Fri May 23 14:52:24 2008
New Revision: 659680

URL: http://svn.apache.org/viewvc?rev=659680&view=rev
Log:
[MNG-2739] Adding validation logic to DefaultMavenTools and ProjectUtils, to 
make sure repositories have id and url before constructing an 
ArtifactRepository instance...this code is used ahead of normal model 
validation, so it needs to be included here. Also, introducing a new exception 
to handle the errors when these elements are missing.

Added:
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MissingRepositoryElementException.java
   (with props)
Modified:
    maven/components/trunk/maven-model/src/main/mdo/maven.mdo
    
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/PBEDerivativeReporterAspect.aj
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/DefaultMavenTools.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/MavenTools.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectUtils.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/DefaultProjectErrorReporter.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorReporter.java

Modified: maven/components/trunk/maven-model/src/main/mdo/maven.mdo
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-model/src/main/mdo/maven.mdo?rev=659680&r1=659679&r2=659680&view=diff
==============================================================================
--- maven/components/trunk/maven-model/src/main/mdo/maven.mdo (original)
+++ maven/components/trunk/maven-model/src/main/mdo/maven.mdo Fri May 23 
14:52:24 2008
@@ -2574,6 +2574,7 @@
         <field>
           <name>id</name>
           <version>4.0.0</version>
+          <required>true</required>
           <description>
             <![CDATA[
             A unique identifier for a repository. This is used to match the 
repository
@@ -2595,6 +2596,7 @@
         <field>
           <name>url</name>
           <version>4.0.0</version>
+          <required>true</required>
           <description>
             <![CDATA[
             The url of the repository, in the form 
<code>protocol://hostname/path</code>.

Modified: 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/PBEDerivativeReporterAspect.aj
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/PBEDerivativeReporterAspect.aj?rev=659680&r1=659679&r2=659680&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/PBEDerivativeReporterAspect.aj
 (original)
+++ 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/PBEDerivativeReporterAspect.aj
 Fri May 23 14:52:24 2008
@@ -6,12 +6,13 @@
 import org.apache.maven.project.artifact.InvalidDependencyVersionException;
 import org.apache.maven.project.InvalidProjectVersionException;
 import org.apache.maven.project.interpolation.ModelInterpolationException;
-import org.apache.maven.artifact.UnknownRepositoryLayoutException;
+import org.apache.maven.artifact.InvalidRepositoryException;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Repository;
 import org.apache.maven.model.DeploymentRepository;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.MavenTools;
+import org.apache.maven.DefaultMavenTools;
 import org.apache.maven.project.build.model.DefaultModelLineageBuilder;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.DefaultMavenProjectBuilder;
@@ -57,7 +58,8 @@
     //             <-- UnknownRepositoryLayoutException
     // <---------- ProjectBuildingException
     // 
=========================================================================
-    after( MavenProject project, File pomFile, DeploymentRepository repo ) 
throwing( UnknownRepositoryLayoutException cause ):
+
+    after( MavenProject project, File pomFile, DeploymentRepository repo ) 
throwing( InvalidRepositoryException cause ):
         mavenTools_buildDeploymentArtifactRepository( repo ) &&
         cflow( pbldr_processProjectLogic( project, pomFile ) )
         && within_DefaultMavenProjectBuilder()
@@ -83,7 +85,7 @@
     //             <------ UnknownRepositoryLayoutException
     // <---------- ProjectBuildingException
     // 
=========================================================================
-    after( MavenProject project, File pomFile, Repository repo ) throwing( 
UnknownRepositoryLayoutException cause ):
+    after( MavenProject project, File pomFile, Repository repo ) throwing( 
InvalidRepositoryException cause ):
         mavenTools_buildArtifactRepository( repo )
         && cflow( pbldr_processProjectLogic( project, pomFile ) )
     {
@@ -106,7 +108,7 @@
     //         <------ UnknownRepositoryLayoutException
     // <------ ProjectBuildingException
     // 
=========================================================================
-    after( Model model, File pomFile, Repository repo ) throwing( 
UnknownRepositoryLayoutException cause ):
+    after( Model model, File pomFile, Repository repo ) throwing( 
InvalidRepositoryException cause ):
         mavenTools_buildArtifactRepository( repo )
         && cflow( mlbldr_updateRepositorySet( model, pomFile ) )
     {

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/DefaultMavenTools.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/DefaultMavenTools.java?rev=659680&r1=659679&r2=659680&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/DefaultMavenTools.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/DefaultMavenTools.java
 Fri May 23 14:52:24 2008
@@ -19,13 +19,14 @@
  * under the License.
  */
 
-import org.apache.maven.artifact.UnknownRepositoryLayoutException;
+import org.apache.maven.artifact.InvalidRepositoryException;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
 import org.apache.maven.model.DeploymentRepository;
 import org.apache.maven.model.Repository;
 import org.apache.maven.model.RepositoryPolicy;
+import org.apache.maven.project.MissingRepositoryElementException;
 
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -43,7 +44,7 @@
     // 
----------------------------------------------------------------------------
 
     public List buildArtifactRepositories( List repositories )
-        throws UnknownRepositoryLayoutException
+        throws InvalidRepositoryException
     {
         List repos = new ArrayList();
 
@@ -62,7 +63,7 @@
     }
 
     public ArtifactRepository buildDeploymentArtifactRepository( 
DeploymentRepository repo )
-        throws UnknownRepositoryLayoutException
+        throws InvalidRepositoryException
     {
         if ( repo != null )
         {
@@ -79,13 +80,23 @@
     }
 
     public ArtifactRepository buildArtifactRepository( Repository repo )
-        throws UnknownRepositoryLayoutException
+        throws InvalidRepositoryException
     {
         if ( repo != null )
         {
             String id = repo.getId();
             String url = repo.getUrl();
 
+            if ( id == null || id.trim().length() < 1 )
+            {
+                throw new MissingRepositoryElementException( "Repository ID 
must not be empty (URL is: " + url + ")." );
+            }
+
+            if ( url == null || url.trim().length() < 1 )
+            {
+                throw new MissingRepositoryElementException( "Repository URL 
must not be empty (ID is: " + id + ").", id );
+            }
+
             ArtifactRepositoryPolicy snapshots = 
buildArtifactRepositoryPolicy( repo.getSnapshots() );
 
             ArtifactRepositoryPolicy releases = buildArtifactRepositoryPolicy( 
repo.getReleases() );

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/MavenTools.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/MavenTools.java?rev=659680&r1=659679&r2=659680&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/MavenTools.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/MavenTools.java
 Fri May 23 14:52:24 2008
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.artifact.UnknownRepositoryLayoutException;
+import org.apache.maven.artifact.InvalidRepositoryException;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.model.DeploymentRepository;
 import org.apache.maven.model.Repository;
@@ -38,11 +38,11 @@
     // 
----------------------------------------------------------------------------
 
     List buildArtifactRepositories( List repositories )
-        throws UnknownRepositoryLayoutException;
+        throws InvalidRepositoryException;
 
     ArtifactRepository buildDeploymentArtifactRepository( DeploymentRepository 
repo )
-        throws UnknownRepositoryLayoutException;
+        throws InvalidRepositoryException;
 
     ArtifactRepository buildArtifactRepository( Repository repo )
-        throws UnknownRepositoryLayoutException;
+        throws InvalidRepositoryException;
 }

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=659680&r1=659679&r2=659680&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 Fri May 23 14:52:24 2008
@@ -24,7 +24,6 @@
 import org.apache.maven.artifact.ArtifactStatus;
 import org.apache.maven.artifact.ArtifactUtils;
 import org.apache.maven.artifact.InvalidRepositoryException;
-import org.apache.maven.artifact.UnknownRepositoryLayoutException;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -619,7 +618,7 @@
                     normalized.add( item );
                     normalizationNeeded = true;
                 }
-                catch ( UnknownRepositoryLayoutException e )
+                catch ( InvalidRepositoryException e )
                 {
                     throw new ProjectBuildingException( projectId, "Error 
building artifact repository for id: " + repo.getId(), e );
                 }

Added: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MissingRepositoryElementException.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MissingRepositoryElementException.java?rev=659680&view=auto
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MissingRepositoryElementException.java
 (added)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MissingRepositoryElementException.java
 Fri May 23 14:52:24 2008
@@ -0,0 +1,20 @@
+package org.apache.maven.project;
+
+import org.apache.maven.artifact.InvalidRepositoryException;
+
+public class MissingRepositoryElementException
+    extends InvalidRepositoryException
+{
+
+    public MissingRepositoryElementException( String message,
+                                              String repositoryId )
+    {
+        super( message, repositoryId );
+    }
+
+    public MissingRepositoryElementException( String message )
+    {
+        super( message, "-unknown-" );
+    }
+
+}

Propchange: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MissingRepositoryElementException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MissingRepositoryElementException.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectUtils.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectUtils.java?rev=659680&r1=659679&r2=659680&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectUtils.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectUtils.java
 Fri May 23 14:52:24 2008
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.artifact.UnknownRepositoryLayoutException;
+import org.apache.maven.artifact.InvalidRepositoryException;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
@@ -41,7 +41,7 @@
     public static List buildArtifactRepositories( List repositories,
                                                   ArtifactRepositoryFactory 
artifactRepositoryFactory,
                                                   PlexusContainer container )
-        throws UnknownRepositoryLayoutException
+        throws InvalidRepositoryException
     {
 
         List repos = new ArrayList();
@@ -64,7 +64,7 @@
     public static ArtifactRepository buildDeploymentArtifactRepository( 
DeploymentRepository repo,
                                                                         
ArtifactRepositoryFactory artifactRepositoryFactory,
                                                                         
PlexusContainer container )
-        throws UnknownRepositoryLayoutException
+        throws InvalidRepositoryException
     {
         if ( repo != null )
         {
@@ -83,13 +83,23 @@
     public static ArtifactRepository buildArtifactRepository( Repository repo,
                                                               
ArtifactRepositoryFactory artifactRepositoryFactory,
                                                               PlexusContainer 
container )
-        throws UnknownRepositoryLayoutException
+        throws InvalidRepositoryException
     {
         if ( repo != null )
         {
             String id = repo.getId();
             String url = repo.getUrl();
 
+            if ( id == null || id.trim().length() < 1 )
+            {
+                throw new MissingRepositoryElementException( "Repository ID 
must not be empty (URL is: " + url + ")." );
+            }
+
+            if ( url == null || url.trim().length() < 1 )
+            {
+                throw new MissingRepositoryElementException( "Repository URL 
must not be empty (ID is: " + id + ").", id );
+            }
+
             ArtifactRepositoryPolicy snapshots = 
buildArtifactRepositoryPolicy( repo.getSnapshots() );
             ArtifactRepositoryPolicy releases = buildArtifactRepositoryPolicy( 
repo.getReleases() );
 

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/DefaultProjectErrorReporter.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/DefaultProjectErrorReporter.java?rev=659680&r1=659679&r2=659680&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/DefaultProjectErrorReporter.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/DefaultProjectErrorReporter.java
 Fri May 23 14:52:24 2008
@@ -1,7 +1,6 @@
 package org.apache.maven.project.error;
 
 import org.apache.maven.artifact.InvalidRepositoryException;
-import org.apache.maven.artifact.UnknownRepositoryLayoutException;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.AbstractArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
@@ -343,7 +342,7 @@
     public void reportErrorCreatingArtifactRepository( String projectId,
                                                        File pomFile,
                                                        Repository repo,
-                                                       
UnknownRepositoryLayoutException cause )
+                                                       
InvalidRepositoryException cause )
     {
         StringWriter writer = new StringWriter();
 
@@ -352,7 +351,7 @@
         writer.write( NEWLINE );
         writer.write( NEWLINE );
         writer.write( "Repository-Id: " );
-        writer.write( ((InvalidRepositoryException)cause).getRepositoryId() );
+        writer.write( cause.getRepositoryId() );
         writer.write( NEWLINE );
         writer.write( NEWLINE );
         writer.write( "Reason: " );
@@ -369,7 +368,7 @@
     public void reportErrorCreatingDeploymentArtifactRepository( MavenProject 
project,
                                                                  File pomFile,
                                                                  
DeploymentRepository repo,
-                                                                 
UnknownRepositoryLayoutException cause )
+                                                                 
InvalidRepositoryException cause )
     {
         StringWriter writer = new StringWriter();
 
@@ -378,7 +377,7 @@
         writer.write( NEWLINE );
         writer.write( NEWLINE );
         writer.write( "Repository-Id: " );
-        writer.write( ((InvalidRepositoryException)cause).getRepositoryId() );
+        writer.write( cause.getRepositoryId() );
         writer.write( NEWLINE );
         writer.write( NEWLINE );
         writer.write( "Reason: " );

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorReporter.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorReporter.java?rev=659680&r1=659679&r2=659680&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorReporter.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorReporter.java
 Fri May 23 14:52:24 2008
@@ -1,7 +1,6 @@
 package org.apache.maven.project.error;
 
 import org.apache.maven.artifact.InvalidRepositoryException;
-import org.apache.maven.artifact.UnknownRepositoryLayoutException;
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.model.DeploymentRepository;
@@ -158,7 +157,7 @@
     void reportErrorCreatingDeploymentArtifactRepository( MavenProject project,
                                                           File pomFile,
                                                           DeploymentRepository 
repo,
-                                                          
UnknownRepositoryLayoutException cause );
+                                                          
InvalidRepositoryException cause );
 
     /**
      * <b>Call Stack:</b>
@@ -179,7 +178,7 @@
     void reportErrorCreatingArtifactRepository( String projectId,
                                                 File pomFile,
                                                 Repository repo,
-                                                
UnknownRepositoryLayoutException cause );
+                                                InvalidRepositoryException 
cause );
 
     /**
      * <b>Call Stack:</b>


Reply via email to