You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ni...@apache.org on 2014/09/08 19:44:51 UTC

svn commit: r1623448 - /tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java

Author: nick
Date: Mon Sep  8 17:44:51 2014
New Revision: 1623448

URL: http://svn.apache.org/r1623448
Log:
If we open a new NPOIFS object from a TikaInputStream, attach the opened container to the stream so it gets auto-closed when parsing is complete TIKA-1410

Modified:
    tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java

Modified: tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java?rev=1623448&r1=1623447&r2=1623448&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java (original)
+++ tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java Mon Sep  8 17:44:51 2014
@@ -158,10 +158,15 @@ public class OfficeParser extends Abstra
                 root = ((NPOIFSFileSystem) container).getRoot();
             } else if (container instanceof DirectoryNode) {
                 root = (DirectoryNode) container;
-            } else if (tstream.hasFile()) {
-                root = new NPOIFSFileSystem(tstream.getFile(), true).getRoot();
             } else {
-                root = new NPOIFSFileSystem(new CloseShieldInputStream(tstream)).getRoot();
+                NPOIFSFileSystem fs;
+                if (tstream.hasFile()) {
+                    fs = new NPOIFSFileSystem(tstream.getFile(), true);
+                } else {
+                    fs = new NPOIFSFileSystem(new CloseShieldInputStream(tstream));
+                }
+                tstream.setOpenContainer(fs);
+                root = fs.getRoot();
             }
         }
         parse(root, context, metadata, xhtml);