This is an automated email from the ASF dual-hosted git repository.

fanningpj pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/poi.git


The following commit(s) were added to refs/heads/trunk by this push:
     new c0e6a9bed0 close package parts when closing OPCPackage (#880)
c0e6a9bed0 is described below

commit c0e6a9bed0770dd5412bb08023d0df0d66aae5ea
Author: PJ Fanning <[email protected]>
AuthorDate: Thu Aug 14 10:58:46 2025 +0100

    close package parts when closing OPCPackage (#880)
    
    * close package parts when closing OPCPackage
    
    * Update ZipPackagePart.java
---
 .../src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java   | 7 +++++++
 .../java/org/apache/poi/openxml4j/opc/PackagePartCollection.java | 9 +++++++--
 .../src/main/java/org/apache/poi/openxml4j/opc/ZipPackage.java   | 7 +++++--
 .../main/java/org/apache/poi/openxml4j/opc/ZipPackagePart.java   | 6 ++----
 4 files changed, 21 insertions(+), 8 deletions(-)

diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java 
b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java
index b02b477825..6caa32627d 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java
@@ -681,6 +681,9 @@ public abstract class OPCPackage implements 
RelationshipSource, Closeable {
         // ensure all held resources are freed
         revert();
 
+        // ensure resources associated with package parts are closed
+        closeParts();
+
         // Clear
         this.contentTypeManager.clearAll();
     }
@@ -1870,6 +1873,10 @@ public abstract class OPCPackage implements 
RelationshipSource, Closeable {
      */
     public abstract boolean isClosed();
 
+    protected void closeParts() {
+        partList.closeParts();
+    }
+
     @Override
     public String toString() {
         return "OPCPackage{" +
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/PackagePartCollection.java
 
b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/PackagePartCollection.java
index b9fb281997..96a8ad13e6 100644
--- 
a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/PackagePartCollection.java
+++ 
b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/PackagePartCollection.java
@@ -112,8 +112,6 @@ public final class PackagePartCollection implements 
Serializable {
         return packagePartLookup.size();
     }
 
-
-
     /**
      * Get an unused part index based on the namePattern, which doesn't exist 
yet
      * and has the lowest positive index
@@ -141,4 +139,11 @@ public final class PackagePartCollection implements 
Serializable {
             .mapToInt(indexFromName)
             .collect(SparseBitSet::new, SparseBitSet::set, (s1,s2) -> 
s1.or(s2)).nextClearBit(1);
     }
+
+    // used to ensure resources are closed when they are no longer needed
+    void closeParts() {
+        for (PackagePart part : packagePartLookup.values()) {
+            part.close();
+        }
+    }
 }
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ZipPackage.java 
b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ZipPackage.java
index 22ef9023d9..0ae478a6cd 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ZipPackage.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ZipPackage.java
@@ -595,12 +595,15 @@ public final class ZipPackage extends OPCPackage {
                 }
             }
         }
+
+        // ensure resources associated with package parts are closed
+        closeParts();
     }
 
     /**
-     * Create a unique identifier to be use as a temp file name.
+     * Create a unique identifier to be used as a temp file name.
      *
-     * @return A unique identifier use to be use as a temp file name.
+     * @return A unique identifier to be used as a temp file name.
      */
     private synchronized String generateTempFileName(File directory) {
         File tmpFilename;
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ZipPackagePart.java 
b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ZipPackagePart.java
index 3ca7adbe0b..8774043a14 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ZipPackagePart.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ZipPackagePart.java
@@ -134,14 +134,12 @@ public class ZipPackagePart extends PackagePart {
     }
 
     @Override
-    @NotImplemented
     public void close() {
-        throw new InvalidOperationException("Method not implemented !");
+        // do nothing
     }
 
     @Override
-    @NotImplemented
     public void flush() {
-        throw new InvalidOperationException("Method not implemented !");
+        // do nothing
     }
 }


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

Reply via email to