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]