michal      2004/05/10 12:06:30

  Modified:    maven-project/src/main/resources/META-INF/plexus
                        components.xml
               maven-project/src/main/java/org/apache/maven/artifact
                        MavenArtifact.java AbstractMavenArtifact.java
               maven-project/src/main/java/org/apache/maven/artifact/resolver
                        DefaultArtifactResolver.java ArtifactResolver.java
               maven-project/src/main/java/org/apache/maven/project
                        MavenProject.java
               maven-project/src/test/java/org/apache/maven/project
                        AbstractProjectTestCase.java
               maven-project/src/main/java/org/apache/maven/artifact/collector
                        DefaultArtifactCollector.java
               maven-project/src/test/java/org/apache/maven/artifact/collector
                        DefaultArtifactCollectorTest.java
  Added:       maven-project/src/test/resources/local-repo/maven-test/jars
                        maven-test-c-1.0.jar maven-test-d-1.0.jar
                        maven-test-a-1.0.jar maven-test-b-1.0.jar
               maven-project/src/test/java/org/apache/maven/artifact/downloader
                        DefaultArtifactDownloaderTest.java
               maven-project/src/test/resources/remote-repo-1/maven-test/jars
                        maven-test-b-1.0.jar.md5 maven-test-b-1.0.jar
               maven-project/src/test/resources/local-repo/maven-test/poms
                        maven-test-a-1.0.pom maven-test-b-1.0.pom
                        maven-test-d-1.1.pom maven-test-c-1.0.pom
                        maven-test-d-1.2.pom
               maven-project/src/main/java/org/apache/maven/artifact/download
                        ArtifactDownloader.java
                        DefaultArtifactDownloader.java
               maven-project/src/test/resources/remote-repo-2/maven-test/jars
                        maven-test-z-1.0.jar
               maven-project/src/test/resources/remote-repo-1/maven-test/poms
                        maven-test-b-1.0.pom
  Removed:     maven-project/src/test/resources/maven-repo-local/maven-test/poms
                        maven-test-c-1.0.pom maven-test-a-1.0.pom
                        maven-test-b-1.0.pom maven-test-d-1.2.pom
                        maven-test-d-1.1.pom
               maven-project/src/test/resources/maven-repo-local/maven-test/jars
                        maven-test-c-1.0.jar maven-test-a-1.0.jar
                        maven-test-b-1.0.jar maven-test-d-1.0.jar
  Log:
  integration of wagon with maven. I need to add special threatment for snapshot 
artifacts and we are done with basic replacment of what was implemented in maven1.

  There are some overlappings in the code (we should change ArtifactSatisfier  as it 
does not match well with new components). I will also add more tests soon.
  
  Revision  Changes    Path
  1.8       +13 -0     
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.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- components.xml    8 May 2004 12:19:22 -0000       1.7
  +++ components.xml    10 May 2004 19:06:29 -0000      1.8
  @@ -44,11 +44,24 @@
           <requirement>
             <role>org.apache.maven.artifact.factory.MavenArtifactFactory</role>
           </requirement>
  +        <requirement>
  +          <role>org.apache.maven.artifact.downloader.ArtifactDownloader</role>
  +        </requirement>
         </requirements>
       </component>    
       <component>
  +      <role>org.apache.maven.artifact.download.ArtifactDownloader</role>
  +      
<implementation>org.apache.maven.artifact.download.DefaultArtifactDownloader</implementation>
  +      <requirements>
  +        <requirement>
  +          <role>org.apache.maven.wagon.manager.WagonManager</role>
  +        </requirement>
  +      </requirements>
  +    </component>        
  +    <component>
         <role>org.apache.maven.project.ModelInheritanceAssembler</role>
         
<implementation>org.apache.maven.project.DefaultModelInheritanceAssembler</implementation>
       </component>
  +
     </components>
   </component-set>
  
  
  
  1.1                  
maven-components/maven-project/src/test/resources/local-repo/maven-test/jars/maven-test-c-1.0.jar
  
  Index: maven-test-c-1.0.jar
  ===================================================================
  foo
  
  
  
  1.1                  
maven-components/maven-project/src/test/resources/local-repo/maven-test/jars/maven-test-d-1.0.jar
  
  Index: maven-test-d-1.0.jar
  ===================================================================
  foo
  
  
  
  1.1                  
maven-components/maven-project/src/test/resources/local-repo/maven-test/jars/maven-test-a-1.0.jar
  
  Index: maven-test-a-1.0.jar
  ===================================================================
  foo
  
  
  
  1.1                  
maven-components/maven-project/src/test/resources/local-repo/maven-test/jars/maven-test-b-1.0.jar
  
  Index: maven-test-b-1.0.jar
  ===================================================================
  foo
  
  
  
  1.4       +13 -3     
maven-components/maven-project/src/main/java/org/apache/maven/artifact/MavenArtifact.java
  
  Index: MavenArtifact.java
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-project/src/main/java/org/apache/maven/artifact/MavenArtifact.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- MavenArtifact.java        8 May 2004 12:19:22 -0000       1.3
  +++ MavenArtifact.java        10 May 2004 19:06:29 -0000      1.4
  @@ -29,12 +29,18 @@
       void setPath( String path );
   
       String getPath();
  -
  +    
       String generatePath();
   
  +    String getChecksumPath();
  +    
  +    String getSnapshotVersionPath();
  +
       String getUrlPath();
   
  -    String getChecksumUrl();
  +    String getChecksumUrlPath();
  +    
  +    String getSnapshotVersionUrlPath();
   
       String getName();
   
  @@ -43,8 +49,12 @@
       boolean exists();
   
       File getFile();
  +        
  +    File getChecksumFile();
       
  -    File getFile( String localRepository );
  +    File getSnapshotVersionFile();
   
       String getExtension();
  +
  +
   }
  
  
  
  1.5       +35 -17    
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.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- AbstractMavenArtifact.java        8 May 2004 12:19:22 -0000       1.4
  +++ AbstractMavenArtifact.java        10 May 2004 19:06:29 -0000      1.5
  @@ -21,7 +21,7 @@
   import java.io.File;
   
   
  -public abstract class AbstractMavenArtifact
  +public abstract class  AbstractMavenArtifact
       implements MavenArtifact
   {
       protected static final String ps = File.separator;
  @@ -59,6 +59,19 @@
   
           return path;
       }
  +    
  +    public String getSnapshotVersionPath()
  +    {
  +        
  +        return getPath() + ".snapshot-version";        
  +    }
  +    
  +    public String getChecksumPath()
  +    {
  +        
  +        return getPath() + ".md5";        
  +    }
  +    
   
       public String generatePath()
       {
  @@ -84,13 +97,17 @@
                + "/" + getArtifact( getDependency() );
       }
   
  -    public String getChecksumUrl()
  +    public String getChecksumUrlPath()
       {
  -        return "/" + getArtifactDirectory( getDependency() )
  -             + "/" + getDependency().getType() + "s"
  -             + "/" + getArtifact( getDependency() )
  -             + ".md5";
  +        return getUrlPath() + ".md5";
  +    }
  +    
  +    public String getSnapshotVersionUrlPath()
  +    {
  +        return getUrlPath() + ".snapshot-version";
       }
  +    
  +    
   
       public String getArtifactDirectory( Dependency d )
       {
  @@ -118,10 +135,6 @@
           return getDependency().getArtifact();
       }
   
  -    /**
  -     * @todo see comments added to getFile() method
  -     * @see org.apache.maven.artifact.MavenArtifact#exists()
  -     */
       public boolean exists()
       {
           return getFile().exists();
  @@ -132,23 +145,28 @@
           return getDependency().getArtifact().indexOf( "SNAPSHOT" ) > 0;
       }
   
  -    /**
  -     * @todo What for this method exits? getPath() returns realative path. 
  -     *       We need somehow append a path to local repository 
  -     * @see org.apache.maven.artifact.MavenArtifact#getFile()
  -     */
       public File getFile()
       {
           return new File( getPath() );
       }
   
  -    public File getFile( String localRepository )
  +
  +    public File getChecksumFile()
       {
  -        return new File( localRepository, getPath() );
  +        return new File( getChecksumPath() );
       }
       
  +    public File getSnapshotVersionFile()
  +    {
  +        return new File( getSnapshotVersionPath() );
  +    }
  +
  +
  +    
       public String getExtension()
       {
           return dependency.getType();
       }
  +
  +    
   }
  
  
  
  1.2       +30 -5     
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.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefaultArtifactResolver.java      8 May 2004 12:19:22 -0000       1.1
  +++ DefaultArtifactResolver.java      10 May 2004 19:06:29 -0000      1.2
  @@ -1,6 +1,7 @@
   package org.apache.maven.artifact.resolver;
   
   import org.apache.maven.artifact.MavenArtifact;
  +import org.apache.maven.artifact.download.ArtifactDownloader;
   import org.apache.maven.artifact.factory.MavenArtifactFactory;
   import org.apache.maven.model.Dependency;
   import org.apache.maven.project.MavenProject;
  @@ -17,19 +18,35 @@
        */
       MavenArtifactFactory artifactFactory;
       
  +    /**
  +     * @requirement
  +     */
  +    ArtifactDownloader artifactDownloader;
  +    
  +    
  +    
       
       public MavenArtifact getArtifact( Dependency dependency, MavenProject project )
       {
          MavenArtifact retValue =  artifactFactory.createArtifact( dependency );
          
  -       String localRepository = project.getLocalRepository();
          
  -       if ( !retValue.getFile( localRepository ).exists() )
  +       if ( retValue.isSnapshot() )
          {
  -           //here we can try to fetch artifact using wagon
  -           retValue = null;
  +          // for snapshots artifact we always have to try to check if newer version 
exists  
  +           
  +       }       
  +       else if ( !retValue.getFile().exists() )
  +       {        
  +           boolean downloaded = artifactDownloader.getRemoteArtifact( retValue, 
project.getRepositories()  );
  +           
  +           if ( !downloaded )
  +           {
  +               retValue = null;  
  +           }
          }
          
  +              
          return retValue;
           
       }
  @@ -49,6 +66,14 @@
           
           return getArtifact( d, project );
           
  +        
  +    }
  +    
  +    
  +    public MavenArtifact getPomArtifact( Dependency dependency, MavenProject 
project )
  +    {
  +                      
  +        return getArtifact( dependency, "pom", project );       
           
       }
       
  
  
  
  1.2       +3 -1      
maven-components/maven-project/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java
  
  Index: ArtifactResolver.java
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-project/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ArtifactResolver.java     8 May 2004 12:19:22 -0000       1.1
  +++ ArtifactResolver.java     10 May 2004 19:06:29 -0000      1.2
  @@ -21,4 +21,6 @@
       MavenArtifact getArtifact( Dependency dependency, MavenProject project );
       
       MavenArtifact getArtifact( Dependency dependency, String type, MavenProject 
project );
  +    
  +    MavenArtifact getPomArtifact( Dependency dependency, MavenProject project );
   }
  
  
  
  1.6       +37 -4     
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.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- MavenProject.java 8 May 2004 12:19:22 -0000       1.5
  +++ MavenProject.java 10 May 2004 19:06:30 -0000      1.6
  @@ -28,6 +28,7 @@
   import org.apache.maven.model.Organization;
   import org.apache.maven.model.Resource;
   import org.apache.maven.model.Scm;
  +import org.apache.maven.wagon.repository.Repository;
   import org.codehaus.plexus.util.StringUtils;
   
   import java.io.File;
  @@ -76,6 +77,13 @@
   
       /** Properties */
       private Map properties;
  +   
  +    private String FILE_SEPARATOR = "/";
  +
  +    private boolean alignedToBaseDirectory;
  +
  +    /**List of remote repositories which are visible for this project */
  +    private List repositories = new ArrayList();
   
       // ----------------------------------------------------------------------
       // Accessors
  @@ -762,9 +770,6 @@
           return false;
       }
   
  -    private String FILE_SEPARATOR = "/";
  -
  -    private boolean alignedToBaseDirectory;
   
       private void alignToBaseDirectory()
       {
  @@ -886,5 +891,33 @@
       {
            properties.put( "maven.repo.local", path );
       }
  +
  +    
  +    public List getRepositories()
  +    {
  +        return repositories;
  +    }
  +    
  +    
  +    public void setRepositories( List remoteRepositories )
  +    {        
  +        this.repositories = remoteRepositories;
  +    }
  +    
  +    public void addRepository( Repository repository )
  +    {        
  +        repositories.add( repository );
  +    }
  +    
  +    public void addRepository( String url )
  +    {        
  +        Repository repository = new Repository();
  +        
  +        repository.setUrl(  url );
  +        
  +        addRepository( repository );
  +        
  +    }
  +    
   }
   
  
  
  
  1.1                  
maven-components/maven-project/src/test/java/org/apache/maven/artifact/downloader/DefaultArtifactDownloaderTest.java
  
  Index: DefaultArtifactDownloaderTest.java
  ===================================================================
  package org.apache.maven.artifact.downloader;
  
  /*
   * Copyright 2001-2004 The Apache Software Foundation.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  
  import org.apache.maven.artifact.MavenArtifact;
  import org.apache.maven.artifact.download.ArtifactDownloader;
  import org.apache.maven.artifact.factory.MavenArtifactFactory;
  import org.apache.maven.project.AbstractProjectTestCase;
  import org.apache.maven.project.MavenProject;
  import org.codehaus.plexus.util.FileUtils;
  
  import java.io.File;
  import java.util.List;
  
  /**
   * 
   * @author <a href="mailto:[EMAIL PROTECTED]">Michal Maczka</a> 
   * @version $Id: DefaultArtifactDownloaderTest.java,v 1.1 2004/05/10 19:06:30 michal 
Exp $
   */
  public class DefaultArtifactDownloaderTest
      extends AbstractProjectTestCase
  {
      
      private ArtifactDownloader artifactDownloader;
      
      private MavenArtifactFactory artifactFactory;
      
      
      public DefaultArtifactDownloaderTest( String testName )
      {
          super( testName );
      }
      
      
         
      public void setUp() throws Exception
      {
          super.setUp();
          
          artifactDownloader = ( ArtifactDownloader ) lookup( ArtifactDownloader.ROLE 
);
          
          assertNotNull( "Test artifactDownloader can't be null!", artifactDownloader 
);
          
          artifactFactory = ( MavenArtifactFactory ) lookup( MavenArtifactFactory.ROLE 
);
          
      }
  
    
      
      public void testArtifactDownloading( )       
      {
                  
          File f = new File( getLocalRepository(),  
"/maven-test/poms/maven-test-a-1.0.pom" );
  
          assertTrue( "Test file: '" + f.getAbsolutePath() + "' doesn't exist!", 
f.exists() );
  
          File tempLocalRepository = new File( basedir, "target/repo-local" );
          
          tempLocalRepository.mkdirs();
          
          System.out.println( "Crated local repo: " + tempLocalRepository );
          
          try
          {
              
              // that's the only was I can influence MavenProjectBuilder
              System.setProperty( "maven.repo.local", tempLocalRepository.getPath()  );
              
              FileUtils.deleteDirectory( tempLocalRepository  );
              
              MavenProject project = projectBuilder.build( f );
                                                
              assertNotNull( "Project is null", project );
              
              assertTrue( "Local repsoitory could not be crated", f.exists() );
              
              File repo_1 = new File( basedir, "src/test/resources/remote-repo-1"  );
              
              File repo_2 = new File( basedir, "src/test/resources/remote-repo-2"  );
              
              project.addRepository( "file://" + repo_1.getPath()  );
              
              project.addRepository( "file://" + repo_2.getPath()  );
  
              assertEquals( 2, project.getRepositories().size() );
              
              
              List artifacts = project.getArtifacts();
              
              assertEquals( 2,  artifacts.size() );
              
              /*we are using a POM which looks like follows:
              <dependency>
                <groupId>maven-test</groupId>
                <artifactId>maven-test-b</artifactId>
                <version>1.0</version>
              </dependency>                    
              <dependency>
                <groupId>maven-test</groupId>
                <artifactId>maven-test-z</artifactId>
                <version>1.0</version>
              </dependency>
             */
              
              MavenArtifact artifactB = ( MavenArtifact ) artifacts.get( 0 );
              
              MavenArtifact artifactZ = ( MavenArtifact ) artifacts.get( 1 );
              
              assertFalse( artifactB.exists() );
              
              assertFalse( artifactZ.exists() );
              
              // this one is in repo-1
              assertTrue( "B should have been downloaded", 
artifactDownloader.getRemoteArtifact( artifactB, project.getRepositories() ) );
  
              assertTrue( "B should have been downloaded", artifactB.exists() );
              
              // this one is in repo-2
              assertTrue(  "Z should have been downloaded", 
artifactDownloader.getRemoteArtifact( artifactZ, project.getRepositories() ) );
              
              assertTrue( "Z should have been downloaded", artifactZ.exists() );
              
              // A has accompanying   md5 file
              assertTrue( "MD5 file for B should have been downloaded",  
artifactB.getChecksumFile().exists() );
              
              
              // @todo: this is failing for me. there should be assertFalse in place 
of assertTrue.
              // there are two bugs here:
              // a) file should not be created - and this is a problem of wagon
              // b) I call file.delete() which is failing. is it a bug of jvm for ms 
windows or output stream is not closed?
                          
              //Z does not have md5 file
              assertTrue( "MD5 file for Z does not exist in any repo and should not be 
downloaded: " + artifactZ.getChecksumFile() , artifactZ.getChecksumFile().exists() );
              
              // try to crate bizzare artifact and download it. this should fail.
              
              artifactB.getDependency().setGroupId( "bizzare" );
              
              assertFalse( "Not existing artifact cannot be downloaded", 
artifactDownloader.getRemoteArtifact( artifactB, project.getRepositories() ) );
              
              
          }
          catch ( Exception e )
          {  
               e.printStackTrace();
               
               fail( e.getMessage() );
          }
      }
  }
  
  
  
  1.1                  
maven-components/maven-project/src/test/resources/remote-repo-1/maven-test/jars/maven-test-b-1.0.jar.md5
  
  Index: maven-test-b-1.0.jar.md5
  ===================================================================
  fix me: add real md5 checksum
  
  
  
  1.1                  
maven-components/maven-project/src/test/resources/remote-repo-1/maven-test/jars/maven-test-b-1.0.jar
  
  Index: maven-test-b-1.0.jar
  ===================================================================
  foo
  
  
  
  1.1                  
maven-components/maven-project/src/test/resources/local-repo/maven-test/poms/maven-test-a-1.0.pom
  
  Index: maven-test-a-1.0.pom
  ===================================================================
  <project>
    <groupId>maven-test</groupId>
    <artifactId>maven-test-a</artifactId>
    <currentVersion>1.0</currentVersion>
    <dependencies>
      <dependency>
        <groupId>maven-test</groupId>
        <artifactId>maven-test-b</artifactId>
        <version>1.0</version>
      </dependency>
      
      <!-- pom for this dependency is missing -->
      <dependency>
        <groupId>maven-test</groupId>
        <artifactId>maven-test-z</artifactId>
        <version>1.0</version>
      </dependency>
    </dependencies>
  </project>
  
  
  
  1.1                  
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
  ===================================================================
  <project>
    <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.1                  
maven-components/maven-project/src/test/resources/local-repo/maven-test/poms/maven-test-d-1.1.pom
  
  Index: maven-test-d-1.1.pom
  ===================================================================
  <project>
    <groupId>maven-test</groupId>
    <artifactId>maven-test-d</artifactId>
    <version>1.1</version>
  </project>
  
  
  
  1.1                  
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
  ===================================================================
  <project>
    <groupId>maven-test</groupId>
    <artifactId>maven-test-c</artifactId>
    <version>1.0</version>
    <dependencies>
      <dependency>
        <groupId>maven-test</groupId>
        <artifactId>maven-test-d</artifactId>
        <version>1.2</version>
      </dependency>
  
      <dependency>
        <groupId>maven-test</groupId>
        <artifactId>maven-test-z</artifactId>
        <version>1.0</version>
      </dependency>
      
      
    </dependencies>
  </project>
  
  
  
  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
  ===================================================================
  <project>
    <groupId>maven-test</groupId>
    <artifactId>maven-test-d/artifactId>
    <version>1.1</version>
  </project>
  
  
  
  1.1                  
maven-components/maven-project/src/main/java/org/apache/maven/artifact/download/ArtifactDownloader.java
  
  Index: ArtifactDownloader.java
  ===================================================================
  package org.apache.maven.artifact.download;
  
  import java.util.List;
  
  import org.apache.maven.artifact.MavenArtifact;
  import org.apache.maven.wagon.repository.Repository;
  
  
  
  
  /**
   * Component which downloads artifacts ([EMAIL PROTECTED] 
org.apache.maven.artifact.MavenArtifact}) from
   * remote repository (repositories) to the local repository
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Michal Maczka</a>
   * @version $Id: ArtifactDownloader.java,v 1.1 2004/05/10 19:06:30 michal Exp $
   */
  public interface ArtifactDownloader
  {
      /** Component role name*/
      public static final String ROLE = ArtifactDownloader.class.getName(  );
  
      /**
       * Downloads given <code>artifact</code> from the maven remote repositories
       *
       *
       * @param artifact the artifact to retrieve from the repositories.
       * @return true if the download is successful, <code>false</code> otherwise.
       */
      public boolean getRemoteArtifact( MavenArtifact artifact, Repository 
remoteRepository );
  
      /**
       *
       * @param artifact 
       * @param repositories (List<Repository>)
  
       * @return <code>true</code> if the from any of the repositories were succesful, 
<code>false</code> otherwise
       */
      public boolean getRemoteArtifact( MavenArtifact artifact, List repositories );
  
  
  }
  
  
  
  1.1                  
maven-components/maven-project/src/main/java/org/apache/maven/artifact/download/DefaultArtifactDownloader.java
  
  Index: DefaultArtifactDownloader.java
  ===================================================================
  package org.apache.maven.artifact.download;
  
  import java.io.File;
  import java.util.Iterator;
  import java.util.List;
  
  import org.apache.maven.artifact.MavenArtifact;
  import org.apache.maven.artifact.factory.MavenArtifactFactory;
  import org.apache.maven.wagon.Wagon;
  import org.apache.maven.wagon.manager.WagonManager;
  import org.apache.maven.wagon.repository.Repository;
  import org.codehaus.plexus.logging.AbstractLogEnabled;
  
  
  
  
  /**
   * Class resposible to download [EMAIL PROTECTED] 
org.apache.maven.artifact.Artifact} from
   * remote repository (repositories) to local repository
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Michal Maczka</a>
   * @version $Id: DefaultArtifactDownloader.java,v 1.1 2004/05/10 19:06:30 michal Exp 
$
   */
  public class DefaultArtifactDownloader extends AbstractLogEnabled implements 
ArtifactDownloader
  {
  
          
      private WagonManager wagonManager;
      
      /**
       * 
       */
      private MavenArtifactFactory artifactFactory;
  
      
      /**     
       * @see 
org.apache.maven.artifact.download.ArtifactDownloader#getRemoteArtifact(org.apache.maven.artifact.Artifact,
 org.apache.maven.project.Project)
       */
     public boolean getRemoteArtifact( MavenArtifact artifact, List repositories )
     {
         boolean downloaded = false;
  
         for ( Iterator iter = repositories.iterator(); iter.hasNext(); )
         {           
             try
             {
                 Repository repository = ( Repository ) iter.next(  );
  
                 downloaded = getRemoteArtifact( artifact,  repository );
  
                 if ( downloaded )
                 {
                    break;
                 }  
             }
             catch ( Exception e )
             {
                 continue;
             }
         }
  
         return downloaded;
     }
      
      
      /**
       * 
       * @see 
org.apache.maven.artifact.download.ArtifactDownloader#getRemoteArtifact(org.apache.maven.artifact.Artifact,
 org.apache.maven.project.Project)
       */
      public boolean getRemoteArtifact( MavenArtifact artifact, Repository repository  
)
      {
          Wagon wagon = null;
          
          try
          {
              wagon = wagonManager.getWagon( repository.getProtocol() );
              
              wagon.connect(  repository  );
              
              return get( wagon, artifact );
              
          }
          catch ( Exception e )
          {
              
              //@todo improve error handling and reporting
              getLogger().info( "Failed to download: " + artifact.getUrlPath() + " 
from " + repository.getUrl(), e );
              
              return false;
          }
          finally
          {
              if ( wagon != null )
              {
                  try
                  {
                     wagonManager.releaseWagon( wagon );
                  }
                  catch( Exception e )
                  {
                     getLogger().error( "Failed to release wagon", e  );    
                  }
              }
          }
      }
  
      /**
       * @param wagon
       * @param artifact
       */
      private boolean get( Wagon wagon, MavenArtifact artifact ) 
      {
          
          getLogger().info( "Trying to download: " + artifact.getUrlPath() + "  from " 
+ wagon.getRepository().getUrl() );
          
          String source = artifact.getUrlPath();
          
          File file = artifact.getFile( );
          
          try
          {
              wagon.get( source, file );
          }
          catch( Exception e)
          {
              getLogger().info( artifact.getUrlPath() + " was not found in " + 
wagon.getRepository().getUrl() );
              
              // that is imo bug in wagon. 
              //When wagon cannot download it should delete a file or even don't 
attempt to create it
              
              if ( file.exists() )
              {
                 file.delete();    
              }
              
              return false;    
          }
          
          getLogger().info( artifact.getUrlPath() + " was found in " + 
wagon.getRepository().getUrl() );
          
          String checksum = artifact.getChecksumUrlPath(); 
          
          File checksumFile = artifact.getChecksumFile( );
          
          try
          {
              getLogger().info( "Trying to download md5 cheksum: " + 
artifact.getChecksumUrlPath() + "  from " + wagon.getRepository().getUrl() );
              
              wagon.get( checksum, checksumFile );
              
          }
          catch ( Exception e )
          {
              
              //we can live without md5 checksum file
              
                if ( checksumFile.exists() )
                {
                    checksumFile.delete();
                }
          }
          
          
          
          return true;
                  
      }
  
      
  
     
  }
  
  
  
  1.1                  
maven-components/maven-project/src/test/resources/remote-repo-2/maven-test/jars/maven-test-z-1.0.jar
  
  Index: maven-test-z-1.0.jar
  ===================================================================
  foo
  
  
  
  1.4       +1 -1      
maven-components/maven-project/src/test/java/org/apache/maven/project/AbstractProjectTestCase.java
  
  Index: AbstractProjectTestCase.java
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-project/src/test/java/org/apache/maven/project/AbstractProjectTestCase.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- AbstractProjectTestCase.java      8 May 2004 12:19:22 -0000       1.3
  +++ AbstractProjectTestCase.java      10 May 2004 19:06:30 -0000      1.4
  @@ -7,7 +7,7 @@
   {
       protected MavenProjectBuilder projectBuilder;
   
  -    private String localRepository =  System.getProperty( "basedir" ) + 
"/src/test/resources/maven-repo-local";
  +    private String localRepository =  System.getProperty( "basedir" ) + 
"/src/test/resources/local-repo";
       
       public AbstractProjectTestCase( String testName )
       {
  
  
  
  1.3       +3 -8      
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.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DefaultArtifactCollector.java     8 May 2004 12:19:23 -0000       1.2
  +++ DefaultArtifactCollector.java     10 May 2004 19:06:30 -0000      1.3
  @@ -60,8 +60,6 @@
           List queue = new LinkedList();
   
           queue.add( project );
  -
  -        System.out.println( "size: " + queue.size() );
           
           while ( !queue.isEmpty() )
           {
  @@ -147,11 +145,8 @@
                          //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 );
  @@ -173,13 +168,13 @@
           
           MavenProject retValue = null;
           
  -        MavenArtifact pomArtifact = artifactResolver.getArtifact( dependency, 
"pom", project );
  +        MavenArtifact pomArtifact = artifactResolver.getPomArtifact( dependency, 
project );
           
           if ( pomArtifact != null )
           {
                try
                {
  -                 retValue = projectBuilder.build( pomArtifact.getFile( 
project.getLocalRepository() ) );
  +                 retValue = projectBuilder.build( pomArtifact.getFile( ) );
                }
                catch ( ProjectBuildingException e )
                {
  
  
  
  1.1                  
maven-components/maven-project/src/test/resources/remote-repo-1/maven-test/poms/maven-test-b-1.0.pom
  
  Index: maven-test-b-1.0.pom
  ===================================================================
  <project>
    <groupId>maven-test</groupId>
    <artifactId>maven-test-a</artifactId>
    <currentVersion>1.0</currentVersion>
    <dependencies>
      <dependency>
        <groupId>maven-test</groupId>
        <artifactId>maven-test-b</artifactId>
        <version>1.0</version>
      </dependency>
      
      <!-- pom for this dependency is missing -->
      <dependency>
        <groupId>maven-test</groupId>
        <artifactId>maven-test-z</artifactId>
        <version>1.0</version>
      </dependency>
    </dependencies>
  </project>
  
  
  
  1.2       +2 -4      
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.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefaultArtifactCollectorTest.java 8 May 2004 12:19:23 -0000       1.1
  +++ DefaultArtifactCollectorTest.java 10 May 2004 19:06:30 -0000      1.2
  @@ -32,9 +32,7 @@
   public class DefaultArtifactCollectorTest
       extends AbstractProjectTestCase
   {
  -    
  - 
  -    
  +         
   
       private ArtifactCollector artifactCollector;
       
  
  
  

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

Reply via email to