Author: jdcasey
Date: Tue Jan 29 20:18:41 2008
New Revision: 616610

URL: http://svn.apache.org/viewvc?rev=616610&view=rev
Log:
Make sure that all calls to buildFromRepository use a normalized List of remote 
repositories (a list of ArtifactRepository instances, not of model Repository 
instances, for example)...this should be less of a concern when we can use 
Java5 generics (someday).

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

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=616610&r1=616609&r2=616610&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
 Tue Jan 29 20:18:41 2008
@@ -24,6 +24,7 @@
 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;
@@ -46,6 +47,7 @@
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.model.ReportPlugin;
+import org.apache.maven.model.Repository;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 import org.apache.maven.profiles.MavenProfilesBuilder;
 import org.apache.maven.profiles.ProfileManager;
@@ -159,13 +161,13 @@
     private ProfileAdvisor profileAdvisor;
 
     private MavenTools mavenTools;
-    
+
     //DO NOT USE, it is here only for backward compatibility reasons. The 
existing
     // maven-assembly-plugin (2.2-beta-1) is accessing it via reflection.
 
 // the aspect weaving seems not to work for reflection from plugin.
     private Map processedProjectCache = new HashMap();
-    
+
 
     public static final String MAVEN_MODEL_VERSION = "4.0.0";
 
@@ -456,6 +458,10 @@
                                            ArtifactRepository localRepository )
         throws ProjectBuildingException
     {
+        String projectId = safeVersionlessKey( artifact.getGroupId(), 
artifact.getArtifactId() );
+
+        remoteArtifactRepositories = normalizeToArtifactRepositories( 
remoteArtifactRepositories, projectId );
+
         Artifact projectArtifact;
 
         // if the artifact is not a POM, we need to construct a POM artifact 
based on the artifact parameter given.
@@ -477,8 +483,6 @@
 
         Model model;
 
-        String projectId = ArtifactUtils.versionlessKey( projectArtifact );
-
         try
         {
             artifactResolver.resolve( projectArtifact, 
remoteArtifactRepositories, localRepository );
@@ -523,6 +527,52 @@
         }
 
         return model;
+    }
+
+    private List normalizeToArtifactRepositories( List 
remoteArtifactRepositories,
+                                                  String projectId )
+        throws ProjectBuildingException
+    {
+        List normalized = new ArrayList( remoteArtifactRepositories.size() );
+
+        boolean normalizationNeeded = false;
+        for ( Iterator it = remoteArtifactRepositories.iterator(); 
it.hasNext(); )
+        {
+            Object item = it.next();
+
+            if ( item instanceof ArtifactRepository )
+            {
+                normalized.add( item );
+            }
+            else if ( item instanceof Repository )
+            {
+                Repository repo = (Repository) item;
+                try
+                {
+                    item = mavenTools.buildArtifactRepository( repo );
+
+                    normalized.add( item );
+                    normalizationNeeded = true;
+                }
+                catch ( UnknownRepositoryLayoutException e )
+                {
+                    throw new ProjectBuildingException( projectId, "Error 
building artifact repository for id: " + repo.getId(), e );
+                }
+            }
+            else
+            {
+                throw new ProjectBuildingException( projectId, "Error building 
artifact repository from non-repository information item: " + item );
+            }
+        }
+
+        if ( normalizationNeeded )
+        {
+            return normalized;
+        }
+        else
+        {
+            return remoteArtifactRepositories;
+        }
     }
 
     private void checkStatusAndUpdate( Artifact projectArtifact,


Reply via email to