Author: jvanzyl
Date: Thu Mar 30 20:34:14 2006
New Revision: 390324

URL: http://svn.apache.org/viewcvs?rev=390324&view=rev
Log:
o collect some more artifact creations code ... this code is used inside the 
project builder. we'll have to move this out into
a separate component but here is fine for now.

Modified:
    
maven/components/branches/maven-embedder-refactor/maven-core/src/main/java/org/apache/maven/DefaultCommonMavenObjectFactory.java

Modified: 
maven/components/branches/maven-embedder-refactor/maven-core/src/main/java/org/apache/maven/DefaultCommonMavenObjectFactory.java
URL: 
http://svn.apache.org/viewcvs/maven/components/branches/maven-embedder-refactor/maven-core/src/main/java/org/apache/maven/DefaultCommonMavenObjectFactory.java?rev=390324&r1=390323&r2=390324&view=diff
==============================================================================
--- 
maven/components/branches/maven-embedder-refactor/maven-core/src/main/java/org/apache/maven/DefaultCommonMavenObjectFactory.java
 (original)
+++ 
maven/components/branches/maven-embedder-refactor/maven-core/src/main/java/org/apache/maven/DefaultCommonMavenObjectFactory.java
 Thu Mar 30 20:34:14 2006
@@ -5,13 +5,27 @@
 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
 import org.apache.maven.artifact.repository.DefaultArtifactRepository;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.artifact.InvalidRepositoryException;
 import org.apache.maven.settings.MavenSettingsBuilder;
 import org.apache.maven.settings.RuntimeInfo;
 import org.apache.maven.settings.Settings;
+import org.apache.maven.model.Repository;
+import org.apache.maven.model.DeploymentRepository;
+import org.apache.maven.model.RepositoryPolicy;
+import org.apache.maven.model.RepositoryBase;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.PlexusConstants;
+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.component.repository.exception.ComponentLookupException;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
 
 /**
  * A small utility that provides a common place for creating object instances 
that are used frequently in Maven:
@@ -21,7 +35,7 @@
  * @author Jason van Zyl
  */
 public class DefaultCommonMavenObjectFactory
-    implements CommonMavenObjectFactory
+    implements CommonMavenObjectFactory, Contextualizable
 {
     private ArtifactRepositoryLayout repositoryLayout;
 
@@ -29,6 +43,8 @@
 
     private MavenSettingsBuilder settingsBuilder;
 
+    private PlexusContainer container;
+
     // 
----------------------------------------------------------------------------
     // ArtifactRepository
     // 
----------------------------------------------------------------------------
@@ -118,5 +134,123 @@
         settings.setRuntimeInfo( runtimeInfo );
 
         return settings;
+    }
+
+    // 
----------------------------------------------------------------------------
+    // Code snagged from ProjectUtils: this will have to be moved somewhere 
else
+    // but just trying to collect it all in one place right now.
+    // 
----------------------------------------------------------------------------
+
+    public List buildArtifactRepositories( List repositories )
+        throws InvalidRepositoryException
+    {
+
+        List repos = new ArrayList();
+
+        for ( Iterator i = repositories.iterator(); i.hasNext(); )
+        {
+            Repository mavenRepo = (Repository) i.next();
+
+            ArtifactRepository artifactRepo =
+                buildArtifactRepository( mavenRepo );
+
+            if ( !repos.contains( artifactRepo ) )
+            {
+                repos.add( artifactRepo );
+            }
+        }
+        return repos;
+    }
+
+    public ArtifactRepository buildDeploymentArtifactRepository( 
DeploymentRepository repo )
+        throws InvalidRepositoryException
+    {
+        if ( repo != null )
+        {
+            String id = repo.getId();
+            String url = repo.getUrl();
+
+            // TODO: make this a map inside the factory instead, so no lookup 
needed
+            ArtifactRepositoryLayout layout = getRepositoryLayout( repo );
+
+            return 
artifactRepositoryFactory.createDeploymentArtifactRepository( id, url, layout,
+                                                                               
  repo.isUniqueVersion() );
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    public ArtifactRepository buildArtifactRepository( Repository repo )
+        throws InvalidRepositoryException
+    {
+        if ( repo != null )
+        {
+            String id = repo.getId();
+            String url = repo.getUrl();
+
+            // TODO: make this a map inside the factory instead, so no lookup 
needed
+            ArtifactRepositoryLayout layout = getRepositoryLayout( repo );
+
+            ArtifactRepositoryPolicy snapshots = 
buildArtifactRepositoryPolicy( repo.getSnapshots() );
+            ArtifactRepositoryPolicy releases = buildArtifactRepositoryPolicy( 
repo.getReleases() );
+
+            return artifactRepositoryFactory.createArtifactRepository( id, 
url, layout, snapshots, releases );
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    private ArtifactRepositoryPolicy buildArtifactRepositoryPolicy( 
RepositoryPolicy policy )
+    {
+        boolean enabled = true;
+        String updatePolicy = null;
+        String checksumPolicy = null;
+
+        if ( policy != null )
+        {
+            enabled = policy.isEnabled();
+            if ( policy.getUpdatePolicy() != null )
+            {
+                updatePolicy = policy.getUpdatePolicy();
+            }
+            if ( policy.getChecksumPolicy() != null )
+            {
+                checksumPolicy = policy.getChecksumPolicy();
+            }
+        }
+
+        return new ArtifactRepositoryPolicy( enabled, updatePolicy, 
checksumPolicy );
+    }
+
+    private ArtifactRepositoryLayout getRepositoryLayout( RepositoryBase 
mavenRepo )
+        throws InvalidRepositoryException
+    {
+        String layout = mavenRepo.getLayout();
+
+        ArtifactRepositoryLayout repositoryLayout;
+        try
+        {
+            repositoryLayout = (ArtifactRepositoryLayout) container.lookup( 
ArtifactRepositoryLayout.ROLE, layout );
+        }
+        catch ( ComponentLookupException e )
+        {
+            throw new InvalidRepositoryException( "Cannot find layout 
implementation corresponding to: \'" + layout +
+                "\' for remote repository with id: \'" + mavenRepo.getId() + 
"\'.", e );
+        }
+        return repositoryLayout;
+    }
+
+    // 
----------------------------------------------------------------------------
+    // Lifecycle
+    // 
----------------------------------------------------------------------------
+
+    public void contextualize( Context context )
+        throws ContextException
+    {
+        container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY 
);
     }
 }


Reply via email to