Author: jvanzyl Date: Wed Feb 28 06:20:13 2007 New Revision: 512763 URL: http://svn.apache.org/viewvc?view=rev&rev=512763 Log: o remove maven-tools and put the utility code in the only module that now depends on it, maven-project
Added: maven/components/trunk/maven-project/src/main/java/org/apache/maven/DefaultMavenTools.java (with props) maven/components/trunk/maven-project/src/main/java/org/apache/maven/MavenTools.java (with props) Removed: maven/components/trunk/maven-tools/ Modified: maven/components/trunk/maven-embedder/pom.xml maven/components/trunk/maven-project/pom.xml maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml Modified: maven/components/trunk/maven-embedder/pom.xml URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/pom.xml?view=diff&rev=512763&r1=512762&r2=512763 ============================================================================== --- maven/components/trunk/maven-embedder/pom.xml (original) +++ maven/components/trunk/maven-embedder/pom.xml Wed Feb 28 06:20:13 2007 @@ -61,11 +61,6 @@ <artifactId>plexus-container-default</artifactId> </dependency> <dependency> - <groupId>org.apache.maven</groupId> - <artifactId>maven-tools</artifactId> - <version>2.1-SNAPSHOT</version> - </dependency> - <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> </dependency> Modified: maven/components/trunk/maven-project/pom.xml URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/pom.xml?view=diff&rev=512763&r1=512762&r2=512763 ============================================================================== --- maven/components/trunk/maven-project/pom.xml (original) +++ maven/components/trunk/maven-project/pom.xml Wed Feb 28 06:20:13 2007 @@ -66,11 +66,6 @@ </dependency> <dependency> <groupId>org.apache.maven</groupId> - <artifactId>maven-tools</artifactId> - <version>2.1-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.maven</groupId> <artifactId>maven-artifact</artifactId> <version>2.1-SNAPSHOT</version> </dependency> Added: maven/components/trunk/maven-project/src/main/java/org/apache/maven/DefaultMavenTools.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/DefaultMavenTools.java?view=auto&rev=512763 ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/DefaultMavenTools.java (added) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/DefaultMavenTools.java Wed Feb 28 06:20:13 2007 @@ -0,0 +1,167 @@ +package org.apache.maven; + +import org.apache.maven.artifact.InvalidRepositoryException; +import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.repository.ArtifactRepositoryFactory; +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.model.DeploymentRepository; +import org.apache.maven.model.Repository; +import org.apache.maven.model.RepositoryBase; +import org.apache.maven.model.RepositoryPolicy; +import org.apache.maven.settings.MavenSettingsBuilder; +import org.apache.maven.settings.Settings; +import org.apache.maven.settings.io.jdom.SettingsJDOMWriter; +import org.apache.maven.settings.io.xpp3.SettingsXpp3Reader; +import org.apache.maven.settings.validation.SettingsValidationResult; +import org.apache.maven.settings.validation.SettingsValidator; +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.personality.plexus.lifecycle.phase.Contextualizable; +import org.codehaus.plexus.util.xml.pull.XmlPullParserException; +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.output.Format; + +import java.io.File; +import java.io.IOException; +import java.io.Reader; +import java.io.Writer; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +/** @author Jason van Zyl */ +public class DefaultMavenTools + implements MavenTools, Contextualizable +{ + private ArtifactRepositoryLayout repositoryLayout; + + private ArtifactRepositoryFactory artifactRepositoryFactory; + + private PlexusContainer container; + + // ---------------------------------------------------------------------------- + // 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; + } + } + + public 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 ); + } +} Propchange: maven/components/trunk/maven-project/src/main/java/org/apache/maven/DefaultMavenTools.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-project/src/main/java/org/apache/maven/DefaultMavenTools.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/components/trunk/maven-project/src/main/java/org/apache/maven/MavenTools.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/MavenTools.java?view=auto&rev=512763 ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/MavenTools.java (added) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/MavenTools.java Wed Feb 28 06:20:13 2007 @@ -0,0 +1,34 @@ +package org.apache.maven; + +import org.apache.maven.artifact.InvalidRepositoryException; +import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.model.DeploymentRepository; +import org.apache.maven.model.Repository; +import org.apache.maven.settings.Settings; + +import java.io.File; +import java.io.IOException; +import java.io.Reader; +import java.io.Writer; +import java.util.List; + +/** + * @author Jason van Zyl + */ +public interface MavenTools +{ + String ROLE = MavenTools.class.getName(); + + // ---------------------------------------------------------------------------- + // Methods taken from ProjectUtils + // ---------------------------------------------------------------------------- + + List buildArtifactRepositories( List repositories ) + throws InvalidRepositoryException; + + ArtifactRepository buildDeploymentArtifactRepository( DeploymentRepository repo ) + throws InvalidRepositoryException; + + ArtifactRepository buildArtifactRepository( Repository repo ) + throws InvalidRepositoryException; +} Propchange: maven/components/trunk/maven-project/src/main/java/org/apache/maven/MavenTools.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-project/src/main/java/org/apache/maven/MavenTools.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Modified: maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml?view=diff&rev=512763&r1=512762&r2=512763 ============================================================================== --- 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 Wed Feb 28 06:20:13 2007 @@ -309,5 +309,20 @@ </requirement> </requirements> </component> + + <component> + <role>org.apache.maven.MavenTools</role> + <implementation>org.apache.maven.DefaultMavenTools</implementation> + <requirements> + <requirement> + <role>org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout</role> + <role-hint>default</role-hint> + </requirement> + <requirement> + <role>org.apache.maven.artifact.repository.ArtifactRepositoryFactory</role> + </requirement> + </requirements> + </component> + </components> </component-set>