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
);
}
}