diff --git a/src/main/java/org/codehaus/plexus/archiver/bzip2/BZip2Archiver.java b/src/main/java/org/codehaus/plexus/archiver/bzip2/BZip2Archiver.java index 0e408cfb7..151db9308 100644 --- a/src/main/java/org/codehaus/plexus/archiver/bzip2/BZip2Archiver.java +++ b/src/main/java/org/codehaus/plexus/archiver/bzip2/BZip2Archiver.java @@ -21,6 +21,7 @@ import org.codehaus.plexus.archiver.ArchiveEntry; import org.codehaus.plexus.archiver.ArchiverException; import org.codehaus.plexus.archiver.ResourceIterator; +import org.codehaus.plexus.archiver.exceptions.EmptyArchiveException; public class BZip2Archiver extends AbstractArchiver @@ -38,6 +39,10 @@ public void execute() } ResourceIterator iter = getResources(); + if ( !iter.hasNext() ) + { + throw new EmptyArchiveException( "You must set at least one file." ); + } ArchiveEntry entry = iter.next(); if ( iter.hasNext() ) { diff --git a/src/main/java/org/codehaus/plexus/archiver/gzip/GZipArchiver.java b/src/main/java/org/codehaus/plexus/archiver/gzip/GZipArchiver.java index 79abbab0e..fd3ad77c1 100644 --- a/src/main/java/org/codehaus/plexus/archiver/gzip/GZipArchiver.java +++ b/src/main/java/org/codehaus/plexus/archiver/gzip/GZipArchiver.java @@ -21,6 +21,7 @@ import org.codehaus.plexus.archiver.ArchiveEntry; import org.codehaus.plexus.archiver.ArchiverException; import org.codehaus.plexus.archiver.ResourceIterator; +import org.codehaus.plexus.archiver.exceptions.EmptyArchiveException; public class GZipArchiver extends AbstractArchiver @@ -38,6 +39,10 @@ protected void execute() } ResourceIterator iter = getResources(); + if ( !iter.hasNext() ) + { + throw new EmptyArchiveException( "You must set at least one file." ); + } ArchiveEntry entry = iter.next(); if ( iter.hasNext() ) { diff --git a/src/main/java/org/codehaus/plexus/archiver/snappy/SnappyArchiver.java b/src/main/java/org/codehaus/plexus/archiver/snappy/SnappyArchiver.java index f71a020b9..dafbc1a61 100644 --- a/src/main/java/org/codehaus/plexus/archiver/snappy/SnappyArchiver.java +++ b/src/main/java/org/codehaus/plexus/archiver/snappy/SnappyArchiver.java @@ -21,6 +21,7 @@ import org.codehaus.plexus.archiver.ArchiveEntry; import org.codehaus.plexus.archiver.ArchiverException; import org.codehaus.plexus.archiver.ResourceIterator; +import org.codehaus.plexus.archiver.exceptions.EmptyArchiveException; /** * Snappy archiver. @@ -41,6 +42,10 @@ public void execute() } ResourceIterator iter = getResources(); + if ( !iter.hasNext() ) + { + throw new EmptyArchiveException( "You must set at least one file." ); + } ArchiveEntry entry = iter.next(); if ( iter.hasNext() ) { diff --git a/src/main/java/org/codehaus/plexus/archiver/xz/XZArchiver.java b/src/main/java/org/codehaus/plexus/archiver/xz/XZArchiver.java index f7ab53dc0..e8ff0ed99 100644 --- a/src/main/java/org/codehaus/plexus/archiver/xz/XZArchiver.java +++ b/src/main/java/org/codehaus/plexus/archiver/xz/XZArchiver.java @@ -20,6 +20,7 @@ import org.codehaus.plexus.archiver.ArchiveEntry; import org.codehaus.plexus.archiver.ArchiverException; import org.codehaus.plexus.archiver.ResourceIterator; +import org.codehaus.plexus.archiver.exceptions.EmptyArchiveException; /** * @author philiplourandos @@ -43,6 +44,10 @@ protected void execute() throws ArchiverException, IOException } ResourceIterator iter = getResources(); + if ( !iter.hasNext() ) + { + throw new EmptyArchiveException( "You must set at least one file." ); + } ArchiveEntry entry = iter.next(); if ( iter.hasNext() ) { diff --git a/src/test/java/org/codehaus/plexus/archiver/bzip2/BZip2ArchiverTest.java b/src/test/java/org/codehaus/plexus/archiver/bzip2/BZip2ArchiverTest.java index 96e5f7b86..619eca8e9 100644 --- a/src/test/java/org/codehaus/plexus/archiver/bzip2/BZip2ArchiverTest.java +++ b/src/test/java/org/codehaus/plexus/archiver/bzip2/BZip2ArchiverTest.java @@ -31,6 +31,7 @@ import java.util.zip.ZipFile; import org.codehaus.plexus.archiver.Archiver; import org.codehaus.plexus.archiver.BasePlexusArchiverTest; +import org.codehaus.plexus.archiver.exceptions.EmptyArchiveException; import org.codehaus.plexus.archiver.zip.ZipArchiver; import org.codehaus.plexus.util.FileUtils; import org.codehaus.plexus.util.IOUtil; @@ -57,6 +58,22 @@ public void testCreateArchive() archiver.createArchive(); } + public void testCreateEmptyArchive() + throws Exception + { + BZip2Archiver archiver = (BZip2Archiver) lookup( Archiver.ROLE, "bzip2" ); + archiver.setDestFile( getTestFile( "target/output/empty.bz2" ) ); + try + { + archiver.createArchive(); + + fail( "Creating empty archive should throw EmptyArchiveException" ); + } + catch ( EmptyArchiveException ignore ) + { + } + } + public void testCreateResourceCollection() throws Exception { diff --git a/src/test/java/org/codehaus/plexus/archiver/gzip/GZipArchiverTest.java b/src/test/java/org/codehaus/plexus/archiver/gzip/GZipArchiverTest.java index 1ecb435dd..5803a70c2 100644 --- a/src/test/java/org/codehaus/plexus/archiver/gzip/GZipArchiverTest.java +++ b/src/test/java/org/codehaus/plexus/archiver/gzip/GZipArchiverTest.java @@ -31,6 +31,7 @@ import java.util.zip.ZipFile; import org.codehaus.plexus.archiver.Archiver; import org.codehaus.plexus.archiver.BasePlexusArchiverTest; +import org.codehaus.plexus.archiver.exceptions.EmptyArchiveException; import org.codehaus.plexus.archiver.zip.ZipArchiver; import org.codehaus.plexus.util.FileUtils; import org.codehaus.plexus.util.IOUtil; @@ -57,6 +58,23 @@ public void testCreateArchive() archiver.createArchive(); } + + public void testCreateEmptyArchive() + throws Exception + { + GZipArchiver archiver = (GZipArchiver) lookup( Archiver.ROLE, "gzip" ); + archiver.setDestFile( getTestFile( "target/output/empty.gz" ) ); + try + { + archiver.createArchive(); + + fail( "Creating empty archive should throw EmptyArchiveException" ); + } + catch ( EmptyArchiveException ignore ) + { + } + } + public void testCreateResourceCollection() throws Exception { diff --git a/src/test/java/org/codehaus/plexus/archiver/snappy/SnappyArchiverTest.java b/src/test/java/org/codehaus/plexus/archiver/snappy/SnappyArchiverTest.java index 08b7eabcb..c2c93157a 100644 --- a/src/test/java/org/codehaus/plexus/archiver/snappy/SnappyArchiverTest.java +++ b/src/test/java/org/codehaus/plexus/archiver/snappy/SnappyArchiverTest.java @@ -31,6 +31,7 @@ import java.util.zip.ZipFile; import org.codehaus.plexus.archiver.Archiver; import org.codehaus.plexus.archiver.BasePlexusArchiverTest; +import org.codehaus.plexus.archiver.exceptions.EmptyArchiveException; import org.codehaus.plexus.archiver.zip.ZipArchiver; import org.codehaus.plexus.util.FileUtils; import org.codehaus.plexus.util.IOUtil; @@ -57,6 +58,22 @@ public void testCreateArchive() archiver.createArchive(); } + public void testCreateEmptyArchive() + throws Exception + { + SnappyArchiver archiver = (SnappyArchiver) lookup( Archiver.ROLE, "snappy" ); + archiver.setDestFile( getTestFile( "target/output/empty.snappy" ) ); + try + { + archiver.createArchive(); + + fail( "Creating empty archive should throw EmptyArchiveException" ); + } + catch ( EmptyArchiveException ignore ) + { + } + } + public void testCreateResourceCollection() throws Exception { diff --git a/src/test/java/org/codehaus/plexus/archiver/tar/TarArchiverTest.java b/src/test/java/org/codehaus/plexus/archiver/tar/TarArchiverTest.java index 060b62a86..84bb1fa9c 100644 --- a/src/test/java/org/codehaus/plexus/archiver/tar/TarArchiverTest.java +++ b/src/test/java/org/codehaus/plexus/archiver/tar/TarArchiverTest.java @@ -38,6 +38,7 @@ import org.codehaus.plexus.archiver.ArchiverException; import org.codehaus.plexus.archiver.UnixStat; import org.codehaus.plexus.archiver.bzip2.BZip2Compressor; +import org.codehaus.plexus.archiver.exceptions.EmptyArchiveException; import org.codehaus.plexus.archiver.gzip.GZipCompressor; import org.codehaus.plexus.archiver.util.ArchiveEntryUtils; import org.codehaus.plexus.archiver.util.Compressor; @@ -227,6 +228,22 @@ public void testCreateArchiveWithDetectedModes() } } + public void testCreateEmptyArchive() + throws Exception + { + TarArchiver archiver = getPosixTarArchiver(); + archiver.setDestFile( getTestFile( "target/output/empty.tar" ) ); + try + { + archiver.createArchive(); + + fail( "Creating empty archive should throw EmptyArchiveException" ); + } + catch ( EmptyArchiveException ignore ) + { + } + } + public void testUnicode() throws Exception { File tmpDir = getTestFile( "src/test/resources/utf8" ); diff --git a/src/test/java/org/codehaus/plexus/archiver/xz/XzArchiverTest.java b/src/test/java/org/codehaus/plexus/archiver/xz/XzArchiverTest.java index da6fc1d84..e83d090d2 100644 --- a/src/test/java/org/codehaus/plexus/archiver/xz/XzArchiverTest.java +++ b/src/test/java/org/codehaus/plexus/archiver/xz/XzArchiverTest.java @@ -23,6 +23,7 @@ import java.util.zip.ZipFile; import org.codehaus.plexus.archiver.Archiver; import org.codehaus.plexus.archiver.BasePlexusArchiverTest; +import org.codehaus.plexus.archiver.exceptions.EmptyArchiveException; import org.codehaus.plexus.archiver.zip.ZipArchiver; import org.codehaus.plexus.util.FileUtils; import org.codehaus.plexus.util.IOUtil; @@ -60,6 +61,22 @@ public void testCreateArchive() assertTrue( targetOutputFile.exists() ); } + public void testCreateEmptyArchive() + throws Exception + { + XZArchiver archiver = (XZArchiver) lookup( Archiver.ROLE, "xz" ); + archiver.setDestFile( getTestFile( "target/output/empty.xz" ) ); + try + { + archiver.createArchive(); + + fail( "Creating empty archive should throw EmptyArchiveException" ); + } + catch ( EmptyArchiveException ignore ) + { + } + } + public void testCreateResourceCollection() throws Exception { final File pomFile = new File( "pom.xml" ); diff --git a/src/test/java/org/codehaus/plexus/archiver/zip/ZipArchiverTest.java b/src/test/java/org/codehaus/plexus/archiver/zip/ZipArchiverTest.java index c1fd934ff..03cd44026 100644 --- a/src/test/java/org/codehaus/plexus/archiver/zip/ZipArchiverTest.java +++ b/src/test/java/org/codehaus/plexus/archiver/zip/ZipArchiverTest.java @@ -48,6 +48,7 @@ import org.codehaus.plexus.archiver.BasePlexusArchiverTest; import org.codehaus.plexus.archiver.UnArchiver; import org.codehaus.plexus.archiver.UnixStat; +import org.codehaus.plexus.archiver.exceptions.EmptyArchiveException; import org.codehaus.plexus.archiver.tar.TarArchiver; import org.codehaus.plexus.archiver.tar.TarFile; import org.codehaus.plexus.archiver.util.ArchiveEntryUtils; @@ -284,6 +285,22 @@ public void testCreateArchiveWithDetectedModes() } } + public void testCreateEmptyArchive() + throws Exception + { + ZipArchiver archiver = getZipArchiver(); + archiver.setDestFile( getTestFile( "target/output/empty.zip" ) ); + try + { + archiver.createArchive(); + + fail( "Creating empty archive should throw EmptyArchiveException" ); + } + catch ( EmptyArchiveException ignore ) + { + } + } + private ZipArchiver getZipArchiver() { try