Skip to content

Commit cf66c19

Browse files
committed
Throw specific exception when creating empty single file archive
Currently archivers that accept single file (like BZip2Archiver) will throw `NoSuchElementException`. Modify them to throw `EmptyArchiveException` so they are consistent with `DirectoryArchiver`, `TarArchiver` and `ZipArchiver`.
1 parent def8cab commit cf66c19

File tree

8 files changed

+89
-0
lines changed

8 files changed

+89
-0
lines changed

src/main/java/org/codehaus/plexus/archiver/bzip2/BZip2Archiver.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.codehaus.plexus.archiver.ArchiveEntry;
2222
import org.codehaus.plexus.archiver.ArchiverException;
2323
import org.codehaus.plexus.archiver.ResourceIterator;
24+
import org.codehaus.plexus.archiver.exceptions.EmptyArchiveException;
2425

2526
public class BZip2Archiver
2627
extends AbstractArchiver
@@ -38,6 +39,10 @@ public void execute()
3839
}
3940

4041
ResourceIterator iter = getResources();
42+
if ( !iter.hasNext() )
43+
{
44+
throw new EmptyArchiveException( "Archive cannot be empty." );
45+
}
4146
ArchiveEntry entry = iter.next();
4247
if ( iter.hasNext() )
4348
{

src/main/java/org/codehaus/plexus/archiver/gzip/GZipArchiver.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.codehaus.plexus.archiver.ArchiveEntry;
2222
import org.codehaus.plexus.archiver.ArchiverException;
2323
import org.codehaus.plexus.archiver.ResourceIterator;
24+
import org.codehaus.plexus.archiver.exceptions.EmptyArchiveException;
2425

2526
public class GZipArchiver
2627
extends AbstractArchiver
@@ -38,6 +39,10 @@ protected void execute()
3839
}
3940

4041
ResourceIterator iter = getResources();
42+
if ( !iter.hasNext() )
43+
{
44+
throw new EmptyArchiveException( "Archive cannot be empty." );
45+
}
4146
ArchiveEntry entry = iter.next();
4247
if ( iter.hasNext() )
4348
{

src/main/java/org/codehaus/plexus/archiver/snappy/SnappyArchiver.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.codehaus.plexus.archiver.ArchiveEntry;
2222
import org.codehaus.plexus.archiver.ArchiverException;
2323
import org.codehaus.plexus.archiver.ResourceIterator;
24+
import org.codehaus.plexus.archiver.exceptions.EmptyArchiveException;
2425

2526
/**
2627
* Snappy archiver.
@@ -41,6 +42,10 @@ public void execute()
4142
}
4243

4344
ResourceIterator iter = getResources();
45+
if ( !iter.hasNext() )
46+
{
47+
throw new EmptyArchiveException( "Archive cannot be empty." );
48+
}
4449
ArchiveEntry entry = iter.next();
4550
if ( iter.hasNext() )
4651
{

src/main/java/org/codehaus/plexus/archiver/xz/XZArchiver.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.codehaus.plexus.archiver.ArchiveEntry;
2121
import org.codehaus.plexus.archiver.ArchiverException;
2222
import org.codehaus.plexus.archiver.ResourceIterator;
23+
import org.codehaus.plexus.archiver.exceptions.EmptyArchiveException;
2324

2425
/**
2526
* @author philiplourandos
@@ -43,6 +44,10 @@ protected void execute() throws ArchiverException, IOException
4344
}
4445

4546
ResourceIterator iter = getResources();
47+
if ( !iter.hasNext() )
48+
{
49+
throw new EmptyArchiveException( "Archive cannot be empty." );
50+
}
4651
ArchiveEntry entry = iter.next();
4752
if ( iter.hasNext() )
4853
{

src/test/java/org/codehaus/plexus/archiver/bzip2/BZip2ArchiverTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import java.util.zip.ZipFile;
3232
import org.codehaus.plexus.archiver.Archiver;
3333
import org.codehaus.plexus.archiver.BasePlexusArchiverTest;
34+
import org.codehaus.plexus.archiver.exceptions.EmptyArchiveException;
3435
import org.codehaus.plexus.archiver.zip.ZipArchiver;
3536
import org.codehaus.plexus.util.FileUtils;
3637
import org.codehaus.plexus.util.IOUtil;
@@ -57,6 +58,22 @@ public void testCreateArchive()
5758
archiver.createArchive();
5859
}
5960

61+
public void testCreateEmptyArchive()
62+
throws Exception
63+
{
64+
BZip2Archiver archiver = (BZip2Archiver) lookup( Archiver.ROLE, "bzip2" );
65+
archiver.setDestFile( getTestFile( "target/output/empty.bz2" ) );
66+
try
67+
{
68+
archiver.createArchive();
69+
70+
fail( "Creating empty archive should throw EmptyArchiveException" );
71+
}
72+
catch ( EmptyArchiveException ignore )
73+
{
74+
}
75+
}
76+
6077
public void testCreateResourceCollection()
6178
throws Exception
6279
{

src/test/java/org/codehaus/plexus/archiver/gzip/GZipArchiverTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import java.util.zip.ZipFile;
3232
import org.codehaus.plexus.archiver.Archiver;
3333
import org.codehaus.plexus.archiver.BasePlexusArchiverTest;
34+
import org.codehaus.plexus.archiver.exceptions.EmptyArchiveException;
3435
import org.codehaus.plexus.archiver.zip.ZipArchiver;
3536
import org.codehaus.plexus.util.FileUtils;
3637
import org.codehaus.plexus.util.IOUtil;
@@ -57,6 +58,23 @@ public void testCreateArchive()
5758
archiver.createArchive();
5859
}
5960

61+
62+
public void testCreateEmptyArchive()
63+
throws Exception
64+
{
65+
GZipArchiver archiver = (GZipArchiver) lookup( Archiver.ROLE, "gzip" );
66+
archiver.setDestFile( getTestFile( "target/output/empty.gz" ) );
67+
try
68+
{
69+
archiver.createArchive();
70+
71+
fail( "Creating empty archive should throw EmptyArchiveException" );
72+
}
73+
catch ( EmptyArchiveException ignore )
74+
{
75+
}
76+
}
77+
6078
public void testCreateResourceCollection()
6179
throws Exception
6280
{

src/test/java/org/codehaus/plexus/archiver/snappy/SnappyArchiverTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import java.util.zip.ZipFile;
3232
import org.codehaus.plexus.archiver.Archiver;
3333
import org.codehaus.plexus.archiver.BasePlexusArchiverTest;
34+
import org.codehaus.plexus.archiver.exceptions.EmptyArchiveException;
3435
import org.codehaus.plexus.archiver.zip.ZipArchiver;
3536
import org.codehaus.plexus.util.FileUtils;
3637
import org.codehaus.plexus.util.IOUtil;
@@ -57,6 +58,22 @@ public void testCreateArchive()
5758
archiver.createArchive();
5859
}
5960

61+
public void testCreateEmptyArchive()
62+
throws Exception
63+
{
64+
SnappyArchiver archiver = (SnappyArchiver) lookup( Archiver.ROLE, "snappy" );
65+
archiver.setDestFile( getTestFile( "target/output/empty.snappy" ) );
66+
try
67+
{
68+
archiver.createArchive();
69+
70+
fail( "Creating empty archive should throw EmptyArchiveException" );
71+
}
72+
catch ( EmptyArchiveException ignore )
73+
{
74+
}
75+
}
76+
6077
public void testCreateResourceCollection()
6178
throws Exception
6279
{

src/test/java/org/codehaus/plexus/archiver/xz/XzArchiverTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.util.zip.ZipFile;
2424
import org.codehaus.plexus.archiver.Archiver;
2525
import org.codehaus.plexus.archiver.BasePlexusArchiverTest;
26+
import org.codehaus.plexus.archiver.exceptions.EmptyArchiveException;
2627
import org.codehaus.plexus.archiver.zip.ZipArchiver;
2728
import org.codehaus.plexus.util.FileUtils;
2829
import org.codehaus.plexus.util.IOUtil;
@@ -64,6 +65,22 @@ public void testCreateArchive()
6465
assertTrue( targetOutputFile.exists() );
6566
}
6667

68+
public void testCreateEmptyArchive()
69+
throws Exception
70+
{
71+
XZArchiver archiver = (XZArchiver) lookup( Archiver.ROLE, "xz" );
72+
archiver.setDestFile( getTestFile( "target/output/empty.xz" ) );
73+
try
74+
{
75+
archiver.createArchive();
76+
77+
fail( "Creating empty archive should throw EmptyArchiveException" );
78+
}
79+
catch ( EmptyArchiveException ignore )
80+
{
81+
}
82+
}
83+
6784
public void testCreateResourceCollection() throws Exception
6885
{
6986
final File pomFile = new File( "pom.xml" );

0 commit comments

Comments
 (0)