michal      2004/05/16 10:26:11

  Modified:    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/main/java/org/apache/maven/artifact/downloader
                        DefaultArtifactDownloader.java
               maven-project/src/main/java/org/apache/maven/artifact/snapshot
                        DefaultSnapshotResolver.java
  Log:
  Sketch of solution which demostrate the way in which artifact validation might work
  
  Revision  Changes    Path
  1.2       +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
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-project/src/test/resources/remote-repo-1/maven-test/jars/maven-test-b-1.0.jar.md5,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- maven-test-b-1.0.jar.md5  10 May 2004 19:06:30 -0000      1.1
  +++ maven-test-b-1.0.jar.md5  16 May 2004 17:26:11 -0000      1.2
  @@ -1 +1 @@
  -fix me: add real md5 checksum
  +a5c3b5cd0605bb7331d1846cdc14b13b
  
  
  
  1.2       +94 -1     
maven-components/maven-project/src/test/resources/remote-repo-1/maven-test/jars/maven-test-b-1.0.jar
  
        <<Binary file>>
  
  
  1.3       +44 -6     
maven-components/maven-project/src/main/java/org/apache/maven/artifact/downloader/DefaultArtifactDownloader.java
  
  Index: DefaultArtifactDownloader.java
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-project/src/main/java/org/apache/maven/artifact/downloader/DefaultArtifactDownloader.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DefaultArtifactDownloader.java    16 May 2004 15:58:10 -0000      1.2
  +++ DefaultArtifactDownloader.java    16 May 2004 17:26:11 -0000      1.3
  @@ -8,8 +8,10 @@
   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.observers.Md5SumObserver;
   import org.apache.maven.wagon.repository.Repository;
   import org.codehaus.plexus.logging.AbstractLogEnabled;
  +import org.codehaus.plexus.util.FileUtils;
   
   
   
  @@ -75,8 +77,6 @@
           {
               wagon = wagonManager.getWagon( repository.getProtocol() );
               
  -            System.out.println( "Wagon: " + wagon );
  -            
               wagon.connect(  repository  );
               
               return getRemoteArtifact( artifact, wagon );
  @@ -119,6 +119,23 @@
           
           File file = artifact.getFile( );
           
  +        // V A L I D A T I O N
  +        // Thats just a sketch of things we can do with wagon api
  +        //
  +        // ideally we can have couple of validators per one artifact 
  +        // maybe even artifact handler can be a participant of that process  
  +        //
  +        //  Wagon's TransferListener interface has a callback method 
transferFinished
  +        //  using this method md5SumObserver can even by itself fetch md5 cheksum 
once
  +        // the transfer of artifact was finished. 
  +        //  
  +        //  So we can easly add SH1, SHA2, validatoion or whatevre else while the 
logic 
  +        //  of this operation will be hidden.
  +        //
  +        Md5SumObserver md5SumObserver = new Md5SumObserver();
  +        
  +        wagon.addTransferListener( md5SumObserver );    
  +        
           try
           {
               wagon.get( source, file );
  @@ -126,23 +143,43 @@
           catch( Exception e)
           {
               getLogger().info( artifact.getUrlPath() + " was not found in " + 
wagon.getRepository().getUrl() );
  -                        
  -            
  +                                    
               return false;    
           }
  +        finally
  +        {
  +           wagon.removeTransferListener( md5SumObserver );
  +        }
           
           getLogger().info( artifact.getUrlPath() + " was found in " + 
wagon.getRepository().getUrl() );
           
  +        String actualMd5 = md5SumObserver.getMd5Sum();
  +        
  +        getLogger().info( "Actual MD5 checksum: " + actualMd5 );
  +        
           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 );
               
  +            // we've got the checksum file so we can use it for checking integrity
  +                       
  +            String expectedMd5 = FileUtils.fileRead(  checksumFile );
  +            
  +            getLogger().info( "Expected MD5 checksum: " + expectedMd5 );
  +            
  +            boolean valid = actualMd5.trim() .equals( expectedMd5.trim() );
  +            
  +            getLogger().info( "Checksum verification: "  + valid );
  +            
  +            
  +            
           }
           catch ( Exception e )
           {
  @@ -151,6 +188,7 @@
                             
           }
           
  +       
           
           
           return true;
  
  
  
  1.3       +1 -3      
maven-components/maven-project/src/main/java/org/apache/maven/artifact/snapshot/DefaultSnapshotResolver.java
  
  Index: DefaultSnapshotResolver.java
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-project/src/main/java/org/apache/maven/artifact/snapshot/DefaultSnapshotResolver.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DefaultSnapshotResolver.java      16 May 2004 15:58:10 -0000      1.2
  +++ DefaultSnapshotResolver.java      16 May 2004 17:26:11 -0000      1.3
  @@ -7,7 +7,6 @@
   
   import org.apache.maven.artifact.MavenArtifact;
   import org.apache.maven.artifact.downloader.ArtifactDownloader;
  -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;
  @@ -24,7 +23,6 @@
       
       private ArtifactDownloader artifactDownloader;
       
  -    private MavenArtifactFactory artifactFactory;
       
       
       /**
  
  
  

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

Reply via email to