michal      2004/05/17 14:11:34

  Modified:    maven-project/src/main/java/org/apache/maven/artifact/collector
                        DefaultArtifactCollector.java
                        ArtifactCollector.java
                        ArtifactCollectionResult.java
               maven-project/src/main/java/org/apache/maven/project
                        DefaultMavenProjectBuilder.java MavenProject.java
               maven-project/src/main/resources/META-INF/plexus
                        components.xml
               maven-project/src/test/resources/local-repo/maven-test/poms
                        maven-test-b-1.0.pom maven-test-c-1.0.pom
                        maven-test-d-1.2.pom
               maven-project/src/main/java/org/apache/maven/artifact/satisfier
                        ArtifactSatisfier.java
               maven-project/src/main/java/org/apache/maven/artifact/resolver
                        DefaultArtifactResolver.java
               maven-project/src/main/java/org/apache/maven/artifact
                        AbstractMavenArtifact.java
               maven-project/src/test/java/org/apache/maven/artifact/collector
                        DefaultArtifactCollectorTest.java
  Added:       maven-project/src/main/java/org/apache/maven/artifact/collector
                        ArtifactCollectionResultEntry.java
  Log:
  New version of ArtifactCollector
  
  Revision  Changes    Path
  1.4       +43 -132   
maven-components/maven-project/src/main/java/org/apache/maven/artifact/collector/DefaultArtifactCollector.java
  
  Index: DefaultArtifactCollector.java
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-project/src/main/java/org/apache/maven/artifact/collector/DefaultArtifactCollector.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DefaultArtifactCollector.java     10 May 2004 19:06:30 -0000      1.3
  +++ DefaultArtifactCollector.java     17 May 2004 21:11:33 -0000      1.4
  @@ -1,25 +1,23 @@
   package org.apache.maven.artifact.collector;
   
  -import java.util.ArrayList;
  +import java.io.File;
   import java.util.Iterator;
  -import java.util.LinkedList;
  -import java.util.List;
   
   import org.apache.maven.artifact.MavenArtifact;
  -import org.apache.maven.artifact.collector.ArtifactCollectionResult;
  -import org.apache.maven.artifact.collector.ArtifactCollector;
   import org.apache.maven.artifact.resolver.ArtifactResolver;
   import org.apache.maven.model.Dependency;
   import org.apache.maven.project.MavenProject;
   import org.apache.maven.project.MavenProjectBuilder;
   import org.apache.maven.project.ProjectBuildingException;
  +import org.codehaus.plexus.logging.AbstractLogEnabled;
  +
   
   /**
    * 
    * @author <a href="mailto:[EMAIL PROTECTED]">Michal Maczka</a> 
    * @version $Id$
    */
  -public class DefaultArtifactCollector implements ArtifactCollector
  +public class DefaultArtifactCollector extends AbstractLogEnabled implements 
ArtifactCollector 
   {
   
       /**
  @@ -28,161 +26,74 @@
       private ArtifactResolver artifactResolver;
   
       /**
  -     * 
  -     * @requirement
  -     */
  -    private MavenProjectBuilder projectBuilder;
  -
  -    /**
        * @see 
org.apache.maven.artifact.collector.ArtifactCollector#getArtifacts(org.apache.maven.project.MavenProject)
        */
  -    public ArtifactCollectionResult getArtifacts( MavenProject project )
  -            throws Exception
  +    public ArtifactCollectionResult collect( MavenProject project, 
MavenProjectBuilder projectBuilder ) throws Exception
       {
   
           ArtifactCollectionResult retValue = new ArtifactCollectionResult();
   
  -        resolveDependencies( project, retValue );
  +        for ( Iterator i = project.getArtifacts().iterator(); i.hasNext(); )
  +        {
  +            MavenArtifact artifact = ( MavenArtifact ) i.next();
   
  -        return retValue;
  +            Dependency dependency = artifact.getDependency();
   
  -    }
  +            String id = dependency.getId();
   
  -    void resolveDependencies( MavenProject project,
  -            ArtifactCollectionResult result ) throws Exception
  -    {
  +            retValue.addArtifact( artifact, project );
   
  -        // I want to use BSF not DFS 
  -        //so the artifact of top level project are always processed in first place
  -        
  -      
  -        // linked list - we will have a lot add/remove operation
  -        List queue = new LinkedList();
  +            MavenProject referencedProject = getProject( dependency, project, 
projectBuilder );
   
  -        queue.add( project );
  -        
  -        while ( !queue.isEmpty() )
  -        {
  -
  -            MavenProject currentProject = ( MavenProject ) queue.remove( 0 );
  -                      
  -                       
  -            for ( Iterator i = currentProject.getArtifacts().iterator(); 
i.hasNext(); )
  +            if ( referencedProject != null )
               {
  -                MavenArtifact newArtifact = ( MavenArtifact ) i.next();
  +                retValue.merge( referencedProject );
  +            }
   
  -                String id = newArtifact.getDependency().getId();
  -                              
  -                
  +            else
  +            {
  +                getLogger().debug( "POM for " + dependency.getId() + ":"  + 
dependency.getVersion() +  " not found" );
                   
  -                if ( result.getArtifacts().containsKey( id ) )
  -                {
  -                    MavenArtifact knownArtifact = ( MavenArtifact ) result
  -                            .getArtifacts().get( id );
  -
  -                    String newVersion = newArtifact.getDependency()
  -                            .getVersion();
  -
  -                    String knownVersion = knownArtifact.getDependency()
  -                            .getVersion();
  -                    
  -                    if ( newVersion.equals( knownVersion ) )
  -                    {
  -                        continue;
  -                    }
  -                    else
  -                    {
  -                        // WE HAVE A VERSION CONFLICT!!
  -                        
  -                        // will check if this artifact is in the top level project
  -                        // if it is - version at the top level project wins
  -                        //if ( project.getDependency( key ) != null )
  -                        //{
  -                        //    continue;
  -                        //}
  -
  -                        List list;
  -
  -                        if ( result.getConflicts().containsKey( id ) )
  -                        {
  -                            list = ( List ) result.getConflicts().get( id );
  -                        }
  -                        else
  -                        {
  -                            list = new ArrayList();
  -                            
  -                            list.add( knownArtifact );
  -                            
  -                            result.getConflicts().put( id, list );
  -                        }
  -                        
  -                        
  -                        list.add( newArtifact );
  -                    }
  -                }
  -                else
  -                {
  -                    //It's the first time we have encountered this artifact
  -                    
  -                    // Add the dependency itself
  -                    result.getArtifacts().put( id, newArtifact );
  -
  -                    MavenProject childProject = getProject( 
newArtifact.getDependency(),
  -                            currentProject );
  -
  -                    
  -                    if ( childProject == null )
  -                    {
  -                        // the pom for this artifact is not present in local 
repository.
  -                        // we will note this fact
  -                        result.getArtifactsWithoutPoms().put( id, newArtifact );
  -
  -                        continue;
  -                    }
  -                    else
  -                    {
  -                       //@hack for testing I need to propagate the location of 
mavenRepoLocal
  -                       //this shows that some settings should be detached from 
project.
  -                        
  -                       childProject.setLocalRepository(  
currentProject.getLocalRepository()  ); 
  -                        
  -                    }
  -
  -                    // the pom for given dependency exisit we will enqueue it
  -                    queue.add( childProject );
  -
  -                }
  -
  +                retValue.addArtifactWithoutPom( artifact.getDependency().getId() );
               }
  +
           }
   
  +        project.setArtifactCollectionResult( retValue );
  +        
  +        return retValue;
  +
       }
   
       /**
        * @param pomArtifact
        * @return
        */
  -    private MavenProject getProject( Dependency dependency, MavenProject project )
  +    private MavenProject getProject( Dependency dependency,
  +            MavenProject project, MavenProjectBuilder projectBuilder )
               throws Exception
       {
  -        
  +
           MavenProject retValue = null;
  -        
  +
           MavenArtifact pomArtifact = artifactResolver.getPomArtifact( dependency, 
project );
  -        
  +
           if ( pomArtifact != null )
           {
  -             try
  -             {
  -                 retValue = projectBuilder.build( pomArtifact.getFile( ) );
  -             }
  -             catch ( ProjectBuildingException e )
  -             {
  -                 throw new Exception( "POM for dependency: " + dependency
  -                         + " exists in local repository but cannot be parsed", e );
  -             }
  +            try
  +            {
  +                
  +                File f = pomArtifact.getFile();
  +                
  +                retValue = projectBuilder.build( f );
  +            }
  +            catch ( ProjectBuildingException e )
  +            {
  +                throw new Exception( "POM for dependency: " + dependency.getId()
  +                        + " exists in local repository but cannot be parsed", e );
  +            }
           }
  -        
  +
           return retValue;
   
       }
  
  
  
  1.3       +3 -2      
maven-components/maven-project/src/main/java/org/apache/maven/artifact/collector/ArtifactCollector.java
  
  Index: ArtifactCollector.java
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-project/src/main/java/org/apache/maven/artifact/collector/ArtifactCollector.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ArtifactCollector.java    8 May 2004 12:19:23 -0000       1.2
  +++ ArtifactCollector.java    17 May 2004 21:11:33 -0000      1.3
  @@ -2,6 +2,7 @@
   
   
   import org.apache.maven.project.MavenProject;
  +import org.apache.maven.project.MavenProjectBuilder;
   
   /**
    * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
  @@ -12,6 +13,6 @@
   {
       String ROLE = ArtifactCollector.class.getName();
   
  -    ArtifactCollectionResult getArtifacts( MavenProject project )
  +    ArtifactCollectionResult collect( MavenProject project, MavenProjectBuilder 
projectBuilder )
           throws Exception;
   }
  
  
  
  1.4       +134 -17   
maven-components/maven-project/src/main/java/org/apache/maven/artifact/collector/ArtifactCollectionResult.java
  
  Index: ArtifactCollectionResult.java
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-project/src/main/java/org/apache/maven/artifact/collector/ArtifactCollectionResult.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ArtifactCollectionResult.java     8 May 2004 12:37:23 -0000       1.3
  +++ ArtifactCollectionResult.java     17 May 2004 21:11:33 -0000      1.4
  @@ -1,7 +1,13 @@
   package org.apache.maven.artifact.collector;
   
  +import java.util.HashSet;
  +import java.util.Iterator;
   import java.util.Map;
   import java.util.HashMap;
  +import java.util.Set;
  +
  +import org.apache.maven.artifact.MavenArtifact;
  +import org.apache.maven.project.MavenProject;
   
   /**
    * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
  @@ -9,41 +15,152 @@
    */
   public class ArtifactCollectionResult
   {
  -    /** Map<String,MavenArtifact>  */
  -    private Map artifacts;
  +    //We will keep artifacts in two data structures:
  +
  +    /** Set<MavenArtifact>  */
  +    private Set artifacts;
  +
  +    /** Set<String>  */
  +    private Set artifactsWithoutPoms;
   
  -    
       /** 
  -     * Map<String, List<MavenArtifact>> 
  +     * Map<String,ArtifactCollectionResultEntry> 
        * 
        */
  -    private Map conflicts;
  +    private Map entries;
   
  -    /** Map<String,MavenArtifact>  */
  -    private Map artifactsWithoutPoms;
  +    private boolean conflict;
   
  -    
       public ArtifactCollectionResult()
       {
  -        artifacts = new HashMap();
  +        artifacts = new HashSet();
   
  -        conflicts = new HashMap();
  +        artifactsWithoutPoms = new HashSet();
  +        
  +        entries = new HashMap();
  +        
  +        
   
  -        artifactsWithoutPoms = new HashMap();
       }
   
  -    public Map getArtifacts()
  +    public Set getArtifacts()
       {
           return artifacts;
       }
   
  -    public Map getConflicts()
  +    public Map getEntries()
       {
  -        return conflicts;
  +        return entries;
       }
   
  -    public Map getArtifactsWithoutPoms()
  +    public void addArtifact( MavenArtifact artifact, MavenProject project )
  +    {
  +
  +        String id = artifact.getDependency().getId();
  +
  +        ArtifactCollectionResultEntry entry;
  +
  +        if ( entries.containsKey( id ) )
  +        {
  +            entry = ( ArtifactCollectionResultEntry ) entries.get( id );
  +
  +            entry.add( artifact, project );
  +
  +        }
  +
  +        else
  +        {
  +            artifacts.add( artifact );
  +
  +            entry = new ArtifactCollectionResultEntry( artifact, project );
  +            
  +            entries.put( id , entry );
  +        }
  +
  +        conflict = conflict && entry.isConflict();
  +
  +    }
  +
  +    public void addArtifactWithoutPom( String id )
  +    {
  +        artifactsWithoutPoms.add( id );
  +    }
  +
  +    public Set getArtifactsWithoutPoms()
       {
           return artifactsWithoutPoms;
       }
  -}
  +
  +    public boolean isConflict()
  +    {
  +        return conflict;
  +    }
  +
  +    /**
  +     * @todo this is still not opimal but I prefer simpler code at the moment 
  +     */
  +    public void merge( MavenProject project )
  +    {
  +        ArtifactCollectionResult other = project.getArtifactCollectionResult();
  +        
  +        Set artifactSet = other.getArtifacts();
  +
  +        for ( Iterator iter = artifactSet.iterator(); iter.hasNext(); )
  +        {
  +            MavenArtifact artifact = ( MavenArtifact ) iter.next();
  +            
  +
  +            String id = artifact.getDependency().getId();
  +
  +            addArtifact( artifact, project );
  +            
  +            ArtifactCollectionResultEntry entry = ( ArtifactCollectionResultEntry ) 
entries.get( id );
  +            
  +            ArtifactCollectionResultEntry otherEntry = ( 
ArtifactCollectionResultEntry ) other.entries.get( id );
  +            
  +            entry.merge( otherEntry );
  +            
  +            
  +
  +        }
  +
  +        artifactsWithoutPoms.addAll( other.getArtifactsWithoutPoms() );
  +
  +    }
  +
  +    public boolean hasArtifact( String id )
  +    {
  +        boolean retValue = false;
  +
  +        for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
  +        {
  +            MavenArtifact artifact = ( MavenArtifact ) iter.next();
  +
  +            if ( id.equals( artifact.getDependency().getId() ) )
  +            {
  +                retValue = true;
  +
  +                break;
  +            }
  +
  +        }
  +
  +        return retValue;
  +    }
  +
  +    public boolean hasArtifactWithoutPom( String id )
  +    {
  +        boolean retValue = artifactsWithoutPoms.contains( id );
  +
  +        return retValue;
  +    }
  +
  +    public ArtifactCollectionResultEntry getEntry( String id )
  +    {
  +        ArtifactCollectionResultEntry retValue = ( ArtifactCollectionResultEntry ) 
entries.get( id );
  +
  +        return retValue;
  +
  +    }
  +
  +}
  \ No newline at end of file
  
  
  
  1.1                  
maven-components/maven-project/src/main/java/org/apache/maven/artifact/collector/ArtifactCollectionResultEntry.java
  
  Index: ArtifactCollectionResultEntry.java
  ===================================================================
  package org.apache.maven.artifact.collector;
  
  import java.util.HashMap;
  import java.util.HashSet;
  import java.util.Map;
  import java.util.Set;
  
  import org.apache.maven.artifact.MavenArtifact;
  import org.apache.maven.project.MavenProject;
  
  /**
   * 
   * @author <a href="mailto:[EMAIL PROTECTED]">Michal Maczka</a> 
   * @version $Id: ArtifactCollectionResultEntry.java,v 1.1 2004/05/17 21:11:33 michal 
Exp $ 
   */
  public class ArtifactCollectionResultEntry
  {
  
      private String id;
  
      private Set versions = new HashSet();
  
      private Set projects = new HashSet();
  
      private Map projectVersionMap = new HashMap();
      
      public boolean isConflict()
      {
          boolean retValue = versions.size() > 1;
  
          return retValue;
      }
      
      public ArtifactCollectionResultEntry( MavenArtifact artifact, MavenProject 
project )
      {
                 
         this.id = artifact.getDependency().getId();
         
         add( artifact, project );
         
      }
      
      
      public void add( MavenArtifact artifact, MavenProject project )
      {
          
          String version = artifact.getDependency().getVersion();
          
          versions.add( version );
          
          projects.add( project.getId() );
          
          projectVersionMap.put( project.getId(), version );
      
      }
      
  
      public String getId()
      {
          return id;
      }
  
      public Set getProjects()
      {
          return projects;
      }
      
      
      public Map getProjectVersionMap()
      {
          return projectVersionMap;
      }
      
      
      public Set getVersions()
      {
          return versions;
      }
  
      /**
       * @param otherEntry
       */
      public void merge( ArtifactCollectionResultEntry other )
      {
          versions.addAll( other.versions );
          
          projects.addAll( other.projects );
          
          projectVersionMap.putAll( other.projectVersionMap );
          
      }
  }
  
  
  1.13      +2 -0      
maven-components/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
  
  Index: DefaultMavenProjectBuilder.java
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- DefaultMavenProjectBuilder.java   8 May 2004 12:19:22 -0000       1.12
  +++ DefaultMavenProjectBuilder.java   17 May 2004 21:11:34 -0000      1.13
  @@ -105,6 +105,8 @@
   
               setupMavenFinalName( project );
   
  +            artifactCollector.collect( project, this );
  +            
               project.initialize();
   
               return project;
  
  
  
  1.8       +25 -1     
maven-components/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
  
  Index: MavenProject.java
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-project/src/main/java/org/apache/maven/project/MavenProject.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- MavenProject.java 13 May 2004 19:25:59 -0000      1.7
  +++ MavenProject.java 17 May 2004 21:11:34 -0000      1.8
  @@ -17,6 +17,7 @@
    */
   
   import org.apache.maven.artifact.MavenArtifact;
  +import org.apache.maven.artifact.collector.ArtifactCollectionResult;
   import org.apache.maven.model.Build;
   import org.apache.maven.model.Contributor;
   import org.apache.maven.model.Dependency;
  @@ -84,6 +85,11 @@
   
       /**List of remote repositories which are visible for this project */
       private List repositories = new ArrayList();
  +    
  +    /** 
  +     * @todo find shorter name for this
  +     **/
  +    private ArtifactCollectionResult artifactCollectionResult;
   
       // ----------------------------------------------------------------------
       // Accessors
  @@ -917,6 +923,24 @@
           
           addRepository( repository );
           
  +    }
  +
  +    /**
  +     * @return
  +     */
  +    public ArtifactCollectionResult getArtifactCollectionResult()
  +    {
  +        
  +        return artifactCollectionResult;
  +    }
  +    
  +    /**
  +     * @return
  +     */
  +    public void setArtifactCollectionResult( ArtifactCollectionResult  
artifactCollectionResult )
  +    {
  +        
  +        this.artifactCollectionResult = artifactCollectionResult ;
       }
       
   }
  
  
  
  1.12      +3 -8      
maven-components/maven-project/src/main/resources/META-INF/plexus/components.xml
  
  Index: components.xml
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-project/src/main/resources/META-INF/plexus/components.xml,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- components.xml    16 May 2004 15:58:10 -0000      1.11
  +++ components.xml    17 May 2004 21:11:34 -0000      1.12
  @@ -7,12 +7,10 @@
           <requirement>
             <role>org.apache.maven.project.ModelInheritanceAssembler</role>
           </requirement>
  -        
  -        <!-- This introduces circ. dep.  builder ==> collector ==> builder
  +                
           <requirement>
             <role>org.apache.maven.artifact.collector.ArtifactCollector</role>
  -        </requirement>
  -        -->
  +        </requirement>        
           <requirement>
             <role>org.apache.maven.artifact.factory.MavenArtifactFactory</role>
           </requirement>
  @@ -31,10 +29,7 @@
         <requirements>
           <requirement>
             <role>org.apache.maven.artifact.resolver.ArtifactResolver</role>
  -        </requirement>
  -        <requirement>
  -          <role>org.apache.maven.project.MavenProjectBuilder</role>
  -        </requirement>        
  +        </requirement>             
         </requirements>
       </component>
       <component>
  
  
  
  1.2       +4 -0      
maven-components/maven-project/src/test/resources/local-repo/maven-test/poms/maven-test-b-1.0.pom
  
  Index: maven-test-b-1.0.pom
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-project/src/test/resources/local-repo/maven-test/poms/maven-test-b-1.0.pom,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- maven-test-b-1.0.pom      10 May 2004 19:06:30 -0000      1.1
  +++ maven-test-b-1.0.pom      17 May 2004 21:11:34 -0000      1.2
  @@ -2,16 +2,20 @@
     <groupId>maven-test</groupId>
     <artifactId>maven-test-b</artifactId>
     <version>1.0</version>
  +  
     <dependencies>
  +    
       <dependency>
         <groupId>maven-test</groupId>
         <artifactId>maven-test-c</artifactId>
         <version>1.0</version>
       </dependency>
  +    
       <dependency>
         <groupId>maven-test</groupId>
         <artifactId>maven-test-d</artifactId>
         <version>1.1</version>
       </dependency>
  +  
     </dependencies>
   </project>
  
  
  
  1.2       +2 -0      
maven-components/maven-project/src/test/resources/local-repo/maven-test/poms/maven-test-c-1.0.pom
  
  Index: maven-test-c-1.0.pom
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-project/src/test/resources/local-repo/maven-test/poms/maven-test-c-1.0.pom,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- maven-test-c-1.0.pom      10 May 2004 19:06:30 -0000      1.1
  +++ maven-test-c-1.0.pom      17 May 2004 21:11:34 -0000      1.2
  @@ -2,6 +2,8 @@
     <groupId>maven-test</groupId>
     <artifactId>maven-test-c</artifactId>
     <version>1.0</version>
  +  
  +  
     <dependencies>
       <dependency>
         <groupId>maven-test</groupId>
  
  
  
  1.2       +1 -1      
maven-components/maven-project/src/test/resources/local-repo/maven-test/poms/maven-test-d-1.2.pom
  
  Index: maven-test-d-1.2.pom
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-project/src/test/resources/local-repo/maven-test/poms/maven-test-d-1.2.pom,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- maven-test-d-1.2.pom      10 May 2004 19:06:30 -0000      1.1
  +++ maven-test-d-1.2.pom      17 May 2004 21:11:34 -0000      1.2
  @@ -1,5 +1,5 @@
   <project>
     <groupId>maven-test</groupId>
  -  <artifactId>maven-test-d/artifactId>
  +  <artifactId>maven-test-d</artifactId>
     <version>1.1</version>
   </project>
  
  
  
  1.2       +3 -1      
maven-components/maven-project/src/main/java/org/apache/maven/artifact/satisfier/ArtifactSatisfier.java
  
  Index: ArtifactSatisfier.java
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-project/src/main/java/org/apache/maven/artifact/satisfier/ArtifactSatisfier.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ArtifactSatisfier.java    5 Apr 2004 17:23:56 -0000       1.1
  +++ ArtifactSatisfier.java    17 May 2004 21:11:34 -0000      1.2
  @@ -27,6 +27,8 @@
    */
   public interface ArtifactSatisfier
   {
  +    
  +    
       static String ROLE = ArtifactSatisfier.class.getName();
   
       public void verifyDependencies( MavenProject project )
  
  
  
  1.6       +1 -3      
maven-components/maven-project/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
  
  Index: DefaultArtifactResolver.java
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-project/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- DefaultArtifactResolver.java      16 May 2004 15:58:10 -0000      1.5
  +++ DefaultArtifactResolver.java      17 May 2004 21:11:34 -0000      1.6
  @@ -36,8 +36,6 @@
       {
          MavenArtifact retValue =  artifactFactory.createArtifact( dependency, 
project.getLocalRepository() );
          
  -       System.out.println( "Checking: " + retValue.getPath() );
  -       
          
          if ( retValue.isSnapshot() )
          {
  
  
  
  1.7       +14 -0     
maven-components/maven-project/src/main/java/org/apache/maven/artifact/AbstractMavenArtifact.java
  
  Index: AbstractMavenArtifact.java
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-project/src/main/java/org/apache/maven/artifact/AbstractMavenArtifact.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- AbstractMavenArtifact.java        10 May 2004 19:26:22 -0000      1.6
  +++ AbstractMavenArtifact.java        17 May 2004 21:11:34 -0000      1.7
  @@ -169,4 +169,18 @@
       }
   
       
  +   
  +    public boolean equals( Object obj )
  +    {
  +        
  +        MavenArtifact other = ( MavenArtifact ) obj;
  +                
  +        Dependency otherDependency = other.getDependency(); 
  +                
  +        //if paths are the same artifats are the same
  +        boolean retValue = getPath().equals( other.getPath() );
  +        
  +        return retValue;
  +        
  +    }
   }
  
  
  
  1.3       +25 -23    
maven-components/maven-project/src/test/java/org/apache/maven/artifact/collector/DefaultArtifactCollectorTest.java
  
  Index: DefaultArtifactCollectorTest.java
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-project/src/test/java/org/apache/maven/artifact/collector/DefaultArtifactCollectorTest.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DefaultArtifactCollectorTest.java 10 May 2004 19:06:30 -0000      1.2
  +++ DefaultArtifactCollectorTest.java 17 May 2004 21:11:34 -0000      1.3
  @@ -17,12 +17,11 @@
    */
   
   import java.io.File;
  -import java.util.List;
  -import java.util.Map;
  +import java.util.Set;
   
  -import org.apache.maven.artifact.MavenArtifact;
   import org.apache.maven.project.AbstractProjectTestCase;
   import org.apache.maven.project.MavenProject;
  +import org.apache.maven.project.MavenProjectBuilder;
   
   /**
    * 
  @@ -50,8 +49,12 @@
           
           artifactCollector = ( ArtifactCollector ) lookup( ArtifactCollector.ROLE );
           
  +        projectBuilder = ( MavenProjectBuilder ) lookup( MavenProjectBuilder.ROLE );
  +        
           assertNotNull( "Test artifactCollector can't be null!", artifactCollector );
           
  +        System.setProperty( "maven.repo.local", getLocalRepository()  );
  +        
           System.out.println( "local repo:" + getLocalRepository() );
           
       }
  @@ -73,13 +76,11 @@
               
               project.setLocalRepository( getLocalRepository() );
               
  -            ArtifactCollectionResult result = artifactCollector.getArtifacts( 
project );
  -            
  -            Map artifacts = result.getArtifacts();
  +            ArtifactCollectionResult result = artifactCollector.collect( project, 
projectBuilder );
  +                                   
  +            Set artifacts = result.getArtifacts();
               
  -            Map conflicts = result.getConflicts();
  -            
  -            Map artifactsWithoutPoms = result.getArtifactsWithoutPoms();
  +            Set artifactsWithoutPoms = result.getArtifactsWithoutPoms();
               
               //             [d 1.1]
               //              |
  @@ -87,32 +88,33 @@
               //    |               |
               //    |---------------------- > [z] (no pom)
               
  -            assertTrue(  artifacts.containsKey( "maven-test:maven-test-b"  )  );
  +            assertEquals( 4, artifacts.size() );
               
  -            assertTrue(  artifacts.containsKey( "maven-test:maven-test-c"  )  );
  +            assertTrue(  result.hasArtifact( "maven-test:maven-test-b"  )  );
               
  -            assertTrue(  artifacts.containsKey( "maven-test:maven-test-d"  )  );
  +            assertTrue(  result.hasArtifact( "maven-test:maven-test-c"  )  );
               
  -            assertTrue(  artifacts.containsKey( "maven-test:maven-test-z"  )  );
  +            assertTrue(  result.hasArtifact( "maven-test:maven-test-d"  )  );
               
  -            assertTrue(  artifactsWithoutPoms.containsKey( 
"maven-test:maven-test-z"  )  );
  +            assertTrue(  result.hasArtifact( "maven-test:maven-test-z"  )  );
                
  +            //assertTrue( result.isConflict() );
  +            
  +            //assertEquals( 1, conflicts.size() );
               
  -            assertEquals( 1, conflicts.size() );
  +            ArtifactCollectionResultEntry entryD = result.getEntry( 
"maven-test:maven-test-d" );
               
  -            assertTrue(  conflicts.containsKey( "maven-test:maven-test-d"  )  );
  +            assertNotNull( entryD );
               
  -            List conflictsForD = ( List ) conflicts.get( "maven-test:maven-test-d" 
);
  +            assertEquals( 2, entryD.getVersions().size() );
               
  -            assertEquals( 2,conflictsForD.size() );
  +            assertTrue( entryD.isConflict() );
               
  -            MavenArtifact d_1_1 = ( MavenArtifact ) conflictsForD.get( 0 );
  +            assertTrue(  entryD.getVersions().contains( "1.2" ) );
               
  -            MavenArtifact d_1_2 = ( MavenArtifact ) conflictsForD.get( 1 );
  +            assertTrue(  entryD.getVersions().contains( "1.1" ) );
               
  -            assertEquals( "1.1", d_1_1.getDependency().getVersion() );
               
  -            assertEquals( "1.2", d_1_2.getDependency().getVersion() );
           }
           catch ( Exception e )
           {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to