Modified: 
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java?rev=1829653&r1=1829652&r2=1829653&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java
 (original)
+++ 
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java
 Fri Apr 20 12:52:59 2018
@@ -24,16 +24,17 @@ import static org.junit.Assert.assertFal
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
+import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 
 import org.apache.poi.POIDataSamples;
-import org.apache.poi.POITextExtractor;
 import org.apache.poi.extractor.ExtractorFactory;
 import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
-import org.apache.poi.openxml4j.opc.OPCPackage;
+import org.apache.poi.sl.extractor.SlideShowExtractor;
 import org.apache.poi.xslf.usermodel.XMLSlideShow;
 import org.apache.xmlbeans.XmlException;
+import org.junit.Ignore;
 import org.junit.Test;
 
 /**
@@ -44,188 +45,189 @@ public class TestXSLFPowerPointExtractor
 
        /**
         * Get text out of the simple file
-        * @throws XmlException
-        * @throws OpenXML4JException
         */
     @Test
-    public void testGetSimpleText()
-    throws IOException, XmlException, OpenXML4JException {
-        XMLSlideShow xmlA = openPPTX("sample.pptx");
-        @SuppressWarnings("resource")
-        OPCPackage pkg = xmlA.getPackage();
-
-           new XSLFPowerPointExtractor(xmlA).close();
-               new XSLFPowerPointExtractor(pkg).close();
-
-               XSLFPowerPointExtractor extractor =
-                       new XSLFPowerPointExtractor(xmlA);
-               extractor.getText();
-
-               String text = extractor.getText();
-               assertTrue(text.length() > 0);
-
-               // Check Basics
-               assertStartsWith(text, "Lorem ipsum dolor sit amet\n");
-               assertContains(text, "amet\n\n");
-
-               // Our placeholder master text
-               // This shouldn't show up in the output
-           // String masterText =
-           //     "Click to edit Master title style\n" +
-        //     "Click to edit Master subtitle style\n" +
-        //     "\n\n\n\n\n\n" +
-        //     "Click to edit Master title style\n" +
-        //     "Click to edit Master text styles\n" +
-        //     "Second level\n" +
-        //     "Third level\n" +
-        //     "Fourth level\n" +
-        //     "Fifth level\n";
-
-               // Just slides, no notes
-               text = extractor.getText(true, false, false);
-               String slideText =
-               "Lorem ipsum dolor sit amet\n" +
-            "Nunc at risus vel erat tempus posuere. Aenean non ante.\n" +
-            "\n" +
-            "Lorem ipsum dolor sit amet\n" +
-            "Lorem\n" +
-            "ipsum\n" +
-            "dolor\n" +
-            "sit\n" +
-            "amet\n" +
-            "\n";
-               assertEquals(slideText, text);
-
-               // Just notes, no slides
-               text = extractor.getText(false, true);
-               assertEquals("\n\n1\n\n\n2\n", text);
-
-               // Both
-               text = extractor.getText(true, true, false);
-               String bothText =
-               "Lorem ipsum dolor sit amet\n" +
-            "Nunc at risus vel erat tempus posuere. Aenean non ante.\n" +
-            "\n\n\n1\n" +
-            "Lorem ipsum dolor sit amet\n" +
-            "Lorem\n" +
-            "ipsum\n" +
-            "dolor\n" +
-            "sit\n" +
-            "amet\n" +
-            "\n\n\n2\n";
-        assertEquals(bothText, text);
-
-               // With Slides and Master Text
-        text = extractor.getText(true, false, true);
-        String smText =
-            "Lorem ipsum dolor sit amet\n" +
-            "Nunc at risus vel erat tempus posuere. Aenean non ante.\n" +
-            "\n" +
-            "Lorem ipsum dolor sit amet\n" +
-            "Lorem\n" +
-            "ipsum\n" +
-            "dolor\n" +
-            "sit\n" +
-            "amet\n" +
-            "\n";
-        assertEquals(smText, text);
-
-               // With Slides, Notes and Master Text
-        text = extractor.getText(true, true, true);
-        String snmText =
-            "Lorem ipsum dolor sit amet\n" +
-            "Nunc at risus vel erat tempus posuere. Aenean non ante.\n" +
-            "\n\n\n1\n" +
-            "Lorem ipsum dolor sit amet\n" +
-            "Lorem\n" +
-            "ipsum\n" +
-            "dolor\n" +
-            "sit\n" +
-            "amet\n" +
-            "\n\n\n2\n";
-        assertEquals(snmText, text);
-
-               // Via set defaults
-               extractor.setSlidesByDefault(false);
-               extractor.setNotesByDefault(true);
-               text = extractor.getText();
-               assertEquals("\n\n1\n\n\n2\n", text);
+    public void testGetSimpleText() throws IOException {
+        try (XMLSlideShow xmlA = openPPTX("sample.pptx");
+             SlideShowExtractor extractor = new SlideShowExtractor(xmlA)) {
 
-               extractor.close();
-               xmlA.close();
+            extractor.getText();
+
+            String text = extractor.getText();
+            assertTrue(text.length() > 0);
+
+            // Check Basics
+            assertStartsWith(text, "Lorem ipsum dolor sit amet\n");
+            assertContains(text, "amet\n\n");
+
+            // Our placeholder master text
+            // This shouldn't show up in the output
+            // String masterText =
+            //     "Click to edit Master title style\n" +
+            //     "Click to edit Master subtitle style\n" +
+            //     "\n\n\n\n\n\n" +
+            //     "Click to edit Master title style\n" +
+            //     "Click to edit Master text styles\n" +
+            //     "Second level\n" +
+            //     "Third level\n" +
+            //     "Fourth level\n" +
+            //     "Fifth level\n";
+
+            // Just slides, no notes
+            extractor.setSlidesByDefault(true);
+            extractor.setNotesByDefault(false);
+            extractor.setMasterByDefault(false);
+            text = extractor.getText();
+            String slideText =
+                "Lorem ipsum dolor sit amet\n" +
+                "Nunc at risus vel erat tempus posuere. Aenean non ante.\n" +
+                "\n" +
+                "Lorem ipsum dolor sit amet\n" +
+                "Lorem\n" +
+                "ipsum\n" +
+                "dolor\n" +
+                "sit\n" +
+                "amet\n" +
+                "\n";
+            assertEquals(slideText, text);
+
+            // Just notes, no slides
+            extractor.setSlidesByDefault(false);
+            extractor.setNotesByDefault(true);
+            text = extractor.getText();
+            assertEquals("\n\n1\n\n\n2\n", text);
+
+            // Both
+            extractor.setSlidesByDefault(true);
+            extractor.setNotesByDefault(true);
+            text = extractor.getText();
+            String bothText =
+                "Lorem ipsum dolor sit amet\n" +
+                "Nunc at risus vel erat tempus posuere. Aenean non ante.\n" +
+                "\n\n\n1\n" +
+                "Lorem ipsum dolor sit amet\n" +
+                "Lorem\n" +
+                "ipsum\n" +
+                "dolor\n" +
+                "sit\n" +
+                "amet\n" +
+                "\n\n\n2\n";
+            assertEquals(bothText, text);
+
+            // With Slides and Master Text
+            extractor.setSlidesByDefault(true);
+            extractor.setNotesByDefault(false);
+            extractor.setMasterByDefault(true);
+            text = extractor.getText();
+            String smText =
+                "Lorem ipsum dolor sit amet\n" +
+                "Nunc at risus vel erat tempus posuere. Aenean non ante.\n" +
+                "\n" +
+                "Lorem ipsum dolor sit amet\n" +
+                "Lorem\n" +
+                "ipsum\n" +
+                "dolor\n" +
+                "sit\n" +
+                "amet\n" +
+                "\n";
+            assertEquals(smText, text);
+
+            // With Slides, Notes and Master Text
+            extractor.setSlidesByDefault(true);
+            extractor.setNotesByDefault(true);
+            extractor.setMasterByDefault(true);
+            text = extractor.getText();
+            String snmText =
+                "Lorem ipsum dolor sit amet\n" +
+                "Nunc at risus vel erat tempus posuere. Aenean non ante.\n" +
+                "\n\n\n1\n" +
+                "Lorem ipsum dolor sit amet\n" +
+                "Lorem\n" +
+                "ipsum\n" +
+                "dolor\n" +
+                "sit\n" +
+                "amet\n" +
+                "\n\n\n2\n";
+            assertEquals(snmText, text);
+
+            // Via set defaults
+            extractor.setSlidesByDefault(false);
+            extractor.setNotesByDefault(true);
+            text = extractor.getText();
+            assertEquals("\n\n1\n\n\n2\n", text);
+        }
        }
 
+    @Test
     public void testGetComments() throws IOException {
-        XMLSlideShow xml = openPPTX("45545_Comment.pptx");
-        XSLFPowerPointExtractor extractor = new XSLFPowerPointExtractor(xml);
-
-        String text = extractor.getText();
-        assertTrue(text.length() > 0);
+        try (XMLSlideShow xml = openPPTX("45545_Comment.pptx");
+            SlideShowExtractor extractor = new SlideShowExtractor(xml)) {
+            extractor.setCommentsByDefault(true);
 
-        // Check comments are there
-        assertContains(text, "testdoc");
-        assertContains(text, "test phrase");
+            String text = extractor.getText();
+            assertTrue(text.length() > 0);
 
-        // Check the authors came through too
-        assertContains(text, "XPVMWARE01");
+            // Check comments are there
+            assertContains(text, "testdoc");
+            assertContains(text, "test phrase");
 
-        extractor.close();
-        xml.close();
+            // Check the authors came through too
+            assertContains(text, "XPVMWARE01");
+        }
     }
 
+    @Test
+    @Ignore("currently slidelayouts aren't yet supported")
        public void testGetMasterText() throws Exception {
-           XMLSlideShow xml = openPPTX("WithMaster.pptx");
-           XSLFPowerPointExtractor extractor = new 
XSLFPowerPointExtractor(xml);
-           extractor.setSlidesByDefault(true);
-           extractor.setNotesByDefault(false);
-           extractor.setMasterByDefault(true);
-
-           String text = extractor.getText();
-           assertTrue(text.length() > 0);
-
-           // Check master text is there
-           assertContains(text, "Footer from the master slide");
-
-           // Theme text shouldn't show up
-           // String themeText =
-        //     "Theme Master Title\n" +
-        //     "Theme Master first level\n" +
-        //     "And the 2nd level\n" +
-        //     "Our 3rd level goes here\n" +
-        //     "And onto the 4th, such fun....\n" +
-        //     "Finally is the Fifth level\n";
-
-           // Check the whole text
-           String wholeText =
-            "First page title\n" +
-            "First page subtitle\n" +
-            "This is the Master Title\n" +
-            "This text comes from the Master Slide\n" +
-            "\n" +
-            // TODO Detect we didn't have a title, and include the master one
-            "2nd page subtitle\n" +
-            "Footer from the master slide\n" +
-            "This is the Master Title\n" +
-            "This text comes from the Master Slide\n";
-           assertEquals(wholeText, text);
+           try (XMLSlideShow xml = openPPTX("WithMaster.pptx");
+            SlideShowExtractor extractor = new SlideShowExtractor(xml)) {
+            extractor.setSlidesByDefault(true);
+            extractor.setNotesByDefault(false);
+            extractor.setMasterByDefault(true);
 
-               extractor.close();
-               xml.close();
+
+            String text = extractor.getText();
+            assertTrue(text.length() > 0);
+
+            // Check master text is there
+            assertContains(text, "Footer from the master slide");
+
+            // Theme text shouldn't show up
+            // String themeText =
+            //     "Theme Master Title\n" +
+            //     "Theme Master first level\n" +
+            //     "And the 2nd level\n" +
+            //     "Our 3rd level goes here\n" +
+            //     "And onto the 4th, such fun....\n" +
+            //     "Finally is the Fifth level\n";
+
+            // Check the whole text
+            String wholeText =
+                "First page title\n" +
+                "First page subtitle\n" +
+                "This is the Master Title\n" +
+                "This text comes from the Master Slide\n" +
+                "\n" +
+                // TODO Detect we didn't have a title, and include the master 
one
+                "2nd page subtitle\n" +
+                "Footer from the master slide\n" +
+                "This is the Master Title\n" +
+                "This text comes from the Master Slide\n";
+            assertEquals(wholeText, text);
+        }
        }
 
        @Test
        public void testTable() throws Exception {
-        XMLSlideShow xml = openPPTX("present1.pptx");
-        XSLFPowerPointExtractor extractor = new XSLFPowerPointExtractor(xml);
+        try (XMLSlideShow xml = openPPTX("present1.pptx");
+            SlideShowExtractor extractor = new SlideShowExtractor(xml)) {
 
-        String text = extractor.getText();
-        assertTrue(text.length() > 0);
-
-        // Check comments are there
-        assertContains(text, "TEST");
+            String text = extractor.getText();
+            assertTrue(text.length() > 0);
 
-               extractor.close();
-               xml.close();
+            // Check comments are there
+            assertContains(text, "TEST");
+        }
     }
 
     /**
@@ -241,74 +243,76 @@ public class TestXSLFPowerPointExtractor
         };
         for(String extension : extensions) {
             String filename = "testPPT." + extension;
-            XMLSlideShow xml = openPPTX(filename);
-            XSLFPowerPointExtractor extractor = new 
XSLFPowerPointExtractor(xml);
 
-            String text = extractor.getText();
-            if (extension.equals("thmx")) {
-                // Theme file doesn't have any textual content
-                assertEquals(filename, 0, text.length());
-                continue;
-            }
-
-         assertTrue(filename, text.length() > 0);
-         assertContains(filename, text, "Attachment Test");
-         assertContains(filename, text, "This is a test file data with the 
same content");
-         assertContains(filename, text, "content parsing");
-         assertContains(filename, text, "Different words to test against");
-         assertContains(filename, text, "Mystery");
+            try (XMLSlideShow xml = openPPTX(filename);
+                SlideShowExtractor extractor = new SlideShowExtractor(xml)) {
 
-                extractor.close();
-                xml.close();
+                String text = extractor.getText();
+                if (extension.equals("thmx")) {
+                    // Theme file doesn't have any textual content
+                    assertEquals(filename, 0, text.length());
+                    continue;
+                }
+
+                assertTrue(filename, text.length() > 0);
+                assertContains(filename, text, "Attachment Test");
+                assertContains(filename, text, "This is a test file data with 
the same content");
+                assertContains(filename, text, "content parsing");
+                assertContains(filename, text, "Different words to test 
against");
+                assertContains(filename, text, "Mystery");
+            }
        }
     }
 
     @Test
-    public void test45541() throws Exception {
+    public void test45541() throws IOException, OpenXML4JException, 
XmlException {
         // extract text from a powerpoint that has a header in the 
notes-element
-        POITextExtractor extr = ExtractorFactory.createExtractor(
-            slTests.getFile("45541_Header.pptx"));
-        String text = extr.getText();
-        assertNotNull(text);
-        assertFalse("Had: " + text, text.contains("testdoc"));
-
-        text = ((XSLFPowerPointExtractor)extr).getText(false, true);
-        assertContains(text, "testdoc");
-        extr.close();
-       assertNotNull(text);
+        final File headerFile = slTests.getFile("45541_Header.pptx");
+        try (final SlideShowExtractor extr = 
ExtractorFactory.createExtractor(headerFile)) {
+            String text = extr.getText();
+            assertNotNull(text);
+            assertFalse("Had: " + text, text.contains("testdoc"));
+
+            extr.setSlidesByDefault(false);
+            extr.setNotesByDefault(true);
+
+            text = extr.getText();
+            assertContains(text, "testdoc");
+            assertNotNull(text);
+        }
 
         // extract text from a powerpoint that has a footer in the master-slide
-        extr = ExtractorFactory.createExtractor(
-            slTests.getFile("45541_Footer.pptx"));
-        text = extr.getText();
-        assertNotContained(text, "testdoc");
-
-        text = ((XSLFPowerPointExtractor)extr).getText(false, true);
-        assertNotContained(text, "testdoc");
-
-        text = ((XSLFPowerPointExtractor)extr).getText(false, false, true);
-        assertNotContained(text, "testdoc");
-
-        extr.close();
+        final File footerFile = slTests.getFile("45541_Footer.pptx");
+        try (SlideShowExtractor extr = 
ExtractorFactory.createExtractor(footerFile)) {
+            String text = extr.getText();
+            assertNotContained(text, "testdoc");
+
+            extr.setSlidesByDefault(false);
+            extr.setNotesByDefault(true);
+            text = extr.getText();
+            assertNotContained(text, "testdoc");
+
+            extr.setSlidesByDefault(false);
+            extr.setNotesByDefault(false);
+            extr.setMasterByDefault(true);
+            text = extr.getText();
+            assertNotContained(text, "testdoc");
+        }
     }
 
 
     @Test
     public void bug54570() throws IOException {
-        XMLSlideShow xml = openPPTX("bug54570.pptx");
-        XSLFPowerPointExtractor extractor = new XSLFPowerPointExtractor(xml);
-        String text = extractor.getText();
-        assertNotNull(text);
-        extractor.close();
-        xml.close();
+        try (XMLSlideShow xml = openPPTX("bug54570.pptx");
+            SlideShowExtractor extractor = new SlideShowExtractor(xml)) {
+            String text = extractor.getText();
+            assertNotNull(text);
+        }
     }
 
     private XMLSlideShow openPPTX(String file) throws IOException {
-        InputStream is = slTests.openResourceAsStream(file);
-        try {
+        try (InputStream is = slTests.openResourceAsStream(file)) {
             return new XMLSlideShow(is);
-        } finally {
-            is.close();
         }
     }
 }

Modified: 
poi/trunk/src/scratchpad/src/org/apache/poi/extractor/OLE2ScratchpadExtractorFactory.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/extractor/OLE2ScratchpadExtractorFactory.java?rev=1829653&r1=1829652&r2=1829653&view=diff
==============================================================================
--- 
poi/trunk/src/scratchpad/src/org/apache/poi/extractor/OLE2ScratchpadExtractorFactory.java
 (original)
+++ 
poi/trunk/src/scratchpad/src/org/apache/poi/extractor/OLE2ScratchpadExtractorFactory.java
 Fri Apr 20 12:52:59 2018
@@ -38,6 +38,8 @@ import org.apache.poi.hwpf.extractor.Wor
 import org.apache.poi.poifs.filesystem.DirectoryEntry;
 import org.apache.poi.poifs.filesystem.DirectoryNode;
 import org.apache.poi.poifs.filesystem.Entry;
+import org.apache.poi.sl.extractor.SlideShowExtractor;
+import org.apache.poi.sl.usermodel.SlideShowFactory;
 
 /**
  * Scratchpad-specific logic for {@link OLE2ExtractorFactory} and
@@ -65,7 +67,7 @@ public class OLE2ScratchpadExtractorFact
         }
 
         if (poifsDir.hasEntry(HSLFSlideShow.POWERPOINT_DOCUMENT)) {
-            return new PowerPointExtractor(poifsDir);
+            return new SlideShowExtractor(SlideShowFactory.create(poifsDir));
         }
 
         if (poifsDir.hasEntry("VisioDocument")) {

Modified: 
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java?rev=1829653&r1=1829652&r2=1829653&view=diff
==============================================================================
--- 
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java
 (original)
+++ 
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java
 Fri Apr 20 12:52:59 2018
@@ -34,6 +34,7 @@ import org.apache.poi.poifs.filesystem.N
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.poi.sl.extractor.SlideShowExtractor;
 import org.apache.poi.sl.usermodel.SlideShowFactory;
+import org.apache.poi.util.Removal;
 
 /**
  * This class can be used to extract text from a PowerPoint file. Can 
optionally
@@ -43,6 +44,7 @@ import org.apache.poi.sl.usermodel.Slide
  */
 @SuppressWarnings("WeakerAccess")
 @Deprecated
+@Removal(version="5.0.0")
 public final class PowerPointExtractor extends POIOLE2TextExtractor {
        private final SlideShowExtractor<HSLFShape,HSLFTextParagraph> delegate;
 

Modified: 
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShow.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShow.java?rev=1829653&r1=1829652&r2=1829653&view=diff
==============================================================================
--- 
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShow.java 
(original)
+++ 
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShow.java 
Fri Apr 20 12:52:59 2018
@@ -1139,4 +1139,9 @@ public final class HSLFSlideShow impleme
     public void close() throws IOException {
         _hslfSlideShow.close();
     }
+
+       @Override
+       public Object getPersistDocument() {
+               return getSlideShowImpl();
+       }
 }

Modified: 
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShowFactory.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShowFactory.java?rev=1829653&r1=1829652&r2=1829653&view=diff
==============================================================================
--- 
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShowFactory.java
 (original)
+++ 
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShowFactory.java
 Fri Apr 20 12:52:59 2018
@@ -19,8 +19,8 @@ package org.apache.poi.hslf.usermodel;
 
 import java.io.IOException;
 
+import org.apache.poi.poifs.filesystem.DirectoryNode;
 import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
-import org.apache.poi.sl.usermodel.SlideShow;
 import org.apache.poi.sl.usermodel.SlideShowFactory;
 import org.apache.poi.util.Internal;
 
@@ -31,12 +31,20 @@ import org.apache.poi.util.Internal;
 @Internal
 public class HSLFSlideShowFactory extends SlideShowFactory {
     /**
-     * Creates a HSLFSlideShow from the given NPOIFSFileSystem
-     * <p>Note that in order to properly release resources the
-     *  SlideShow should be closed after use.
+     * Creates a HSLFSlideShow from the given NPOIFSFileSystem<p>
+     * Note that in order to properly release resources the
+     * SlideShow should be closed after use.
      */
-    public static SlideShow<?,?> createSlideShow(NPOIFSFileSystem fs) throws 
IOException {
+    public static HSLFSlideShow createSlideShow(final NPOIFSFileSystem fs) 
throws IOException {
         return new HSLFSlideShow(fs);
     }
 
+    /**
+     * Creates a HSLFSlideShow from the given DirectoryNode<p>
+     * Note that in order to properly release resources the
+     * SlideShow should be closed after use.
+     */
+    public static HSLFSlideShow createSlideShow(final DirectoryNode root) 
throws IOException {
+        return new HSLFSlideShow(root);
+    }
 }

Modified: 
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShowImpl.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShowImpl.java?rev=1829653&r1=1829652&r2=1829653&view=diff
==============================================================================
--- 
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShowImpl.java
 (original)
+++ 
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShowImpl.java
 Fri Apr 20 12:52:59 2018
@@ -846,9 +846,13 @@ public final class HSLFSlideShowImpl ext
 
     @Override
     public void close() throws IOException {
-        NPOIFSFileSystem fs = getDirectory().getFileSystem();
-        if (fs != null) {
-            fs.close();
+        // only close the filesystem, if we are based on the root node.
+        // embedded documents/slideshows shouldn't close the parent container
+        if (getDirectory().getParent() == null) {
+            NPOIFSFileSystem fs = getDirectory().getFileSystem();
+            if (fs != null) {
+                fs.close();
+            }
         }
     }
 

Modified: 
poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/extractor/TestExtractor.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/extractor/TestExtractor.java?rev=1829653&r1=1829652&r2=1829653&view=diff
==============================================================================
--- 
poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/extractor/TestExtractor.java
 (original)
+++ 
poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/extractor/TestExtractor.java
 Fri Apr 20 12:52:59 2018
@@ -42,6 +42,10 @@ import org.apache.poi.poifs.filesystem.D
 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.sl.extractor.SlideShowExtractor;
+import org.apache.poi.sl.usermodel.ObjectShape;
+import org.apache.poi.sl.usermodel.SlideShow;
+import org.apache.poi.sl.usermodel.SlideShowFactory;
 import org.apache.poi.util.IOUtils;
 import org.junit.Test;
 
@@ -76,43 +80,46 @@ public final class TestExtractor {
 //        ppe.close();
 //    }
 
-    private PowerPointExtractor openExtractor(String fileName) throws 
IOException {
-        InputStream is = slTests.openResourceAsStream(fileName);
-        try {
-            return new PowerPointExtractor(is);
-        } finally {
-            is.close();
+    private SlideShowExtractor<?,?> openExtractor(String fileName) throws 
IOException {
+        try (InputStream is = slTests.openResourceAsStream(fileName)) {
+            return new SlideShowExtractor(SlideShowFactory.create(is));
         }
     }
     
     @Test
     public void testReadSheetText() throws IOException {
         // Basic 2 page example
-        PowerPointExtractor ppe = openExtractor("basic_test_ppt_file.ppt");
-        assertEquals(expectText, ppe.getText());
-        ppe.close();
+        try (SlideShowExtractor ppe = 
openExtractor("basic_test_ppt_file.ppt")) {
+            assertEquals(expectText, ppe.getText());
+        }
 
         // 1 page example with text boxes
-        PowerPointExtractor ppe2 = openExtractor("with_textbox.ppt");
-        assertEquals(expectText2, ppe2.getText());
-        ppe2.close();
+        try (SlideShowExtractor ppe = openExtractor("with_textbox.ppt")) {
+            assertEquals(expectText2, ppe.getText());
+        }
     }
 
     @Test
     public void testReadNoteText() throws IOException {
         // Basic 2 page example
-        PowerPointExtractor ppe = openExtractor("basic_test_ppt_file.ppt");
-        String notesText = ppe.getNotes();
-        String expText = "\nThese are the notes for page 1\n\nThese are the 
notes on page two, again lacking formatting\n";
-        assertEquals(expText, notesText);
-        ppe.close();
+        try (SlideShowExtractor ppe = 
openExtractor("basic_test_ppt_file.ppt")) {
+            ppe.setNotesByDefault(true);
+            ppe.setSlidesByDefault(false);
+            ppe.setMasterByDefault(false);
+            String notesText = ppe.getText();
+            String expText = "\nThese are the notes for page 1\n\nThese are 
the notes on page two, again lacking formatting\n";
+            assertEquals(expText, notesText);
+        }
 
         // Other one doesn't have notes
-        PowerPointExtractor ppe2 = openExtractor("with_textbox.ppt");
-        notesText = ppe2.getNotes();
-        expText = "";
-        assertEquals(expText, notesText);
-        ppe2.close();
+        try (SlideShowExtractor ppe = openExtractor("with_textbox.ppt")) {
+            ppe.setNotesByDefault(true);
+            ppe.setSlidesByDefault(false);
+            ppe.setMasterByDefault(false);
+            String notesText = ppe.getText();
+            String expText = "";
+            assertEquals(expText, notesText);
+        }
     }
 
     @Test
@@ -126,19 +133,19 @@ public final class TestExtractor {
                 "\nThese are the notes on page two, again lacking formatting\n"
         };
 
-        PowerPointExtractor ppe = openExtractor("basic_test_ppt_file.ppt");
-        ppe.setSlidesByDefault(true);
-        ppe.setNotesByDefault(false);
-        assertEquals(slText[0] + slText[1], ppe.getText());
-
-        ppe.setSlidesByDefault(false);
-        ppe.setNotesByDefault(true);
-        assertEquals(ntText[0] + ntText[1], ppe.getText());
-
-        ppe.setSlidesByDefault(true);
-        ppe.setNotesByDefault(true);
-        assertEquals(slText[0] + ntText[0] + slText[1] + ntText[1], 
ppe.getText());
-        ppe.close();
+        try (SlideShowExtractor ppe = 
openExtractor("basic_test_ppt_file.ppt")) {
+            ppe.setSlidesByDefault(true);
+            ppe.setNotesByDefault(false);
+            assertEquals(slText[0] + slText[1], ppe.getText());
+
+            ppe.setSlidesByDefault(false);
+            ppe.setNotesByDefault(true);
+            assertEquals(ntText[0] + ntText[1], ppe.getText());
+
+            ppe.setSlidesByDefault(true);
+            ppe.setNotesByDefault(true);
+            assertEquals(slText[0] + ntText[0] + slText[1] + ntText[1], 
ppe.getText());
+        }
     }
 
     /**
@@ -149,45 +156,46 @@ public final class TestExtractor {
      */
     @Test
     public void testMissingCoreRecords() throws IOException {
-        PowerPointExtractor ppe = openExtractor("missing_core_records.ppt");
-
-        String text = ppe.getText(true, false);
-        String nText = ppe.getNotes();
+        try (SlideShowExtractor<?,?> ppe = 
openExtractor("missing_core_records.ppt")) {
+            ppe.setSlidesByDefault(true);
+            ppe.setNotesByDefault(false);
+            String text = ppe.getText();
+            ppe.setSlidesByDefault(false);
+            ppe.setNotesByDefault(true);
+            String nText = ppe.getText();
 
-        assertNotNull(text);
-        assertNotNull(nText);
+            assertNotNull(text);
+            assertNotNull(nText);
 
-        // Notes record were corrupt, so don't expect any
-        assertEquals(nText.length(), 0);
+            // Notes record were corrupt, so don't expect any
+            assertEquals(nText.length(), 0);
 
-        // Slide records were fine
-        assertContains(text, "Using Disease Surveillance and Response");
-        
-        ppe.close();
+            // Slide records were fine
+            assertContains(text, "Using Disease Surveillance and Response");
+        }
     }
 
     @Test
     public void testExtractFromEmbeded() throws IOException {
-        InputStream is = 
POIDataSamples.getSpreadSheetInstance().openResourceAsStream("excel_with_embeded.xls");
-        POIFSFileSystem fs = new POIFSFileSystem(is);
-        DirectoryNode root = fs.getRoot();
-        PowerPointExtractor ppe1 = assertExtractFromEmbedded(root, 
"MBD0000A3B6", "Sample PowerPoint file\nThis is the 1st file\nNot much too 
it\n");
-        PowerPointExtractor ppe2 = assertExtractFromEmbedded(root, 
"MBD0000A3B3", "Sample PowerPoint file\nThis is the 2nd file\nNot much too it 
either\n");
-        ppe2.close();
-        ppe1.close();
-        fs.close();
-    }
-    
-    private PowerPointExtractor assertExtractFromEmbedded(DirectoryNode root, 
String entryName, String expected)
-    throws IOException {
-        DirectoryNode dir = (DirectoryNode)root.getEntry(entryName);
-        assertTrue(dir.hasEntry(HSLFSlideShow.POWERPOINT_DOCUMENT));
-
-        // Check the first file
-        HSLFSlideShowImpl ppt = new HSLFSlideShowImpl(dir);
-        PowerPointExtractor ppe = new PowerPointExtractor(ppt);
-        assertEquals(expected, ppe.getText(true, false));
-        return ppe;
+        try (final InputStream is = 
POIDataSamples.getSpreadSheetInstance().openResourceAsStream("excel_with_embeded.xls");
+            final POIFSFileSystem fs = new POIFSFileSystem(is)) {
+            final DirectoryNode root = fs.getRoot();
+
+            final String[] TEST_SET = {
+                "MBD0000A3B6", "Sample PowerPoint file\nThis is the 1st 
file\nNot much too it\n",
+                "MBD0000A3B3", "Sample PowerPoint file\nThis is the 2nd 
file\nNot much too it either\n"
+            };
+
+            for (int i=0; i<TEST_SET.length; i+=2) {
+                DirectoryNode dir = (DirectoryNode)root.getEntry(TEST_SET[i]);
+                assertTrue(dir.hasEntry(HSLFSlideShow.POWERPOINT_DOCUMENT));
+
+                try (final SlideShow<?,?> ppt = SlideShowFactory.create(dir);
+                     final SlideShowExtractor<?,?> ppe = new 
SlideShowExtractor(ppt)) {
+                    assertEquals(TEST_SET[i+1], ppe.getText());
+                }
+            }
+        }
     }
 
     /**
@@ -195,32 +203,32 @@ public final class TestExtractor {
      */
     @Test
     public void testExtractFromOwnEmbeded() throws IOException {
-        PowerPointExtractor ppe = openExtractor("ppt_with_embeded.ppt");
-        List<HSLFObjectShape> shapes = ppe.getOLEShapes();
-        assertEquals("Expected 6 ole shapes", 6, shapes.size());
-        int num_ppt = 0, num_doc = 0, num_xls = 0;
-        for (HSLFObjectShape ole : shapes) {
-            String name = ole.getInstanceName();
-            InputStream data = ole.getObjectData().getInputStream();
-            if ("Worksheet".equals(name)) {
-                HSSFWorkbook wb = new HSSFWorkbook(data);
-                num_xls++;
-                wb.close();
-            } else if ("Document".equals(name)) {
-                HWPFDocument doc = new HWPFDocument(data);
-                num_doc++;
-                doc.close();
-            } else if ("Presentation".equals(name)) {
-                num_ppt++;
-                HSLFSlideShow ppt = new HSLFSlideShow(data);
-                ppt.close();
+        try (SlideShowExtractor<?,?> ppe = 
openExtractor("ppt_with_embeded.ppt")) {
+            List<? extends ObjectShape> shapes = ppe.getOLEShapes();
+            assertEquals("Expected 6 ole shapes", 6, shapes.size());
+            int num_ppt = 0, num_doc = 0, num_xls = 0;
+            for (ObjectShape ole : shapes) {
+                String name = ((HSLFObjectShape)ole).getInstanceName();
+                InputStream data = ole.getObjectData().getInputStream();
+                if ("Worksheet".equals(name)) {
+                    HSSFWorkbook wb = new HSSFWorkbook(data);
+                    num_xls++;
+                    wb.close();
+                } else if ("Document".equals(name)) {
+                    HWPFDocument doc = new HWPFDocument(data);
+                    num_doc++;
+                    doc.close();
+                } else if ("Presentation".equals(name)) {
+                    num_ppt++;
+                    HSLFSlideShow ppt = new HSLFSlideShow(data);
+                    ppt.close();
+                }
+                data.close();
             }
-            data.close();
+            assertEquals("Expected 2 embedded Word Documents", 2, num_doc);
+            assertEquals("Expected 2 embedded Excel Spreadsheets", 2, num_xls);
+            assertEquals("Expected 2 embedded PowerPoint Presentations", 2, 
num_ppt);
         }
-        assertEquals("Expected 2 embedded Word Documents", 2, num_doc);
-        assertEquals("Expected 2 embedded Excel Spreadsheets", 2, num_xls);
-        assertEquals("Expected 2 embedded PowerPoint Presentations", 2, 
num_ppt);
-        ppe.close();
     }
 
     /**
@@ -228,11 +236,11 @@ public final class TestExtractor {
      */
     @Test
     public void test52991() throws IOException {
-        PowerPointExtractor ppe = openExtractor("badzip.ppt");
-        for (HSLFObjectShape shape : ppe.getOLEShapes()) {
-            IOUtils.copy(shape.getObjectData().getInputStream(), new 
ByteArrayOutputStream());
+        try (SlideShowExtractor<?,?> ppe = openExtractor("badzip.ppt")) {
+            for (ObjectShape shape : ppe.getOLEShapes()) {
+                IOUtils.copy(shape.getObjectData().getInputStream(), new 
ByteArrayOutputStream());
+            }
         }
-        ppe.close();
     }
 
     /**
@@ -240,27 +248,27 @@ public final class TestExtractor {
      */
     @Test
     public void testWithComments() throws IOException {
-        PowerPointExtractor ppe1 = openExtractor("WithComments.ppt");
-        String text = ppe1.getText();
-        assertFalse("Comments not in by default", text.contains("This is a 
test comment"));
-
-        ppe1.setCommentsByDefault(true);
-
-        text = ppe1.getText();
-        assertContains(text, "This is a test comment");
-        ppe1.close();
+        try (final SlideShowExtractor ppe = openExtractor("WithComments.ppt")) 
{
+            String text = ppe.getText();
+            assertFalse("Comments not in by default", text.contains("This is a 
test comment"));
+
+            ppe.setCommentsByDefault(true);
+
+            text = ppe.getText();
+            assertContains(text, "This is a test comment");
+        }
 
 
         // And another file
-        PowerPointExtractor ppe2 = openExtractor("45543.ppt");
-        text = ppe2.getText();
-        assertFalse("Comments not in by default", text.contains("testdoc"));
-
-        ppe2.setCommentsByDefault(true);
-
-        text = ppe2.getText();
-        assertContains(text, "testdoc");
-        ppe2.close();
+        try (SlideShowExtractor ppe = openExtractor("45543.ppt")) {
+            String text = ppe.getText();
+            assertFalse("Comments not in by default", 
text.contains("testdoc"));
+
+            ppe.setCommentsByDefault(true);
+
+            text = ppe.getText();
+            assertContains(text, "testdoc");
+        }
     }
 
     /**
@@ -268,48 +276,37 @@ public final class TestExtractor {
      */
     @Test
     public void testHeaderFooter() throws IOException {
-        String text;
-
         // With a header on the notes
-        InputStream is1 = slTests.openResourceAsStream("45537_Header.ppt");
-        HSLFSlideShow ppt1 = new HSLFSlideShow(is1);
-        is1.close();
-        assertNotNull(ppt1.getNotesHeadersFooters());
-        assertEquals("testdoc test phrase", 
ppt1.getNotesHeadersFooters().getHeaderText());
-
-        PowerPointExtractor ppe1 = new 
PowerPointExtractor(ppt1.getSlideShowImpl());
-
-        text = ppe1.getText();
-        assertFalse("Header shouldn't be there by default\n" + text, 
text.contains("testdoc"));
-        assertFalse("Header shouldn't be there by default\n" + text, 
text.contains("test phrase"));
-
-        ppe1.setNotesByDefault(true);
-        text = ppe1.getText();
-        assertContains(text, "testdoc");
-        assertContains(text, "test phrase");
-        ppe1.close();
-        ppt1.close();
+        try (InputStream is = slTests.openResourceAsStream("45537_Header.ppt");
+            HSLFSlideShow ppt = new HSLFSlideShow(is)) {
+
+            assertNotNull(ppt.getNotesHeadersFooters());
+            assertEquals("testdoc test phrase", 
ppt.getNotesHeadersFooters().getHeaderText());
+
+            testHeaderFooterInner(ppt);
+        }
 
         // And with a footer, also on notes
-        InputStream is2 = slTests.openResourceAsStream("45537_Footer.ppt");
-        HSLFSlideShow ppt2 = new HSLFSlideShow(is2);
-        is2.close();
-        
-        assertNotNull(ppt2.getNotesHeadersFooters());
-        assertEquals("testdoc test phrase", 
ppt2.getNotesHeadersFooters().getFooterText());
-        ppt2.close();
-
-        PowerPointExtractor ppe2 = openExtractor("45537_Footer.ppt");
-
-        text = ppe2.getText();
-        assertFalse("Header shouldn't be there by default\n" + text, 
text.contains("testdoc"));
-        assertFalse("Header shouldn't be there by default\n" + text, 
text.contains("test phrase"));
-
-        ppe2.setNotesByDefault(true);
-        text = ppe2.getText();
-        assertContains(text, "testdoc");
-        assertContains(text, "test phrase");
-        ppe2.close();
+        try (final InputStream is = 
slTests.openResourceAsStream("45537_Footer.ppt");
+            final HSLFSlideShow ppt = new HSLFSlideShow(is)) {
+            assertNotNull(ppt.getNotesHeadersFooters());
+            assertEquals("testdoc test phrase", 
ppt.getNotesHeadersFooters().getFooterText());
+
+            testHeaderFooterInner(ppt);
+        }
+    }
+
+    private void testHeaderFooterInner(final HSLFSlideShow ppt) throws 
IOException {
+        try (final SlideShowExtractor<?,?> ppe = new SlideShowExtractor(ppt)) {
+            String text = ppe.getText();
+            assertFalse("Header shouldn't be there by default\n" + text, 
text.contains("testdoc"));
+            assertFalse("Header shouldn't be there by default\n" + text, 
text.contains("test phrase"));
+
+            ppe.setNotesByDefault(true);
+            text = ppe.getText();
+            assertContains(text, "testdoc");
+            assertContains(text, "test phrase");
+        }
     }
 
     @SuppressWarnings("unused")
@@ -318,41 +315,40 @@ public final class TestExtractor {
         String masterTitleText = "This is the Master Title";
         String masterRandomText = "This text comes from the Master Slide";
         String masterFooterText = "Footer from the master slide";
-        PowerPointExtractor ppe = openExtractor("WithMaster.ppt");
-        ppe.setMasterByDefault(true);
+        try (final SlideShowExtractor ppe = openExtractor("WithMaster.ppt")) {
+            ppe.setMasterByDefault(true);
 
-        String text = ppe.getText();
-        assertContains(text, masterRandomText);
-        assertContains(text, masterFooterText);
-        ppe.close();
+            String text = ppe.getText();
+            assertContains(text, masterRandomText);
+            assertContains(text, masterFooterText);
+        }
     }
 
     @Test
     public void testMasterText() throws IOException {
-        PowerPointExtractor ppe1 = openExtractor("master_text.ppt");
+        try (final SlideShowExtractor ppe = openExtractor("master_text.ppt")) {
+            // Initially not there
+            String text = ppe.getText();
+            assertFalse(text.contains("Text that I added to the master 
slide"));
+
+            // Enable, shows up
+            ppe.setMasterByDefault(true);
+            text = ppe.getText();
+            assertContains(text, "Text that I added to the master slide");
 
-        // Initially not there
-        String text = ppe1.getText();
-        assertFalse(text.contains("Text that I added to the master slide"));
-
-        // Enable, shows up
-        ppe1.setMasterByDefault(true);
-        text = ppe1.getText();
-        assertContains(text, "Text that I added to the master slide");
-
-        // Make sure placeholder text does not come out
-        assertNotContained(text, "Click to edit Master");
-        ppe1.close();
+            // Make sure placeholder text does not come out
+            assertNotContained(text, "Click to edit Master");
+        }
 
         // Now with another file only containing master text
         // Will always show up
-        PowerPointExtractor ppe2 = openExtractor("WithMaster.ppt");
-        String masterText = "Footer from the master slide";
+        try (final SlideShowExtractor ppe = openExtractor("WithMaster.ppt")) {
+            String masterText = "Footer from the master slide";
 
-        text = ppe2.getText();
-        assertContainsIgnoreCase(text, "master");
-        assertContains(text, masterText);
-        ppe2.close();
+            String text = ppe.getText();
+            assertContainsIgnoreCase(text, "master");
+            assertContains(text, masterText);
+        }
     }
 
     /**
@@ -360,22 +356,21 @@ public final class TestExtractor {
      */
     @Test
     public void testChineseText() throws IOException {
-        PowerPointExtractor ppe = openExtractor("54880_chinese.ppt");
+        try (final SlideShowExtractor ppe = 
openExtractor("54880_chinese.ppt")) {
+            String text = ppe.getText();
 
-        String text = ppe.getText();
+            // Check for the english text line
+            assertContains(text, "Single byte");
 
-        // Check for the english text line
-        assertContains(text, "Single byte");
+            // Check for the english text in the mixed line
+            assertContains(text, "Mix");
 
-        // Check for the english text in the mixed line
-        assertContains(text, "Mix");
+            // Check for the chinese text in the mixed line
+            assertContains(text, "\u8868");
 
-        // Check for the chinese text in the mixed line
-        assertContains(text, "\u8868");
-
-        // Check for the chinese only text line
-        assertContains(text, "\uff8a\uff9d\uff76\uff78");
-        ppe.close();
+            // Check for the chinese only text line
+            assertContains(text, "\uff8a\uff9d\uff76\uff78");
+        }
     }
 
     /**
@@ -387,67 +382,59 @@ public final class TestExtractor {
     public void testDifferentPOIFS() throws IOException {
         // Open the two filesystems
         File pptFile = slTests.getFile("basic_test_ppt_file.ppt");
-        InputStream is1 = new FileInputStream(pptFile);
-        OPOIFSFileSystem opoifs = new OPOIFSFileSystem(is1);
-        is1.close();
-        NPOIFSFileSystem npoifs = new NPOIFSFileSystem(pptFile);
-        
-        DirectoryNode[] files = { opoifs.getRoot(), npoifs.getRoot() };
-
-        // Open directly
-        for (DirectoryNode dir : files) {
-            PowerPointExtractor extractor = new PowerPointExtractor(dir);
-            assertEquals(expectText, extractor.getText());
-        }
-
-        // Open via a HSLFSlideShow
-        for (DirectoryNode dir : files) {
-            HSLFSlideShowImpl slideshow = new HSLFSlideShowImpl(dir);
-            PowerPointExtractor extractor = new PowerPointExtractor(slideshow);
-            assertEquals(expectText, extractor.getText());
-            extractor.close();
-            slideshow.close();
-        }
+        try (final InputStream is1 = new FileInputStream(pptFile);
+            final NPOIFSFileSystem npoifs = new NPOIFSFileSystem(pptFile)) {
+
+            final OPOIFSFileSystem opoifs = new OPOIFSFileSystem(is1);
+
+            DirectoryNode[] files = {opoifs.getRoot(), npoifs.getRoot()};
 
-        npoifs.close();
+            // Open directly
+            for (DirectoryNode dir : files) {
+                try (SlideShow<?,?> ppt = SlideShowFactory.create(dir);
+                    SlideShowExtractor<?,?> extractor = new 
SlideShowExtractor(ppt)) {
+                    assertEquals(expectText, extractor.getText());
+                }
+            }
+        }
     }
 
     @Test
     public void testTable() throws Exception {
-        PowerPointExtractor ppe1 = openExtractor("54111.ppt");
-        String text1 = ppe1.getText();
-        String target1 = "TH Cell 1\tTH Cell 2\tTH Cell 3\tTH Cell 4\n"+
-                         "Row 1, Cell 1\tRow 1, Cell 2\tRow 1, Cell 3\tRow 1, 
Cell 4\n"+   
-                         "Row 2, Cell 1\tRow 2, Cell 2\tRow 2, Cell 3\tRow 2, 
Cell 4\n"+
-                         "Row 3, Cell 1\tRow 3, Cell 2\tRow 3, Cell 3\tRow 3, 
Cell 4\n"+
-                         "Row 4, Cell 1\tRow 4, Cell 2\tRow 4, Cell 3\tRow 4, 
Cell 4\n"+ 
-                         "Row 5, Cell 1\tRow 5, Cell 2\tRow 5, Cell 3\tRow 5, 
Cell 4\n";
-        assertContains(text1, target1);
-        ppe1.close();
-
-        PowerPointExtractor ppe2 = openExtractor("54722.ppt");
-        String text2 = ppe2.getText();
-
-        String target2 = "this\tText\tis\twithin\ta\n" +
-                "table\t1\t2\t3\t4";
-        assertContains(text2, target2);
-        ppe2.close();
+        try (SlideShowExtractor ppe = openExtractor("54111.ppt")) {
+            String text = ppe.getText();
+            String target = "TH Cell 1\tTH Cell 2\tTH Cell 3\tTH Cell 4\n" +
+                    "Row 1, Cell 1\tRow 1, Cell 2\tRow 1, Cell 3\tRow 1, Cell 
4\n" +
+                    "Row 2, Cell 1\tRow 2, Cell 2\tRow 2, Cell 3\tRow 2, Cell 
4\n" +
+                    "Row 3, Cell 1\tRow 3, Cell 2\tRow 3, Cell 3\tRow 3, Cell 
4\n" +
+                    "Row 4, Cell 1\tRow 4, Cell 2\tRow 4, Cell 3\tRow 4, Cell 
4\n" +
+                    "Row 5, Cell 1\tRow 5, Cell 2\tRow 5, Cell 3\tRow 5, Cell 
4\n";
+            assertContains(text, target);
+        }
+
+        try (SlideShowExtractor ppe = openExtractor("54722.ppt")) {
+            String text = ppe.getText();
+
+            String target = "this\tText\tis\twithin\ta\n" +
+                    "table\t1\t2\t3\t4";
+            assertContains(text, target);
+        }
     }
 
     // bug 60003
     @Test
     public void testExtractMasterSlideFooterText() throws Exception {
-        PowerPointExtractor ppe = openExtractor("60003.ppt");
-        ppe.setMasterByDefault(true);
+        try (SlideShowExtractor ppe = openExtractor("60003.ppt")) {
+            ppe.setMasterByDefault(true);
 
-        String text = ppe.getText();
-        assertContains(text, "Prague");
-        ppe.close();
+            String text = ppe.getText();
+            assertContains(text, "Prague");
+        }
     }
 
     @Test
     public void testExtractGroupedShapeText() throws Exception {
-        try (final PowerPointExtractor ppe = openExtractor("bug62092.ppt")) {
+        try (final SlideShowExtractor ppe = openExtractor("bug62092.ppt")) {
             final String text = ppe.getText();
 
             //this tests that we're ignoring text shapes at depth=0

Modified: 
poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestBugs.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestBugs.java?rev=1829653&r1=1829652&r2=1829653&view=diff
==============================================================================
--- 
poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestBugs.java 
(original)
+++ 
poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestBugs.java 
Fri Apr 20 12:52:59 2018
@@ -73,6 +73,7 @@ import org.apache.poi.poifs.macros.VBAMa
 import org.apache.poi.sl.draw.DrawFactory;
 import org.apache.poi.sl.draw.DrawPaint;
 import org.apache.poi.sl.draw.DrawTextParagraph;
+import org.apache.poi.sl.extractor.SlideShowExtractor;
 import org.apache.poi.sl.usermodel.ColorStyle;
 import org.apache.poi.sl.usermodel.PaintStyle;
 import org.apache.poi.sl.usermodel.PaintStyle.SolidPaint;
@@ -800,18 +801,18 @@ public final class TestBugs {
         String files[] = { 
"bug58718_008524.ppt","bug58718_008558.ppt","bug58718_349008.ppt","bug58718_008495.ppt",
  }; 
         for (String f : files) {
             File sample = HSLFTestDataSamples.getSampleFile(f);
-            PowerPointExtractor ex = new 
PowerPointExtractor(sample.getAbsolutePath());
-            assertNotNull(ex.getText());
-            ex.close();
+            try (SlideShowExtractor ex = new 
SlideShowExtractor(SlideShowFactory.create(sample))) {
+                 assertNotNull(ex.getText());
+             }
         }
     }
 
     @Test
     public void bug58733() throws IOException {
         File sample = HSLFTestDataSamples.getSampleFile("bug58733_671884.ppt");
-        PowerPointExtractor ex = new 
PowerPointExtractor(sample.getAbsolutePath());
-        assertNotNull(ex.getText());
-        ex.close();
+        try (SlideShowExtractor ex = new 
SlideShowExtractor(SlideShowFactory.create(sample))) {
+            assertNotNull(ex.getText());
+        }
     }
 
     @Test

Modified: poi/trunk/test-data/slideshow/SampleShow.pptx
URL: 
http://svn.apache.org/viewvc/poi/trunk/test-data/slideshow/SampleShow.pptx?rev=1829653&r1=1829652&r2=1829653&view=diff
==============================================================================
Binary files - no diff available.



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to