You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2006/10/06 18:11:40 UTC
svn commit: r453656 - in /maven/sandbox/maven-artifact-tools: ./
src/main/java/org/apache/maven/artifact/tools/components/
src/main/java/org/apache/maven/artifact/tools/repository/
src/main/java/org/apache/maven/artifact/tools/resolve/ src/test/java/or...
Author: jdcasey
Date: Fri Oct 6 09:11:39 2006
New Revision: 453656
URL: http://svn.apache.org/viewvc?view=rev&rev=453656
Log:
Adding unit test for component accessor class, and refining the API for repository sources.
Added:
maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/artifact/tools/components/
maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/artifact/tools/components/MavenComponentAccessTest.java (with props)
Modified:
maven/sandbox/maven-artifact-tools/pom.xml
maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/artifact/tools/components/MavenComponentAccess.java
maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/artifact/tools/repository/ArtifactRepositorySource.java
maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/artifact/tools/repository/MavenArtifactRepositorySource.java
maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/artifact/tools/resolve/ArtifactResolutionTool.java
Modified: maven/sandbox/maven-artifact-tools/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-artifact-tools/pom.xml?view=diff&rev=453656&r1=453655&r2=453656
==============================================================================
--- maven/sandbox/maven-artifact-tools/pom.xml (original)
+++ maven/sandbox/maven-artifact-tools/pom.xml Fri Oct 6 09:11:39 2006
@@ -1,36 +1,10 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0"?><project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact-tools</artifactId>
- <version>1.0-SNAPSHOT</version>
<name>Maven Artifact-Access Tools</name>
+ <version>1.0-SNAPSHOT</version>
<url>http://maven.apache.org</url>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-artifact-manager</artifactId>
- <version>2.0.4</version>
- </dependency>
- <dependency>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-artifact</artifactId>
- <version>2.0.4</version>
- </dependency>
- <dependency>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-project</artifactId>
- <version>2.0.4</version>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
<build>
<plugins>
<plugin>
@@ -43,31 +17,10 @@
<goal>descriptor</goal>
</goals>
</execution>
- <!-- Nothing to merge on this project, yet.
- <execution>
- <id>merge</id>
- <configuration>
- <output>${project.build.outputDirectory}/META-INF/plexus/components.xml</output>
- <descriptors>
- <descriptor>${project.build.directory}/generated-resources/plexus/META-INF/plexus/components.xml</descriptor>
- <descriptor>src/main/resources/META-INF/plexus/components.xml</descriptor>
- </descriptors>
- </configuration>
- <goals>
- <goal>merge-descriptors</goal>
- </goals>
- </execution>
- -->
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
- <configuration>
- <descriptorRefs>
- <descriptorRef>jar-with-dependencies</descriptorRef>
- </descriptorRefs>
- </configuration>
-
<executions>
<execution>
<id>make-assembly</id>
@@ -77,14 +30,46 @@
</goals>
</execution>
</executions>
+ <configuration>
+ <descriptorRefs>
+ <descriptorRef>jar-with-dependencies</descriptorRef>
+ </descriptorRefs>
+ </configuration>
</plugin>
</plugins>
</build>
-
<pluginRepositories>
<pluginRepository>
<id>apache.snapshots</id>
<url>http://people.apache.org/repo/m2-snapshot-repository</url>
</pluginRepository>
</pluginRepositories>
-</project>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-artifact-manager</artifactId>
+ <version>2.0.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-artifact</artifactId>
+ <version>2.0.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-project</artifactId>
+ <version>2.0.4</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>easymock</groupId>
+ <artifactId>easymock</artifactId>
+ <version>1.2_Java1.3</version>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
Modified: maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/artifact/tools/components/MavenComponentAccess.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/artifact/tools/components/MavenComponentAccess.java?view=diff&rev=453656&r1=453655&r2=453656
==============================================================================
--- maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/artifact/tools/components/MavenComponentAccess.java (original)
+++ maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/artifact/tools/components/MavenComponentAccess.java Fri Oct 6 09:11:39 2006
@@ -1,5 +1,7 @@
package org.apache.maven.artifact.tools.components;
+import java.util.Map;
+
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
@@ -7,17 +9,19 @@
import org.apache.maven.artifact.tools.InvalidConfigurationException;
import org.apache.maven.project.MavenProjectBuilder;
import org.apache.maven.settings.MavenSettingsBuilder;
-import org.codehaus.plexus.DefaultPlexusContainer;
import org.codehaus.plexus.PlexusConstants;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.PlexusContainerException;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+import org.codehaus.plexus.configuration.PlexusConfigurationResourceException;
import org.codehaus.plexus.context.Context;
import org.codehaus.plexus.context.ContextException;
+import org.codehaus.plexus.embed.Embedder;
+import org.codehaus.plexus.embed.PlexusEmbedder;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
/**
- * @plexus.component role="org.apache.maven.artifact.tools.components" role-hint="default"
+ * @plexus.component role="org.apache.maven.artifact.tools.components.MavenComponentAccess" role-hint="default"
*
* @author jdcasey
*/
@@ -41,27 +45,48 @@
* @plexus.requirement
*/
private ArtifactHandlerManager artifactHandlerManager;
-
+
/**
* @plexus.requirement
*/
private ArtifactRepositoryFactory artifactRepositoryFactory;
-
+
/**
* @plexus.requirement
*/
private MavenProjectBuilder mavenProjectBuilder;
-
+
private PlexusContainer container;
- private static MavenComponentAccess staticInstance;
+ private final Map artifactRepositoryLayoutsById;
- public static MavenComponentAccess create()
+ private static MavenComponentAccess selfContainedInstance;
+
+ public MavenComponentAccess()
+ {
+ //used for Plexus-based initialization.
+ this.artifactRepositoryLayoutsById = null;
+ }
+
+ public MavenComponentAccess( MavenSettingsBuilder settingsBuilder, ArtifactResolver artifactResolver,
+ ArtifactHandlerManager artifactHandlerManager,
+ ArtifactRepositoryFactory artifactRepositoryFactory,
+ MavenProjectBuilder mavenProjectBuilder, Map artifactRepositoryLayoutsById )
+ {
+ this.settingsBuilder = settingsBuilder;
+ this.artifactResolver = artifactResolver;
+ this.artifactHandlerManager = artifactHandlerManager;
+ this.artifactRepositoryFactory = artifactRepositoryFactory;
+ this.mavenProjectBuilder = mavenProjectBuilder;
+ this.artifactRepositoryLayoutsById = artifactRepositoryLayoutsById;
+ }
+
+ public static MavenComponentAccess createSelfContainedInstance()
throws ComponentAccessException
{
- if ( staticInstance == null )
+ if ( selfContainedInstance == null )
{
- PlexusContainer container = new DefaultPlexusContainer();
+ PlexusEmbedder container = new Embedder();
try
{
@@ -71,31 +96,54 @@
{
throw new ComponentAccessException( "Failed to start plexus container for maven artifact tooling.", e );
}
-
+ catch ( PlexusConfigurationResourceException e )
+ {
+ throw new ComponentAccessException( "Failed to start plexus container for maven artifact tooling.", e );
+ }
+
try
{
- staticInstance = (MavenComponentAccess) container.lookup( ROLE );
+ selfContainedInstance = (MavenComponentAccess) container.lookup( ROLE );
}
catch ( ComponentLookupException e )
{
- throw new ComponentAccessException( "Failed to lookup components necessary for maven artifact tooling.", e );
+ throw new ComponentAccessException(
+ "Failed to lookup components necessary for maven artifact tooling.",
+ e );
}
}
- return staticInstance;
+ return selfContainedInstance;
}
-
+
public ArtifactRepositoryLayout getArtifactRepositoryLayout( String layoutId )
throws InvalidConfigurationException
{
- try
+ ArtifactRepositoryLayout layout = null;
+
+ if ( artifactRepositoryLayoutsById != null )
+ {
+
+ layout = (ArtifactRepositoryLayout) artifactRepositoryLayoutsById.get( layoutId );
+ }
+ else if ( container != null )
{
- return (ArtifactRepositoryLayout) container.lookup( ArtifactRepositoryLayout.ROLE, layoutId );
+ try
+ {
+ layout = (ArtifactRepositoryLayout) container.lookup( ArtifactRepositoryLayout.ROLE, layoutId );
+ }
+ catch ( ComponentLookupException e )
+ {
+ throw new InvalidConfigurationException( "Invalid Maven repository layout: \'" + layoutId + "\'.", e );
+ }
}
- catch ( ComponentLookupException e )
+ else
{
- throw new InvalidConfigurationException( "Invalid Maven repository layout: \'" + layoutId + "\'.", e );
+ throw new InvalidConfigurationException( "Repository layouts are not available. Either "
+ + "use self-contained instance, or construct with a mapping of layouts by id." );
}
+
+ return layout;
}
public ArtifactHandlerManager getArtifactHandlerManager()
Modified: maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/artifact/tools/repository/ArtifactRepositorySource.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/artifact/tools/repository/ArtifactRepositorySource.java?view=diff&rev=453656&r1=453655&r2=453656
==============================================================================
--- maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/artifact/tools/repository/ArtifactRepositorySource.java (original)
+++ maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/artifact/tools/repository/ArtifactRepositorySource.java Fri Oct 6 09:11:39 2006
@@ -13,6 +13,4 @@
List getArtifactRepositories();
- ArtifactRepository getMirrorRepository( ArtifactRepository baseRepository );
-
}
Modified: maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/artifact/tools/repository/MavenArtifactRepositorySource.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/artifact/tools/repository/MavenArtifactRepositorySource.java?view=diff&rev=453656&r1=453655&r2=453656
==============================================================================
--- maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/artifact/tools/repository/MavenArtifactRepositorySource.java (original)
+++ maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/artifact/tools/repository/MavenArtifactRepositorySource.java Fri Oct 6 09:11:39 2006
@@ -97,21 +97,9 @@
repoUrls.add( repo.getUrl() );
}
- return repos;
- }
-
- public ArtifactRepository getMirrorRepository( ArtifactRepository baseRepository )
- {
- Mirror mirror = settings.getMirrorOf( baseRepository.getId() );
-
- ArtifactRepository mirrored = null;
-
- if ( mirror != null )
- {
- mirrored = repositoryTool.buildMirrorRepository( baseRepository, mirror, componentAccess );
- }
+ repos = constructMirroredRepositoryList( repos );
- return mirrored;
+ return repos;
}
public ArtifactRepository getLocalRepository()
@@ -127,4 +115,40 @@
return localRepository;
}
+ private List constructMirroredRepositoryList( List repositories )
+ {
+ List mirrorEnabled = new ArrayList( repositories.size() );
+
+ for ( Iterator it = repositories.iterator(); it.hasNext(); )
+ {
+ ArtifactRepository repository = (ArtifactRepository) it.next();
+
+ ArtifactRepository mirrorRepo = getMirrorRepository( repository );
+
+ if ( mirrorRepo == null )
+ {
+ mirrorEnabled.add( repository );
+ }
+ else
+ {
+ mirrorEnabled.add( mirrorRepo );
+ }
+ }
+
+ return mirrorEnabled;
+ }
+
+ private ArtifactRepository getMirrorRepository( ArtifactRepository baseRepository )
+ {
+ Mirror mirror = settings.getMirrorOf( baseRepository.getId() );
+
+ ArtifactRepository mirrored = null;
+
+ if ( mirror != null )
+ {
+ mirrored = repositoryTool.buildMirrorRepository( baseRepository, mirror, componentAccess );
+ }
+
+ return mirrored;
+ }
}
Modified: maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/artifact/tools/resolve/ArtifactResolutionTool.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/artifact/tools/resolve/ArtifactResolutionTool.java?view=diff&rev=453656&r1=453655&r2=453656
==============================================================================
--- maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/artifact/tools/resolve/ArtifactResolutionTool.java (original)
+++ maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/artifact/tools/resolve/ArtifactResolutionTool.java Fri Oct 6 09:11:39 2006
@@ -1,8 +1,6 @@
package org.apache.maven.artifact.tools.resolve;
-import java.util.ArrayList;
import java.util.Collections;
-import java.util.Iterator;
import java.util.List;
import org.apache.maven.artifact.Artifact;
@@ -43,10 +41,10 @@
{
Artifact artifact = query.createArtifact( artifactHandlerManager );
- List repositories = constructMirroredRepositoryList( repositorySource );
-
ArtifactRepository localRepository = repositorySource.getLocalRepository();
+ List repositories = repositorySource.getArtifactRepositories();
+
artifactResolver.resolve( artifact, repositories, localRepository );
MavenProject project = mavenProjectBuilder.buildFromRepository( artifact, Collections.EMPTY_LIST,
@@ -65,29 +63,5 @@
pomQuery.setType( "pom" );
return resolve( pomQuery, repositorySource );
- }
-
- private List constructMirroredRepositoryList( ArtifactRepositorySource repositorySource )
- {
- List repositories = repositorySource.getArtifactRepositories();
- List mirrorEnabled = new ArrayList( repositories.size() );
-
- for ( Iterator it = repositories.iterator(); it.hasNext(); )
- {
- ArtifactRepository repository = (ArtifactRepository) it.next();
-
- ArtifactRepository mirrorRepo = repositorySource.getMirrorRepository( repository );
-
- if ( mirrorRepo == null )
- {
- mirrorEnabled.add( repository );
- }
- else
- {
- mirrorEnabled.add( mirrorRepo );
- }
- }
-
- return mirrorEnabled;
}
}
Added: maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/artifact/tools/components/MavenComponentAccessTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/artifact/tools/components/MavenComponentAccessTest.java?view=auto&rev=453656
==============================================================================
--- maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/artifact/tools/components/MavenComponentAccessTest.java (added)
+++ maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/artifact/tools/components/MavenComponentAccessTest.java Fri Oct 6 09:11:39 2006
@@ -0,0 +1,94 @@
+package org.apache.maven.artifact.tools.components;
+
+import java.util.Collections;
+import java.util.Map;
+
+import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
+import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
+import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.artifact.tools.InvalidConfigurationException;
+import org.apache.maven.project.MavenProjectBuilder;
+import org.apache.maven.settings.MavenSettingsBuilder;
+import org.apache.maven.shared.tools.easymock.MockManager;
+import org.codehaus.plexus.PlexusContainerException;
+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+import org.codehaus.plexus.configuration.PlexusConfigurationResourceException;
+import org.codehaus.plexus.embed.Embedder;
+import org.codehaus.plexus.embed.PlexusEmbedder;
+import org.easymock.MockControl;
+
+import junit.framework.TestCase;
+
+public class MavenComponentAccessTest
+ extends TestCase
+{
+
+ public void testShouldConstructWithAllRequiredComponentInstancesAndLayoutMap()
+ throws InvalidConfigurationException
+ {
+ // public MavenComponentAccess( MavenSettingsBuilder settingsBuilder, ArtifactResolver artifactResolver,
+ // ArtifactHandlerManager artifactHandlerManager,
+ // ArtifactRepositoryFactory artifactRepositoryFactory,
+ // MavenProjectBuilder mavenProjectBuilder, Map artifactRepositoryLayoutsById )
+
+ MockManager mm = new MockManager();
+
+ MockControl msbControl = MockControl.createControl( MavenSettingsBuilder.class );
+ mm.add( msbControl );
+
+ MavenSettingsBuilder msb = (MavenSettingsBuilder) msbControl.getMock();
+
+ MockControl arControl = MockControl.createControl( ArtifactResolver.class );
+ mm.add( arControl );
+
+ ArtifactResolver ar = (ArtifactResolver) arControl.getMock();
+
+ MockControl ahmControl = MockControl.createControl( ArtifactHandlerManager.class );
+ mm.add( ahmControl );
+
+ ArtifactHandlerManager ahm = (ArtifactHandlerManager) ahmControl.getMock();
+
+ MockControl arfControl = MockControl.createControl( ArtifactRepositoryFactory.class );
+ mm.add( arfControl );
+
+ ArtifactRepositoryFactory arf = (ArtifactRepositoryFactory) arfControl.getMock();
+
+ MockControl mpbControl = MockControl.createControl( MavenProjectBuilder.class );
+ mm.add( mpbControl );
+
+ MavenProjectBuilder mpb = (MavenProjectBuilder) mpbControl.getMock();
+
+ MockControl arlControl = MockControl.createControl( ArtifactRepositoryLayout.class );
+ mm.add( arlControl );
+
+ ArtifactRepositoryLayout arl = (ArtifactRepositoryLayout) arlControl.getMock();
+
+ Map layouts = Collections.singletonMap( "test", arl );
+
+ MavenComponentAccess mca = new MavenComponentAccess( msb, ar, ahm, arf, mpb, layouts );
+
+ assertSame( arl, mca.getArtifactRepositoryLayout( "test" ) );
+ }
+
+ public void testShouldCreateSelfContainedAndLookupDefaultLayout()
+ throws ComponentAccessException, InvalidConfigurationException
+ {
+ MavenComponentAccess mca = MavenComponentAccess.createSelfContainedInstance();
+
+ assertNotNull( mca.getArtifactRepositoryLayout( "default" ) );
+ }
+
+ public void testShouldLookupInstanceFromExistingContainerAndFindDefaultLayout()
+ throws PlexusContainerException, PlexusConfigurationResourceException, ComponentLookupException,
+ InvalidConfigurationException
+ {
+ PlexusEmbedder embedder = new Embedder();
+ embedder.start();
+
+ MavenComponentAccess mca = (MavenComponentAccess) embedder.lookup( MavenComponentAccess.ROLE );
+
+ assertNotNull( mca.getArtifactRepositoryLayout( "default" ) );
+ }
+
+}
Propchange: maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/artifact/tools/components/MavenComponentAccessTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/artifact/tools/components/MavenComponentAccessTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"