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 2008/09/24 23:14:39 UTC

svn commit: r698739 [2/3] - in /maven/plugins/trunk/maven-assembly-plugin/src: it/projects/bugs/massembly-190/ it/projects/bugs/massembly-190/child-1/ it/projects/bugs/massembly-190/child-1/src/ it/projects/bugs/massembly-190/child-1/src/main/ it/proje...

Added: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/ResolutionManagementInfo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/ResolutionManagementInfo.java?rev=698739&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/ResolutionManagementInfo.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/ResolutionManagementInfo.java Wed Sep 24 14:14:38 2008
@@ -0,0 +1,100 @@
+package org.apache.maven.plugin.assembly.artifact;
+
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.artifact.filter.ScopeArtifactFilter;
+
+/**
+ * Helper class used to accumulate scopes and modules (with binaries included) 
+ * that are used in an assembly, for the purposes of creating an aggregated
+ * managed-version map with dependency version conflicts resolved.
+ * 
+ * @author jdcasey
+ */
+class ResolutionManagementInfo
+{
+    private boolean resolutionRequired;
+    
+    private ScopeArtifactFilter scopeFilter = new ScopeArtifactFilter();
+    
+    private boolean resolvedTransitively;
+    
+    private Set enabledProjects = new LinkedHashSet();
+    
+    ResolutionManagementInfo( MavenProject mainProject )
+    {
+        enabledProjects.add( mainProject );
+    }
+
+    boolean isResolutionRequired()
+    {
+        return resolutionRequired;
+    }
+
+    void setResolutionRequired( boolean resolutionRequired )
+    {
+        this.resolutionRequired = resolutionRequired;
+    }
+
+    boolean isResolvedTransitively()
+    {
+        return resolvedTransitively;
+    }
+
+    void setResolvedTransitively( boolean resolvedTransitively )
+    {
+        this.resolvedTransitively = resolvedTransitively;
+    }
+
+    ScopeArtifactFilter getScopeFilter()
+    {
+        return scopeFilter;
+    }
+    
+    void enableCompileScope()
+    {
+        scopeFilter.setIncludeCompileScope( true );
+        scopeFilter.setIncludeProvidedScope( true );
+        scopeFilter.setIncludeSystemScope( true );
+    }
+
+    void enableProvidedScope()
+    {
+        scopeFilter.setIncludeProvidedScope( true );
+    }
+
+    void enableRuntimeScope()
+    {
+        scopeFilter.setIncludeRuntimeScope( true );
+        scopeFilter.setIncludeCompileScope( true );
+    }
+
+    void enableTestScope()
+    {
+        scopeFilter.setIncludeTestScope( true );
+        scopeFilter.setIncludeCompileScope( true );
+        scopeFilter.setIncludeProvidedScope( true );
+        scopeFilter.setIncludeSystemScope( true );
+        scopeFilter.setIncludeRuntimeScope( true );
+    }
+
+    void enableSystemScope()
+    {
+        scopeFilter.setIncludeSystemScope( true );
+    }
+    
+    void enableProjectResolution( MavenProject project )
+    {
+        if ( !enabledProjects.contains( project ) )
+        {
+            enabledProjects.add( project );
+        }
+    }
+
+    Set getEnabledProjects()
+    {
+        return enabledProjects;
+    }
+}

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/ResolutionManagementInfo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java?rev=698739&r1=698738&r2=698739&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java Wed Sep 24 14:14:38 2008
@@ -74,50 +74,57 @@
         return distributionName;
     }
 
+    /**
+     * @deprecated Use {@link AssemblyFormatUtils#getOutputDirectory(String, MavenProject, MavenProject, String, AssemblerConfigurationSource)}
+     * instead.
+     */
+    public static String getOutputDirectory( String output, MavenProject mainProject, MavenProject artifactProject,
+                                             String finalName )
+        throws AssemblyFormattingException
+    {
+        return getOutputDirectory( output, mainProject, null, artifactProject, finalName, null );
+    }
+
     public static String getOutputDirectory( String output, MavenProject mainProject, MavenProject artifactProject,
                                              String finalName, AssemblerConfigurationSource configSource )
         throws AssemblyFormattingException
     {
-        return getOutputDirectory( output, mainProject, artifactProject, finalName, "artifact.", configSource );
+        return getOutputDirectory( output, mainProject, null, artifactProject, finalName, configSource );
     }
 
-    /*
+    /**
      * ORDER OF INTERPOLATION PRECEDENCE:
-     *
-     * 1. Support for special expressions, like ${finalName} (use the assembly plugin configuration not the build config)
-     * 2. prefixed with artifactProjectRefName ("module." or "artifact.", normally).
-     *    A. MavenProject instance for artifact
-     * 3. prefixed with "artifact.", if artifactProjectRefName != "artifact."
-     *    A. MavenProject instance for artifact
-     * 4. user-defined properties from the command line
-     * 5. prefixed with "pom." or "project.", or no prefix at all
-     *    A. MavenProject instance from current build
-     * 6. properties from main project
-     * 7. system properties, from the MavenSession instance (to support IDEs)
-     * 8. environment variables.
-     * 
+     * <ol>
+     * <li> Support for special expressions, like ${finalName} (use the assembly plugin configuration not the build config)</li>
+     * <li> prefixed with "module." if moduleProject is non-null
+     *    <ol><li>MavenProject instance for module being assembled</li></ol>
+     * </li>
+     * <li>prefixed with "artifact." if artifactProject is non-null
+     *    <ol><li>MavenProject instance for artifact</li></ol>
+     * </li>
+     * <li>user-defined properties from the command line</li>
+     * <li>prefixed with "pom." or "project.", or no prefix at all
+     *    <ol><li>MavenProject instance from current build</li></ol>
+     * </li>
+     * <li>properties from main project</li>
+     * <li>system properties, from the MavenSession instance (to support IDEs)</li>
+     * <li>environment variables.</li>
+     * </ol>
      */
-    public static String getOutputDirectory( String output, MavenProject mainProject, MavenProject artifactProject,
-                                             String finalName, String artifactProjectRefName,
+    public static String getOutputDirectory( String output, 
+                                             MavenProject mainProject, 
+                                             MavenProject moduleProject,
+                                             MavenProject artifactProject,
+                                             String finalName,
                                              AssemblerConfigurationSource configSource )
         throws AssemblyFormattingException
     {
-        if ( artifactProjectRefName == null )
-        {
-            artifactProjectRefName = "artifact.";
-        }
-
         String value = output;
         if ( value == null )
         {
             value = "";
         }
 
-        if ( ( artifactProjectRefName != null ) && !artifactProjectRefName.endsWith( "." ) )
-        {
-            artifactProjectRefName += ".";
-        }
-
         StringSearchInterpolator interpolator = new StringSearchInterpolator();
 
         Properties specialExpressionOverrides = new Properties();
@@ -130,37 +137,42 @@
 
         // 1
         interpolator.addValueSource( new PropertiesBasedValueSource( specialExpressionOverrides ) );
-
-        if ( artifactProject != null )
+        
+        if ( moduleProject != null )
         {
             // 2
-            interpolator.addValueSource( new PrefixedObjectValueSource( artifactProjectRefName, artifactProject ) );
-
-            if ( !"artifact.".equals( artifactProjectRefName ) )
-            {
-                // 3
-                interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifactProject ) );
-            }
+            interpolator.addValueSource( new PrefixedObjectValueSource( "module.", moduleProject ) );
         }
 
-        MavenSession session = configSource.getMavenSession();
+        if ( artifactProject != null )
+        {
+            // 3
+            interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifactProject ) );
+        }
 
-        if ( session != null )
+        MavenSession session = null;
+        
+        if ( configSource != null )
         {
-            Properties userProperties = null;
-            try
-            {
-                userProperties = session.getExecutionProperties();
-            }
-            catch ( NoSuchMethodError nsmer )
-            {
-                // OK, so user is using Maven <= 2.0.8. No big deal.
-            }
-            
-            if ( userProperties != null )
+            session = configSource.getMavenSession();
+
+            if ( session != null )
             {
-                // 4
-                interpolator.addValueSource( new PropertiesBasedValueSource( userProperties ) );
+                Properties userProperties = null;
+                try
+                {
+                    userProperties = session.getExecutionProperties();
+                }
+                catch ( NoSuchMethodError nsmer )
+                {
+                    // OK, so user is using Maven <= 2.0.8. No big deal.
+                }
+                
+                if ( userProperties != null )
+                {
+                    // 4
+                    interpolator.addValueSource( new PropertiesBasedValueSource( userProperties ) );
+                }
             }
         }
         
@@ -225,89 +237,97 @@
         return value;
     }
 
+    /**
+     * @deprecated Use {@link AssemblyFormatUtils#evaluateFileNameMapping(String, Artifact, MavenProject, MavenProject, AssemblerConfigurationSource)}
+     * instead.
+     */
+    public static String evaluateFileNameMapping( String expression, Artifact artifact, MavenProject mainProject,
+                                                  MavenProject artifactProject )
+        throws AssemblyFormattingException
+    {
+        return evaluateFileNameMapping( expression, artifact, mainProject, null, null, artifactProject, null );
+    }
+
     public static String evaluateFileNameMapping( String expression, Artifact artifact, MavenProject mainProject,
                                                   MavenProject artifactProject,
                                                   AssemblerConfigurationSource configSource )
         throws AssemblyFormattingException
     {
-        return evaluateFileNameMapping( expression, artifact, mainProject, artifactProject, "artifact.", configSource );
+        return evaluateFileNameMapping( expression, artifact, mainProject, null, null, artifactProject, configSource );
     }
 
-    /*
+    /**
      * ORDER OF INTERPOLATION PRECEDENCE:
-     *
-     * 1. prefixed with artifactProjectRefName, from parameters list above.
-     *    A. Artifact instance
-     *    B. ArtifactHandler instance for artifact
-     *    C. MavenProject instance for artifact
-     * 2. prefixed with "artifact.", if artifactProjectRefName != "artifact."
-     *    A. Artifact instance
-     *    B. ArtifactHandler instance for artifact
-     *    C. MavenProject instance for artifact
-     * 3. prefixed with "pom." or "project."
-     *    A. MavenProject instance from current build
-     * 4. no prefix, using main project instance
-     *    A. MavenProject instance from current build
-     * 5. Support for special expressions, like ${dashClassifier?}
-     * 6. user-defined properties from the command line
-     * 7. properties from main project
-     * 8. system properties, from the MavenSession instance (to support IDEs)
-     * 9. environment variables.
-     *
+     * <ol>
+     * <li>prefixed with "module.", if moduleProject != null
+     *    <ol>
+     *    <li>Artifact instance for module, if moduleArtifact != null</li>
+     *    <li>ArtifactHandler instance for module, if moduleArtifact != null</li>
+     *    <li>MavenProject instance for module</li>
+     *    </ol>
+     * </li>
+     * <li>prefixed with "artifact."
+     *    <ol>
+     *    <li>Artifact instance</li>
+     *    <li>ArtifactHandler instance for artifact</li>
+     *    <li>MavenProject instance for artifact</li>
+     *    </ol>
+     * </li>
+     * <li>prefixed with "pom." or "project."
+     *    <ol><li>MavenProject instance from current build</li></ol>
+     * </li>
+     * <li>no prefix, using main project instance
+     *    <ol><li>MavenProject instance from current build</li></ol>
+     * </li>
+     * <li>Support for special expressions, like ${dashClassifier?}</li>
+     * <li>user-defined properties from the command line</li>
+     * <li>properties from main project</li>
+     * <li>system properties, from the MavenSession instance (to support IDEs)</li>
+     * <li>environment variables.</li>
+     * </ol>
      */
     public static String evaluateFileNameMapping( String expression, Artifact artifact, MavenProject mainProject,
-                                                  MavenProject artifactProject, String artifactProjectRefName,
+                                                  MavenProject moduleProject,
+                                                  Artifact moduleArtifact,
+                                                  MavenProject artifactProject, 
                                                   AssemblerConfigurationSource configSource )
         throws AssemblyFormattingException
     {
         String value = expression;
 
-        if ( artifactProjectRefName == null )
-        {
-            artifactProjectRefName = "artifact.";
-        }
-
-        if ( !artifactProjectRefName.endsWith( "." ) )
-        {
-            artifactProjectRefName += ".";
-        }
-
         // TODO: This is BAD! Accessors SHOULD NOT change the behavior of the object.
         // [jdcasey; 16-Aug-1007] This is fixed in SVN, just waiting for it to pass out of legacy.
         artifact.isSnapshot();
 
         StringSearchInterpolator interpolator = new StringSearchInterpolator();
 
-        // 1A
-        interpolator.addValueSource( new PrefixedObjectValueSource( artifactProjectRefName, artifact ) );
-
-        // 1B
-        interpolator.addValueSource( new PrefixedObjectValueSource( artifactProjectRefName, artifact.getArtifactHandler() ) );
-        interpolator.addValueSource( new PrefixedObjectValueSource( artifactProjectRefName
-                                                                         + ( artifactProjectRefName.endsWith( "." )
-                                                                                         ? "" : "." ) + "handler.",
-                                                                         artifact.getArtifactHandler() ) );
-
+        if ( moduleArtifact != null )
+        {
+            // 1A
+            interpolator.addValueSource( new PrefixedObjectValueSource( "module.", moduleArtifact ) );
+            
+            // 1B
+            interpolator.addValueSource( new PrefixedObjectValueSource( "module.", moduleArtifact.getArtifactHandler() ) );
+            interpolator.addValueSource( new PrefixedObjectValueSource( "module.handler.", moduleArtifact.getArtifactHandler() ) );
+        }
+        
         // 1C
-        if ( artifactProject != null )
+        if ( moduleProject != null )
         {
-            interpolator.addValueSource( new PrefixedObjectValueSource( artifactProjectRefName, artifactProject ) );
+            interpolator.addValueSource( new PrefixedObjectValueSource( "module.", moduleProject ) );
         }
 
-        if ( !"artifact.".equals( artifactProjectRefName ) )
-        {
-            // 2A
-            interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifact ) );
+        // 2A
+        interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifact ) );
 
-            // 2B
-            interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifact.getArtifactHandler() ) );
-            interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.handler.", artifact.getArtifactHandler() ) );
+        // 2B
+        interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifact.getArtifactHandler() ) );
+        interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.handler.", artifact.getArtifactHandler() ) );
 
-            // 2C
-            if ( artifactProject != null )
-            {
-                interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifactProject ) );
-            }
+        // 2C
+        if ( artifactProject != null )
+        {
+            interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifactProject ) );
         }
 
         if ( mainProject != null )
@@ -334,24 +354,28 @@
         // 5
         interpolator.addValueSource( new PropertiesBasedValueSource( specialRules ) );
 
-        MavenSession session = configSource.getMavenSession();
-
-        if ( session != null )
+        MavenSession session = null;
+        if ( configSource != null )
         {
-            Properties userProperties = null;
-            try
-            {
-                userProperties = session.getExecutionProperties();
-            }
-            catch ( NoSuchMethodError nsmer )
-            {
-                // OK, so user is using Maven <= 2.0.8. No big deal.
-            }
-            
-            if ( userProperties != null )
+            session = configSource.getMavenSession();
+
+            if ( session != null )
             {
-                // 6
-                interpolator.addValueSource( new PropertiesBasedValueSource( userProperties ) );
+                Properties userProperties = null;
+                try
+                {
+                    userProperties = session.getExecutionProperties();
+                }
+                catch ( NoSuchMethodError nsmer )
+                {
+                    // OK, so user is using Maven <= 2.0.8. No big deal.
+                }
+                
+                if ( userProperties != null )
+                {
+                    // 6
+                    interpolator.addValueSource( new PropertiesBasedValueSource( userProperties ) );
+                }
             }
         }
         

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java?rev=698739&r1=698738&r2=698739&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java Wed Sep 24 14:14:38 2008
@@ -27,6 +27,7 @@
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -46,9 +47,9 @@
     {
         Set singleParentSet = Collections.singleton( project );
 
-        Set moduleCandidates = new HashSet( reactorProjects );
+        Set moduleCandidates = new LinkedHashSet( reactorProjects );
 
-        Set modules = new HashSet();
+        Set modules = new LinkedHashSet();
 
         // we temporarily add the master project to the modules set, since this
         // set is pulling double duty as a set of

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java?rev=698739&r1=698738&r2=698739&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java Wed Sep 24 14:14:38 2008
@@ -19,15 +19,19 @@
  * under the License.
  */
 
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
 import org.apache.maven.model.Model;
 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugin.assembly.InvalidAssemblerConfigurationException;
 import org.apache.maven.plugin.assembly.archive.phase.AssemblyArchiverPhase;
+import org.apache.maven.plugin.assembly.artifact.DependencyResolver;
 import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
 import org.apache.maven.plugin.assembly.model.Assembly;
 import org.apache.maven.plugin.assembly.testutils.MockManager;
 import org.apache.maven.plugin.assembly.testutils.TestFileManager;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.artifact.InvalidDependencyVersionException;
 import org.codehaus.plexus.PlexusTestCase;
 import org.codehaus.plexus.archiver.ArchiveFinalizer;
 import org.codehaus.plexus.archiver.ArchivedFileSet;
@@ -61,7 +65,6 @@
 import java.util.Set;
 
 import junit.framework.Assert;
-import junit.framework.TestCase;
 
 public class DefaultAssemblyArchiverTest
     extends PlexusTestCase
@@ -92,7 +95,7 @@
 
         AssemblyArchiverPhase phase = (AssemblyArchiverPhase) phaseControl.getMock();
 
-        phase.execute( null, null, null );
+        phase.execute( null, null, null, null );
         phaseControl.setMatcher( MockControl.ALWAYS_MATCHER );
 
         MockControl csControl = MockControl.createControl( AssemblerConfigurationSource.class );
@@ -526,7 +529,7 @@
     private DefaultAssemblyArchiver createSubject( MockAndControlForAssemblyArchiver macMgr, List phases, Logger logger )
     {
         DefaultAssemblyArchiver subject =
-            new DefaultAssemblyArchiver( macMgr.archiverManager, macMgr.collectionManager, phases );
+            new DefaultAssemblyArchiver( macMgr.archiverManager, macMgr.collectionManager, macMgr.resolver, phases );
         
         subject.setContainer( getContainer() );
 
@@ -553,6 +556,10 @@
         MockControl collectionManagerControl;
 
         ActiveCollectionManager collectionManager;
+        
+        MockControl resolverControl;
+        
+        DependencyResolver resolver;
 
         private final MockManager mm;
 
@@ -568,6 +575,31 @@
             mm.add( collectionManagerControl );
 
             collectionManager = (ActiveCollectionManager) collectionManagerControl.getMock();
+            
+            resolverControl = MockControl.createControl( DependencyResolver.class );
+            mm.add( resolverControl );
+            
+            resolver = (DependencyResolver) resolverControl.getMock();
+            
+            try
+            {
+                resolver.buildManagedVersionMap( null, null );
+            }
+            catch ( ArtifactResolutionException e )
+            {
+            }
+            catch ( ArchiveCreationException e )
+            {
+            }
+            catch ( InvalidVersionSpecificationException e )
+            {
+            }
+            catch ( InvalidDependencyVersionException e )
+            {
+            }
+            
+            resolverControl.setMatcher( MockControl.ALWAYS_MATCHER );
+            resolverControl.setReturnValue( Collections.EMPTY_MAP, MockControl.ZERO_OR_MORE );
         }
 
         void expectGetDestFile( File file )

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java?rev=698739&r1=698738&r2=698739&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java Wed Sep 24 14:14:38 2008
@@ -20,6 +20,7 @@
  */
 
 import org.apache.maven.model.Model;
+import org.apache.maven.plugin.assembly.DefaultAssemblyContext;
 import org.apache.maven.plugin.assembly.InvalidAssemblerConfigurationException;
 import org.apache.maven.plugin.assembly.archive.ArchiveCreationException;
 import org.apache.maven.plugin.assembly.archive.task.testutils.ArtifactMock;
@@ -61,6 +62,8 @@
 {
 
     private TestFileManager fileManager = new TestFileManager( "module-set-phase.test.", "" );
+    
+    private Logger logger = new ConsoleLogger( Logger.LEVEL_INFO, "test" );
 
     public void tearDown()
         throws IOException
@@ -140,7 +143,7 @@
         File basedir = fileManager.createTempDir();
 
         MavenProject artifactProject = new MavenProject( new Model() );
-
+        
         artifactProject.setFile( new File( basedir, "pom.xml" ) );
 
         ArtifactMock artifactMock = new ArtifactMock( mm, "group", "artifact", "version", "jar", false );
@@ -309,7 +312,7 @@
     public void testAddModuleBinaries_ShouldReturnImmediatelyWhenBinariesIsNull()
         throws ArchiveCreationException, AssemblyFormattingException, InvalidAssemblerConfigurationException
     {
-        createPhase( null, null ).addModuleBinaries( null, null, null, null );
+        createPhase( null, null ).addModuleBinaries( null, null, null, null, null );
     }
 
     public void testAddModuleBinaries_ShouldFilterPomModule()
@@ -339,7 +342,8 @@
 
         createPhase( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ), null ).addModuleBinaries( binaries, projects,
                                                                                                 macTask.archiver,
-                                                                                                macTask.configSource );
+                                                                                                macTask.configSource,
+                                                                                                new DefaultAssemblyContext() );
 
         mm.verifyAll();
     }
@@ -377,7 +381,8 @@
 
         Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
 
-        createPhase( logger, null ).addModuleBinaries( binaries, projects, macTask.archiver, macTask.configSource );
+        createPhase( logger, null ).addModuleBinaries( binaries, projects, macTask.archiver, macTask.configSource,
+                                                       new DefaultAssemblyContext() );
 
         mm.verifyAll();
     }
@@ -411,7 +416,8 @@
 
         try
         {
-            createPhase( logger, null ).addModuleBinaries( binaries, projects, macTask.archiver, macTask.configSource );
+            createPhase( logger, null ).addModuleBinaries( binaries, projects, macTask.archiver, macTask.configSource,
+                                                           new DefaultAssemblyContext() );
 
             fail( "Should throw an invalid configuration exception because of module with missing attachment." );
         }
@@ -455,7 +461,8 @@
 
         Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
 
-        createPhase( logger, null ).addModuleBinaries( binaries, projects, macTask.archiver, macTask.configSource );
+        createPhase( logger, null ).addModuleBinaries( binaries, projects, macTask.archiver, macTask.configSource,
+                                                       new DefaultAssemblyContext() );
 
         mm.verifyAll();
     }
@@ -515,7 +522,8 @@
 
         ModuleSetAssemblyPhase phase = createPhase( overrideLogger, macTask );
 
-        phase.addModuleBinaries( binaries, projects, macTask.archiver, macTask.configSource );
+        phase.addModuleBinaries( binaries, projects, macTask.archiver, macTask.configSource,
+                                 new DefaultAssemblyContext() );
 
         mm.verifyAll();
     }
@@ -571,7 +579,8 @@
 
         ModuleSetAssemblyPhase phase = createPhase( overrideLogger, macTask );
 
-        phase.addModuleBinaries( binaries, projects, macTask.archiver, macTask.configSource );
+        phase.addModuleBinaries( binaries, projects, macTask.archiver, macTask.configSource,
+                                 new DefaultAssemblyContext() );
 
         mm.verifyAll();
     }
@@ -746,11 +755,11 @@
         macTask.expectGetReactorProjects( projects );
 
         ModuleSet moduleSet = new ModuleSet();
+        moduleSet.setIncludeSubModules( true );
 
         mm.replayAll();
 
-        Set moduleProjects = createPhase( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ), macTask )
-            .getModuleProjects( moduleSet, macTask.configSource, true );
+        Set moduleProjects = ModuleSetAssemblyPhase.getModuleProjects( moduleSet, macTask.configSource, logger );
 
         assertTrue( moduleProjects.isEmpty() );
 
@@ -775,11 +784,11 @@
         macTask.expectGetReactorProjects( projects );
 
         ModuleSet moduleSet = new ModuleSet();
+        moduleSet.setIncludeSubModules( true );
 
         mm.replayAll();
 
-        Set moduleProjects = createPhase( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ), macTask )
-            .getModuleProjects( moduleSet, macTask.configSource, true );
+        Set moduleProjects = ModuleSetAssemblyPhase.getModuleProjects( moduleSet, macTask.configSource, logger );
 
         assertTrue( moduleProjects.isEmpty() );
 
@@ -804,11 +813,11 @@
         macTask.expectGetReactorProjects( projects );
 
         ModuleSet moduleSet = new ModuleSet();
+        moduleSet.setIncludeSubModules( true );
 
         mm.replayAll();
 
-        Set moduleProjects = createPhase( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ), macTask )
-            .getModuleProjects( moduleSet, macTask.configSource, true );
+        Set moduleProjects = ModuleSetAssemblyPhase.getModuleProjects( moduleSet, macTask.configSource, logger );
 
         assertFalse( moduleProjects.isEmpty() );
 
@@ -839,11 +848,11 @@
         macTask.expectGetReactorProjects( projects );
 
         ModuleSet moduleSet = new ModuleSet();
+        moduleSet.setIncludeSubModules( true );
 
         mm.replayAll();
 
-        Set moduleProjects = createPhase( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ), macTask )
-            .getModuleProjects( moduleSet, macTask.configSource, true );
+        Set moduleProjects = ModuleSetAssemblyPhase.getModuleProjects( moduleSet, macTask.configSource, logger );
 
         assertEquals( 2, moduleProjects.size() );
 
@@ -889,13 +898,13 @@
         macTask.expectGetReactorProjects( projects );
 
         ModuleSet moduleSet = new ModuleSet();
+        moduleSet.setIncludeSubModules( true );
 
         moduleSet.addExclude( "group:artifact2" );
 
         mm.replayAll();
 
-        Set moduleProjects = createPhase( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ), macTask )
-            .getModuleProjects( moduleSet, macTask.configSource, true );
+        Set moduleProjects = ModuleSetAssemblyPhase.getModuleProjects( moduleSet, macTask.configSource, logger );
 
         assertTrue( moduleProjects.isEmpty() );
 

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhaseTest.java?rev=698739&r1=698738&r2=698739&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhaseTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhaseTest.java Wed Sep 24 14:14:38 2008
@@ -24,6 +24,8 @@
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.model.Model;
 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
+import org.apache.maven.plugin.assembly.DefaultAssemblyContext;
+import org.apache.maven.plugin.assembly.InvalidAssemblerConfigurationException;
 import org.apache.maven.plugin.assembly.archive.ArchiveCreationException;
 import org.apache.maven.plugin.assembly.archive.phase.wrappers.RepoBuilderConfigSourceWrapper;
 import org.apache.maven.plugin.assembly.archive.phase.wrappers.RepoInfoWrapper;
@@ -67,7 +69,7 @@
     }
 
     public void testExecute_ShouldNotIncludeRepositoryIfNonSpecifiedInAssembly()
-        throws ArchiveCreationException, AssemblyFormattingException
+        throws ArchiveCreationException, AssemblyFormattingException, InvalidAssemblerConfigurationException
     {
         MockManager mm = new MockManager();
 
@@ -88,13 +90,14 @@
 
         createPhase( macRepo.repositoryAssembler, macResolver.dependencyResolver,
                      new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ).execute( assembly, macArchiver.archiver,
-                                                                                macCS.configSource );
+                                                                                macCS.configSource,
+                                                                                new DefaultAssemblyContext() );
 
         mm.verifyAll();
     }
 
     public void testExecute_ShouldIncludeOneRepository()
-        throws ArchiveCreationException, AssemblyFormattingException
+        throws ArchiveCreationException, AssemblyFormattingException, InvalidAssemblerConfigurationException
     {
         MockManager mm = new MockManager();
 
@@ -138,7 +141,8 @@
 
         createPhase( macRepo.repositoryAssembler, macResolver.dependencyResolver,
                      new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ).execute( assembly, macArchiver.archiver,
-                                                                                macCS.configSource );
+                                                                                macCS.configSource,
+                                                                                new DefaultAssemblyContext() );
 
         mm.verifyAll();
     }
@@ -299,7 +303,7 @@
         {
             try
             {
-                dependencyResolver.resolveDependencies( null, null, null, null, true );
+                dependencyResolver.resolveDependencies( null, null, null, null, null, true );
                 dependencyResolverCtl.setMatcher( MockControl.ALWAYS_MATCHER );
                 dependencyResolverCtl.setReturnValue( resolvedArtifacts );
             }
@@ -349,19 +353,4 @@
         }
     }
 
-    private final class MockAndControlForLogger
-    {
-        Logger logger;
-
-        MockControl control;
-
-        public MockAndControlForLogger( MockManager mockManager )
-        {
-            control = MockControl.createControl( Logger.class );
-            mockManager.add( control );
-
-            logger = (Logger) control.getMock();
-        }
-    }
-
 }

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java?rev=698739&r1=698738&r2=698739&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java Wed Sep 24 14:14:38 2008
@@ -113,7 +113,7 @@
         Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
 
         AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( ds ),
-                                                                depProject, macTask.projectBuilder,
+                                                                depProject, Collections.EMPTY_MAP, macTask.projectBuilder,
                                                                 macTask.dependencyResolver, logger );
 
         task.addDependencySet( ds, macTask.archiver, macTask.configSource );
@@ -141,7 +141,7 @@
         Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
 
         AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( ds ),
-                                                                project, macTask.projectBuilder,
+                                                                project, Collections.EMPTY_MAP, macTask.projectBuilder,
                                                                 macTask.dependencyResolver, logger );
 
         task.addDependencySet( ds, null, macTask.configSource );
@@ -193,7 +193,7 @@
         Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
 
         AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( ds ),
-                                                                project, macTask.projectBuilder,
+                                                                project, Collections.EMPTY_MAP, macTask.projectBuilder,
                                                                 macTask.dependencyResolver, logger );
 
         task.addDependencySet( ds, macTask.archiver, macTask.configSource );
@@ -266,7 +266,7 @@
         Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
 
         AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( ds ),
-                                                                project, macTask.projectBuilder,
+                                                                project, Collections.EMPTY_MAP, macTask.projectBuilder,
                                                                 macTask.dependencyResolver, logger );
 
         mockManager.replayAll();
@@ -300,7 +300,7 @@
 
         AddDependencySetsTask task = new AddDependencySetsTask(
                                                                 Collections.singletonList( dependencySet ),
-                                                                project, macTask.projectBuilder,
+                                                                project, Collections.EMPTY_MAP, macTask.projectBuilder,
                                                                 macTask.dependencyResolver, logger );
 
         Set result = task.resolveDependencyArtifacts( dependencySet, macTask.configSource );
@@ -355,7 +355,7 @@
 
         AddDependencySetsTask task = new AddDependencySetsTask(
                                                                 Collections.singletonList( dependencySet ),
-                                                                project, null,
+                                                                project, Collections.EMPTY_MAP, null,
                                                                 macTask.dependencyResolver, logger );
 
         Set result = task.resolveDependencyArtifacts( dependencySet, macTask.configSource );
@@ -409,7 +409,7 @@
 
         AddDependencySetsTask task = new AddDependencySetsTask(
                                                                 Collections.singletonList( dependencySet ),
-                                                                project, null,
+                                                                project, Collections.EMPTY_MAP, null,
                                                                 macTask.dependencyResolver, logger );
 
         Set result = task.resolveDependencyArtifacts( dependencySet, macTask.configSource );

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java?rev=698739&r1=698738&r2=698739&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java Wed Sep 24 14:14:38 2008
@@ -224,7 +224,7 @@
     {
         try
         {
-            dependencyResolver.resolveDependencies( null, null, null, null, true );
+            dependencyResolver.resolveDependencies( null, null, null, null, null, true );
         }
         catch ( ArtifactResolutionException e )
         {

Added: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolverTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolverTest.java?rev=698739&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolverTest.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolverTest.java Wed Sep 24 14:14:38 2008
@@ -0,0 +1,631 @@
+package org.apache.maven.plugin.assembly.artifact;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
+import org.apache.maven.artifact.metadata.ResolutionGroup;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
+import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.artifact.resolver.ArtifactCollector;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
+import org.apache.maven.model.Dependency;
+import org.apache.maven.model.DependencyManagement;
+import org.apache.maven.model.Model;
+import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
+import org.apache.maven.plugin.assembly.archive.ArchiveCreationException;
+import org.apache.maven.plugin.assembly.model.Assembly;
+import org.apache.maven.plugin.assembly.model.DependencySet;
+import org.apache.maven.plugin.assembly.model.ModuleBinaries;
+import org.apache.maven.plugin.assembly.model.ModuleSet;
+import org.apache.maven.plugin.assembly.model.Repository;
+import org.apache.maven.plugin.assembly.testutils.MockManager;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.artifact.InvalidDependencyVersionException;
+import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.logging.Logger;
+import org.codehaus.plexus.logging.console.ConsoleLogger;
+import org.easymock.ArgumentsMatcher;
+import org.easymock.MockControl;
+
+public class DefaultDependencyResolverTest
+    extends PlexusTestCase
+{
+    
+    private ArtifactFactory factory;
+    
+    private ArtifactRepositoryFactory repoFactory;
+    
+    private ArtifactRepositoryLayout layout;
+    
+    private ArtifactCollector collector;
+    
+    public void setUp()
+        throws Exception
+    {
+        super.setUp();
+        
+        factory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
+        repoFactory = (ArtifactRepositoryFactory) lookup( ArtifactRepositoryFactory.ROLE );
+        layout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, "default" );
+        
+        collector = (ArtifactCollector) lookup( ArtifactCollector.class.getName() );
+    }
+    
+    public void test_getDependencySetResolutionRequirements()
+    {
+        List depSets = new ArrayList();
+        
+        DependencySet ds1 = new DependencySet();
+        ds1.setScope( Artifact.SCOPE_COMPILE );
+        ds1.setUseTransitiveDependencies( false );
+        
+        depSets.add( ds1 );
+        
+        DependencySet ds2 = new DependencySet();
+        ds2.setScope( Artifact.SCOPE_SYSTEM );
+        ds2.setUseTransitiveDependencies( false );
+        
+        depSets.add( ds2 );
+        
+        ResolutionManagementInfo info = new ResolutionManagementInfo( new MavenProject( new Model() ) );
+        
+        new DefaultDependencyResolver().getDependencySetResolutionRequirements( depSets, info );
+        
+        assertTrue( info.isResolutionRequired() );
+        assertFalse( info.isResolvedTransitively() );
+        
+        assertTrue( info.getScopeFilter().isIncludeCompileScope() );
+        assertTrue( info.getScopeFilter().isIncludeSystemScope() );
+        
+        assertTrue( info.getScopeFilter().isIncludeProvidedScope() );
+        
+        assertFalse( info.getScopeFilter().isIncludeRuntimeScope() );
+        assertFalse( info.getScopeFilter().isIncludeTestScope() );
+    }
+    
+    public void test_getModuleSetResolutionRequirements()
+        throws ArchiveCreationException
+    {
+        MockManager mm = new MockManager();
+        
+        MockControl csControl = MockControl.createControl( AssemblerConfigurationSource.class );
+        mm.add( csControl );
+        
+        AssemblerConfigurationSource cs = (AssemblerConfigurationSource) csControl.getMock();
+        
+        File rootDir = new File( "root" );
+        MavenProject project = createMavenProject( "main-group", "main-artifact", "1", rootDir );
+        
+        File module1Dir = new File( rootDir, "module-1" );
+        MavenProject module1 = createMavenProject( "main-group", "module-1", "1", module1Dir );
+        MavenProject module1a = createMavenProject( "group1", "module-1a", "1", new File( module1Dir, "module-1a" ) );
+        MavenProject module1b = createMavenProject( "group1.b", "module-1b", "1", new File( module1Dir, "module-1b" ) );
+        
+        module1.getModel().addModule( module1a.getArtifactId() );
+        module1.getModel().addModule( module1b.getArtifactId() );
+        
+        File module2Dir = new File( rootDir, "module-2" );
+        MavenProject module2 = createMavenProject( "main-group", "module-2", "1", module2Dir );
+        MavenProject module2a = createMavenProject( "main-group", "module-2a", "1", new File( module2Dir, "module-2a" ) );
+        
+        module2.getModel().addModule( module2a.getArtifactId() );
+        
+        project.getModel().addModule( module1.getArtifactId() );
+        project.getModel().addModule( module2.getArtifactId() );
+        
+        List allProjects = new ArrayList();
+        allProjects.add( project );
+        allProjects.add( module1 );
+        allProjects.add( module1a );
+        allProjects.add( module1b );
+        allProjects.add( module2 );
+        allProjects.add( module2a );
+        
+        cs.getReactorProjects();
+        csControl.setReturnValue( allProjects, MockControl.ZERO_OR_MORE );
+        
+        cs.getProject();
+        csControl.setReturnValue( project, MockControl.ZERO_OR_MORE );
+        
+        ResolutionManagementInfo info = new ResolutionManagementInfo( project );
+        
+        List moduleSets = new ArrayList();
+        
+        {
+            ModuleSet ms = new ModuleSet();
+            ms.addInclude( "*module1*" );
+            ms.setIncludeSubModules( false );
+            
+            ModuleBinaries mb = new ModuleBinaries();
+            
+            DependencySet ds = new DependencySet();
+            ds.setScope( Artifact.SCOPE_COMPILE );
+            
+            mb.addDependencySet( ds );
+            ms.setBinaries( mb );
+            moduleSets.add( ms );
+        }
+        
+        {
+            ModuleSet ms = new ModuleSet();
+            ms.addInclude( "main-group:*" );
+            ms.setIncludeSubModules( true );
+            
+            ModuleBinaries mb = new ModuleBinaries();
+            
+            DependencySet ds = new DependencySet();
+            ds.setScope( Artifact.SCOPE_TEST );
+            
+            mb.addDependencySet( ds );
+            ms.setBinaries( mb );
+            moduleSets.add( ms );
+        }
+        
+        mm.replayAll();
+        
+        DefaultDependencyResolver resolver = new DefaultDependencyResolver();
+        resolver.enableLogging( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+        
+        resolver.getModuleSetResolutionRequirements( moduleSets, info, cs );
+        
+        assertTrue( info.isResolutionRequired() );
+        
+        Set enabledProjects = info.getEnabledProjects();
+        assertTrue( enabledProjects.contains( project ) );
+        
+        assertTrue( enabledProjects.contains( module1 ) );
+        
+        // these should be excluded since sub-modules are not traversable
+        assertFalse( enabledProjects.contains( module1a ) );
+        assertFalse( enabledProjects.contains( module1b ) );
+        
+        assertTrue( enabledProjects.contains( module2 ) );
+        assertTrue( enabledProjects.contains( module2a ) );
+        
+        // these are the two we directly set above.
+        assertTrue( info.getScopeFilter().isIncludeTestScope() );
+        assertTrue( info.getScopeFilter().isIncludeCompileScope() );
+        
+        // this combination should be implied by the two direct scopes set above.
+        assertTrue( info.getScopeFilter().isIncludeRuntimeScope() );
+        assertTrue( info.getScopeFilter().isIncludeProvidedScope() );
+        assertTrue( info.getScopeFilter().isIncludeSystemScope() );
+        
+        mm.verifyAll();
+    }
+
+    public void test_getRepositoryResolutionRequirements()
+    {
+        List repositories = new ArrayList();
+        
+        {
+            Repository r = new Repository();
+            r.setScope( Artifact.SCOPE_COMPILE );
+            repositories.add( r );
+        }
+        
+        {
+            Repository r = new Repository();
+            r.setScope( Artifact.SCOPE_SYSTEM );
+            repositories.add( r );
+        }
+        
+        ResolutionManagementInfo info = new ResolutionManagementInfo( new MavenProject( new Model() ) );
+        
+        new DefaultDependencyResolver().getRepositoryResolutionRequirements( repositories, info );
+        
+        assertTrue( info.isResolutionRequired() );
+        
+        assertTrue( info.getScopeFilter().isIncludeCompileScope() );
+        assertTrue( info.getScopeFilter().isIncludeSystemScope() );
+        
+        assertTrue( info.getScopeFilter().isIncludeProvidedScope() );
+        
+        assertFalse( info.getScopeFilter().isIncludeRuntimeScope() );
+        assertFalse( info.getScopeFilter().isIncludeTestScope() );
+    }
+    
+    public void test_getManagedVersionMap()
+        throws InvalidVersionSpecificationException
+    {
+        MavenProject project = createMavenProject( "group", "artifact", "1", new File( "base" ) );
+        
+        DependencyManagement dm = new DependencyManagement();
+        project.getModel().setDependencyManagement( dm );
+        
+        Dependency d1 = new Dependency();
+        d1.setGroupId( "group" );
+        d1.setArtifactId( "dep1" );
+        d1.setVersion( "2" );
+        d1.setScope( Artifact.SCOPE_PROVIDED );
+        
+        dm.addDependency( d1 );
+        
+        Dependency d2 = new Dependency();
+        d2.setGroupId( "group" );
+        d2.setArtifactId( "dep2" );
+        d2.setVersion( "2.1" );
+        
+        dm.addDependency( d2 );
+        
+        DefaultDependencyResolver resolver = new DefaultDependencyResolver();
+        resolver.setLogger( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+        resolver.setArtifactFactory( factory );
+        
+        Map managedVersionMap = resolver.getManagedVersionMap( project );
+        
+        Artifact a1 = (Artifact) managedVersionMap.get( d1.getManagementKey() );
+        assertNotNull( a1 );
+        assertEquals( d1.getVersion(), a1.getVersion() );
+        assertEquals( d1.getScope(), a1.getScope() );
+        
+        Artifact a2 = (Artifact) managedVersionMap.get( d2.getManagementKey() );
+        assertNotNull( a2 );
+        assertEquals( d2.getVersion(), a2.getVersion() );
+        assertNull( a2.getScope() );
+    }
+    
+    public void test_aggregateRemoteArtifactRepositories()
+    {
+        List externalRepos = new ArrayList();
+        
+        ArtifactRepository er1 = repoFactory.createArtifactRepository( "test.1", "http://test.com/path", layout, null, null );
+        externalRepos.add( er1 );
+        
+        ArtifactRepository er2 = repoFactory.createArtifactRepository( "test.2", "http://test2.com/path", layout, null, null );
+        externalRepos.add( er2 );
+        
+        List projectRepos = new ArrayList();
+        
+        ArtifactRepository pr1 = repoFactory.createArtifactRepository( "project.1", "http://test.com/project", layout, null, null );
+        projectRepos.add( pr1 );
+        
+        ArtifactRepository pr2 = repoFactory.createArtifactRepository( "project.2", "http://test2.com/path", layout, null, null );
+        projectRepos.add( pr2 );
+        
+        MavenProject project = createMavenProject( "group", "artifact", "1", new File( "base" ) );
+        project.setRemoteArtifactRepositories( projectRepos );
+        
+        List aggregated = new DefaultDependencyResolver().aggregateRemoteArtifactRepositories( externalRepos, project );
+        
+        assertRepositoryWithId( er1.getId(), aggregated, true );
+        assertRepositoryWithId( er2.getId(), aggregated, true );
+        assertRepositoryWithId( pr1.getId(), aggregated, true );
+        assertRepositoryWithId( pr2.getId(), aggregated, false );
+    }
+    
+    public void test_manageArtifact()
+    {
+        Artifact managed = factory.createArtifact( "group", "artifact", "1", Artifact.SCOPE_PROVIDED, "jar" );
+        
+        Artifact target =
+            factory.createArtifact( managed.getGroupId(), managed.getArtifactId(), "2", Artifact.SCOPE_COMPILE,
+                                    managed.getType() );
+
+        Artifact target2 =
+            factory.createArtifact( "other-group", managed.getArtifactId(), "2", Artifact.SCOPE_COMPILE,
+                                    managed.getType() );
+        
+        Map managedVersions = Collections.singletonMap( managed.getDependencyConflictId(), managed );
+
+        DefaultDependencyResolver resolver =
+            new DefaultDependencyResolver().setLogger( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+        
+        resolver.manageArtifact( target, managedVersions );
+        resolver.manageArtifact( target2, managedVersions );
+        
+        assertEquals( managed.getVersion(), target.getVersion() );
+        assertEquals( managed.getScope(), target.getScope() );
+        
+        assertEquals( "2", target2.getVersion() );
+        assertEquals( Artifact.SCOPE_COMPILE, target2.getScope() );
+    }
+    
+    public void test_buildManagedVersionMap_NonTransitiveResolution()
+        throws ArtifactResolutionException, ArchiveCreationException, InvalidVersionSpecificationException,
+        InvalidDependencyVersionException
+    {
+        Assembly assembly = new Assembly();
+        
+        DependencySet ds = new DependencySet();
+        ds.setScope( Artifact.SCOPE_PROVIDED );
+        ds.setUseTransitiveDependencies( false );
+        
+        assembly.addDependencySet( ds );
+        
+        ModuleSet ms = new ModuleSet();
+        ModuleBinaries mb = new ModuleBinaries();
+        ms.setBinaries( mb );
+        
+        DependencySet mds = new DependencySet();
+        mds.setScope( Artifact.SCOPE_PROVIDED );
+        mds.setUseTransitiveDependencies( false );
+        
+        mb.addDependencySet( mds );
+        
+        assembly.addModuleSet( ms );
+        
+        MavenProject project = createMavenProject( "group", "artifact", "1", new File( "base" ) );
+        
+        Dependency d1 = new Dependency();
+        d1.setGroupId( "group.dep" );
+        d1.setArtifactId( "dep1" );
+        d1.setVersion( "1" );
+        d1.setScope( Artifact.SCOPE_COMPILE );
+        
+        project.getModel().addDependency( d1 );
+        
+        Dependency d2 = new Dependency();
+        d2.setGroupId( "group.dep" );
+        d2.setArtifactId( "dep2" );
+        d2.setVersion( "1" );
+        d2.setScope( Artifact.SCOPE_PROVIDED );
+        
+        project.getModel().addDependency( d2 );
+        
+        Dependency d3 = new Dependency();
+        d3.setGroupId( "group.dep" );
+        d3.setArtifactId( "dep3" );
+        d3.setVersion( "1" );
+        d3.setScope( Artifact.SCOPE_PROVIDED );
+        
+        project.getModel().addDependency( d3 );
+        
+        MavenProject module = createMavenProject( "group", "module", "1", new File( "base/module" ) );
+        
+        project.getModel().addModule( module.getArtifactId() );
+        
+        Dependency md = new Dependency();
+        md.setGroupId( "group.dep" );
+        md.setArtifactId( "dep3" );
+        md.setVersion( "2" );
+        md.setScope( Artifact.SCOPE_PROVIDED );
+        
+        module.getModel().addDependency( md );
+        
+        List allProjects = new ArrayList();
+        allProjects.add( project );
+        allProjects.add( module );
+        
+        MockManager mm = new MockManager();
+        
+        MockControl csControl = MockControl.createControl( AssemblerConfigurationSource.class );
+        mm.add( csControl );
+        
+        AssemblerConfigurationSource cs = (AssemblerConfigurationSource) csControl.getMock();
+        
+        cs.getProject();
+        csControl.setReturnValue( project, MockControl.ZERO_OR_MORE );
+        
+        cs.getReactorProjects();
+        csControl.setReturnValue( allProjects, MockControl.ZERO_OR_MORE );
+        
+        cs.getRemoteRepositories();
+        csControl.setReturnValue( Collections.EMPTY_LIST, MockControl.ZERO_OR_MORE );
+        
+        mm.replayAll();
+        
+        DefaultDependencyResolver resolver = new DefaultDependencyResolver();
+        resolver.setArtifactFactory( factory );
+        resolver.setLogger( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+        
+        Map managedVersionMap = resolver.buildManagedVersionMap( assembly, cs );
+        
+        {
+            Dependency d = d1;
+            Artifact a = (Artifact) managedVersionMap.get( d.getManagementKey() );
+            assertNull( a );
+        }
+        
+        {
+            Dependency d = d2;
+            Artifact a = (Artifact) managedVersionMap.get( d.getManagementKey() );
+            assertNotNull( a );
+            assertEquals( d.getVersion(), a.getVersion() );
+            assertEquals( d.getScope(), a.getScope() );
+        }
+        
+        {
+            Dependency d = d3;
+            Artifact a = (Artifact) managedVersionMap.get( d.getManagementKey() );
+            assertNotNull( a );
+            assertEquals( d.getVersion(), a.getVersion() );
+            assertEquals( d.getScope(), a.getScope() );
+        }
+        
+        mm.verifyAll();
+    }
+    
+    public void test_buildManagedVersionMap_TransitiveResolution()
+        throws ArtifactResolutionException, ArchiveCreationException, InvalidVersionSpecificationException,
+        InvalidDependencyVersionException
+    {
+        Assembly assembly = new Assembly();
+        
+        DependencySet ds = new DependencySet();
+        ds.setScope( Artifact.SCOPE_COMPILE );
+        ds.setUseTransitiveDependencies( true );
+        
+        assembly.addDependencySet( ds );
+        
+        MavenProject project = createMavenProject( "group", "artifact", "1", new File( "base" ) );
+        
+        Dependency d1 = new Dependency();
+        d1.setGroupId( "group.dep" );
+        d1.setArtifactId( "dep1" );
+        d1.setVersion( "1" );
+        d1.setScope( Artifact.SCOPE_COMPILE );
+        
+        project.getModel().addDependency( d1 );
+        
+        Dependency d2 = new Dependency();
+        d2.setGroupId( "group.dep" );
+        d2.setArtifactId( "dep2" );
+        d2.setVersion( "1" );
+        d2.setScope( Artifact.SCOPE_COMPILE );
+        final Artifact a2 = factory.createArtifact( d2.getGroupId(), d2.getArtifactId(), d2.getVersion(), d2.getScope(), "jar" );
+        
+        project.getModel().addDependency( d2 );
+        
+        Dependency d3 = new Dependency();
+        d3.setGroupId( "group.dep" );
+        d3.setArtifactId( "dep3" );
+        d3.setVersion( "1" );
+        d3.setScope( Artifact.SCOPE_COMPILE );
+        
+        project.getModel().addDependency( d3 );
+        
+        final Artifact a2a = factory.createArtifact( d3.getGroupId(), d3.getArtifactId(), "2", Artifact.SCOPE_RUNTIME, "jar" );
+        
+        MockManager mm = new MockManager();
+        
+        MockControl msControl = MockControl.createControl( ArtifactMetadataSource.class );
+        mm.add( msControl );
+        
+        ArtifactMetadataSource ms = (ArtifactMetadataSource) msControl.getMock();
+        
+        try
+        {
+            ms.retrieve( null, null, null );
+        }
+        catch ( ArtifactMetadataRetrievalException e )
+        {
+        }
+        
+        msControl.setDefaultReturnValue( new ResolutionGroup( null, Collections.EMPTY_SET, Collections.EMPTY_LIST ) );
+        msControl.setMatcher( new ArgumentsMatcher()
+        {
+            public boolean matches( Object[] expected, Object[] actual )
+            {
+                Artifact a = (Artifact) actual[0];
+
+                return a2.getArtifactId().equals( a.getArtifactId() );
+            }
+
+            public String toString( Object[] args )
+            {
+                return "with artifact: " + args[0] ;
+            }
+            
+        } );
+        msControl.setReturnValue( new ResolutionGroup( a2, Collections.singleton( a2a ), Collections.EMPTY_LIST ) );
+        
+        
+        MockControl csControl = MockControl.createControl( AssemblerConfigurationSource.class );
+        mm.add( csControl );
+        
+        AssemblerConfigurationSource cs = (AssemblerConfigurationSource) csControl.getMock();
+        
+        cs.getProject();
+        csControl.setReturnValue( project, MockControl.ZERO_OR_MORE );
+        
+        String tmpDir = System.getProperty( "java.io.tmpdir" );
+        ArtifactRepository lr = repoFactory.createArtifactRepository( "local", "file://" + tmpDir, layout, null, null );
+        
+        cs.getLocalRepository();
+        csControl.setReturnValue( lr, MockControl.ZERO_OR_MORE );
+        
+        cs.getRemoteRepositories();
+        csControl.setReturnValue( Collections.EMPTY_LIST, MockControl.ZERO_OR_MORE );
+        
+        mm.replayAll();
+        
+        DefaultDependencyResolver resolver = new DefaultDependencyResolver();
+        resolver.setArtifactMetadataSource( ms );
+        resolver.setArtifactCollector( collector );
+        resolver.setArtifactFactory( factory );
+        resolver.setLogger( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+        
+        Map managedVersionMap = resolver.buildManagedVersionMap( assembly, cs );
+        
+        {
+            Dependency d = d1;
+            Artifact a = (Artifact) managedVersionMap.get( d.getManagementKey() );
+            assertNotNull( a );
+            assertEquals( d.getVersion(), a.getVersion() );
+            assertEquals( d.getScope(), a.getScope() );
+        }
+        
+        {
+            Dependency d = d2;
+            Artifact a = (Artifact) managedVersionMap.get( d.getManagementKey() );
+            assertNotNull( a );
+            assertEquals( d.getVersion(), a.getVersion() );
+            assertEquals( d.getScope(), a.getScope() );
+        }
+        
+        {
+            Dependency d = d3;
+            Artifact a = (Artifact) managedVersionMap.get( d.getManagementKey() );
+            assertNotNull( a );
+            assertEquals( d.getVersion(), a.getVersion() );
+            assertEquals( d.getScope(), a.getScope() );
+        }
+        
+        mm.verifyAll();
+    }
+    
+    private void assertRepositoryWithId( String repoId, List repos, boolean shouldExist )
+    {
+        if ( ( repos == null || repos.isEmpty() ) )
+        {
+            if ( shouldExist )
+            {
+                fail( "Repository with id: " + repoId + " should be present, but repository list is null or empty." );
+            }
+        }
+        else
+        {
+            boolean found = false;
+            for ( Iterator it = repos.iterator(); it.hasNext(); )
+            {
+                ArtifactRepository repo = (ArtifactRepository) it.next();
+                if ( repoId.equals( repo.getId() ) )
+                {
+                    found = true;
+                    break;
+                }
+            }
+            
+            if ( shouldExist )
+            {
+                assertTrue( "Repository with id: " + repoId + " should be present in repository list.", found );
+            }
+            else
+            {
+                assertFalse( "Repository with id: " + repoId + " should NOT be present in repository list.", found );
+            }
+        }
+    }
+
+    private MavenProject createMavenProject( String groupId, String artifactId, String version, File basedir )
+    {
+        Model model = new Model();
+        
+        model.setGroupId( groupId );
+        model.setArtifactId( artifactId );
+        model.setVersion( version );
+        model.setPackaging( "pom" );
+        
+        MavenProject project = new MavenProject( model );
+        
+        Artifact pomArtifact = factory.createProjectArtifact( groupId, artifactId, version );
+        project.setArtifact( pomArtifact );
+        
+        project.setFile( new File( basedir, "pom.xml" ) );
+        
+        return project;
+    }
+
+}

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolverTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/MockManager.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/MockManager.java?rev=698739&r1=698738&r2=698739&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/MockManager.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/MockManager.java Wed Sep 24 14:14:38 2008
@@ -19,16 +19,16 @@
  * under the License.
  */
 
-import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.Iterator;
-import java.util.List;
+import java.util.Set;
 
 import org.easymock.MockControl;
 
 public class MockManager
 {
 
-    private List mockControls = new ArrayList();
+    private Set mockControls = new HashSet();
 
     public void add( MockControl control )
     {