You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2018/08/26 11:55:02 UTC

svn commit: r1839201 [3/5] - in /poi: site/src/documentation/content/xdocs/ trunk/src/examples/src/org/apache/poi/hpsf/examples/ trunk/src/examples/src/org/apache/poi/poifs/poibrowser/ trunk/src/java/org/apache/poi/ trunk/src/java/org/apache/poi/extrac...

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractor.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractor.java?rev=1839201&r1=1839200&r2=1839201&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractor.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractor.java Sun Aug 26 11:55:00 2018
@@ -24,7 +24,6 @@ import static org.junit.Assert.assertNot
 import static org.junit.Assert.assertTrue;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 
@@ -36,7 +35,6 @@ import org.apache.poi.hwpf.OldWordFileFo
 import org.apache.poi.poifs.filesystem.DirectoryNode;
 import org.apache.poi.poifs.filesystem.Entry;
 import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
-import org.apache.poi.poifs.filesystem.OPOIFSFileSystem;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.poi.util.StringUtil;
 import org.junit.Test;
@@ -48,7 +46,7 @@ public final class TestWordExtractor {
 
     private static POIDataSamples docTests = POIDataSamples.getDocumentInstance();
     
-    public static void assertEqualsTrim( String expected, String actual )
+    private static void assertEqualsTrim( String expected, String actual )
     {
         String newExpected = expected.replaceAll( "\r\n", "\n" )
                 .replaceAll( "\r", "\n" ).trim();
@@ -188,7 +186,8 @@ public final class TestWordExtractor {
 		HWPFDocument doc1 = HWPFTestDataSamples.openSampleFile("ThreeColHeadFoot.doc");
 		WordExtractor extractor1 = new WordExtractor(doc1);
 
-		assertEquals("First header column!\tMid header Right header!\n", extractor1.getHeaderText());
+        //noinspection deprecation
+        assertEquals("First header column!\tMid header Right header!\n", extractor1.getHeaderText());
 		assertContains(extractor1.getText(), "First header column!");
 		extractor1.close();
 		doc1.close();
@@ -197,7 +196,8 @@ public final class TestWordExtractor {
 		HWPFDocument doc2 = HWPFTestDataSamples.openSampleFile("HeaderFooterUnicode.doc");
 		WordExtractor extractor2 = new WordExtractor(doc2);
 
-		assertEquals("This is a simple header, with a \u20ac euro symbol in it.\n\n", extractor2.getHeaderText());
+        //noinspection deprecation
+        assertEquals("This is a simple header, with a \u20ac euro symbol in it.\n\n", extractor2.getHeaderText());
 		assertContains(extractor2.getText(), "This is a simple header");
 		extractor2.close();
 		doc2.close();
@@ -209,7 +209,8 @@ public final class TestWordExtractor {
 		HWPFDocument doc1 = HWPFTestDataSamples.openSampleFile("ThreeColHeadFoot.doc");
 		WordExtractor extractor1 = new WordExtractor(doc1);
 
-		assertEquals("Footer Left\tFooter Middle Footer Right\n", extractor1.getFooterText());
+        //noinspection deprecation
+        assertEquals("Footer Left\tFooter Middle Footer Right\n", extractor1.getFooterText());
 		assertContains(extractor1.getText(), "Footer Left");
         extractor1.close();
         doc1.close();
@@ -218,7 +219,8 @@ public final class TestWordExtractor {
 		HWPFDocument doc2 = HWPFTestDataSamples.openSampleFile("HeaderFooterUnicode.doc");
 		WordExtractor extractor2 = new WordExtractor(doc2);
 
-		assertEquals("The footer, with Moli\u00e8re, has Unicode in it.\n", extractor2.getFooterText());
+        //noinspection deprecation
+        assertEquals("The footer, with Moli\u00e8re, has Unicode in it.\n", extractor2.getFooterText());
 		assertContains(extractor2.getText(), "The footer, with");
         extractor2.close();
         doc2.close();
@@ -279,6 +281,7 @@ public final class TestWordExtractor {
         assertContains(text, "Paragraph 3. Has some RED text and some BLUE BOLD text in it");
         assertContains(text, "Last (4th) paragraph");
         
+        @SuppressWarnings("deprecation")
         String[] tp = w6e.getParagraphText();
         assertEquals(7, tp.length);
         assertEquals("The quick brown fox jumps over the lazy dog\r\n", tp[0]);
@@ -299,17 +302,17 @@ public final class TestWordExtractor {
     
     @Test
     public void testWord6() throws Exception {
-        InputStream is = docTests.openResourceAsStream("Word6.doc");
-        Word6Extractor w6e = new Word6Extractor(is);
-        is.close();
-        String text = w6e.getText();
-        
-        assertContains(text, "The quick brown fox jumps over the lazy dog");
-        
-        String[] tp = w6e.getParagraphText();
-        assertEquals(1, tp.length);
-        assertEquals("The quick brown fox jumps over the lazy dog\r\n", tp[0]);
-        w6e.close();
+        try (InputStream is = docTests.openResourceAsStream("Word6.doc");
+            Word6Extractor w6e = new Word6Extractor(is)) {
+            String text = w6e.getText();
+
+            assertContains(text, "The quick brown fox jumps over the lazy dog");
+
+            @SuppressWarnings("deprecation")
+            String[] tp = w6e.getParagraphText();
+            assertEquals(1, tp.length);
+            assertEquals("The quick brown fox jumps over the lazy dog\r\n", tp[0]);
+        }
     }
 
     @Test
@@ -341,30 +344,23 @@ public final class TestWordExtractor {
     public void testDifferentPOIFS() throws Exception {
        // Open the two filesystems
        File file = docTests.getFile("test2.doc");
-       InputStream is = new FileInputStream(file);
-       OPOIFSFileSystem opoifs = new OPOIFSFileSystem(is);
-       is.close();
-       NPOIFSFileSystem npoifs = new NPOIFSFileSystem(file);
-       
-       DirectoryNode[] files = { opoifs.getRoot(), npoifs.getRoot() };
-       
-       // Open directly 
-       for(DirectoryNode dir : files) {
-          @SuppressWarnings("resource")
-          WordExtractor extractor = new WordExtractor(dir);
-          assertEqualsTrim(p_text1_block, extractor.getText());
-          // extractor.close();
-       }
+       try (NPOIFSFileSystem npoifs = new NPOIFSFileSystem(file, true)) {
+
+           DirectoryNode dir = npoifs.getRoot();
+
+           // Open directly
+           @SuppressWarnings("resource")
+           WordExtractor extractor1 = new WordExtractor(dir);
+           assertEqualsTrim(p_text1_block, extractor1.getText());
+           // extractor.close();
+
+           // Open via a HWPFDocument
+           try (HWPFDocument doc = new HWPFDocument(dir);
+                WordExtractor extractor2 = new WordExtractor(doc)) {
+               assertEqualsTrim(p_text1_block, extractor2.getText());
+           }
 
-       // Open via a HWPFDocument
-       for(DirectoryNode dir : files) {
-          HWPFDocument doc = new HWPFDocument(dir);
-          WordExtractor extractor = new WordExtractor(doc);
-          assertEqualsTrim(p_text1_block, extractor.getText());
-          extractor.close();
        }
-       
-       npoifs.close();
     }
 
     /**
@@ -381,11 +377,8 @@ public final class TestWordExtractor {
 
         for (Entry entry : fs.getRoot()) {
             if ("WordDocument".equals(entry.getName())) {
-                WordExtractor ex = new WordExtractor(fs);
-                try {
+                try (WordExtractor ex = new WordExtractor(fs)) {
                     text = ex.getText();
-                } finally {
-                    ex.close();
                 }
             }
         }
@@ -396,35 +389,22 @@ public final class TestWordExtractor {
 
     @Test
     public void testExtractorFromWord6Extractor() throws Exception {
-        InputStream is = POIDataSamples.getHPSFInstance().openResourceAsStream("TestMickey.doc");
-        POIFSFileSystem fs = new POIFSFileSystem(is);
-        is.close();
-        Word6Extractor wExt = new Word6Extractor(fs);
-        try {
-            POITextExtractor ext = wExt.getMetadataTextExtractor();
-            try {
-                // Now overall
-                String text = ext.getText();
-                assertContains(text, "TEMPLATE = Normal");
-                assertContains(text, "SUBJECT = sample subject");
-                assertContains(text, "MANAGER = sample manager");
-                assertContains(text, "COMPANY = sample company");
-            } finally {
-                ext.close();
-            }
-        } finally {
-            wExt.close();
-            fs.close();
+        try (InputStream is = POIDataSamples.getHPSFInstance().openResourceAsStream("TestMickey.doc");
+             POIFSFileSystem fs = new POIFSFileSystem(is);
+             Word6Extractor wExt = new Word6Extractor(fs);
+             POITextExtractor ext = wExt.getMetadataTextExtractor()) {
+            // Now overall
+            String text = ext.getText();
+            assertContains(text, "TEMPLATE = Normal");
+            assertContains(text, "SUBJECT = sample subject");
+            assertContains(text, "MANAGER = sample manager");
+            assertContains(text, "COMPANY = sample company");
         }
     }
     
     private WordExtractor openExtractor(String fileName) throws IOException {
-        InputStream is = docTests.openResourceAsStream(fileName);
-        try {
+        try (InputStream is = docTests.openResourceAsStream(fileName)) {
             return new WordExtractor(is);
-        } finally {
-            is.close();
         }
-        
     }
 }

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestHWPFWrite.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestHWPFWrite.java?rev=1839201&r1=1839200&r2=1839201&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestHWPFWrite.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestHWPFWrite.java Sun Aug 26 11:55:00 2018
@@ -32,7 +32,6 @@ import org.apache.poi.hwpf.HWPFDocument;
 import org.apache.poi.hwpf.HWPFTestCase;
 import org.apache.poi.hwpf.HWPFTestDataSamples;
 import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
-import org.apache.poi.poifs.filesystem.OPOIFSFileSystem;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.poi.util.IOUtils;
 import org.apache.poi.util.TempFile;
@@ -99,16 +98,9 @@ public final class TestHWPFWrite extends
     public void testInPlaceWrite() throws Exception {
         // Setup as a copy of a known-good file
         final File file = TempFile.createTempFile("TestDocument", ".doc");
-        InputStream inputStream = SAMPLES.openResourceAsStream("SampleDoc.doc");
-        try {
-            FileOutputStream outputStream = new FileOutputStream(file);
-            try {
-                IOUtils.copy(inputStream, outputStream);
-            } finally {
-                outputStream.close();
-            }
-        } finally {
-            inputStream.close();
+        try (InputStream inputStream = SAMPLES.openResourceAsStream("SampleDoc.doc");
+             FileOutputStream outputStream = new FileOutputStream(file)) {
+            IOUtils.copy(inputStream, outputStream);
         }
 
         // Open from the temp file in read-write mode
@@ -136,29 +128,14 @@ public final class TestHWPFWrite extends
     @Test(expected=IllegalStateException.class)
     public void testInvalidInPlaceWriteInputStream() throws IOException {
         // Can't work for InputStream opened files
-        InputStream is = SAMPLES.openResourceAsStream("SampleDoc.doc");
-        HWPFDocument doc = new HWPFDocument(is);
-        is.close();
-        try {
+
+        try (InputStream is = SAMPLES.openResourceAsStream("SampleDoc.doc");
+             HWPFDocument doc = new HWPFDocument(is)) {
             doc.write();
-        } finally {
-            doc.close();
         }
     }
     
     @Test(expected=IllegalStateException.class)
-    public void testInvalidInPlaceWriteOPOIFS() throws Exception {
-        // Can't work for OPOIFS
-        OPOIFSFileSystem ofs = new OPOIFSFileSystem(SAMPLES.openResourceAsStream("SampleDoc.doc"));
-        HWPFDocument doc = new HWPFDocument(ofs.getRoot());
-        try {
-            doc.write();
-        } finally {
-            doc.close();
-        }
-    }
-
-    @Test(expected=IllegalStateException.class)
     public void testInvalidInPlaceWriteNPOIFS() throws Exception {
         // Can't work for Read-Only files
         NPOIFSFileSystem fs = new NPOIFSFileSystem(SAMPLES.getFile("SampleDoc.doc"), true);

Modified: poi/trunk/src/testcases/org/apache/poi/TestPOIDocumentMain.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/TestPOIDocumentMain.java?rev=1839201&r1=1839200&r2=1839201&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/TestPOIDocumentMain.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/TestPOIDocumentMain.java Sun Aug 26 11:55:00 2018
@@ -31,7 +31,7 @@ import org.apache.poi.hpsf.SummaryInform
 import org.apache.poi.hssf.HSSFTestDataSamples;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
-import org.apache.poi.poifs.filesystem.OPOIFSFileSystem;
+import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -78,7 +78,7 @@ public final class TestPOIDocumentMain {
         assertNotNull(doc2.getSummaryInformation());
 
         assertEquals("Avik Sengupta", doc2.getSummaryInformation().getAuthor());
-        assertEquals(null, doc2.getSummaryInformation().getKeywords());
+        assertNull(doc2.getSummaryInformation().getKeywords());
         assertEquals(0, doc2.getDocumentSummaryInformation().getByteCount());
     }
 
@@ -110,7 +110,7 @@ public final class TestPOIDocumentMain {
 
         // Create a new version
         ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
-        OPOIFSFileSystem inFS = new OPOIFSFileSystem(bais);
+        POIFSFileSystem inFS = new POIFSFileSystem(bais);
 
         // Check they're still there
         POIDocument doc3 = new HPSFPropertiesOnlyDocument(inFS);

Modified: poi/trunk/src/testcases/org/apache/poi/hpsf/basic/TestWrite.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hpsf/basic/TestWrite.java?rev=1839201&r1=1839200&r2=1839201&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hpsf/basic/TestWrite.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hpsf/basic/TestWrite.java Sun Aug 26 11:55:00 2018
@@ -21,6 +21,7 @@ import static org.hamcrest.core.IsEqual.
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
@@ -28,7 +29,6 @@ import static org.junit.Assert.fail;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -51,7 +51,6 @@ import org.apache.poi.hpsf.NoPropertySet
 import org.apache.poi.hpsf.Property;
 import org.apache.poi.hpsf.PropertySet;
 import org.apache.poi.hpsf.PropertySetFactory;
-import org.apache.poi.hpsf.ReadingNotSupportedException;
 import org.apache.poi.hpsf.Section;
 import org.apache.poi.hpsf.SummaryInformation;
 import org.apache.poi.hpsf.UnsupportedVariantTypeException;
@@ -94,8 +93,6 @@ public class TestWrite {
         "LANG environment variable to a proper value, e.g. " +
         "\"de_DE\".";
 
-    POIFile[] poiFiles;
-
     @BeforeClass
     public static void setUp() {
         VariantSupport.setLogUnsupportedTypes(false);
@@ -113,24 +110,20 @@ public class TestWrite {
 
         /* Create a mutable property set with a section that does not have the
          * formatID set: */
-        final OutputStream out = new FileOutputStream(filename);
-        final POIFSFileSystem poiFs = new POIFSFileSystem();
         final PropertySet ps = new PropertySet();
         ps.clearSections();
         ps.addSection(new Section());
 
         /* Write it to a POIFS and the latter to disk: */
-        try {
+        try (OutputStream out = new FileOutputStream(filename);
+             POIFSFileSystem poiFs = new POIFSFileSystem()) {
             final ByteArrayOutputStream psStream = new ByteArrayOutputStream();
             ps.write(psStream);
             psStream.close();
             final byte[] streamData = psStream.toByteArray();
             poiFs.createDocument(new ByteArrayInputStream(streamData),
-                                 SummaryInformation.DEFAULT_STREAM_NAME);
+                    SummaryInformation.DEFAULT_STREAM_NAME);
             poiFs.writeFilesystem(out);
-        } finally {
-            poiFs.close();
-            out.close();
         }
     }
 
@@ -170,12 +163,7 @@ public class TestWrite {
         final POIFSReader r = new POIFSReader();
         r.registerListener(new MyPOIFSReaderListener(),
                            SummaryInformation.DEFAULT_STREAM_NAME);
-        FileInputStream stream = new FileInputStream(filename);
-        try {
-            r.read(stream);
-        } finally {
-            stream.close();
-        }
+        r.read(filename);
     }
 
 
@@ -221,24 +209,16 @@ public class TestWrite {
         /* Read the POIFS: */
         final PropertySet[] psa = new PropertySet[1];
         final POIFSReader r = new POIFSReader();
-        r.registerListener(new POIFSReaderListener() {
-            @Override
-            public void processPOIFSReaderEvent(final POIFSReaderEvent event) {
-                try {
-                    psa[0] = PropertySetFactory.create(event.getStream());
-                } catch (Exception ex) {
-                    fail(ex.getMessage());
-                }
-            }},
-            SummaryInformation.DEFAULT_STREAM_NAME
-        );
-        
-        InputStream stream = new FileInputStream(filename);
-        try {
-            r.read(stream);
-        } finally {
-            stream.close();
-        }
+        final POIFSReaderListener listener = event -> {
+            try {
+                psa[0] = PropertySetFactory.create(event.getStream());
+            } catch (Exception ex) {
+                fail(ex.getMessage());
+            }
+        };
+        r.registerListener(listener, SummaryInformation.DEFAULT_STREAM_NAME);
+
+        r.read(filename);
         assertNotNull(psa[0]);
         assertTrue(psa[0].isSummaryInformation());
 
@@ -295,23 +275,17 @@ public class TestWrite {
         /* Read the POIFS: */
         final PropertySet[] psa = new PropertySet[1];
         final POIFSReader r = new POIFSReader();
-        r.registerListener(new POIFSReaderListener() {
-                @Override
-                public void processPOIFSReaderEvent(final POIFSReaderEvent event) {
-                    try {
-                        psa[0] = PropertySetFactory.create(event.getStream());
-                    } catch (Exception ex) {
-                        throw new RuntimeException(ex);
-                    }
-                }
-            },
-            STREAM_NAME);
-        FileInputStream stream = new FileInputStream(filename);
-        try {
-            r.read(stream);
-        } finally {
-            stream.close();
-        }
+        final POIFSReaderListener listener = (event) -> {
+            try {
+                psa[0] = PropertySetFactory.create(event.getStream());
+            } catch (Exception ex) {
+                fail(ex.getMessage());
+            }
+        };
+
+        r.registerListener(listener,STREAM_NAME);
+        r.read(filename);
+
         assertNotNull(psa[0]);
         Section s = (psa[0].getSections().get(0));
         assertEquals(s.getFormatID(), formatID);
@@ -338,12 +312,8 @@ public class TestWrite {
 
 
     /**
-     * <p>Writes and reads back various variant types and checks whether the
-     * stuff that has been read back equals the stuff that was written.</p>
-     * @throws IOException 
-     * @throws UnsupportedEncodingException 
-     * @throws UnsupportedVariantTypeException 
-     * @throws ReadingNotSupportedException 
+     * Writes and reads back various variant types and checks whether the
+     * stuff that has been read back equals the stuff that was written.
      */
     @Test
     public void variantTypes() throws Exception {
@@ -379,9 +349,8 @@ public class TestWrite {
      * was written.
      */
     @Test
-    public void codepages() throws ReadingNotSupportedException, UnsupportedVariantTypeException, IOException
+    public void codepages() throws UnsupportedVariantTypeException, IOException
     {
-        Throwable thr = null;
         final int[] validCodepages = {CODEPAGE_DEFAULT, CodePageUtil.CP_UTF8, CodePageUtil.CP_UNICODE, CodePageUtil.CP_WINDOWS_1252};
         for (final int cp : validCodepages) {
             if (cp == -1 && !hasProperDefaultCharset())
@@ -400,9 +369,8 @@ public class TestWrite {
 
         final int[] invalidCodepages = new int[] {0, 1, 2, 4711, 815};
         for (int cp : invalidCodepages) {
-            final long type = (cp == CodePageUtil.CP_UNICODE) ? Variant.VT_LPWSTR : Variant.VT_LPSTR;
             try {
-                checkString(type, "\u00e4\u00f6\u00fc\u00c4\u00d6\u00dc\u00df", cp);
+                checkString(Variant.VT_LPSTR, "\u00e4\u00f6\u00fc\u00c4\u00d6\u00dc\u00df", cp);
                 fail("UnsupportedEncodingException for codepage " + cp + " expected.");
             } catch (UnsupportedEncodingException ex) {
                 /* This is the expected behaviour. */
@@ -441,7 +409,7 @@ public class TestWrite {
     }
     
     private void checkString(final long variantType, final String value, final int codepage)
-    throws UnsupportedVariantTypeException, IOException, ReadingNotSupportedException, UnsupportedEncodingException {
+    throws UnsupportedVariantTypeException, IOException {
         for (int i=0; i<value.length(); i++) {
             check(variantType, value.substring(0, i), codepage);
         }
@@ -457,7 +425,7 @@ public class TestWrite {
      * @throws IOException if an I/O exception occurs.
      */
     private void check(final long variantType, final Object value, final int codepage)
-    throws UnsupportedVariantTypeException, IOException, ReadingNotSupportedException, UnsupportedEncodingException
+    throws UnsupportedVariantTypeException, IOException
     {
         final ByteArrayOutputStream out = new ByteArrayOutputStream();
         VariantSupport.write(out, variantType, value, codepage);
@@ -474,8 +442,6 @@ public class TestWrite {
 
     /**
      * <p>Tests writing and reading back a proper dictionary.</p>
-     * @throws IOException 
-     * @throws HPSFException 
      */
     @Test
     public void dictionary() throws IOException, HPSFException {
@@ -488,9 +454,9 @@ public class TestWrite {
         final PropertySet ps1 = new PropertySet();
         final Section s = ps1.getSections().get(0);
         final Map<Long,String> m = new HashMap<>(3, 1.0f);
-        m.put(Long.valueOf(1), "String 1");
-        m.put(Long.valueOf(2), "String 2");
-        m.put(Long.valueOf(3), "String 3");
+        m.put(1L, "String 1");
+        m.put(2L, "String 2");
+        m.put(3L, "String 3");
         s.setDictionary(m);
         s.setFormatID(DocumentSummaryInformation.FORMAT_ID[0]);
         int codepage = CodePageUtil.CP_UNICODE;
@@ -522,12 +488,12 @@ public class TestWrite {
      */
     @Test
     public void inPlaceNPOIFSWrite() throws Exception {
-        NPOIFSFileSystem fs = null;
-        DirectoryEntry root = null;
-        DocumentNode sinfDoc = null;
-        DocumentNode dinfDoc = null;
-        SummaryInformation sinf = null;
-        DocumentSummaryInformation dinf = null;
+        NPOIFSFileSystem fs;
+        DirectoryEntry root;
+        DocumentNode sinfDoc;
+        DocumentNode dinfDoc;
+        SummaryInformation sinf;
+        DocumentSummaryInformation dinf;
         
         // We need to work on a File for in-place changes, so create a temp one
         final File copy = TempFile.createTempFile("Test-HPSF", "ole2");
@@ -567,10 +533,13 @@ public class TestWrite {
         assertEquals("\u7b2c1\u7ae0", sinf.getTitle());
         
         assertEquals("", dinf.getCompany());
-        assertEquals(null, dinf.getManager());
+        assertNull(dinf.getManager());
         
         
         // Do an in-place replace via an InputStream
+        assertNotNull(sinfDoc);
+        assertNotNull(dinfDoc);
+
         new NPOIFSDocument(sinfDoc).replaceContents(sinf.toInputStream());
         new NPOIFSDocument(dinfDoc).replaceContents(dinf.toInputStream());
         
@@ -661,7 +630,7 @@ public class TestWrite {
         assertEquals("\u7b2c1\u7ae0", sinf.getTitle());
         
         assertEquals("", dinf.getCompany());
-        assertEquals(null, dinf.getManager());
+        assertNull(dinf.getManager());
         
 
         // Now alter a few of them
@@ -730,43 +699,37 @@ public class TestWrite {
         
         // Tidy up
         fs.close();
+        //noinspection ResultOfMethodCallIgnored
         copy.delete();
     }
 
 
     /**
-     * <p>Tests writing and reading back a proper dictionary with an invalid
-     * codepage. (HPSF writes Unicode dictionaries only.)</p>
-     * @throws IOException 
-     * @throws HPSFException 
+     * Tests writing and reading back a proper dictionary with an invalid
+     * codepage. (HPSF writes Unicode dictionaries only.)
      */
-    @Test(expected=IllegalPropertySetDataException.class)
+    @Test(expected=UnsupportedEncodingException.class)
     public void dictionaryWithInvalidCodepage() throws IOException, HPSFException {
         final File copy = TempFile.createTempFile("Test-HPSF", "ole2");
         copy.deleteOnExit();
         
         /* Write: */
-        final OutputStream out = new FileOutputStream(copy);
-        
-        final POIFSFileSystem poiFs = new POIFSFileSystem();
+
         final PropertySet ps1 = new PropertySet();
         final Section s = ps1.getSections().get(0);
         final Map<Long,String> m = new HashMap<>(3, 1.0f);
-        m.put(Long.valueOf(1), "String 1");
-        m.put(Long.valueOf(2), "String 2");
-        m.put(Long.valueOf(3), "String 3");
+        m.put(1L, "String 1");
+        m.put(2L, "String 2");
+        m.put(3L, "String 3");
 
-        try {
+        try (OutputStream out = new FileOutputStream(copy);
+             POIFSFileSystem poiFs = new POIFSFileSystem()) {
             s.setDictionary(m);
             s.setFormatID(DocumentSummaryInformation.FORMAT_ID[0]);
             int codepage = 12345;
-            s.setProperty(PropertyIDMap.PID_CODEPAGE, Variant.VT_I2,
-                          Integer.valueOf(codepage));
+            s.setProperty(PropertyIDMap.PID_CODEPAGE, Variant.VT_I2, codepage);
             poiFs.createDocument(ps1.toInputStream(), "Test");
             poiFs.writeFilesystem(out);
-        } finally {
-            poiFs.close();
-            out.close();
         }
     }
 

Modified: poi/trunk/src/testcases/org/apache/poi/hpsf/basic/Util.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hpsf/basic/Util.java?rev=1839201&r1=1839200&r2=1839201&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hpsf/basic/Util.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hpsf/basic/Util.java Sun Aug 26 11:55:00 2018
@@ -18,8 +18,9 @@
 
 package org.apache.poi.hpsf.basic;
 
+import static org.junit.Assert.fail;
+
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
@@ -28,7 +29,6 @@ import java.util.List;
 
 import org.apache.poi.hpsf.PropertySet;
 import org.apache.poi.poifs.eventfilesystem.POIFSReader;
-import org.apache.poi.poifs.eventfilesystem.POIFSReaderEvent;
 import org.apache.poi.poifs.eventfilesystem.POIFSReaderListener;
 import org.apache.poi.util.IOUtils;
 
@@ -39,6 +39,9 @@ import org.apache.poi.util.IOUtils;
  */
 final class Util {
 
+    private Util() {
+    }
+
     /**
      * <p>Reads a set of files from a POI filesystem and returns them
      * as an array of {@link POIFile} instances. This method loads all
@@ -58,24 +61,20 @@ final class Util {
      * 
      * @exception IOException if an I/O exception occurs
      */
-    public static List<POIFile> readPOIFiles(final File poiFs, final String... poiFiles)
-    throws FileNotFoundException, IOException {
+    static List<POIFile> readPOIFiles(final File poiFs, final String... poiFiles) throws IOException {
         final List<POIFile> files = new ArrayList<>();
         POIFSReader r = new POIFSReader();
-        POIFSReaderListener pfl = new POIFSReaderListener() {
-            @Override
-            public void processPOIFSReaderEvent(final POIFSReaderEvent event) {
-                try {
-                    final POIFile f = new POIFile();
-                    f.setName(event.getName());
-                    f.setPath(event.getPath());
-                    final InputStream in = event.getStream();
-                    f.setBytes(IOUtils.toByteArray(in));
-                    in.close();
-                    files.add(f);
-                } catch (IOException ex) {
-                    throw new RuntimeException(ex);
-                }
+        POIFSReaderListener pfl = event -> {
+            try {
+                final POIFile f = new POIFile();
+                f.setName(event.getName());
+                f.setPath(event.getPath());
+                final InputStream in = event.getStream();
+                f.setBytes(IOUtils.toByteArray(in));
+                in.close();
+                files.add(f);
+            } catch (IOException ex) {
+                fail(ex.getMessage());
             }
         };
         if (poiFiles.length == 0) {
@@ -88,12 +87,8 @@ final class Util {
         }
 
         /* Read the POI filesystem. */
-        FileInputStream stream = new FileInputStream(poiFs);
-        try {
-            r.read(stream);
-        } finally {
-            stream.close();
-        }
+        r.read(poiFs);
+
         return files;
     }
 
@@ -110,29 +105,23 @@ final class Util {
      * @return The property sets. The elements are ordered in the same way
      * as the files in the POI filesystem.
      * 
-     * @exception FileNotFoundException if the file containing the POI 
-     * filesystem does not exist
-     * 
      * @exception IOException if an I/O exception occurs
      */
-    public static List<POIFile> readPropertySets(final File poiFs) throws IOException {
+    static List<POIFile> readPropertySets(final File poiFs) throws IOException {
         final List<POIFile> files = new ArrayList<>(7);
         final POIFSReader r = new POIFSReader();
-        POIFSReaderListener pfl = new POIFSReaderListener() {
-            @Override
-            public void processPOIFSReaderEvent(final POIFSReaderEvent event) {
-                try {
-                    final POIFile f = new POIFile();
-                    f.setName(event.getName());
-                    f.setPath(event.getPath());
-                    final InputStream in = event.getStream();
-                    if (PropertySet.isPropertySetStream(in)) {
-                        f.setBytes(IOUtils.toByteArray(in));
-                        files.add(f);
-                    }
-                } catch (Exception ex) {
-                    throw new RuntimeException(ex);
+        final POIFSReaderListener pfl = event -> {
+            try {
+                final POIFile f = new POIFile();
+                f.setName(event.getName());
+                f.setPath(event.getPath());
+                final InputStream in = event.getStream();
+                if (PropertySet.isPropertySetStream(in)) {
+                    f.setBytes(IOUtils.toByteArray(in));
+                    files.add(f);
                 }
+            } catch (Exception ex) {
+                fail(ex.getMessage());
             }
         };
 
@@ -140,12 +129,7 @@ final class Util {
         r.registerListener(pfl);
 
         /* Read the POI filesystem. */
-        InputStream is = new FileInputStream(poiFs);
-        try {
-            r.read(is);
-        } finally {
-            is.close();
-        }
+        r.read(poiFs);
 
         return files;
     }

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java?rev=1839201&r1=1839200&r2=1839201&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java Sun Aug 26 11:55:00 2018
@@ -68,7 +68,6 @@ import org.apache.poi.hssf.record.crypto
 import org.apache.poi.poifs.filesystem.DocumentEntry;
 import org.apache.poi.poifs.filesystem.DocumentInputStream;
 import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
-import org.apache.poi.poifs.filesystem.OPOIFSFileSystem;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.poi.ss.formula.ptg.Area3DPtg;
 import org.apache.poi.ss.formula.ptg.DeletedArea3DPtg;
@@ -89,7 +88,6 @@ import org.apache.poi.ss.usermodel.Sheet
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.util.LocaleUtil;
-import org.junit.After;
 import org.junit.Assume;
 import org.junit.Ignore;
 import org.junit.Test;
@@ -1022,7 +1020,7 @@ public final class TestBugs extends Base
 
         assertEquals(4, wb.getNumberOfFontsAsInt());
 
-        HSSFFont f1 = wb.getFontAt((short) 0);
+        HSSFFont f1 = wb.getFontAt(0);
         assertFalse(f1.getBold());
 
         // Check that asking for the same font
@@ -1617,7 +1615,7 @@ public final class TestBugs extends Base
     @Test
     public void bug46904() throws Exception {
         try {
-            OPOIFSFileSystem fs = new OPOIFSFileSystem(
+            POIFSFileSystem fs = new POIFSFileSystem(
                     HSSFITestDataProvider.instance.openWorkbookStream("46904.xls"));
             new HSSFWorkbook(fs.getRoot(), false).close();
             fail("Should catch exception here");
@@ -2505,7 +2503,7 @@ public final class TestBugs extends Base
 
     @Test
     public void bug53432() throws IOException {
-        Workbook wb1 = new HSSFWorkbook(); //or new HSSFWorkbook();
+        HSSFWorkbook wb1 = new HSSFWorkbook(); //or new HSSFWorkbook();
         wb1.addPicture(new byte[]{123, 22}, Workbook.PICTURE_TYPE_JPEG);
         assertEquals(wb1.getAllPictures().size(), 1);
         wb1.close();
@@ -2513,13 +2511,13 @@ public final class TestBugs extends Base
         wb1.close();
         wb1 = new HSSFWorkbook();
 
-        Workbook wb2 = writeOutAndReadBack((HSSFWorkbook) wb1);
+        HSSFWorkbook wb2 = writeOutAndReadBack(wb1);
         wb1.close();
         assertEquals(wb2.getAllPictures().size(), 0);
         wb2.addPicture(new byte[]{123, 22}, Workbook.PICTURE_TYPE_JPEG);
         assertEquals(wb2.getAllPictures().size(), 1);
 
-        Workbook wb3 = writeOutAndReadBack((HSSFWorkbook) wb2);
+        HSSFWorkbook wb3 = writeOutAndReadBack(wb2);
         wb2.close();
         assertEquals(wb3.getAllPictures().size(), 1);
 
@@ -3093,8 +3091,8 @@ public final class TestBugs extends Base
 
     @Test
     public void test61287() throws IOException {
-        final Workbook wb = HSSFTestDataSamples.openSampleWorkbook("61287.xls");
-        ExcelExtractor ex = new ExcelExtractor((HSSFWorkbook) wb);
+        final HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("61287.xls");
+        ExcelExtractor ex = new ExcelExtractor(wb);
         String text = ex.getText();
         assertContains(text, "\u8D44\u4EA7\u8D1F\u503A\u8868");
         wb.close();

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java?rev=1839201&r1=1839200&r2=1839201&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java Sun Aug 26 11:55:00 2018
@@ -29,7 +29,6 @@ import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -38,7 +37,6 @@ import java.util.Collection;
 import java.util.List;
 
 import junit.framework.AssertionFailedError;
-
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.ddf.EscherBSERecord;
 import org.apache.poi.hpsf.ClassID;
@@ -56,7 +54,6 @@ import org.apache.poi.hssf.record.Window
 import org.apache.poi.poifs.filesystem.DirectoryEntry;
 import org.apache.poi.poifs.filesystem.DirectoryNode;
 import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
-import org.apache.poi.poifs.filesystem.OPOIFSFileSystem;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.poi.ss.formula.ptg.Area3DPtg;
 import org.apache.poi.ss.usermodel.BaseTestWorkbook;
@@ -95,7 +92,6 @@ public final class TestHSSFWorkbook exte
 
     /**
      * Tests for {@link HSSFWorkbook#isHidden()} etc
-     * @throws IOException
      */
     @Test
     public void hidden() throws IOException {
@@ -103,23 +99,23 @@ public final class TestHSSFWorkbook exte
 
         WindowOneRecord w1 = wb.getWorkbook().getWindowOne();
 
-        assertEquals(false, wb.isHidden());
-        assertEquals(false, w1.getHidden());
+        assertFalse(wb.isHidden());
+        assertFalse(w1.getHidden());
 
         wb.setHidden(true);
-        assertEquals(true, wb.isHidden());
-        assertEquals(true, w1.getHidden());
+        assertTrue(wb.isHidden());
+        assertTrue(w1.getHidden());
 
         HSSFWorkbook wbBack = HSSFTestDataSamples.writeOutAndReadBack(wb);
         w1 = wbBack.getWorkbook().getWindowOne();
 
         wbBack.setHidden(true);
-        assertEquals(true, wbBack.isHidden());
-        assertEquals(true, w1.getHidden());
+        assertTrue(wbBack.isHidden());
+        assertTrue(w1.getHidden());
 
         wbBack.setHidden(false);
-        assertEquals(false, wbBack.isHidden());
-        assertEquals(false, w1.getHidden());
+        assertFalse(wbBack.isHidden());
+        assertFalse(w1.getHidden());
 
         wbBack.close();
         wb.close();
@@ -257,30 +253,30 @@ public final class TestHSSFWorkbook exte
         wb.setSelectedTabs(selected);
 
         assertCollectionsEquals(selected, wb.getSelectedTabs());
-        assertEquals(true, sheet0.isSelected());
-        assertEquals(false, sheet1.isSelected());
-        assertEquals(true, sheet2.isSelected());
-        assertEquals(true, sheet3.isSelected());
-        assertEquals(false, sheet4.isSelected());
-        assertEquals(false, sheet5.isSelected());
+        assertTrue(sheet0.isSelected());
+        assertFalse(sheet1.isSelected());
+        assertTrue(sheet2.isSelected());
+        assertTrue(sheet3.isSelected());
+        assertFalse(sheet4.isSelected());
+        assertFalse(sheet5.isSelected());
 
         selected = arrayToList(new int[] { 1, 3, 5 });
         wb.setSelectedTabs(selected);
 
         // previous selection should be cleared
         assertCollectionsEquals(selected, wb.getSelectedTabs());
-        assertEquals(false, sheet0.isSelected());
-        assertEquals(true, sheet1.isSelected());
-        assertEquals(false, sheet2.isSelected());
-        assertEquals(true, sheet3.isSelected());
-        assertEquals(false, sheet4.isSelected());
-        assertEquals(true, sheet5.isSelected());
+        assertFalse(sheet0.isSelected());
+        assertTrue(sheet1.isSelected());
+        assertFalse(sheet2.isSelected());
+        assertTrue(sheet3.isSelected());
+        assertFalse(sheet4.isSelected());
+        assertTrue(sheet5.isSelected());
 
-        assertEquals(true, sheet0.isActive());
-        assertEquals(false, sheet2.isActive());
+        assertTrue(sheet0.isActive());
+        assertFalse(sheet2.isActive());
         wb.setActiveSheet(2);
-        assertEquals(false, sheet0.isActive());
-        assertEquals(true, sheet2.isActive());
+        assertFalse(sheet0.isActive());
+        assertTrue(sheet2.isActive());
 
         /*{ // helpful if viewing this workbook in excel:
             sheet0.createRow(0).createCell(0).setCellValue(new HSSFRichTextString("Sheet0"));
@@ -383,7 +379,6 @@ public final class TestHSSFWorkbook exte
      * records to be written with invalid offset indexes.  Excel does not like this, and such
      * errors are particularly hard to track down.  This test ensures that HSSFWorkbook throws
      * a specific exception as soon as the situation is detected. See bugzilla 45066
-     * @throws IOException 
      */
     @Test
     public void sheetSerializeSizeMismatch_bug45066() throws IOException {
@@ -496,7 +491,7 @@ public final class TestHSSFWorkbook exte
      * result returned by getRecordSize() differs from result returned by serialize()
      */
     private static final class BadlyBehavedRecord extends Record {
-        public BadlyBehavedRecord() {
+        BadlyBehavedRecord() {
             //
         }
         @Override
@@ -576,7 +571,7 @@ public final class TestHSSFWorkbook exte
         POIFSFileSystem fs2 = new POIFSFileSystem(new ByteArrayInputStream(bytes));
         ClassID clsid2 = fs2.getRoot().getStorageClsid();
 
-        assertTrue(clsid1.equals(clsid2));
+        assertEquals(clsid1, clsid2);
         
         fs2.close();
         wb.close();
@@ -625,108 +620,89 @@ public final class TestHSSFWorkbook exte
     public void differentPOIFS() throws Exception {
        // Open the two filesystems
        DirectoryNode[] files = new DirectoryNode[2];
-       POIFSFileSystem poifsFileSystem = new POIFSFileSystem(HSSFTestDataSamples.openSampleFileStream("Simple.xls"));
-       try {
-           files[0] = poifsFileSystem.getRoot();
-           NPOIFSFileSystem npoifsFileSystem = new NPOIFSFileSystem(HSSFTestDataSamples.getSampleFile("Simple.xls"));
-           try {
-               files[1] = npoifsFileSystem.getRoot();
-               
-               // Open without preserving nodes 
-               for(DirectoryNode dir : files) {
-                  HSSFWorkbook workbook = new HSSFWorkbook(dir, false);
-                  HSSFSheet sheet = workbook.getSheetAt(0);
-                  HSSFCell cell = sheet.getRow(0).getCell(0);
-                  assertEquals("replaceMe", cell .getRichStringCellValue().getString());
-                  
-                  workbook.close();
-               }
-        
-               // Now re-check with preserving
-               for(DirectoryNode dir : files) {
-                  HSSFWorkbook workbook = new HSSFWorkbook(dir, true);
-                  HSSFSheet sheet = workbook.getSheetAt(0);
-                  HSSFCell cell = sheet.getRow(0).getCell(0);
-                  assertEquals("replaceMe", cell .getRichStringCellValue().getString());
-                  
-                  workbook.close();
-               }
-           } finally {
-               npoifsFileSystem.close();
-           }
-       } finally {
-           poifsFileSystem.close();
-       }
+        try (POIFSFileSystem poifsFileSystem = new POIFSFileSystem(HSSFTestDataSamples.openSampleFileStream("Simple.xls"))) {
+            files[0] = poifsFileSystem.getRoot();
+            try (NPOIFSFileSystem npoifsFileSystem = new NPOIFSFileSystem(HSSFTestDataSamples.getSampleFile("Simple.xls"))) {
+                files[1] = npoifsFileSystem.getRoot();
+
+                // Open without preserving nodes
+                for (DirectoryNode dir : files) {
+                    HSSFWorkbook workbook = new HSSFWorkbook(dir, false);
+                    HSSFSheet sheet = workbook.getSheetAt(0);
+                    HSSFCell cell = sheet.getRow(0).getCell(0);
+                    assertEquals("replaceMe", cell.getRichStringCellValue().getString());
+
+                    workbook.close();
+                }
+
+                // Now re-check with preserving
+                for (DirectoryNode dir : files) {
+                    HSSFWorkbook workbook = new HSSFWorkbook(dir, true);
+                    HSSFSheet sheet = workbook.getSheetAt(0);
+                    HSSFCell cell = sheet.getRow(0).getCell(0);
+                    assertEquals("replaceMe", cell.getRichStringCellValue().getString());
+
+                    workbook.close();
+                }
+            }
+        }
     }
 
     @Test
     public void wordDocEmbeddedInXls() throws IOException {
        // Open the two filesystems
        DirectoryNode[] files = new DirectoryNode[2];
-       POIFSFileSystem poifsFileSystem = new POIFSFileSystem(HSSFTestDataSamples.openSampleFileStream("WithEmbeddedObjects.xls"));
-       try {
-           files[0] = poifsFileSystem.getRoot();
-           NPOIFSFileSystem npoifsFileSystem = new NPOIFSFileSystem(HSSFTestDataSamples.getSampleFile("WithEmbeddedObjects.xls"));
-           try {
-               files[1] = npoifsFileSystem.getRoot();
-               
-               // Check the embedded parts
-               for(DirectoryNode root : files) {
-                  HSSFWorkbook hw = new HSSFWorkbook(root, true);
-                  List<HSSFObjectData> objects = hw.getAllEmbeddedObjects();
-                  boolean found = false;
-                   for (HSSFObjectData embeddedObject : objects) {
-                       if (embeddedObject.hasDirectoryEntry()) {
-                           DirectoryEntry dir = embeddedObject.getDirectory();
-                           if (dir instanceof DirectoryNode) {
-                               DirectoryNode dNode = (DirectoryNode) dir;
-                               if (hasEntry(dNode, "WordDocument")) {
-                                   found = true;
-                               }
-                           }
-                       }
-                   }
-                  assertTrue(found);
-                  
-                  hw.close();
-               }
-           } finally {
-               npoifsFileSystem.close();
-           }
-       } finally {
-           poifsFileSystem.close();
-       }
+        try (POIFSFileSystem poifsFileSystem = new POIFSFileSystem(HSSFTestDataSamples.openSampleFileStream("WithEmbeddedObjects.xls"))) {
+            files[0] = poifsFileSystem.getRoot();
+            try (NPOIFSFileSystem npoifsFileSystem = new NPOIFSFileSystem(HSSFTestDataSamples.getSampleFile("WithEmbeddedObjects.xls"))) {
+                files[1] = npoifsFileSystem.getRoot();
+
+                // Check the embedded parts
+                for (DirectoryNode root : files) {
+                    HSSFWorkbook hw = new HSSFWorkbook(root, true);
+                    List<HSSFObjectData> objects = hw.getAllEmbeddedObjects();
+                    boolean found = false;
+                    for (HSSFObjectData embeddedObject : objects) {
+                        if (embeddedObject.hasDirectoryEntry()) {
+                            DirectoryEntry dir = embeddedObject.getDirectory();
+                            if (dir instanceof DirectoryNode) {
+                                DirectoryNode dNode = (DirectoryNode) dir;
+                                if (dNode.hasEntry("WordDocument")) {
+                                    found = true;
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                    assertTrue(found);
+
+                    hw.close();
+                }
+            }
+        }
     }
 
     /**
      * Checks that we can open a workbook with NPOIFS, and write it out
      *  again (via POIFS) and have it be valid
-     * @throws IOException
      */
     @Test
     public void writeWorkbookFromNPOIFS() throws IOException {
-       InputStream is = HSSFTestDataSamples.openSampleFileStream("WithEmbeddedObjects.xls");
-       try {
-           NPOIFSFileSystem fs = new NPOIFSFileSystem(is);
-           try {
-               // Start as NPOIFS
-               HSSFWorkbook wb = new HSSFWorkbook(fs.getRoot(), true);
-               assertEquals(3, wb.getNumberOfSheets());
-               assertEquals("Root xls", wb.getSheetAt(0).getRow(0).getCell(0).getStringCellValue());
-
-               // Will switch to POIFS
-               HSSFWorkbook wbBack = HSSFTestDataSamples.writeOutAndReadBack(wb);
-               assertEquals(3, wbBack.getNumberOfSheets());
-               assertEquals("Root xls", wbBack.getSheetAt(0).getRow(0).getCell(0).getStringCellValue());
-               wbBack.close();
-               
-               wb.close();
-           } finally {
-        	   fs.close();
-           }
-       } finally {
-    	   is.close();
-       }
+        try (InputStream is = HSSFTestDataSamples.openSampleFileStream("WithEmbeddedObjects.xls");
+             NPOIFSFileSystem fs = new NPOIFSFileSystem(is)) {
+            // Start as NPOIFS
+            HSSFWorkbook wb = new HSSFWorkbook(fs.getRoot(), true);
+            assertEquals(3, wb.getNumberOfSheets());
+            assertEquals("Root xls", wb.getSheetAt(0).getRow(0).getCell(0).getStringCellValue());
+
+            // Will switch to POIFS
+            HSSFWorkbook wbBack = HSSFTestDataSamples.writeOutAndReadBack(wb);
+            assertEquals(3, wbBack.getNumberOfSheets());
+            assertEquals("Root xls", wbBack.getSheetAt(0).getRow(0).getCell(0).getStringCellValue());
+            wbBack.close();
+
+            wb.close();
+        }
     }
 
     @Test
@@ -795,7 +771,9 @@ public final class TestHSSFWorkbook exte
         wb.setSheetOrder("other sheet", 0);
 
         // names
+        //noinspection ConstantConditions
         assertEquals("'first sheet'!D1", wb.getName("name1").getRefersToFormula());
+        //noinspection ConstantConditions
         assertEquals("'other sheet'!C1", wb.getName("name2").getRefersToFormula());
 
         // cells
@@ -811,15 +789,6 @@ public final class TestHSSFWorkbook exte
         wb.close();
     }
 
-    private boolean hasEntry(DirectoryNode dirNode, String entryName) {
-       try {
-           dirNode.getEntry(entryName);
-           return true;
-       } catch (FileNotFoundException e) {
-           return false;
-       }
-   }
-
     @Test
     public void clonePictures() throws IOException {
         HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("SimpleWithImages.xls");
@@ -854,11 +823,8 @@ public final class TestHSSFWorkbook exte
     // Should throw exception about invalid POIFSFileSystem
     @Test(expected=IllegalArgumentException.class)
     public void emptyDirectoryNode() throws IOException {
-        POIFSFileSystem fs = new POIFSFileSystem();
-        try {
+        try (POIFSFileSystem fs = new POIFSFileSystem()) {
             new HSSFWorkbook(fs).close();
-        } finally {
-            fs.close();
         }
     }
 
@@ -1093,7 +1059,8 @@ public final class TestHSSFWorkbook exte
 		wb.close();
 	}
 
-	private void expectName(HSSFWorkbook wb, String name, String expect) {
+	@SuppressWarnings("SameParameterValue")
+    private void expectName(HSSFWorkbook wb, String name, String expect) {
         final HSSFName hssfName = wb.getName(name);
         assertNotNull(hssfName);
         assertEquals(expect, hssfName.getRefersToFormula());
@@ -1149,16 +1116,13 @@ public final class TestHSSFWorkbook exte
     
             // edit the workbook
             {
-                NPOIFSFileSystem fs = new NPOIFSFileSystem(file, false);
-                try {
+                try (NPOIFSFileSystem fs = new NPOIFSFileSystem(file, false)) {
                     DirectoryNode root = fs.getRoot();
                     final Workbook workbook = new HSSFWorkbook(root, true);
                     final Sheet sheet = workbook.getSheet("foo");
                     sheet.getRow(1).createCell(2).setCellValue("baz");
-                    
+
                     writeAndCloseWorkbook(workbook, file);
-                } finally {
-                    fs.close();
                 }
             }
         } finally {
@@ -1239,18 +1203,6 @@ public final class TestHSSFWorkbook exte
         }
         wb.close();
         
-        // Can't work for OPOIFS
-        OPOIFSFileSystem ofs = new OPOIFSFileSystem(
-                POIDataSamples.getSpreadSheetInstance().openResourceAsStream("SampleSS.xls"));
-        wb = new HSSFWorkbook(ofs.getRoot(), true);
-        try {
-            wb.write();
-            fail("Shouldn't work for OPOIFSFileSystem");
-        } catch (IllegalStateException e) {
-            // expected here
-        }
-        wb.close();
-        
         // Can't work for Read-Only files
         NPOIFSFileSystem fs = new NPOIFSFileSystem(
                 POIDataSamples.getSpreadSheetInstance().getFile("SampleSS.xls"), true);
@@ -1268,16 +1220,9 @@ public final class TestHSSFWorkbook exte
     public void inPlaceWrite() throws Exception {
         // Setup as a copy of a known-good file
         final File file = TempFile.createTempFile("TestHSSFWorkbook", ".xls");
-        InputStream inputStream = POIDataSamples.getSpreadSheetInstance().openResourceAsStream("SampleSS.xls");
-        try {
-            FileOutputStream outputStream = new FileOutputStream(file);
-            try {
-                IOUtils.copy(inputStream, outputStream);
-            } finally {
-                outputStream.close();
-            }
-        } finally {
-            inputStream.close();
+        try (InputStream inputStream = POIDataSamples.getSpreadSheetInstance().openResourceAsStream("SampleSS.xls");
+             FileOutputStream outputStream = new FileOutputStream(file)) {
+            IOUtils.copy(inputStream, outputStream);
         }
         
         // Open from the temp file in read-write mode

Modified: poi/trunk/src/testcases/org/apache/poi/poifs/eventfilesystem/TestPOIFSReaderRegistry.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/poifs/eventfilesystem/TestPOIFSReaderRegistry.java?rev=1839201&r1=1839200&r2=1839201&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/poifs/eventfilesystem/TestPOIFSReaderRegistry.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/poifs/eventfilesystem/TestPOIFSReaderRegistry.java Sun Aug 26 11:55:00 2018
@@ -17,20 +17,22 @@
 
 package org.apache.poi.poifs.eventfilesystem;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Set;
 
-import junit.framework.TestCase;
-
 import org.apache.poi.poifs.filesystem.POIFSDocumentPath;
+import org.junit.Test;
 
 /**
  * Class to test POIFSReaderRegistry functionality
  *
  * @author Marc Johnson
  */
-public final class TestPOIFSReaderRegistry extends TestCase {
+public final class TestPOIFSReaderRegistry {
     private final POIFSReaderListener[] listeners =
     {
         new Listener(), new Listener(), new Listener(), new Listener()
@@ -56,13 +58,14 @@ public final class TestPOIFSReaderRegist
     /**
      * Test empty registry
      */
+    @Test
     public void testEmptyRegistry() {
         POIFSReaderRegistry registry = new POIFSReaderRegistry();
 
         for (POIFSDocumentPath path : paths) {
             for (String name : names) {
                 Iterator<POIFSReaderListener> listeners =
-                    registry.getListeners(path, name);
+                    registry.getListeners(path, name).iterator();
 
                 assertTrue(!listeners.hasNext());
             }
@@ -72,6 +75,7 @@ public final class TestPOIFSReaderRegist
     /**
      * Test mixed registration operations
      */
+    @Test
     public void testMixedRegistrationOperations() {
         POIFSReaderRegistry registry = new POIFSReaderRegistry();
 
@@ -93,21 +97,20 @@ public final class TestPOIFSReaderRegist
         {
             for (int n = 0; n < names.length; n++)
             {
-                Iterator<POIFSReaderListener> listeners =
+                Iterable<POIFSReaderListener> listeners =
                     registry.getListeners(paths[ k ], names[ n ]);
 
                 if (k == n)
                 {
-                    assertTrue(!listeners.hasNext());
+                    assertTrue(!listeners.iterator().hasNext());
                 }
                 else
                 {
                     Set<POIFSReaderListener> registeredListeners =
                             new HashSet<>();
 
-                    while (listeners.hasNext())
-                    {
-                        registeredListeners.add(listeners.next());
+                    for (POIFSReaderListener rl : listeners) {
+                        registeredListeners.add(rl);
                     }
                     assertEquals(this.listeners.length - 1,
                                  registeredListeners.size());
@@ -132,14 +135,13 @@ public final class TestPOIFSReaderRegist
         }
         for (POIFSDocumentPath path : paths) {
             for (String name : names) {
-                Iterator<POIFSReaderListener> listeners =
+                Iterable<POIFSReaderListener> listeners =
                     registry.getListeners(path, name);
                 Set<POIFSReaderListener> registeredListeners =
                         new HashSet<>();
 
-                while (listeners.hasNext())
-                {
-                    registeredListeners.add(listeners.next());
+                for (POIFSReaderListener rl : listeners) {
+                    registeredListeners.add(rl);
                 }
                 assertEquals(this.listeners.length,
                              registeredListeners.size());

Modified: poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/AllPOIFSFileSystemTests.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/AllPOIFSFileSystemTests.java?rev=1839201&r1=1839200&r2=1839201&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/AllPOIFSFileSystemTests.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/AllPOIFSFileSystemTests.java Sun Aug 26 11:55:00 2018
@@ -21,7 +21,7 @@ import org.junit.runner.RunWith;
 import org.junit.runners.Suite;
 
 /**
- * Tests for org.apache.poi.poifs.filesystem<br>
+ * Tests for org.apache.poi.poifs.filesystem
  */
 @RunWith(Suite.class)
 @Suite.SuiteClasses({
@@ -29,7 +29,6 @@ import org.junit.runners.Suite;
     , TestDocument.class
     , TestDocumentDescriptor.class
     , TestDocumentInputStream.class
-    , TestDocumentNode.class
     , TestDocumentOutputStream.class
     , TestEmptyDocument.class
     , TestNotOLE2Exception.class

Modified: poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/ReaderWriter.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/ReaderWriter.java?rev=1839201&r1=1839200&r2=1839201&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/ReaderWriter.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/ReaderWriter.java Sun Aug 26 11:55:00 2018
@@ -19,7 +19,7 @@
 
 package org.apache.poi.poifs.filesystem;
 
-import java.io.FileInputStream;
+import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -38,42 +38,19 @@ import org.apache.poi.util.IOUtils;
  * @author Marc Johnson (mjohnson at apache dot org)
  */
 
-public class ReaderWriter
+public final class ReaderWriter
     implements POIFSReaderListener, POIFSWriterListener
 {
-    private final POIFSFileSystem filesystem;
     private final DirectoryEntry  root;
 
     // keys are DocumentDescriptors, values are byte[]s
-    private final Map<DocumentDescriptor, byte[]> dataMap;
+    private final Map<DocumentDescriptor, byte[]> dataMap = new HashMap<>();
 
-    /**
-     * Constructor ReaderWriter
-     *
-     *
-     * @param filesystem
-     *
-     */
-
-    ReaderWriter(final POIFSFileSystem filesystem)
-    {
-        this.filesystem = filesystem;
-        root            = this.filesystem.getRoot();
-        dataMap         = new HashMap<>();
+    private ReaderWriter(final POIFSFileSystem filesystem) {
+        root = filesystem.getRoot();
     }
 
-    /**
-     * Method main
-     *
-     *
-     * @param args
-     *
-     * @exception IOException
-     *
-     */
-
-    public static void main(String [] args)
-        throws IOException
+    public static void main(String [] args) throws IOException
     {
         if (args.length != 2)
         {
@@ -86,10 +63,8 @@ public class ReaderWriter
             POIFSFileSystem filesystem = new POIFSFileSystem();
 
             reader.registerListener(new ReaderWriter(filesystem));
-            FileInputStream istream = new FileInputStream(args[ 0 ]);
 
-            reader.read(istream);
-            istream.close();
+            reader.read(new File(args[ 0 ]));
             FileOutputStream ostream = new FileOutputStream(args[ 1 ]);
 
             filesystem.writeFilesystem(ostream);

Modified: poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestDocument.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestDocument.java?rev=1839201&r1=1839200&r2=1839201&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestDocument.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestDocument.java Sun Aug 26 11:55:00 2018
@@ -17,218 +17,131 @@
 
 package org.apache.poi.poifs.filesystem;
 
+import static org.apache.poi.poifs.common.POIFSConstants.LARGER_BIG_BLOCK_SIZE;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.stream.IntStream;
 
 import org.apache.poi.poifs.property.DocumentProperty;
-import org.apache.poi.poifs.storage.RawDataBlock;
-
-import junit.framework.TestCase;
+import org.apache.poi.poifs.storage.RawDataUtil;
+import org.apache.poi.util.IOUtils;
+import org.junit.Test;
 
 /**
- * Class to test OPOIFSDocument functionality
+ * Class to test POIFSDocument functionality
  */
-public final class TestDocument extends TestCase {
+public class TestDocument {
 
     /**
      * Integration test -- really about all we can do
      */
-    public void testOPOIFSDocument() throws IOException {
+    @Test
+    public void testNPOIFSDocument() throws IOException {
 
-        // verify correct number of blocks get created for document
-        // that is exact multituple of block size
-        OPOIFSDocument document;
-        byte[]        array = new byte[ 4096 ];
-
-        for (int j = 0; j < array.length; j++)
-        {
-            array[ j ] = ( byte ) j;
-        }
-        document = new OPOIFSDocument("foo", new SlowInputStream(new ByteArrayInputStream(array)));
-        checkDocument(document, array);
+        try (NPOIFSFileSystem poifs = new NPOIFSFileSystem()) {
 
-        // verify correct number of blocks get created for document
-        // that is not an exact multiple of block size
-        array = new byte[ 4097 ];
-        for (int j = 0; j < array.length; j++)
-        {
-            array[ j ] = ( byte ) j;
-        }
-        document = new OPOIFSDocument("bar", new ByteArrayInputStream(array));
-        checkDocument(document, array);
+            // verify correct number of blocks get created for document
+            // that is exact multiple of block size
+            checkDocument(poifs, LARGER_BIG_BLOCK_SIZE);
 
-        // verify correct number of blocks get created for document
-        // that is small
-        array = new byte[ 4095 ];
-        for (int j = 0; j < array.length; j++)
-        {
-            array[ j ] = ( byte ) j;
-        }
-        document = new OPOIFSDocument("_bar", new ByteArrayInputStream(array));
-        checkDocument(document, array);
+            // verify correct number of blocks get created for document
+            // that is not an exact multiple of block size
+            checkDocument(poifs, LARGER_BIG_BLOCK_SIZE + 1);
 
-        // verify correct number of blocks get created for document
-        // that is rather small
-        array = new byte[ 199 ];
-        for (int j = 0; j < array.length; j++)
-        {
-            array[ j ] = ( byte ) j;
-        }
-        document = new OPOIFSDocument("_bar2",
-                                     new ByteArrayInputStream(array));
-        checkDocument(document, array);
-
-        // verify that output is correct
-        array = new byte[ 4097 ];
-        for (int j = 0; j < array.length; j++)
-        {
-            array[ j ] = ( byte ) j;
-        }
-        document = new OPOIFSDocument("foobar",
-                                     new ByteArrayInputStream(array));
-        checkDocument(document, array);
-        document.setStartBlock(0x12345678);   // what a big file!!
-        DocumentProperty      property = document.getDocumentProperty();
-        ByteArrayOutputStream stream   = new ByteArrayOutputStream();
+            // verify correct number of blocks get created for document
+            // that is small
+            checkDocument(poifs, LARGER_BIG_BLOCK_SIZE - 1);
 
-        property.writeData(stream);
-        byte[] output = stream.toByteArray();
-        byte[] array2 =
-        {
-            ( byte ) 'f', ( byte ) 0, ( byte ) 'o', ( byte ) 0, ( byte ) 'o',
-            ( byte ) 0, ( byte ) 'b', ( byte ) 0, ( byte ) 'a', ( byte ) 0,
-            ( byte ) 'r', ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
-            ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
-            ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
-            ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
-            ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
-            ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
-            ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
-            ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
-            ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
-            ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
-            ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 14,
-            ( byte ) 0, ( byte ) 2, ( byte ) 1, ( byte ) -1, ( byte ) -1,
-            ( byte ) -1, ( byte ) -1, ( byte ) -1, ( byte ) -1, ( byte ) -1,
-            ( byte ) -1, ( byte ) -1, ( byte ) -1, ( byte ) -1, ( byte ) -1,
-            ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
-            ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
-            ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
-            ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
-            ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
-            ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
-            ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
-            ( byte ) 0, ( byte ) 0x78, ( byte ) 0x56, ( byte ) 0x34,
-            ( byte ) 0x12, ( byte ) 1, ( byte ) 16, ( byte ) 0, ( byte ) 0,
-            ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0
-        };
-
-        assertEquals(array2.length, output.length);
-        for (int j = 0; j < output.length; j++)
-        {
-            assertEquals("Checking property offset " + j, array2[ j ],
-                         output[ j ]);
+            // verify correct number of blocks get created for document
+            // that is rather small
+            checkDocument(poifs, 199);
+
+
+            // verify that output is correct
+            NPOIFSDocument document = checkDocument(poifs, LARGER_BIG_BLOCK_SIZE + 1);
+            DocumentProperty property = document.getDocumentProperty();
+            ByteArrayOutputStream stream = new ByteArrayOutputStream();
+
+            property.writeData(stream);
+            byte[] output = stream.toByteArray();
+            byte[] array2 = RawDataUtil.decompress("H4sIAAAAAAAAAEtlyGMoYShiqGSwYCAH8DEwMf5HAsToMQdiRgEIGwCDyzEQgAAAAA==");
+
+            assertArrayEquals(array2, output);
         }
     }
 
-    private static OPOIFSDocument makeCopy(OPOIFSDocument document, byte[] input, byte[] data)
-            throws IOException {
-        OPOIFSDocument copy = null;
-
-        if (input.length >= 4096)
-        {
-            RawDataBlock[]       blocks =
-                new RawDataBlock[ (input.length + 511) / 512 ];
-            ByteArrayInputStream stream = new ByteArrayInputStream(data);
-            int                  index  = 0;
-
-            while (true)
-            {
-                RawDataBlock block = new RawDataBlock(stream);
-
-                if (block.eof())
-                {
-                    break;
-                }
-                blocks[ index++ ] = block;
-            }
-            copy = new OPOIFSDocument("test" + input.length, blocks,
-                                     input.length);
-        }
-        else
-        {
-            copy = new OPOIFSDocument("test"+input.length, document.getSmallBlocks(), input.length);
-        }
-        return copy;
+    private static NPOIFSDocument checkDocument(final NPOIFSFileSystem poifs, final int size) throws IOException {
+        final byte[] input = new byte[size];
+        IntStream.range(0, size).forEach(i -> input[i] = (byte)i);
+
+        NPOIFSDocument document = ((DocumentNode)poifs.createDocument(
+            new SlowInputStream(new ByteArrayInputStream(input)),
+        "entry"+poifs.getRoot().getEntryCount())).getDocument();
+
+        final int blockSize = (size >= 4096) ? 512 : 64;
+        final int blockCount = (size + (blockSize-1)) / blockSize;
+
+        final byte[] bytCpy = checkValues(blockCount, document, input);
+        final NPOIFSDocument copied = makeCopy(document,bytCpy);
+
+        checkValues(blockCount, copied, input);
+
+        return document;
     }
 
-    private static void checkDocument(final OPOIFSDocument document, final byte[] input)
-            throws IOException {
-        int big_blocks   = 0;
-        int small_blocks = 0;
-        int total_output = 0;
-
-        if (input.length >= 4096)
-        {
-            big_blocks   = (input.length + 511) / 512;
-            total_output = big_blocks * 512;
-        }
-        else
-        {
-            small_blocks = (input.length + 63) / 64;
-            total_output = 0;
-        }
-        checkValues(
-            big_blocks, small_blocks, total_output,
-            makeCopy(
-            document, input,
-            checkValues(
-                big_blocks, small_blocks, total_output, document,
-                input)), input);
+    private static NPOIFSDocument makeCopy(NPOIFSDocument document, byte[] input) throws IOException {
+        NPOIFSFileSystem poifs = document.getFileSystem();
+        String name = "test" + input.length;
+        DirectoryNode root = poifs.getRoot();
+        if (root.hasEntry(name)) {
+            root.deleteEntry((EntryNode)root.getEntry(name));
+        }
+        return ((DocumentNode)root
+            .createDocument(name, new ByteArrayInputStream(input)))
+            .getDocument();
     }
 
-    private static byte[] checkValues(int big_blocks, int small_blocks, int total_output,
-            OPOIFSDocument document, byte[] input) throws IOException {
+    private static byte[] checkValues(final int blockCountExp, NPOIFSDocument document, byte[] input) throws IOException {
+        assertNotNull(document);
+        assertNotNull(document.getDocumentProperty().getDocument());
         assertEquals(document, document.getDocumentProperty().getDocument());
-        int increment = ( int ) Math.sqrt(input.length);
 
-        for (int j = 1; j <= input.length; j += increment)
-        {
-            byte[] buffer = new byte[ j ];
-            int    offset = 0;
-
-            for (int k = 0; k < (input.length / j); k++)
-            {
-                document.read(buffer, offset);
-                for (int n = 0; n < buffer.length; n++)
-                {
-                    assertEquals("checking byte " + (k * j) + n,
-                                 input[ (k * j) + n ], buffer[ n ]);
-                }
-                offset += j;
-            }
-        }
-        assertEquals(big_blocks, document.countBlocks());
-        assertEquals(small_blocks, document.getSmallBlocks().length);
-        ByteArrayOutputStream stream = new ByteArrayOutputStream();
+        ByteArrayInputStream bis = new ByteArrayInputStream(input);
 
-        document.writeBlocks(stream);
-        byte[] output = stream.toByteArray();
+        int blockCountAct = 0, bytesRemaining = input.length;
+        for (ByteBuffer bb : document) {
+            assertTrue(bytesRemaining > 0);
+            int bytesAct = Math.min(bb.remaining(), bytesRemaining);
+            assertTrue(bytesAct <= document.getDocumentBlockSize());
+            byte[] bufAct = new byte[bytesAct];
+            bb.get(bufAct);
+
+            byte[] bufExp = new byte[bytesAct];
+            int bytesExp = bis.read(bufExp, 0, bytesAct);
+            assertEquals(bytesExp, bytesAct);
+
+            assertArrayEquals(bufExp, bufAct);
+            blockCountAct++;
+            bytesRemaining -= bytesAct;
+        }
 
-        assertEquals(total_output, output.length);
-        int limit = Math.min(total_output, input.length);
+        assertEquals(blockCountExp, blockCountAct);
 
-        for (int j = 0; j < limit; j++)
-        {
-            assertEquals("Checking document offset " + j, input[ j ],
-                         output[ j ]);
-        }
-        for (int j = limit; j < output.length; j++)
-        {
-            assertEquals("Checking document offset " + j, ( byte ) -1,
-                         output[ j ]);
+        ByteArrayOutputStream stream = new ByteArrayOutputStream();
+        try (DocumentInputStream dis = document.getFileSystem().createDocumentInputStream(
+                document.getDocumentProperty().getName())) {
+            IOUtils.copy(dis, stream);
         }
+
+        byte[] output = stream.toByteArray();
+        assertArrayEquals(input, stream.toByteArray());
         return output;
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org