Repository: commons-compress Updated Branches: refs/heads/master ffe346a84 -> 459314a11
[COMPRESS-362] Bullet-proof code using try-with-resources statements. Project: http://git-wip-us.apache.org/repos/asf/commons-compress/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-compress/commit/459314a1 Tree: http://git-wip-us.apache.org/repos/asf/commons-compress/tree/459314a1 Diff: http://git-wip-us.apache.org/repos/asf/commons-compress/diff/459314a1 Branch: refs/heads/master Commit: 459314a112dd0d7467870a5a2d07fab734940584 Parents: ffe346a Author: Gary Gregory <garydgreg...@gmail.com> Authored: Fri Dec 9 13:03:56 2016 -0800 Committer: Gary Gregory <garydgreg...@gmail.com> Committed: Fri Dec 9 13:04:43 2016 -0800 ---------------------------------------------------------------------- .../commons/compress/archivers/ArTestCase.java | 22 +++++----- .../archivers/ArchiveOutputStreamTest.java | 32 +++++++------- .../archivers/ArchiveStreamFactoryTest.java | 44 +++++++++++--------- .../archivers/ar/ArArchiveInputStreamTest.java | 11 +---- .../archivers/ar/ArArchiveOutputStreamTest.java | 33 +++------------ 5 files changed, 60 insertions(+), 82 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-compress/blob/459314a1/src/test/java/org/apache/commons/compress/archivers/ArTestCase.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/compress/archivers/ArTestCase.java b/src/test/java/org/apache/commons/compress/archivers/ArTestCase.java index 62674d4..fadb7c3 100644 --- a/src/test/java/org/apache/commons/compress/archivers/ArTestCase.java +++ b/src/test/java/org/apache/commons/compress/archivers/ArTestCase.java @@ -80,18 +80,16 @@ public final class ArTestCase extends AbstractTestCase { // UnArArchive Operation final File input = output; - final InputStream is = new FileInputStream(input); - final ArchiveInputStream in = new ArchiveStreamFactory().createArchiveInputStream(new BufferedInputStream(is)); - final ArArchiveEntry entry = (ArArchiveEntry)in.getNextEntry(); - - final File target = new File(dir, entry.getName()); - final OutputStream out = new FileOutputStream(target); - - IOUtils.copy(in, out); - - out.close(); - in.close(); - is.close(); + try (final InputStream is = new FileInputStream(input); + final ArchiveInputStream in = new ArchiveStreamFactory() + .createArchiveInputStream(new BufferedInputStream(is))) { + final ArArchiveEntry entry = (ArArchiveEntry) in.getNextEntry(); + + final File target = new File(dir, entry.getName()); + try (final OutputStream out = new FileOutputStream(target)) { + IOUtils.copy(in, out); + } + } } @Test http://git-wip-us.apache.org/repos/asf/commons-compress/blob/459314a1/src/test/java/org/apache/commons/compress/archivers/ArchiveOutputStreamTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/compress/archivers/ArchiveOutputStreamTest.java b/src/test/java/org/apache/commons/compress/archivers/ArchiveOutputStreamTest.java index 37606bd..a4f01f6 100644 --- a/src/test/java/org/apache/commons/compress/archivers/ArchiveOutputStreamTest.java +++ b/src/test/java/org/apache/commons/compress/archivers/ArchiveOutputStreamTest.java @@ -92,17 +92,19 @@ public class ArchiveOutputStreamTest extends AbstractTestCase { public void testOptionalFinish() throws Exception { final OutputStream out1 = new ByteArrayOutputStream(); - ArchiveOutputStream aos1 = factory.createArchiveOutputStream("zip", out1); - aos1.putArchiveEntry(new ZipArchiveEntry("dummy")); - aos1.closeArchiveEntry(); - aos1.close(); + try (ArchiveOutputStream aos1 = factory.createArchiveOutputStream("zip", out1)) { + aos1.putArchiveEntry(new ZipArchiveEntry("dummy")); + aos1.closeArchiveEntry(); + } - aos1 = factory.createArchiveOutputStream("jar", out1); - aos1.putArchiveEntry(new JarArchiveEntry("dummy")); - aos1.closeArchiveEntry(); - aos1.close(); + final ArchiveOutputStream finishTest; + try (ArchiveOutputStream aos1 = factory.createArchiveOutputStream("jar", out1)) { + finishTest = aos1; + aos1.putArchiveEntry(new JarArchiveEntry("dummy")); + aos1.closeArchiveEntry(); + } try { - aos1.finish(); + finishTest.finish(); fail("finish() cannot follow close()"); } catch (final IOException io) { // Exception expected @@ -141,9 +143,9 @@ public class ArchiveOutputStreamTest extends AbstractTestCase { ArchiveOutputStream aos1; aos1 = factory.createArchiveOutputStream(archiveType, out1); aos1.putArchiveEntry(aos1.createArchiveEntry(dummy, "dummy")); - InputStream is = new FileInputStream(dummy); - IOUtils.copy(is, aos1); - is.close(); + try (InputStream is = new FileInputStream(dummy)) { + IOUtils.copy(is, aos1); + } aos1.closeArchiveEntry(); aos1.close(); // omitted finish @@ -157,9 +159,9 @@ public class ArchiveOutputStreamTest extends AbstractTestCase { } aos1.putArchiveEntry(aos1.createArchiveEntry(dummy, "dummy")); - is = new FileInputStream(dummy); - IOUtils.copy(is, aos1); - is.close(); + try (InputStream is = new FileInputStream(dummy)) { + IOUtils.copy(is, aos1); + } // TODO check if second putArchiveEntry() can follow without closeAE? http://git-wip-us.apache.org/repos/asf/commons-compress/blob/459314a1/src/test/java/org/apache/commons/compress/archivers/ArchiveStreamFactoryTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/compress/archivers/ArchiveStreamFactoryTest.java b/src/test/java/org/apache/commons/compress/archivers/ArchiveStreamFactoryTest.java index 909a1a9..4236b28 100644 --- a/src/test/java/org/apache/commons/compress/archivers/ArchiveStreamFactoryTest.java +++ b/src/test/java/org/apache/commons/compress/archivers/ArchiveStreamFactoryTest.java @@ -267,13 +267,15 @@ public class ArchiveStreamFactoryTest { @Test public void testEncodingInputStreamAutodetect() throws Exception { int failed = 0; - for(int i = 1; i <= TESTS.length; i++) { - final TestData test = TESTS[i-1]; - final ArchiveInputStream ais = getInputStreamFor(test.testFile, test.fac); - final String field = getField(ais,test.fieldName); - if (!eq(test.expectedEncoding,field)) { - System.out.println("Failed test " + i + ". expected: " + test.expectedEncoding + " actual: " + field + " type: " + test.type); - failed++; + for (int i = 1; i <= TESTS.length; i++) { + final TestData test = TESTS[i - 1]; + try (final ArchiveInputStream ais = getInputStreamFor(test.testFile, test.fac)) { + final String field = getField(ais, test.fieldName); + if (!eq(test.expectedEncoding, field)) { + System.out.println("Failed test " + i + ". expected: " + test.expectedEncoding + " actual: " + field + + " type: " + test.type); + failed++; + } } } if (failed > 0) { @@ -284,13 +286,15 @@ public class ArchiveStreamFactoryTest { @Test public void testEncodingInputStream() throws Exception { int failed = 0; - for(int i = 1; i <= TESTS.length; i++) { - final TestData test = TESTS[i-1]; - final ArchiveInputStream ais = getInputStreamFor(test.type, test.testFile, test.fac); - final String field = getField(ais,test.fieldName); - if (!eq(test.expectedEncoding,field)) { - System.out.println("Failed test " + i + ". expected: " + test.expectedEncoding + " actual: " + field + " type: " + test.type); - failed++; + for (int i = 1; i <= TESTS.length; i++) { + final TestData test = TESTS[i - 1]; + try (final ArchiveInputStream ais = getInputStreamFor(test.type, test.testFile, test.fac)) { + final String field = getField(ais, test.fieldName); + if (!eq(test.expectedEncoding, field)) { + System.out.println("Failed test " + i + ". expected: " + test.expectedEncoding + " actual: " + field + + " type: " + test.type); + failed++; + } } } if (failed > 0) { @@ -304,11 +308,13 @@ public class ArchiveStreamFactoryTest { for(int i = 1; i <= TESTS.length; i++) { final TestData test = TESTS[i-1]; if (test.hasOutputStream) { - final ArchiveOutputStream ais = getOutputStreamFor(test.type, test.fac); - final String field = getField(ais, test.fieldName); - if (!eq(test.expectedEncoding, field)) { - System.out.println("Failed test " + i + ". expected: " + test.expectedEncoding + " actual: " + field + " type: " + test.type); - failed++; + try (final ArchiveOutputStream ais = getOutputStreamFor(test.type, test.fac)) { + final String field = getField(ais, test.fieldName); + if (!eq(test.expectedEncoding, field)) { + System.out.println("Failed test " + i + ". expected: " + test.expectedEncoding + " actual: " + + field + " type: " + test.type); + failed++; + } } } } http://git-wip-us.apache.org/repos/asf/commons-compress/blob/459314a1/src/test/java/org/apache/commons/compress/archivers/ar/ArArchiveInputStreamTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/compress/archivers/ar/ArArchiveInputStreamTest.java b/src/test/java/org/apache/commons/compress/archivers/ar/ArArchiveInputStreamTest.java index 5221215..f93679f 100644 --- a/src/test/java/org/apache/commons/compress/archivers/ar/ArArchiveInputStreamTest.java +++ b/src/test/java/org/apache/commons/compress/archivers/ar/ArArchiveInputStreamTest.java @@ -41,10 +41,8 @@ public class ArArchiveInputStreamTest extends AbstractTestCase { } private void checkLongNameEntry(final String archive) throws Exception { - final FileInputStream fis = new FileInputStream(getFile(archive)); - ArArchiveInputStream s = null; - try { - s = new ArArchiveInputStream(new BufferedInputStream(fis)); + try (final FileInputStream fis = new FileInputStream(getFile(archive)); + final ArArchiveInputStream s = new ArArchiveInputStream(new BufferedInputStream(fis))) { ArchiveEntry e = s.getNextEntry(); assertEquals("this_is_a_long_file_name.txt", e.getName()); assertEquals(14, e.getSize()); @@ -58,11 +56,6 @@ public class ArArchiveInputStreamTest extends AbstractTestCase { s.read(bye); assertEquals("Bye\n", ArchiveUtils.toAsciiString(bye)); assertNull(s.getNextEntry()); - } finally { - if (s != null) { - s.close(); - } - fis.close(); } } } http://git-wip-us.apache.org/repos/asf/commons-compress/blob/459314a1/src/test/java/org/apache/commons/compress/archivers/ar/ArArchiveOutputStreamTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/compress/archivers/ar/ArArchiveOutputStreamTest.java b/src/test/java/org/apache/commons/compress/archivers/ar/ArArchiveOutputStreamTest.java index f304739..0c309aa 100644 --- a/src/test/java/org/apache/commons/compress/archivers/ar/ArArchiveOutputStreamTest.java +++ b/src/test/java/org/apache/commons/compress/archivers/ar/ArArchiveOutputStreamTest.java @@ -34,51 +34,30 @@ public class ArArchiveOutputStreamTest extends AbstractTestCase { @Test public void testLongFileNamesCauseExceptionByDefault() { - ArArchiveOutputStream os = null; - try { - os = new ArArchiveOutputStream(new ByteArrayOutputStream()); - final ArArchiveEntry ae = new ArArchiveEntry("this_is_a_long_name.txt", - 0); + try (ArArchiveOutputStream os = new ArArchiveOutputStream(new ByteArrayOutputStream())) { + final ArArchiveEntry ae = new ArArchiveEntry("this_is_a_long_name.txt", 0); os.putArchiveEntry(ae); fail("Expected an exception"); } catch (final IOException ex) { assertTrue(ex.getMessage().startsWith("filename too long")); - } finally { - closeQuietly(os); } } @Test public void testLongFileNamesWorkUsingBSDDialect() throws Exception { - FileOutputStream fos = null; - ArArchiveOutputStream os = null; final File[] df = createTempDirAndFile(); - try { - fos = new FileOutputStream(df[1]); - os = new ArArchiveOutputStream(fos); + try (FileOutputStream fos = new FileOutputStream(df[1]); + ArArchiveOutputStream os = new ArArchiveOutputStream(fos)) { os.setLongFileMode(ArArchiveOutputStream.LONGFILE_BSD); - final ArArchiveEntry ae = new ArArchiveEntry("this_is_a_long_name.txt", - 14); + final ArArchiveEntry ae = new ArArchiveEntry("this_is_a_long_name.txt", 14); os.putArchiveEntry(ae); - os.write(new byte[] { - 'H', 'e', 'l', 'l', 'o', ',', ' ', - 'w', 'o', 'r', 'l', 'd', '!', '\n' - }); + os.write(new byte[] { 'H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!', '\n' }); os.closeArchiveEntry(); - os.close(); - os = null; - fos = null; final List<String> expected = new ArrayList<>(); expected.add("this_is_a_long_name.txt"); checkArchiveContent(df[1], expected); } finally { - if (os != null) { - os.close(); - } - if (fos != null) { - fos.close(); - } rmdir(df[0]); } }