]> source.dussan.org Git - poi.git/commitdiff
Properly close internal InputStream in ExtractorFactory#createExtractor(File), see...
authorYegor Kozlov <yegor@apache.org>
Tue, 20 Apr 2010 13:06:59 +0000 (13:06 +0000)
committerYegor Kozlov <yegor@apache.org>
Tue, 20 Apr 2010 13:06:59 +0000 (13:06 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@935900 13f79535-47bb-0310-9956-ffa450edef68

src/documentation/content/xdocs/status.xml
src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java

index 23c88fd9a49c0e45e20993654c0afe6ad958846b..f3805fb6b8635821b0168fa73863cb4a51a8a5e5 100644 (file)
@@ -34,6 +34,7 @@
 
     <changes>
         <release version="3.7-SNAPSHOT" date="2010-??-??">
+           <action dev="POI-DEVELOPERS" type="fix">49147 - Properly close internal InputStream in ExtractorFactory#createExtractor(File)</action>
            <action dev="POI-DEVELOPERS" type="fix">49138 - Fixed locale-sensitive formatters in PackagePropertiesPart</action>
            <action dev="POI-DEVELOPERS" type="fix">49153 - Ensure that CTVectorVariant is included in poi-ooxml-schemas.jar</action>
            <action dev="POI-DEVELOPERS" type="add">49146 - Added accessors to CoreProperties.Keywords  </action>
index ee3da8c61423bb22c5e87835adc345545fe0c79f..6a2379e19a012a019394b6049deac6dc4ab622ab 100644 (file)
@@ -119,18 +119,22 @@ public class ExtractorFactory {
    
        
        public static POITextExtractor createExtractor(File f) throws IOException, InvalidFormatException, OpenXML4JException, XmlException {
-               InputStream inp = new PushbackInputStream( 
-                       new FileInputStream(f), 8);
-               
-               if(POIFSFileSystem.hasPOIFSHeader(inp)) {
-                       return createExtractor(new POIFSFileSystem(inp));
-               }
-               if(POIXMLDocument.hasOOXMLHeader(inp)) {
-                       inp.close();
-                       return createExtractor(OPCPackage.open(f.toString()));
-               }
-               throw new IllegalArgumentException("Your File was neither an OLE2 file, nor an OOXML file");
-       }
+               InputStream inp = null;
+        try {
+            inp = new PushbackInputStream(
+                new FileInputStream(f), 8);
+
+            if(POIFSFileSystem.hasPOIFSHeader(inp)) {
+                return createExtractor(new POIFSFileSystem(inp));
+            }
+            if(POIXMLDocument.hasOOXMLHeader(inp)) {
+                return createExtractor(OPCPackage.open(f.toString()));
+            }
+            throw new IllegalArgumentException("Your File was neither an OLE2 file, nor an OOXML file");
+        } finally {
+            if(inp != null) inp.close();
+        }
+    }
        
        public static POITextExtractor createExtractor(InputStream inp) throws IOException, InvalidFormatException, OpenXML4JException, XmlException {
                // Figure out the kind of stream