Author: jdcasey
Date: Tue Aug  2 19:30:21 2005
New Revision: 227147

URL: http://svn.apache.org/viewcvs?rev=227147&view=rev
Log:
Working on: MNG-662

o Moved extension-artifact creation and caching to MavenProject, initialized by 
MavenProjectBuilder, just like plugin-artifacts is.

o Added extension-artifact and report-artifact creation (and initialization in 
MavenProject) to MavenProjectBuilder, for consistency with plugin-artifacts

o Removed dependency on ArtifactFactory in DefaultExtensionManager (extension 
artifacts are reachable from MavenProject now)

This makes the process of resolving all artifacts referenced by a project much 
simpler and more consistent (namely, for the release plugin)

Modified:
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
    
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
    
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/MavenProject.java

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java?rev=227147&r1=227146&r2=227147&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
 Tue Aug  2 19:30:21 2005
@@ -17,14 +17,13 @@
  */
 
 import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.ArtifactUtils;
 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
 import 
org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
-import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.model.Extension;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.PlexusConstants;
@@ -33,7 +32,6 @@
 import org.codehaus.plexus.context.Context;
 import org.codehaus.plexus.context.ContextException;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
-import org.codehaus.plexus.util.StringUtils;
 
 import java.util.Collections;
 import java.util.Iterator;
@@ -47,8 +45,6 @@
 public class DefaultExtensionManager
     implements ExtensionManager, Contextualizable
 {
-    private ArtifactFactory artifactFactory;
-
     private ArtifactResolver artifactResolver;
 
     private ArtifactMetadataSource artifactMetadataSource;
@@ -58,21 +54,9 @@
     public void addExtension( Extension extension, MavenProject project, 
ArtifactRepository localRepository )
         throws ArtifactResolutionException, PlexusContainerException, 
InvalidVersionSpecificationException
     {
-        // TODO: this is duplicated with DefaultMavenProjectBuilder. Push into 
artifact factory.
-        String version;
-
-        if ( StringUtils.isEmpty( extension.getVersion() ) )
-        {
-            version = "RELEASE";
-        }
-        else
-        {
-            version = extension.getVersion();
-        }
-
-        VersionRange versionRange = VersionRange.createFromVersionSpec( 
version );
-        Artifact artifact = artifactFactory.createExtensionArtifact( 
extension.getGroupId(), extension.getArtifactId(),
-                                                                     
versionRange );
+        String extensionId = ArtifactUtils.versionlessKey( 
extension.getGroupId(), extension.getArtifactId() );
+        
+        Artifact artifact = (Artifact) project.getExtensionArtifactMap().get( 
extensionId );
 
         if ( artifact != null )
         {

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=227147&r1=227146&r2=227147&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
 Tue Aug  2 19:30:21 2005
@@ -39,9 +39,6 @@
       
<implementation>org.apache.maven.extension.DefaultExtensionManager</implementation>
       <requirements>
         <requirement>
-          <role>org.apache.maven.artifact.factory.ArtifactFactory</role>
-        </requirement>
-        <requirement>
           <role>org.apache.maven.artifact.resolver.ArtifactResolver</role>
         </requirement>
         <requirement>

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=227147&r1=227146&r2=227147&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 Aug  2 19:30:21 2005
@@ -32,6 +32,7 @@
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.DependencyManagement;
 import org.apache.maven.model.DistributionManagement;
+import org.apache.maven.model.Extension;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Parent;
 import org.apache.maven.model.Plugin;
@@ -552,6 +553,8 @@
 
         project.setRemoteArtifactRepositories( remoteRepositories );
         project.setPluginArtifacts( createPluginArtifacts( 
project.getBuildPlugins() ) );
+        project.setReportArtifacts( createReportArtifacts( 
project.getReportPlugins() ) );
+        project.setExtensionArtifacts( createExtensionArtifacts( 
project.getBuildExtensions() ) );
 
         return project;
     }
@@ -826,6 +829,48 @@
         }
 
         return pluginArtifacts;
+    }
+
+    protected Set createExtensionArtifacts( List extensions )
+        throws ProjectBuildingException
+    {
+        Set extensionArtifacts = new HashSet();
+
+        if ( extensions != null )
+        {
+            for ( Iterator i = extensions.iterator(); i.hasNext(); )
+            {
+                Extension ext = (Extension) i.next();
+
+                String version;
+                if ( StringUtils.isEmpty( ext.getVersion() ) )
+                {
+                    version = "RELEASE";
+                }
+                else
+                {
+                    version = ext.getVersion();
+                }
+
+                Artifact artifact;
+                try
+                {
+                    artifact = artifactFactory.createExtensionArtifact( 
ext.getGroupId(), ext.getArtifactId(), VersionRange
+                        .createFromVersionSpec( version ) );
+                }
+                catch ( InvalidVersionSpecificationException e )
+                {
+                    throw new ProjectBuildingException( "Unable to parse 
extension version", e );
+                }
+
+                if ( artifact != null )
+                {
+                    extensionArtifacts.add( artifact );
+                }
+            }
+        }
+
+        return extensionArtifacts;
     }
 
     public MavenProject buildStandaloneSuperProject( ArtifactRepository 
localRepository, List externalProfiles )

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java?rev=227147&r1=227146&r2=227147&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
 Tue Aug  2 19:30:21 2005
@@ -126,6 +126,10 @@
 
     private Map reportArtifactMap;
 
+    private Set extensionArtifacts;
+
+    private Map extensionArtifactMap;
+
     private Map projectReferences = new HashMap();
 
     public MavenProject( Model model )
@@ -890,6 +894,26 @@
         return reportArtifactMap;
     }
 
+    public void setExtensionArtifacts( Set extensionArtifacts )
+    {
+        this.extensionArtifacts = extensionArtifacts;
+    }
+    
+    public Set getExtensionArtifacts()
+    {
+        return this.extensionArtifacts;
+    }
+    
+    public Map getExtensionArtifactMap()
+    {
+        if ( extensionArtifactMap == null )
+        {
+            extensionArtifactMap = ArtifactUtils.artifactMapByVersionlessId( 
getExtensionArtifacts() );
+        }
+        
+        return extensionArtifactMap;
+    }
+    
     public void setParentArtifact( Artifact parentArtifact )
     {
         this.parentArtifact = parentArtifact;
@@ -1249,4 +1273,5 @@
     {
         return groupId + ":" + artifactId;
     }
+
 }



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

Reply via email to