Skip to content

Commit 74d7509

Browse files
plamentotevmichael-o
authored andcommitted
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`. This closes #64
1 parent def8cab commit 74d7509

File tree

11 files changed

+92
-3
lines changed

11 files changed

+92
-3
lines changed

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

+5
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/dir/DirectoryArchiver.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public void execute()
5454
final ResourceIterator iter = getResources();
5555
if ( !iter.hasNext() )
5656
{
57-
throw new EmptyArchiveException( "You must set at least one file." );
57+
throw new EmptyArchiveException( "archive cannot be empty" );
5858
}
5959

6060
final File destDirectory = getDestFile();

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

+5
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

+5
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/tar/TarArchiver.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ protected void execute()
111111
ResourceIterator iter = getResources();
112112
if ( !iter.hasNext() )
113113
{
114-
throw new EmptyArchiveException( "You must set at least one file." );
114+
throw new EmptyArchiveException( "archive cannot be empty" );
115115
}
116116

117117
File tarFile = getDestFile();

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

+5
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/main/java/org/codehaus/plexus/archiver/zip/AbstractZipArchiver.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ private void createArchiveMain()
255255
ResourceIterator iter = getResources();
256256
if ( !iter.hasNext() && !hasVirtualFiles() )
257257
{
258-
throw new EmptyArchiveException( "You must set at least one file." );
258+
throw new EmptyArchiveException( "archive cannot be empty" );
259259
}
260260

261261
zipFile = getDestFile();

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

+17
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

+18
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

+17
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

+17
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)