diff options
Diffstat (limited to 'archiva-modules/archiva-base/archiva-checksum/src')
5 files changed, 55 insertions, 1 deletions
diff --git a/archiva-modules/archiva-base/archiva-checksum/src/main/java/org/apache/archiva/checksum/ChecksummedFile.java b/archiva-modules/archiva-base/archiva-checksum/src/main/java/org/apache/archiva/checksum/ChecksummedFile.java index d93ec53a3..6b5657121 100644 --- a/archiva-modules/archiva-base/archiva-checksum/src/main/java/org/apache/archiva/checksum/ChecksummedFile.java +++ b/archiva-modules/archiva-base/archiva-checksum/src/main/java/org/apache/archiva/checksum/ChecksummedFile.java @@ -292,6 +292,15 @@ public class ChecksummedFile private boolean isValidChecksumPattern( String filename, String path ) { + // check if it is a remote metadata file + Pattern pattern = Pattern.compile( "maven-metadata-\\S*.xml" ); + Matcher m = pattern.matcher( path ); + if( m.matches() ) + { + return filename.endsWith( path ) || ( "-".equals( filename ) ) + || filename.endsWith( "maven-metadata.xml" ); + } + return filename.endsWith( path ) || ( "-".equals( filename ) ); } diff --git a/archiva-modules/archiva-base/archiva-checksum/src/test/java/org/apache/archiva/checksum/ChecksummedFileTest.java b/archiva-modules/archiva-base/archiva-checksum/src/test/java/org/apache/archiva/checksum/ChecksummedFileTest.java index 733ffb7d3..16377079b 100644 --- a/archiva-modules/archiva-base/archiva-checksum/src/test/java/org/apache/archiva/checksum/ChecksummedFileTest.java +++ b/archiva-modules/archiva-base/archiva-checksum/src/test/java/org/apache/archiva/checksum/ChecksummedFileTest.java @@ -36,9 +36,13 @@ public class ChecksummedFileTest { /** SHA1 checksum from www.ibiblio.org/maven2, incuding file path */ private static final String SERVLETAPI_SHA1 = "bcc82975c0f9c681fcb01cc38504c992553e93ba"; + + private static final String REMOTE_METADATA_SHA1 = "da39a3ee5e6b4b0d3255bfef95601890afd80709"; + + private static final String REMOTE_METADATA_MD5 = "d41d8cd98f00b204e9800998ecf8427e"; private File createTestableJar( String filename ) - throws IOException + throws IOException { File srcFile = getTestResource( filename ); File destFile = new File( getTestOutputDir(), srcFile.getName() ); @@ -223,4 +227,43 @@ public class ChecksummedFileTest assertEquals( "Checksum doesn't match", SERVLETAPI_SHA1, s ); } + public void testRemoteMetadataChecksumFilePathSha1() + throws IOException + { + String expected = REMOTE_METADATA_SHA1 + " /home/test/repository/examples/metadata/maven-metadata.xml"; + File testfile = getTestResource( "examples/metadata/maven-metadata-remote.xml" ); + ChecksummedFile checksummedFile = new ChecksummedFile( testfile ); + + try + { + String s = checksummedFile.parseChecksum( expected, ChecksumAlgorithm.SHA1, + "maven-metadata-remote.xml" ); + assertEquals( "Checksum doesn't match", REMOTE_METADATA_SHA1, s ); + } + catch ( IOException e ) + { + e.printStackTrace(); + fail( "IOException should not occur." ); + } + } + + public void testRemoteMetadataChecksumFilePathMd5() + throws IOException + { + String expected = REMOTE_METADATA_MD5 + " ./examples/metadata/maven-metadata.xml"; + File testfile = getTestResource( "examples/metadata/maven-metadata-remote.xml" ); + ChecksummedFile checksummedFile = new ChecksummedFile( testfile ); + + try + { + String s = checksummedFile.parseChecksum( expected, ChecksumAlgorithm.MD5, + "maven-metadata-remote.xml" ); + assertEquals( "Checksum doesn't match", REMOTE_METADATA_MD5, s ); + } + catch ( IOException e ) + { + e.printStackTrace(); + fail( "IOException should not occur." ); + } + } } diff --git a/archiva-modules/archiva-base/archiva-checksum/src/test/resources/examples/metadata/maven-metadata-remote.xml b/archiva-modules/archiva-base/archiva-checksum/src/test/resources/examples/metadata/maven-metadata-remote.xml new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-base/archiva-checksum/src/test/resources/examples/metadata/maven-metadata-remote.xml diff --git a/archiva-modules/archiva-base/archiva-checksum/src/test/resources/examples/metadata/maven-metadata-remote.xml.md5 b/archiva-modules/archiva-base/archiva-checksum/src/test/resources/examples/metadata/maven-metadata-remote.xml.md5 new file mode 100644 index 000000000..8f9a626ff --- /dev/null +++ b/archiva-modules/archiva-base/archiva-checksum/src/test/resources/examples/metadata/maven-metadata-remote.xml.md5 @@ -0,0 +1 @@ +d41d8cd98f00b204e9800998ecf8427e ./examples/metadata/maven-metadata.xml
\ No newline at end of file diff --git a/archiva-modules/archiva-base/archiva-checksum/src/test/resources/examples/metadata/maven-metadata-remote.xml.sha1 b/archiva-modules/archiva-base/archiva-checksum/src/test/resources/examples/metadata/maven-metadata-remote.xml.sha1 new file mode 100644 index 000000000..e87d16529 --- /dev/null +++ b/archiva-modules/archiva-base/archiva-checksum/src/test/resources/examples/metadata/maven-metadata-remote.xml.sha1 @@ -0,0 +1 @@ +da39a3ee5e6b4b0d3255bfef95601890afd80709 /home/test/repository/examples/metadata/maven-metadata.xml
\ No newline at end of file |