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

tilman pushed a commit to branch branch_3x
in repository https://gitbox.apache.org/repos/asf/tika.git


The following commit(s) were added to refs/heads/branch_3x by this push:
     new 36b571a52 TIKA-4531 fix some resource leaks (#2377)
36b571a52 is described below

commit 36b571a5208ed81c523c8c8ddc0b835e5241c19c
Author: AROP <[email protected]>
AuthorDate: Tue Oct 28 19:14:40 2025 +0800

    TIKA-4531 fix some resource leaks (#2377)
    
    Co-authored-by: xcx <[email protected]>
---
 .../microsoft/ooxml/AbstractOOXMLExtractor.java    | 43 +++++++++++-----------
 .../server/core/resource/UnpackerResource.java     | 18 ++++-----
 2 files changed, 29 insertions(+), 32 deletions(-)

diff --git 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/AbstractOOXMLExtractor.java
 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/AbstractOOXMLExtractor.java
index 1475b7838..a99e26301 100644
--- 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/AbstractOOXMLExtractor.java
+++ 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/AbstractOOXMLExtractor.java
@@ -177,29 +177,28 @@ public abstract class AbstractOOXMLExtractor implements 
OOXMLExtractor {
                 if (tPart == null) {
                     continue;
                 }
-                InputStream tStream = tPart.getInputStream();
-                Metadata thumbnailMetadata = new Metadata();
-                String thumbName = tPart.getPartName().getName();
-                thumbnailMetadata.set(TikaCoreProperties.RESOURCE_NAME_KEY, 
thumbName);
-
-                AttributesImpl attributes = new AttributesImpl();
-                attributes.addAttribute(XHTML, "class", "class", "CDATA", 
"embedded");
-                attributes.addAttribute(XHTML, "id", "id", "CDATA", thumbName);
-                handler.startElement(XHTML, "div", "div", attributes);
-                handler.endElement(XHTML, "div", "div");
-
-                
thumbnailMetadata.set(TikaCoreProperties.EMBEDDED_RELATIONSHIP_ID, thumbName);
-                thumbnailMetadata.set(Metadata.CONTENT_TYPE, 
tPart.getContentType());
-                thumbnailMetadata.set(TikaCoreProperties.TITLE, 
tPart.getPartName().getName());
-                
thumbnailMetadata.set(TikaCoreProperties.EMBEDDED_RESOURCE_TYPE,
-                        
TikaCoreProperties.EmbeddedResourceType.THUMBNAIL.name());
-
-                if (embeddedExtractor.shouldParseEmbedded(thumbnailMetadata)) {
-                    
embeddedExtractor.parseEmbedded(TikaInputStream.get(tStream),
-                            new EmbeddedContentHandler(handler), 
thumbnailMetadata, false);
+                try (InputStream tStream = tPart.getInputStream()) {
+                    Metadata thumbnailMetadata = new Metadata();
+                    String thumbName = tPart.getPartName().getName();
+                    
thumbnailMetadata.set(TikaCoreProperties.RESOURCE_NAME_KEY, thumbName);
+
+                    AttributesImpl attributes = new AttributesImpl();
+                    attributes.addAttribute(XHTML, "class", "class", "CDATA", 
"embedded");
+                    attributes.addAttribute(XHTML, "id", "id", "CDATA", 
thumbName);
+                    handler.startElement(XHTML, "div", "div", attributes);
+                    handler.endElement(XHTML, "div", "div");
+
+                    
thumbnailMetadata.set(TikaCoreProperties.EMBEDDED_RELATIONSHIP_ID, thumbName);
+                    thumbnailMetadata.set(Metadata.CONTENT_TYPE, 
tPart.getContentType());
+                    thumbnailMetadata.set(TikaCoreProperties.TITLE, 
tPart.getPartName().getName());
+                    
thumbnailMetadata.set(TikaCoreProperties.EMBEDDED_RESOURCE_TYPE,
+                            
TikaCoreProperties.EmbeddedResourceType.THUMBNAIL.name());
+
+                    if 
(embeddedExtractor.shouldParseEmbedded(thumbnailMetadata)) {
+                        
embeddedExtractor.parseEmbedded(TikaInputStream.get(tStream),
+                                new EmbeddedContentHandler(handler), 
thumbnailMetadata, false);
+                    }
                 }
-
-                tStream.close();
             }
         } catch (SecurityException e) {
             throw e;
diff --git 
a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/UnpackerResource.java
 
b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/UnpackerResource.java
index 7fb362300..0bcaca5ce 100644
--- 
a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/UnpackerResource.java
+++ 
b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/UnpackerResource.java
@@ -79,17 +79,15 @@ public class UnpackerResource {
     private static final Logger LOG = 
LoggerFactory.getLogger(UnpackerResource.class);
 
     public static void metadataToCsv(Metadata metadata, OutputStream 
outputStream) throws IOException {
-        CSVPrinter writer = new CSVPrinter(new 
OutputStreamWriter(outputStream, UTF_8), CSVFormat.EXCEL);
-
-        for (String name : metadata.names()) {
-            String[] values = metadata.getValues(name);
-            ArrayList<String> list = new ArrayList<>(values.length + 1);
-            list.add(name);
-            list.addAll(Arrays.asList(values));
-            writer.printRecord(list);
+        try (CSVPrinter writer = new CSVPrinter(new 
OutputStreamWriter(outputStream, UTF_8), CSVFormat.EXCEL)) {
+            for (String name : metadata.names()) {
+                String[] values = metadata.getValues(name);
+                ArrayList<String> list = new ArrayList<>(values.length + 1);
+                list.add(name);
+                list.addAll(Arrays.asList(values));
+                writer.printRecord(list);
+            }
         }
-
-        writer.close();
     }
 
     @Path("/{id:(/.*)?}")

Reply via email to