diff options
Diffstat (limited to 'archiva-modules/archiva-base/archiva-converter')
3 files changed, 28 insertions, 28 deletions
diff --git a/archiva-modules/archiva-base/archiva-converter/pom.xml b/archiva-modules/archiva-base/archiva-converter/pom.xml index 8d729fbc5..98a7abe04 100644 --- a/archiva-modules/archiva-base/archiva-converter/pom.xml +++ b/archiva-modules/archiva-base/archiva-converter/pom.xml @@ -43,6 +43,10 @@ </dependency> <dependency> <groupId>org.apache.archiva</groupId> + <artifactId>archiva-checksum</artifactId> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> <artifactId>archiva-repository-layer</artifactId> <exclusions> <exclusion> diff --git a/archiva-modules/archiva-base/archiva-converter/src/main/java/org/apache/archiva/converter/artifact/LegacyToDefaultConverter.java b/archiva-modules/archiva-base/archiva-converter/src/main/java/org/apache/archiva/converter/artifact/LegacyToDefaultConverter.java index f6a17a661..1404b0ca4 100644 --- a/archiva-modules/archiva-base/archiva-converter/src/main/java/org/apache/archiva/converter/artifact/LegacyToDefaultConverter.java +++ b/archiva-modules/archiva-base/archiva-converter/src/main/java/org/apache/archiva/converter/artifact/LegacyToDefaultConverter.java @@ -19,6 +19,9 @@ package org.apache.archiva.converter.artifact; * under the License. */ +import org.apache.archiva.checksum.ChecksumAlgorithm; +import org.apache.archiva.checksum.ChecksumValidationException; +import org.apache.archiva.checksum.ChecksummedFile; import org.apache.archiva.common.plexusbridge.DigesterUtils; import org.apache.archiva.common.plexusbridge.PlexusSisuBridge; import org.apache.archiva.common.plexusbridge.PlexusSisuBridgeException; @@ -59,6 +62,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -75,14 +79,11 @@ public class LegacyToDefaultConverter /** * {@link List}<{@link Digester} */ - private List<? extends Digester> digesters; + private List<ChecksumAlgorithm> digesters; @Inject private PlexusSisuBridge plexusSisuBridge; - @Inject - private DigesterUtils digesterUtils; - private ModelConverter translator; private ArtifactFactory artifactFactory; @@ -99,7 +100,8 @@ public class LegacyToDefaultConverter public void initialize() throws PlexusSisuBridgeException { - this.digesters = digesterUtils.getAllDigesters(); + // TODO: Should be configurable! + this.digesters = Arrays.asList(ChecksumAlgorithm.SHA256, ChecksumAlgorithm.SHA1, ChecksumAlgorithm.MD5); translator = plexusSisuBridge.lookup( ModelConverter.class ); artifactFactory = plexusSisuBridge.lookup( ArtifactFactory.class ); artifactHandlerManager = plexusSisuBridge.lookup( ArtifactHandlerManager.class ); @@ -287,7 +289,7 @@ public class LegacyToDefaultConverter throws IOException { boolean result = true; - for ( Digester digester : digesters ) + for ( ChecksumAlgorithm digester : digesters ) { result &= verifyChecksum( file, file.getFileName() + "." + getDigesterFileExtension( digester ), digester, //$NON-NLS-1$ @@ -297,24 +299,22 @@ public class LegacyToDefaultConverter return result; } - private boolean verifyChecksum( Path file, String fileName, Digester digester, Artifact artifact, String key ) + private boolean verifyChecksum( Path file, String fileName, ChecksumAlgorithm digester, Artifact artifact, String key ) throws IOException { - boolean result = true; - + boolean result; Path checksumFile = file.resolveSibling( fileName ); - if ( Files.exists(checksumFile) ) + // We ignore the check, if the checksum file does not exist + if (!Files.exists(checksumFile)) { + return true; + } + ChecksummedFile csFile = new ChecksummedFile( file ); + try { - String checksum = org.apache.archiva.common.utils.FileUtils.readFileToString( checksumFile, Charset.defaultCharset() ); - try - { - digester.verify( file.toFile(), checksum ); - } - catch ( DigesterException e ) - { - addWarning( artifact, Messages.getString( key ) ); - result = false; - } + result = csFile.isValidChecksum( digester, true ); + } catch (ChecksumValidationException e ) { + addWarning( artifact, Messages.getString( key ) ); + result = false; } return result; } @@ -323,9 +323,9 @@ public class LegacyToDefaultConverter * File extension for checksums * TODO should be moved to plexus-digester ? */ - private String getDigesterFileExtension( Digester digester ) + private String getDigesterFileExtension( ChecksumAlgorithm checksumAlgorithm ) { - return digester.getAlgorithm().toLowerCase().replaceAll( "-", "" ); //$NON-NLS-1$ //$NON-NLS-2$ + return checksumAlgorithm.getExt().get(0); } private boolean copyArtifact( Artifact artifact, ArtifactRepository targetRepository, FileTransaction transaction ) @@ -672,12 +672,12 @@ public class LegacyToDefaultConverter } - public List<? extends Digester> getDigesters() + public List<ChecksumAlgorithm> getDigesters() { return digesters; } - public void setDigesters( List<Digester> digesters ) + public void setDigesters( List<ChecksumAlgorithm> digesters ) { this.digesters = digesters; } diff --git a/archiva-modules/archiva-base/archiva-converter/src/test/java/org/apache/archiva/converter/artifact/LegacyToDefaultConverterTest.java b/archiva-modules/archiva-base/archiva-converter/src/test/java/org/apache/archiva/converter/artifact/LegacyToDefaultConverterTest.java index 5084bffa9..b6fdbf140 100644 --- a/archiva-modules/archiva-base/archiva-converter/src/test/java/org/apache/archiva/converter/artifact/LegacyToDefaultConverterTest.java +++ b/archiva-modules/archiva-base/archiva-converter/src/test/java/org/apache/archiva/converter/artifact/LegacyToDefaultConverterTest.java @@ -84,10 +84,6 @@ public class LegacyToDefaultConverterTest ArtifactRepositoryFactory factory = plexusSisuBridge.lookup( ArtifactRepositoryFactory.class ); - Map<String, ArtifactRepositoryLayout> layoutsMap = plexusSisuBridge.lookupMap( ArtifactRepositoryLayout.class ); - - System.out.println( "hints " + layoutsMap.keySet().toString() ); - ArtifactRepositoryLayout layout = plexusSisuBridge.lookup( ArtifactRepositoryLayout.class, "legacy" ); Path sourceBase = getTestFile( "src/test/source-repository" ); |