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]);
         }
     }

Reply via email to