]> source.dussan.org Git - poi.git/commitdiff
#59724 Provide Closeable on all OLE2-based POIDocument types
authorNick Burch <nick@apache.org>
Sun, 19 Jun 2016 22:12:55 +0000 (22:12 +0000)
committerNick Burch <nick@apache.org>
Sun, 19 Jun 2016 22:12:55 +0000 (22:12 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1749213 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/POIDocument.java
src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java

index 68ed3c1769fac501b7e3d090b9b9b3556c360551..27a3ca648de1c8d6fe687f280a2fc47785aa0f4a 100644 (file)
@@ -19,6 +19,7 @@ package org.apache.poi;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
+import java.io.Closeable;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -45,7 +46,7 @@ import org.apache.poi.util.POILogger;
  *  Document classes.
  * Currently, this relates to Document Information Properties 
  */
-public abstract class POIDocument {
+public abstract class POIDocument implements Closeable {
     /** Holds metadata on our document */
     private SummaryInformation sInf;
     /** Holds further metadata on our document */
@@ -319,6 +320,22 @@ public abstract class POIDocument {
      */
     public abstract void write(OutputStream out) throws IOException;
 
+    /**
+     * Closes the underlying {@link NPOIFSFileSystem} from which
+     *  the document was read, if any. Has no effect on documents
+     *  opened from an InputStream, or newly created ones.
+     * <p>Once {@link #close()} has been called, no further operations
+     *  should be called on the document.
+     */
+    public void close() throws IOException {
+        if (directory != null) {
+            if (directory.getNFileSystem() != null) {
+                directory.getNFileSystem().close();
+                directory = null;
+            }
+        }
+    }
+
     @Internal
     public DirectoryNode getDirectory() {
         return directory;
index 4b041ef17a1d89dd1f60289b54f649527c405055..d35aa4b571416706793410a9cd4d0ecc3575a9fc 100644 (file)
@@ -1276,16 +1276,13 @@ public final class HSSFWorkbook extends POIDocument implements org.apache.poi.ss
      * Closes the underlying {@link NPOIFSFileSystem} from which
      *  the Workbook was read, if any. Has no effect on Workbooks
      *  opened from an InputStream, or newly created ones.
+     * <p>Once {@link #close()} has been called, no further 
+     *  operations, updates or reads should be performed on the 
+     *  Workbook.
      */
     @Override
-    public void close() throws IOException
-    {
-        if (directory != null) {
-            if (directory.getNFileSystem() != null) {
-                directory.getNFileSystem().close();
-                directory = null;
-            }
-        }
+    public void close() throws IOException {
+        super.close();
     }
 
     /**