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"


Reply via email to