From 3fd984190d7860673cbfdfbe5cb7ab7a07ffde65 Mon Sep 17 00:00:00 2001 From: Carlos Sanchez Gonzalez Date: Thu, 4 Jan 2007 12:18:54 +0000 Subject: [PATCH] [MRM-263] Converter doesn't generate checksums git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@492545 13f79535-47bb-0310-9956-ffa450edef68 --- .../converter/DefaultRepositoryConverter.java | 43 ++++--- .../transaction/AbstractTransactionEvent.java | 116 ++++++++++++++++-- .../converter/transaction/CopyFileEvent.java | 75 ++++++++++- .../transaction/CreateFileEvent.java | 35 +++++- .../transaction/FileTransaction.java | 38 +++++- .../transaction/AbstractFileEventTest.java | 77 ++++++++++++ .../transaction/CopyFileEventTest.java | 76 +++++++++--- .../transaction/CreateFileEventTest.java | 25 ++-- .../converter/RepositoryConverterTest.xml | 16 +-- 9 files changed, 430 insertions(+), 71 deletions(-) create mode 100644 archiva-converter/src/test/java/org/apache/maven/archiva/converter/transaction/AbstractFileEventTest.java diff --git a/archiva-converter/src/main/java/org/apache/maven/archiva/converter/DefaultRepositoryConverter.java b/archiva-converter/src/main/java/org/apache/maven/archiva/converter/DefaultRepositoryConverter.java index f503d02f7..c723a11ab 100644 --- a/archiva-converter/src/main/java/org/apache/maven/archiva/converter/DefaultRepositoryConverter.java +++ b/archiva-converter/src/main/java/org/apache/maven/archiva/converter/DefaultRepositoryConverter.java @@ -70,14 +70,11 @@ public class DefaultRepositoryConverter implements RepositoryConverter { /** - * @plexus.requirement role-hint="sha1" + * {@link List}<{@link Digester}> + * + * @plexus.requirement role="org.codehaus.plexus.digest.Digester" */ - private Digester sha1Digester; - - /** - * @plexus.requirement role-hint="md5" - */ - private Digester md5Digester; + private List digesters; /** * @plexus.requirement @@ -204,7 +201,7 @@ public class DefaultRepositoryConverter mappingWriter.write( writer, metadata ); - transaction.createFile( writer.toString(), file ); + transaction.createFile( writer.toString(), file, digesters ); } catch ( IOException e ) { @@ -440,7 +437,7 @@ public class DefaultRepositoryConverter } if ( force || !matching ) { - transaction.createFile( contents, targetFile ); + transaction.createFile( contents, targetFile, digesters ); } } catch ( IOException e ) @@ -475,7 +472,7 @@ public class DefaultRepositoryConverter MavenXpp3Writer Xpp3Writer = new MavenXpp3Writer(); Xpp3Writer.write( writer, v4Model ); - transaction.createFile( writer.toString(), targetFile ); + transaction.createFile( writer.toString(), targetFile, digesters ); List warnings = translator.getWarnings(); @@ -590,7 +587,7 @@ public class DefaultRepositoryConverter MavenXpp3Writer pomWriter = new MavenXpp3Writer(); pomWriter.write( strWriter, pom ); - transaction.createFile( strWriter.toString(), pomFile ); + transaction.createFile( strWriter.toString(), pomFile, digesters ); } private String getI18NString( String key, String arg0 ) @@ -606,14 +603,26 @@ public class DefaultRepositoryConverter private boolean testChecksums( Artifact artifact, File file, ReportingDatabase reporter ) throws IOException { - - boolean result = - verifyChecksum( file, file.getName() + ".md5", md5Digester, reporter, artifact, "failure.incorrect.md5" ); - result = result && verifyChecksum( file, file.getName() + ".sha1", sha1Digester, reporter, artifact, - "failure.incorrect.sha1" ); + boolean result = true; + Iterator it = digesters.iterator(); + while ( it.hasNext() ) + { + Digester digester = (Digester) it.next(); + result &= verifyChecksum( file, file.getName() + "." + getDigesterFileExtension( digester ), digester, + reporter, artifact, "failure.incorrect." + getDigesterFileExtension( digester ) ); + } return result; } + /** + * File extension for checksums + * TODO should be moved to plexus-digester ? + */ + private String getDigesterFileExtension( Digester digester ) + { + return digester.getAlgorithm().toLowerCase().replaceAll( "-", "" ); + } + private boolean verifyChecksum( File file, String fileName, Digester digester, ReportingDatabase reporter, Artifact artifact, String key ) throws IOException @@ -669,7 +678,7 @@ public class DefaultRepositoryConverter { if ( testChecksums( artifact, sourceFile, reporter ) ) { - transaction.copyFile( sourceFile, targetFile ); + transaction.copyFile( sourceFile, targetFile, digesters ); } else { diff --git a/archiva-converter/src/main/java/org/apache/maven/archiva/converter/transaction/AbstractTransactionEvent.java b/archiva-converter/src/main/java/org/apache/maven/archiva/converter/transaction/AbstractTransactionEvent.java index 94d1b8f5a..10479ec62 100644 --- a/archiva-converter/src/main/java/org/apache/maven/archiva/converter/transaction/AbstractTransactionEvent.java +++ b/archiva-converter/src/main/java/org/apache/maven/archiva/converter/transaction/AbstractTransactionEvent.java @@ -19,25 +19,54 @@ package org.apache.maven.archiva.converter.transaction; * under the License. */ -import org.apache.commons.io.FileUtils; - import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; import java.util.List; +import java.util.Map; + +import org.apache.commons.io.FileUtils; +import org.codehaus.plexus.digest.Digester; +import org.codehaus.plexus.digest.DigesterException; +import org.codehaus.plexus.logging.AbstractLogEnabled; /** * Abstract class for the TransactionEvents * * @author Edwin Punzalan + * @author Carlos Sanchez + * @version $Id$ */ public abstract class AbstractTransactionEvent + extends AbstractLogEnabled implements TransactionEvent { - private File backup; + private Map backups = new HashMap();; - private List createdDirs; + private List createdDirs = new ArrayList(); + + private List createdFiles = new ArrayList(); + + /** {@link List}<{@link Digester}> */ + private List digesters; + + protected AbstractTransactionEvent() + { + this( new ArrayList( 0 ) ); + } + + protected AbstractTransactionEvent( List digesters ) + { + this.digesters = digesters; + } + + protected List getDigesters() + { + return digesters; + } /** * Method that creates a directory as well as all the parent directories needed @@ -58,8 +87,6 @@ public abstract class AbstractTransactionEvent parent = parent.getParentFile(); } - createdDirs = new ArrayList(); - while ( !createDirs.isEmpty() ) { File directory = (File) createDirs.remove( createDirs.size() - 1 ); @@ -99,25 +126,100 @@ public abstract class AbstractTransactionEvent } } + protected void revertFilesCreated() + throws IOException + { + Iterator it = createdFiles.iterator(); + while ( it.hasNext() ) + { + File file = (File) it.next(); + file.delete(); + it.remove(); + } + } + protected void createBackup( File file ) throws IOException { if ( file.exists() && file.isFile() ) { - backup = File.createTempFile( "temp-", ".backup" ); + File backup = File.createTempFile( "temp-", ".backup" ); FileUtils.copyFile( file, backup ); backup.deleteOnExit(); + + backups.put( file, backup ); + } + } + + protected void restoreBackups() + throws IOException + { + Iterator it = backups.entrySet().iterator(); + while ( it.hasNext() ) + { + Map.Entry entry = (Map.Entry) it.next(); + FileUtils.copyFile( (File) entry.getValue(), (File) entry.getKey() ); } } protected void restoreBackup( File file ) throws IOException { + File backup = (File) backups.get( file ); if ( backup != null ) { FileUtils.copyFile( backup, file ); } } + + /** + * Create checksums of file using all digesters defined at construction time. + * + * @param file + * @param force whether existing checksums should be overwritten or not + * @throws IOException + */ + protected void createChecksums( File file, boolean force ) + throws IOException + { + Iterator it = getDigesters().iterator(); + while ( it.hasNext() ) + { + Digester digester = (Digester) it.next(); + File checksumFile = new File( file.getAbsolutePath() + "." + getDigesterFileExtension( digester ) ); + if ( checksumFile.exists() ) + { + if ( !force ) + { + continue; + } + createBackup( checksumFile ); + } + else + { + createdFiles.add( checksumFile ); + } + try + { + FileUtils.writeStringToFile( checksumFile, digester.calc( file ), null ); + } + catch ( DigesterException e ) + { + // the Digester API just wraps IOException and should be fixed + throw (IOException) e.getCause(); + } + } + } + + /** + * File extension for checksums + * TODO should be moved to plexus-digester ? + */ + protected String getDigesterFileExtension( Digester digester ) + { + return digester.getAlgorithm().toLowerCase().replaceAll( "-", "" ); + } + } diff --git a/archiva-converter/src/main/java/org/apache/maven/archiva/converter/transaction/CopyFileEvent.java b/archiva-converter/src/main/java/org/apache/maven/archiva/converter/transaction/CopyFileEvent.java index c1db5d29f..96cc72d07 100644 --- a/archiva-converter/src/main/java/org/apache/maven/archiva/converter/transaction/CopyFileEvent.java +++ b/archiva-converter/src/main/java/org/apache/maven/archiva/converter/transaction/CopyFileEvent.java @@ -19,15 +19,21 @@ package org.apache.maven.archiva.converter.transaction; * under the License. */ -import org.apache.commons.io.FileUtils; - import java.io.File; import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.apache.commons.io.FileUtils; +import org.codehaus.plexus.digest.Digester; /** * Event to copy a file. * * @author Brett Porter + * @author Carlos Sanchez + * @version $Id$ */ public class CopyFileEvent extends AbstractTransactionEvent @@ -36,8 +42,28 @@ public class CopyFileEvent private final File destination; + /** + * Creates a copy file event with no digesters + * + * @deprecated use other constructors + * + * @param source + * @param destination + */ public CopyFileEvent( File source, File destination ) { + this( source, destination, new ArrayList( 0 ) ); + } + + /** + * + * @param source + * @param destination + * @param digesters {@link List}<{@link Digester}> digesters to use for checksumming + */ + public CopyFileEvent( File source, File destination, List digesters ) + { + super( digesters ); this.source = source; this.destination = destination; } @@ -50,6 +76,47 @@ public class CopyFileEvent mkDirs( destination.getParentFile() ); FileUtils.copyFile( source, destination ); + + createChecksums( destination, true ); + copyChecksums(); + + copyChecksum( "asc" ); + } + + /** + * Copy checksums of source file with all digesters if exist + * + * @throws IOException + */ + private void copyChecksums() + throws IOException + { + Iterator it = getDigesters().iterator(); + while ( it.hasNext() ) + { + Digester digester = (Digester) it.next(); + copyChecksum( getDigesterFileExtension( digester ) ); + } + } + + /** + * Copy checksum of source file with extension provided if exists + * + * @param extension + * @return whether the checksum exists or not + * @throws IOException + */ + private boolean copyChecksum( String extension ) + throws IOException + { + File checksumSource = new File( source.getAbsolutePath() + "." + extension ); + if ( checksumSource.exists() ) + { + File checksumDestination = new File( destination.getAbsolutePath() + "." + extension ); + FileUtils.copyFile( checksumSource, checksumDestination ); + return true; + } + return false; } public void rollback() @@ -57,8 +124,10 @@ public class CopyFileEvent { destination.delete(); + revertFilesCreated(); + revertMkDirs(); - restoreBackup( destination ); + restoreBackups(); } } diff --git a/archiva-converter/src/main/java/org/apache/maven/archiva/converter/transaction/CreateFileEvent.java b/archiva-converter/src/main/java/org/apache/maven/archiva/converter/transaction/CreateFileEvent.java index 5898baa4a..d8c567997 100644 --- a/archiva-converter/src/main/java/org/apache/maven/archiva/converter/transaction/CreateFileEvent.java +++ b/archiva-converter/src/main/java/org/apache/maven/archiva/converter/transaction/CreateFileEvent.java @@ -19,15 +19,20 @@ package org.apache.maven.archiva.converter.transaction; * under the License. */ -import org.apache.commons.io.FileUtils; - import java.io.File; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.io.FileUtils; +import org.codehaus.plexus.digest.Digester; /** * Event for creating a file from a string content. * * @author Brett Porter + * @author Carlos Sanchez + * @version $Id$ */ public class CreateFileEvent extends AbstractTransactionEvent @@ -36,8 +41,28 @@ public class CreateFileEvent private final String content; + /** + * Creates a create file event with no digesters + * + * @deprecated use other constructors + * + * @param content + * @param destination + */ public CreateFileEvent( String content, File destination ) { + this( content, destination, new ArrayList( 0 ) ); + } + + /** + * + * @param content + * @param destination + * @param digesters {@link List}<{@link Digester}> digesters to use for checksumming + */ + public CreateFileEvent( String content, File destination, List digesters ) + { + super( digesters ); this.content = content; this.destination = destination; } @@ -55,6 +80,8 @@ public class CreateFileEvent } FileUtils.writeStringToFile( destination, content, null ); + + createChecksums( destination, true ); } public void rollback() @@ -62,8 +89,10 @@ public class CreateFileEvent { destination.delete(); + revertFilesCreated(); + revertMkDirs(); - restoreBackup( destination ); + restoreBackups(); } } diff --git a/archiva-converter/src/main/java/org/apache/maven/archiva/converter/transaction/FileTransaction.java b/archiva-converter/src/main/java/org/apache/maven/archiva/converter/transaction/FileTransaction.java index 80b206867..f1c668ab5 100644 --- a/archiva-converter/src/main/java/org/apache/maven/archiva/converter/transaction/FileTransaction.java +++ b/archiva-converter/src/main/java/org/apache/maven/archiva/converter/transaction/FileTransaction.java @@ -20,10 +20,12 @@ package org.apache.maven.archiva.converter.transaction; */ import org.apache.maven.archiva.converter.RepositoryConversionException; +import org.codehaus.plexus.digest.Digester; import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -80,13 +82,45 @@ public class FileTransaction } } + /** + * @deprecated use {@link #copyFile(File, File, List)} + * @param source + * @param destination + */ public void copyFile( File source, File destination ) { - events.add( new CopyFileEvent( source, destination ) ); + copyFile( source, destination, Collections.EMPTY_LIST ); } + /** + * + * @param source + * @param destination + * @param digesters {@link List}<{@link Digester}> digesters to use for checksumming + */ + public void copyFile( File source, File destination, List digesters ) + { + events.add( new CopyFileEvent( source, destination, digesters ) ); + } + + /** + * @deprecated use {@link #createFile(String, File, List)} + * @param content + * @param destination + */ public void createFile( String content, File destination ) { - events.add( new CreateFileEvent( content, destination ) ); + createFile( content, destination, Collections.EMPTY_LIST ); + } + + /** + * + * @param content + * @param destination + * @param digesters {@link List}<{@link Digester}> digesters to use for checksumming + */ + public void createFile( String content, File destination, List digesters ) + { + events.add( new CreateFileEvent( content, destination, digesters ) ); } } diff --git a/archiva-converter/src/test/java/org/apache/maven/archiva/converter/transaction/AbstractFileEventTest.java b/archiva-converter/src/test/java/org/apache/maven/archiva/converter/transaction/AbstractFileEventTest.java new file mode 100644 index 000000000..f768e1e72 --- /dev/null +++ b/archiva-converter/src/test/java/org/apache/maven/archiva/converter/transaction/AbstractFileEventTest.java @@ -0,0 +1,77 @@ +package org.apache.maven.archiva.converter.transaction; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 java.io.File; +import java.io.IOException; +import java.util.List; + +import org.codehaus.plexus.PlexusTestCase; +import org.codehaus.plexus.digest.Digester; + +/** + * + * @author Carlos Sanchez + * @version $Id$ + */ +public abstract class AbstractFileEventTest + extends PlexusTestCase +{ + protected List digesters; + + public void setUp() + throws Exception + { + super.setUp(); + + digesters = getContainer().lookupList( Digester.class.getName() ); + } + + protected void assertChecksumExists( File file, String algorithm ) + { + assertChecksum( file, algorithm, true ); + } + + protected void assertChecksumDoesNotExist( File file, String algorithm ) + { + assertChecksum( file, algorithm, false ); + } + + private void assertChecksum( File file, String algorithm, boolean exist ) + { + String msg = exist ? "exists" : "does not exist"; + File checksumFile = new File( file.getPath() + "." + algorithm ); + assertEquals( "Test file " + algorithm + " checksum " + msg, exist, checksumFile.exists() ); + } + + protected void assertChecksumCommit( File file ) + throws IOException + { + assertChecksumExists( file, "md5" ); + assertChecksumExists( file, "sha1" ); + } + + protected void assertChecksumRollback( File file ) + throws IOException + { + assertChecksumDoesNotExist( file, "md5" ); + assertChecksumDoesNotExist( file, "sha1" ); + } +} \ No newline at end of file diff --git a/archiva-converter/src/test/java/org/apache/maven/archiva/converter/transaction/CopyFileEventTest.java b/archiva-converter/src/test/java/org/apache/maven/archiva/converter/transaction/CopyFileEventTest.java index 7fbd681c7..acb6a3fdc 100644 --- a/archiva-converter/src/test/java/org/apache/maven/archiva/converter/transaction/CopyFileEventTest.java +++ b/archiva-converter/src/test/java/org/apache/maven/archiva/converter/transaction/CopyFileEventTest.java @@ -19,16 +19,17 @@ package org.apache.maven.archiva.converter.transaction; * under the License. */ +import java.io.File; +import java.io.IOException; + import org.apache.commons.io.FileUtils; import org.codehaus.plexus.PlexusTestCase; -import java.io.File; - /** * @author Edwin Punzalan */ public class CopyFileEventTest - extends PlexusTestCase + extends AbstractFileEventTest { private File testDir = new File( PlexusTestCase.getBasedir(), "target/transaction-tests/copy-file" ); @@ -36,6 +37,10 @@ public class CopyFileEventTest private File testSource = new File( PlexusTestCase.getBasedir(), "target/transaction-tests/test-file.txt" ); + private File testDestChecksum; + + private String source, oldChecksum; + public void setUp() throws Exception { @@ -46,16 +51,28 @@ public class CopyFileEventTest testSource.createNewFile(); FileUtils.writeStringToFile( testSource, "source contents", null ); + + testDestChecksum = new File( testDest.getPath() + ".sha1" ); + + testDestChecksum.getParentFile().mkdirs(); + + testDestChecksum.createNewFile(); + + FileUtils.writeStringToFile( testDestChecksum, "this is the checksum", null ); + + assertTrue( "Test if the source exists", testSource.exists() ); + + assertTrue( "Test if the destination checksum exists", testDestChecksum.exists() ); + + source = FileUtils.readFileToString( testSource, null ); + + oldChecksum = FileUtils.readFileToString( testDestChecksum, null ); } public void testCopyCommitRollback() throws Exception { - assertTrue( "Test if the source exists", testSource.exists() ); - - String source = FileUtils.readFileToString( testSource, null ); - - CopyFileEvent event = new CopyFileEvent( testSource, testDest ); + CopyFileEvent event = new CopyFileEvent( testSource, testDest, digesters ); assertFalse( "Test that the destination is not yet created", testDest.exists() ); @@ -63,6 +80,8 @@ public class CopyFileEventTest assertTrue( "Test that the destination is created", testDest.exists() ); + assertChecksumCommit( testDest ); + String target = FileUtils.readFileToString( testDest, null ); assertTrue( "Test that the destination contents are copied correctly", source.equals( target ) ); @@ -70,15 +89,13 @@ public class CopyFileEventTest event.rollback(); assertFalse( "Test that the destination file has been deleted", testDest.exists() ); + + assertChecksumRollback( testDest ); } public void testCopyCommitRollbackWithBackup() throws Exception { - assertTrue( "Test if the source exists", testSource.exists() ); - - String source = FileUtils.readFileToString( testSource, null ); - testDest.getParentFile().mkdirs(); testDest.createNewFile(); @@ -87,7 +104,7 @@ public class CopyFileEventTest assertTrue( "Test that the destination exists", testDest.exists() ); - CopyFileEvent event = new CopyFileEvent( testSource, testDest ); + CopyFileEvent event = new CopyFileEvent( testSource, testDest, digesters ); String target = FileUtils.readFileToString( testDest, null ); @@ -99,21 +116,21 @@ public class CopyFileEventTest assertTrue( "Test that the destination contents are copied correctly", source.equals( target ) ); + assertChecksumCommit( testDest ); + event.rollback(); target = FileUtils.readFileToString( testDest, null ); assertTrue( "Test the destination file contents have been restored", target.equals( "overwritten contents" ) ); + + assertChecksumRollback( testDest ); } public void testCreateRollbackCommit() throws Exception { - assertTrue( "Test if the source exists", testSource.exists() ); - - String source = FileUtils.readFileToString( testSource, null ); - - CopyFileEvent event = new CopyFileEvent( testSource, testDest ); + CopyFileEvent event = new CopyFileEvent( testSource, testDest, digesters ); assertFalse( "Test that the destination is not yet created", testDest.exists() ); @@ -125,6 +142,8 @@ public class CopyFileEventTest assertTrue( "Test that the destination is created", testDest.exists() ); + assertChecksumCommit( testDest ); + String target = FileUtils.readFileToString( testDest, null ); assertTrue( "Test that the destination contents are copied correctly", source.equals( target ) ); @@ -137,4 +156,25 @@ public class CopyFileEventTest FileUtils.deleteDirectory( new File( PlexusTestCase.getBasedir(), "target/transaction-tests" ) ); } + + protected void assertChecksumCommit( File file ) + throws IOException + { + super.assertChecksumCommit( file ); + + String target = FileUtils.readFileToString( testDestChecksum, null ); + + assertFalse( "Test that the destination checksum contents are created correctly", oldChecksum.equals( target ) ); + } + + protected void assertChecksumRollback( File file ) + throws IOException + { + assertChecksumDoesNotExist( file, "md5" ); + assertChecksumExists( file, "sha1" ); + + String target = FileUtils.readFileToString( testDestChecksum, null ); + + assertEquals( "Test that the destination checksum contents are reverted correctly", oldChecksum, target ); + } } diff --git a/archiva-converter/src/test/java/org/apache/maven/archiva/converter/transaction/CreateFileEventTest.java b/archiva-converter/src/test/java/org/apache/maven/archiva/converter/transaction/CreateFileEventTest.java index ca4d9dc0a..d27701e20 100644 --- a/archiva-converter/src/test/java/org/apache/maven/archiva/converter/transaction/CreateFileEventTest.java +++ b/archiva-converter/src/test/java/org/apache/maven/archiva/converter/transaction/CreateFileEventTest.java @@ -19,16 +19,16 @@ package org.apache.maven.archiva.converter.transaction; * under the License. */ +import java.io.File; + import org.apache.commons.io.FileUtils; import org.codehaus.plexus.PlexusTestCase; -import java.io.File; - /** * @author Edwin Punzalan */ public class CreateFileEventTest - extends PlexusTestCase + extends AbstractFileEventTest { private File testDir = new File( PlexusTestCase.getBasedir(), "target/transaction-tests/create-file" ); @@ -37,17 +37,22 @@ public class CreateFileEventTest { File testFile = new File( testDir, "test-file.txt" ); - CreateFileEvent event = new CreateFileEvent( "file contents", testFile ); + CreateFileEvent event = new CreateFileEvent( "file contents", testFile, digesters ); assertFalse( "Test file is not yet created", testFile.exists() ); event.commit(); - assertTrue( "Test file is not yet created", testFile.exists() ); + assertTrue( "Test file has been created", testFile.exists() ); + + assertChecksumCommit( testFile ); event.rollback(); assertFalse( "Test file is has been deleted after rollback", testFile.exists() ); + + assertChecksumRollback( testFile ); + assertFalse( "Test file parent directories has been rolledback too", testDir.exists() ); assertTrue( "target directory still exists", new File( PlexusTestCase.getBasedir(), "target" ).exists() ); } @@ -63,7 +68,7 @@ public class CreateFileEventTest FileUtils.writeStringToFile( testFile, "original contents", null ); - CreateFileEvent event = new CreateFileEvent( "modified contents", testFile ); + CreateFileEvent event = new CreateFileEvent( "modified contents", testFile, digesters ); String contents = FileUtils.readFileToString( testFile, null ); @@ -75,11 +80,15 @@ public class CreateFileEventTest assertEquals( "Test contents have not changed", "modified contents", contents ); + assertChecksumCommit( testFile ); + event.rollback(); contents = FileUtils.readFileToString( testFile, null ); assertEquals( "Test contents have not changed", "original contents", contents ); + + assertChecksumRollback( testFile ); } public void testCreateRollbackCommit() @@ -87,7 +96,7 @@ public class CreateFileEventTest { File testFile = new File( testDir, "test-file.txt" ); - CreateFileEvent event = new CreateFileEvent( "file contents", testFile ); + CreateFileEvent event = new CreateFileEvent( "file contents", testFile, digesters ); assertFalse( "Test file is not yet created", testFile.exists() ); @@ -98,6 +107,8 @@ public class CreateFileEventTest event.commit(); assertTrue( "Test file is not yet created", testFile.exists() ); + + assertChecksumCommit( testFile ); } protected void tearDown() diff --git a/archiva-converter/src/test/resources/org/apache/maven/archiva/converter/RepositoryConverterTest.xml b/archiva-converter/src/test/resources/org/apache/maven/archiva/converter/RepositoryConverterTest.xml index 980a3654f..1007fd835 100644 --- a/archiva-converter/src/test/resources/org/apache/maven/archiva/converter/RepositoryConverterTest.xml +++ b/archiva-converter/src/test/resources/org/apache/maven/archiva/converter/RepositoryConverterTest.xml @@ -30,13 +30,7 @@ org.codehaus.plexus.digest.Digester - sha1 - sha1Digester - - - org.codehaus.plexus.digest.Digester - md5 - md5Digester + digesters org.apache.maven.artifact.factory.ArtifactFactory @@ -62,13 +56,7 @@ org.codehaus.plexus.digest.Digester - sha1 - sha1Digester - - - org.codehaus.plexus.digest.Digester - md5 - md5Digester + digesters org.apache.maven.artifact.factory.ArtifactFactory