Author: brett
Date: Thu Jul 21 17:31:44 2005
New Revision: 220220

URL: http://svn.apache.org/viewcvs?rev=220220&view=rev
Log:
PR: MNG-507
implement repository relocation of an artifact

Added:
    maven/components/trunk/maven-core-it/it0035/
    maven/components/trunk/maven-core-it/it0035/expected-results.txt   (with 
props)
    maven/components/trunk/maven-core-it/it0035/goals.txt   (with props)
    maven/components/trunk/maven-core-it/it0035/pom.xml   (with props)
    maven/components/trunk/maven-core-it/it0035/prebuild-hook.txt   (with props)
Modified:
    
maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
    
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java
    
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
    
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java
    maven/components/trunk/maven-core-it-support/1.1/   (props changed)
    maven/components/trunk/maven-core-it-support/1.1-old-location/   (props 
changed)
    maven/components/trunk/maven-core-it/README.txt
    maven/components/trunk/maven-core-it/integration-tests.txt
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java
    
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
    maven/components/trunk/maven-model/maven.mdo
    
maven/components/trunk/maven-plugins/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.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/artifact/MavenMetadataSource.java
    
maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml

Modified: 
maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
--- 
maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
 (original)
+++ 
maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
 Thu Jul 21 17:31:44 2005
@@ -17,6 +17,7 @@
  */
 
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.manager.WagonManager;
 import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -68,7 +69,7 @@
         ArtifactResolver resolver = (ArtifactResolver) lookup( 
ArtifactResolver.ROLE );
         MavenProjectBuilder projectBuilder = (MavenProjectBuilder) lookup( 
MavenProjectBuilder.ROLE );
         ArtifactFactory artifactFactory = (ArtifactFactory) lookup( 
ArtifactFactory.ROLE );
-        MavenMetadataSource metadataSource = new MavenMetadataSource( 
projectBuilder, artifactFactory );
+        MavenMetadataSource metadataSource = (MavenMetadataSource) lookup( 
ArtifactMetadataSource.ROLE );
 
         List dependencies = this.dependencies;
 

Modified: 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
--- 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java
 (original)
+++ 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java
 Thu Jul 21 17:31:44 2005
@@ -114,4 +114,8 @@
     void setVersionRange( VersionRange newRange );
 
     void selectVersion( String version );
+
+    void setGroupId( String groupId );
+
+    void setArtifactId( String artifactId );
 }

Modified: 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
--- 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
 (original)
+++ 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
 Thu Jul 21 17:31:44 2005
@@ -36,9 +36,9 @@
 public class DefaultArtifact
     implements Artifact
 {
-    private final String groupId;
+    private String groupId;
 
-    private final String artifactId;
+    private String artifactId;
 
     /**
      * The resolved version for the artifact after conflict resolution, that 
has not been transformed.
@@ -406,4 +406,13 @@
         this.version = version;
     }
 
+    public void setGroupId( String groupId )
+    {
+        this.groupId = groupId;
+    }
+
+    public void setArtifactId( String artifactId )
+    {
+        this.artifactId = artifactId;
+    }
 }

Modified: 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
--- 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java
 (original)
+++ 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java
 Thu Jul 21 17:31:44 2005
@@ -27,6 +27,8 @@
  */
 public interface ArtifactMetadataSource
 {
+    String ROLE = ArtifactMetadataSource.class.getName();
+
     ResolutionGroup retrieve( Artifact artifact, ArtifactRepository 
localRepository, List remoteRepositories )
         throws ArtifactMetadataRetrievalException;
 }

Propchange: maven/components/trunk/maven-core-it-support/1.1/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu Jul 21 17:31:44 2005
@@ -0,0 +1 @@
+target

Propchange: maven/components/trunk/maven-core-it-support/1.1-old-location/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu Jul 21 17:31:44 2005
@@ -0,0 +1 @@
+target

Modified: maven/components/trunk/maven-core-it/README.txt
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/README.txt?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it/README.txt (original)
+++ maven/components/trunk/maven-core-it/README.txt Thu Jul 21 17:31:44 2005
@@ -103,6 +103,8 @@
 
 it0034: Test version range junit [3.7,) resolves to 3.8.1
 
+it0035: Test artifact relocation.
+
 -------------------------------------------------------------------------------
 
 - generated sources

Modified: maven/components/trunk/maven-core-it/integration-tests.txt
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/integration-tests.txt?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it/integration-tests.txt (original)
+++ maven/components/trunk/maven-core-it/integration-tests.txt Thu Jul 21 
17:31:44 2005
@@ -1,3 +1,4 @@
+it0035
 it0034
 it0033
 it0032

Added: maven/components/trunk/maven-core-it/it0035/expected-results.txt
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0035/expected-results.txt?rev=220220&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0035/expected-results.txt (added)
+++ maven/components/trunk/maven-core-it/it0035/expected-results.txt Thu Jul 21 
17:31:44 2005
@@ -0,0 +1,3 @@
+${artifact:org.apache.maven:maven-core-it-support:1.1:jar}
+${artifact:org.apache.maven:maven-core-it-support:1.1:pom}
+${artifact:org.apache.maven:maven-core-it-support-old-location:1.1:pom}

Propchange: maven/components/trunk/maven-core-it/it0035/expected-results.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core-it/it0035/expected-results.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-core-it/it0035/goals.txt
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0035/goals.txt?rev=220220&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0035/goals.txt (added)
+++ maven/components/trunk/maven-core-it/it0035/goals.txt Thu Jul 21 17:31:44 
2005
@@ -0,0 +1 @@
+package

Propchange: maven/components/trunk/maven-core-it/it0035/goals.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core-it/it0035/goals.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-core-it/it0035/pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0035/pom.xml?rev=220220&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0035/pom.xml (added)
+++ maven/components/trunk/maven-core-it/it0035/pom.xml Thu Jul 21 17:31:44 2005
@@ -0,0 +1,20 @@
+<model>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven</groupId>
+  <artifactId>maven-core-it0035</artifactId>
+  <version>1.0</version>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <type>jar</type>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-core-it-support-old-location</artifactId>
+      <version>1.1</version>
+    </dependency>
+  </dependencies>
+</model>

Propchange: maven/components/trunk/maven-core-it/it0035/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core-it/it0035/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-core-it/it0035/prebuild-hook.txt
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0035/prebuild-hook.txt?rev=220220&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0035/prebuild-hook.txt (added)
+++ maven/components/trunk/maven-core-it/it0035/prebuild-hook.txt Thu Jul 21 
17:31:44 2005
@@ -0,0 +1,3 @@
+rm ${artifact:org.apache.maven:maven-core-it-support:1.1:jar}
+rm ${artifact:org.apache.maven:maven-core-it-support:1.1:pom}
+rm ${artifact:org.apache.maven:maven-core-it-support-old-location:1.1:pom}

Propchange: maven/components/trunk/maven-core-it/it0035/prebuild-hook.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core-it/it0035/prebuild-hook.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 Thu Jul 21 17:31:44 2005
@@ -20,6 +20,7 @@
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
 import org.apache.maven.artifact.metadata.ResolutionGroup;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import 
org.apache.maven.artifact.repository.metadata.RepositoryMetadataManagementException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
@@ -48,8 +49,6 @@
 import org.apache.maven.plugin.version.PluginVersionManager;
 import org.apache.maven.plugin.version.PluginVersionResolutionException;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.MavenProjectBuilder;
-import org.apache.maven.project.artifact.MavenMetadataSource;
 import org.apache.maven.project.path.PathTranslator;
 import org.apache.maven.reporting.MavenReport;
 import org.apache.maven.settings.Settings;
@@ -108,7 +107,7 @@
 
     protected ArtifactResolver artifactResolver;
 
-    protected MavenProjectBuilder mavenProjectBuilder;
+    protected ArtifactMetadataSource metadataSource;
 
     protected MavenPluginMappingBuilder pluginMappingBuilder;
     // END component requirements
@@ -262,7 +261,7 @@
         if ( mojoDescriptor.isDependencyResolutionRequired() != null )
         {
 
-            resolveTransitiveDependencies( session, artifactResolver, 
mavenProjectBuilder, mojoDescriptor
+            resolveTransitiveDependencies( session, artifactResolver, 
mojoDescriptor
                 .isDependencyResolutionRequired(), artifactFactory, project );
 
             downloadDependencies( project, session, artifactResolver );
@@ -474,8 +473,6 @@
 
             try
             {
-                MavenMetadataSource metadataSource = new MavenMetadataSource( 
mavenProjectBuilder, artifactFactory );
-
                 ArtifactRepository localRepository = 
session.getLocalRepository();
 
                 ResolutionGroup resolutionGroup = metadataSource.retrieve( 
pluginArtifact, localRepository,
@@ -962,13 +959,10 @@
     // Artifact resolution
     // ----------------------------------------------------------------------
 
-    private void resolveTransitiveDependencies( MavenSession context, 
ArtifactResolver artifactResolver,
-                                                MavenProjectBuilder 
mavenProjectBuilder, String scope,
+    private void resolveTransitiveDependencies( MavenSession context, 
ArtifactResolver artifactResolver, String scope,
                                                 ArtifactFactory 
artifactFactory, MavenProject project )
         throws ArtifactResolutionException
     {
-        MavenMetadataSource sourceReader = new MavenMetadataSource( 
mavenProjectBuilder, artifactFactory );
-
         ArtifactFilter filter = new ScopeArtifactFilter( scope );
 
         // TODO: such a call in MavenMetadataSource too - packaging not really 
the intention of type
@@ -980,7 +974,7 @@
         ArtifactResolutionResult result = 
artifactResolver.resolveTransitively( project.getDependencyArtifacts(),
                                                                                
 artifact, context.getLocalRepository(),
                                                                                
 project.getRemoteArtifactRepositories(),
-                                                                               
 sourceReader, filter );
+                                                                               
 metadataSource, filter );
 
         project.setArtifacts( result.getArtifacts() );
     }

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java
 Thu Jul 21 17:31:44 2005
@@ -1,8 +1,25 @@
 package org.apache.maven.plugin.version;
 
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
 import org.apache.maven.artifact.transform.LatestArtifactTransformation;
@@ -15,8 +32,6 @@
 import org.apache.maven.plugin.registry.TrackableBase;
 import org.apache.maven.plugin.registry.io.xpp3.PluginRegistryXpp3Writer;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.MavenProjectBuilder;
-import org.apache.maven.project.artifact.MavenMetadataSource;
 import org.apache.maven.settings.RuntimeInfo;
 import org.apache.maven.settings.Settings;
 import org.codehaus.plexus.components.inputhandler.InputHandler;
@@ -36,22 +51,6 @@
 import java.util.List;
 import java.util.Map;
 
-/*
- * Copyright 2001-2005 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
 public class DefaultPluginVersionManager
     extends AbstractLogEnabled
     implements PluginVersionManager
@@ -62,13 +61,13 @@
 
     private ArtifactFactory artifactFactory;
 
-    private MavenProjectBuilder projectBuilder;
-
     private InputHandler inputHandler;
 
     // calculated.
     private PluginRegistry pluginRegistry;
 
+    private ArtifactMetadataSource metadataSource;
+
     public String resolvePluginVersion( String groupId, String artifactId, 
MavenProject project, Settings settings,
                                         ArtifactRepository localRepository )
         throws PluginVersionResolutionException
@@ -389,7 +388,7 @@
             return shouldPersist;
 
         }
-        catch ( Exception e )
+        catch ( IOException e )
         {
             throw new PluginVersionResolutionException( groupId, artifactId, 
"Can't read user input.", e );
         }
@@ -440,7 +439,7 @@
     private org.apache.maven.plugin.registry.Plugin getPlugin( String groupId, 
String artifactId,
                                                                PluginRegistry 
pluginRegistry )
     {
-        Map pluginsByKey = null;
+        Map pluginsByKey;
 
         if ( pluginRegistry != null )
         {
@@ -603,8 +602,6 @@
     {
         // TODO: check - this was SCOPE_RUNTIME before, now is null
         Artifact artifact = artifactFactory.createProjectArtifact( groupId, 
artifactId, metaVersionId );
-
-        MavenMetadataSource metadataSource = new MavenMetadataSource( 
projectBuilder, artifactFactory );
 
         String version = null;
         try

Modified: 
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
 (original)
+++ 
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
 Thu Jul 21 17:31:44 2005
@@ -20,7 +20,7 @@
           <role>org.apache.maven.artifact.resolver.ArtifactResolver</role>
         </requirement>
         <requirement>
-          <role>org.apache.maven.project.MavenProjectBuilder</role>
+          
<role>org.apache.maven.artifact.metadata.ArtifactMetadataSource</role>
         </requirement>
         <requirement>
           
<role>org.apache.maven.plugin.mapping.MavenPluginMappingBuilder</role>
@@ -210,7 +210,7 @@
       <instantiation-strategy>per-lookup</instantiation-strategy>
       <requirements>
         <requirement>
-          <role>org.apache.maven.project.MavenProjectBuilder</role>
+          
<role>org.apache.maven.artifact.metadata.ArtifactMetadataSource</role>
         </requirement>
         <requirement>
           
<role>org.apache.maven.plugin.registry.MavenPluginRegistryBuilder</role>

Modified: maven/components/trunk/maven-model/maven.mdo
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-model/maven.mdo?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
--- maven/components/trunk/maven-model/maven.mdo (original)
+++ maven/components/trunk/maven-model/maven.mdo Thu Jul 21 17:31:44 2005
@@ -1437,6 +1437,14 @@
           ]]></description>
           <type>String</type>
         </field>
+        <field>
+          <name>relocation</name>
+          <version>4.0.0</version>
+          <description>Relocation information if the artifact has been moved 
to a new group/artifactId</description>
+          <association>
+            <type>Relocation</type>
+          </association>
+        </field>
       </fields>
     </class>
     <class>
@@ -2650,6 +2658,38 @@
           <defaultValue>2.0-beta-1-SNAPSHOT</defaultValue>
           <description>The minimum version of Maven required</description>
           <required>false</required>
+        </field>
+      </fields>
+    </class>
+    <class>
+      <name>Relocation</name>
+      <version>4.0.0</version>
+      <description>Describes where an artifact has moved to. If any of the 
values are omitted, it is assumed to be the
+        same as it was before.</description>
+      <fields>
+        <field>
+          <name>groupId</name>
+          <version>4.0.0</version>
+          <description>The group the artifact has moved to</description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>artifactId</name>
+          <version>4.0.0</version>
+          <description>The new artifact ID of the artifact</description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>version</name>
+          <version>4.0.0</version>
+          <description>The new version of the artifact</description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>message</name>
+          <version>4.0.0</version>
+          <description>An additional message to show the user about the move, 
such as the reason.</description>
+          <type>String</type>
         </field>
       </fields>
     </class>

Modified: 
maven/components/trunk/maven-plugins/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
--- 
maven/components/trunk/maven-plugins/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java
 (original)
+++ 
maven/components/trunk/maven-plugins/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java
 Thu Jul 21 17:31:44 2005
@@ -17,19 +17,18 @@
  */
 
 import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.ProjectBuildingException;
-import org.apache.maven.reporting.AbstractMavenReportRenderer;
 import org.apache.maven.reporting.AbstractMavenReport;
+import org.apache.maven.reporting.AbstractMavenReportRenderer;
 import org.apache.maven.reporting.MavenReportException;
 import org.codehaus.doxia.sink.Sink;
 import org.codehaus.doxia.site.renderer.SiteRenderer;
 
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -40,12 +39,11 @@
 
 /**
  * Generates the Project Dependencies report.
- * 
- * @goal dependencies
- * 
+ *
  * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl </a>
  * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Siveton </a>
  * @version $Id$
+ * @goal dependencies
  * @plexus.component
  */
 public class DependenciesReport
@@ -174,8 +172,8 @@
         private ArtifactRepository localRepository;
 
         public DependenciesRenderer( Sink sink, MavenProject project, Locale 
locale,
-                                    MavenProjectBuilder mavenProjectBuilder, 
ArtifactFactory artifactFactory,
-                                    ArtifactRepository localRepository )
+                                     MavenProjectBuilder mavenProjectBuilder, 
ArtifactFactory artifactFactory,
+                                     ArtifactRepository localRepository )
         {
             super( sink );
 
@@ -224,34 +222,30 @@
             String description = getBundle( locale ).getString( 
"report.dependencies.column.description" );
             String url = getBundle( locale ).getString( 
"report.dependencies.column.url" );
 
-            tableHeader( new String[] { groupId, artifactId, version, 
description, url } );
+            tableHeader( new String[]{groupId, artifactId, version, 
description, url} );
 
             for ( Iterator i = dependencies.iterator(); i.hasNext(); )
             {
                 Dependency dependency = (Dependency) i.next();
 
-                Artifact artifact = artifactFactory.createArtifact( 
dependency.getGroupId(),
-                                                                    
dependency.getArtifactId(),
+                Artifact artifact = artifactFactory.createArtifact( 
dependency.getGroupId(), dependency.getArtifactId(),
                                                                     
dependency.getVersion(), dependency.getScope(),
                                                                     
dependency.getType() );
-                MavenProject artifactProject = null;
+                MavenProject artifactProject;
                 try
                 {
+                    // TODO: can we use @requiresDependencyResolution instead, 
and capture the depth of artifacts in the artifact itself?
                     artifactProject = getMavenProjectFromRepository( artifact, 
localRepository );
                 }
                 catch ( ProjectBuildingException e )
                 {
                     throw new IllegalArgumentException(
-                                                        "Can't find a valid 
Maven project in the repository for the artifact ["
-                                                            + artifact + "]." 
);
+                        "Can't find a valid Maven project in the repository 
for the artifact [" + artifact + "]." );
                 }
 
-                tableRow( new String[] {
-                    dependency.getGroupId(),
-                    dependency.getArtifactId(),
-                    dependency.getVersion(),
+                tableRow( new String[]{dependency.getGroupId(), 
dependency.getArtifactId(), dependency.getVersion(),
                     artifactProject.getDescription(),
-                    createLinkPatternedText( artifactProject.getUrl(), 
artifactProject.getUrl() ) } );
+                    createLinkPatternedText( artifactProject.getUrl(), 
artifactProject.getUrl() )} );
             }
 
             endTable();
@@ -273,13 +267,13 @@
 
                 tableCaption( getBundle( locale ).getString( 
"report.transitivedependencies.intro" ) );
 
-                tableHeader( new String[] { groupId, artifactId, version, 
description, url } );
+                tableHeader( new String[]{groupId, artifactId, version, 
description, url} );
 
                 for ( Iterator i = artifacts.iterator(); i.hasNext(); )
                 {
                     Artifact artifact = (Artifact) i.next();
 
-                    MavenProject artifactProject = null;
+                    MavenProject artifactProject;
                     try
                     {
                         artifactProject = getMavenProjectFromRepository( 
artifact, localRepository );
@@ -287,15 +281,11 @@
                     catch ( ProjectBuildingException e )
                     {
                         throw new IllegalArgumentException(
-                                                            "Can't find a 
valid Maven project in the repository for the artifact ["
-                                                                + artifact + 
"]." );
+                            "Can't find a valid Maven project in the 
repository for the artifact [" + artifact + "]." );
                     }
-                    tableRow( new String[] {
-                        artifact.getGroupId(),
-                        artifact.getArtifactId(),
-                        artifact.getVersion(),
+                    tableRow( new String[]{artifact.getGroupId(), 
artifact.getArtifactId(), artifact.getVersion(),
                         artifactProject.getDescription(),
-                        createLinkPatternedText( artifactProject.getUrl(), 
artifactProject.getUrl() ) } );
+                        createLinkPatternedText( artifactProject.getUrl(), 
artifactProject.getUrl() )} );
                 }
 
                 endTable();
@@ -307,9 +297,8 @@
         /**
          * Return a set of <code>Artifacts</code> which are not already
          * present in the dependencies list.
-         * 
-         * @param project
-         *            a Maven project
+         *
+         * @param project a Maven project
          * @return a set of transitive dependencies as artifacts
          */
         private Set getTransitiveDependencies( MavenProject project )
@@ -329,8 +318,7 @@
             {
                 Dependency dependency = (Dependency) i.next();
 
-                Artifact artifact = artifactFactory.createArtifact( 
dependency.getGroupId(),
-                                                                    
dependency.getArtifactId(),
+                Artifact artifact = artifactFactory.createArtifact( 
dependency.getGroupId(), dependency.getArtifactId(),
                                                                     
dependency.getVersion(), dependency.getScope(),
                                                                     
dependency.getType() );
                 dependenciesAsArtifacts.add( artifact );
@@ -353,15 +341,14 @@
          * Get the <code>Maven project</code> from the repository depending
          * the <code>Artifact</code> given.
          *
-         * @param artifact
-         *            an artifact
+         * @param artifact an artifact
          * @return the Maven project for the given artifact
-         * @throws org.apache.maven.project.ProjectBuildingException
-         *             if any
+         * @throws org.apache.maven.project.ProjectBuildingException if any
          */
         private MavenProject getMavenProjectFromRepository( Artifact artifact, 
ArtifactRepository localRepository )
             throws ProjectBuildingException
         {
+            // TODO: we should use the MavenMetadataSource instead
             return mavenProjectBuilder.buildFromRepository( artifact, 
project.getRepositories(), localRepository );
         }
     }

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=220220&r1=220219&r2=220220&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
 Thu Jul 21 17:31:44 2005
@@ -47,6 +47,7 @@
 import org.apache.maven.project.validation.ModelValidator;
 import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusContainer;
+import 
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 import org.codehaus.plexus.context.Context;
 import org.codehaus.plexus.context.ContextException;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
@@ -118,11 +119,22 @@
     // MavenProjectBuilder Implementation
     // ----------------------------------------------------------------------
 
+    /**
+     * @todo move to metadatasource itself?
+     */
     public MavenProject buildWithDependencies( File projectDescriptor, 
ArtifactRepository localRepository,
                                                List externalProfiles )
         throws ProjectBuildingException, ArtifactResolutionException
     {
-        ArtifactMetadataSource source = new MavenMetadataSource( this, 
artifactFactory );
+        ArtifactMetadataSource source;
+        try
+        {
+            source = (ArtifactMetadataSource) container.lookup( 
ArtifactMetadataSource.ROLE );
+        }
+        catch ( ComponentLookupException e )
+        {
+            throw new ProjectBuildingException( "Unable to get the artifact 
metadata source component", e );
+        }
         return buildWithDependencies( projectDescriptor, localRepository, 
source, externalProfiles );
     }
 

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
 Thu Jul 21 17:31:44 2005
@@ -29,9 +29,11 @@
 import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.Exclusion;
+import org.apache.maven.model.Relocation;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.ProjectBuildingException;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
 
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -44,46 +46,89 @@
  * @version $Id$
  */
 public class MavenMetadataSource
+    extends AbstractLogEnabled
     implements ArtifactMetadataSource
 {
     private MavenProjectBuilder mavenProjectBuilder;
 
     private ArtifactFactory artifactFactory;
 
-    // TODO: Remove resolver from params list.
-    public MavenMetadataSource( MavenProjectBuilder projectBuilder, 
ArtifactFactory artifactFactory )
-    {
-        this.mavenProjectBuilder = projectBuilder;
-        this.artifactFactory = artifactFactory;
-    }
-
+    /**
+     * Retrieve the metadata for the project from the repository.
+     * Uses the ProjectBuilder, to enable post-processing and inheritance 
calculation before retrieving the
+     * associated artifacts.
+     *
+     * @todo this a very thin wrapper around a project builder - is it needed?
+     */
     public ResolutionGroup retrieve( Artifact artifact, ArtifactRepository 
localRepository, List remoteRepositories )
         throws ArtifactMetadataRetrievalException
     {
-        // TODO: only metadata is really needed - resolve as metadata
-        Artifact pomArtifact = artifactFactory.createProjectArtifact( 
artifact.getGroupId(), artifact.getArtifactId(),
-                                                                      
artifact.getVersion(), artifact.getScope() );
-
-        // TODO: this a very thin wrapper around a project builder - is it 
needed?
         List dependencies;
+        MavenProject p;
 
-        // Use the ProjectBuilder, to enable post-processing and inheritance 
calculation before retrieving the
-        // associated artifacts.
-        try
+        Artifact pomArtifact;
+        boolean done = false;
+        do
         {
-            MavenProject p = mavenProjectBuilder.buildFromRepository( 
pomArtifact, remoteRepositories,
-                                                                      
localRepository );
-            dependencies = p.getDependencies();
-            artifact.setDownloadUrl( pomArtifact.getDownloadUrl() );
+            // TODO: only metadata is really needed - resolve as metadata
+            pomArtifact = artifactFactory.createProjectArtifact( 
artifact.getGroupId(), artifact.getArtifactId(),
+                                                                 
artifact.getVersion(), artifact.getScope() );
+
+            try
+            {
+                p = mavenProjectBuilder.buildFromRepository( pomArtifact, 
remoteRepositories, localRepository );
+            }
+            catch ( ProjectBuildingException e )
+            {
+                throw new ArtifactMetadataRetrievalException( "Unable to read 
the metadata file", e );
+            }
+
+            Relocation relocation = null;
+
+            if ( p.getDistributionManagement() != null )
+            {
+                relocation = p.getDistributionManagement().getRelocation();
+            }
+            if ( relocation != null )
+            {
+                if ( relocation.getGroupId() != null )
+                {
+                    artifact.setGroupId( relocation.getGroupId() );
+                }
+                if ( relocation.getArtifactId() != null )
+                {
+                    artifact.setArtifactId( relocation.getArtifactId() );
+                }
+                if ( relocation.getVersion() != null )
+                {
+                    artifact.setVersion( relocation.getVersion() );
+                }
+
+                String message = pomArtifact + " has been relocated to " + 
artifact + ".\n";
+
+                if ( relocation.getMessage() != null )
+                {
+                    message += relocation.getMessage();
+                }
+
+//                getLogger().warn( message );
+            }
+            else
+            {
+                done = true;
+            }
+        }
+        while ( !done );
 
+        dependencies = p.getDependencies();
+        artifact.setDownloadUrl( pomArtifact.getDownloadUrl() );
+
+        try
+        {
             Set artifacts = createArtifacts( artifactFactory, dependencies, 
artifact.getScope(),
                                              artifact.getDependencyFilter() );
 
             return new ResolutionGroup( artifacts, 
p.getRemoteArtifactRepositories() );
-        }
-        catch ( ProjectBuildingException e )
-        {
-            throw new ArtifactMetadataRetrievalException( "Unable to read the 
metadata file", e );
         }
         catch ( InvalidVersionSpecificationException e )
         {

Modified: 
maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml?rev=220220&r1=220219&r2=220220&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml
 (original)
+++ 
maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml
 Thu Jul 21 17:31:44 2005
@@ -124,9 +124,22 @@
       
<implementation>org.apache.maven.project.validation.DefaultModelValidator</implementation>
     </component>
 
+    <component>
+      <role>org.apache.maven.artifact.metadata.ArtifactMetadataSource</role>
+      
<implementation>org.apache.maven.project.artifact.MavenMetadataSource</implementation>
+      <requirements>
+        <requirement>
+          <role>org.apache.maven.project.MavenProjectBuilder</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.artifact.factory.ArtifactFactory</role>
+        </requirement>
+      </requirements>
+    </component>
+
 <!-- ********************* FIXME *******************************************
-     | I realize this is duplicated but allows the project builder to work by 
itself
-     -->
+| I realize this is duplicated but allows the project builder to work by itself
+-->
     <component>
       <role>org.apache.maven.project.path.PathTranslator</role>
       
<implementation>org.apache.maven.project.path.DefaultPathTranslator</implementation>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to