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

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


The following commit(s) were added to refs/heads/main by this push:
     new bc57575ffb [TIKA-4704] delete intermediate file and directory; improve 
javadoc; use jdk11 methods; use try-with-resources (#2728)
bc57575ffb is described below

commit bc57575ffbaff5f6b360a8b2c5e35e2ad34f7a6f
Author: Tilman Hausherr <[email protected]>
AuthorDate: Wed Apr 1 06:41:09 2026 +0200

    [TIKA-4704] delete intermediate file and directory; improve javadoc; use 
jdk11 methods; use try-with-resources (#2728)
    
    * [TIKA-4704] delete intermediate file; improve javadoc; use jdk11 methods
    
    * Update 
tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/CXFTestBase.java
    
    Co-authored-by: Copilot <[email protected]>
    
    * Refactor InputStream handling with try-with-resources; add forgotten 
deletion
    
    * Refactor CXFTestBase.java for logging and formatting
    
    Removed logging of config file deletion and improved formatting in 
CXFTestBase.java.
    
    * Also delete inputTempDirectory when all done
    
    ---------
    
    Co-authored-by: Copilot <[email protected]>
---
 .../org/apache/tika/server/core/CXFTestBase.java   | 65 +++++++++++++---------
 1 file changed, 38 insertions(+), 27 deletions(-)

diff --git 
a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/CXFTestBase.java
 
b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/CXFTestBase.java
index e0f454e5c3..69c14521af 100644
--- 
a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/CXFTestBase.java
+++ 
b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/CXFTestBase.java
@@ -101,6 +101,7 @@ public abstract class CXFTestBase {
     protected TikaLoader tika;
     private PipesParser pipesParser;
     private Path pipesConfigPath;
+    private Path inputTempDirectory = null;
 
     public static void createPluginsConfig(Path configPath, Path inputDir, 
Path jsonOutputDir, Path bytesOutputDir, Long timeoutMillis) throws IOException 
{
 
@@ -151,10 +152,10 @@ public abstract class CXFTestBase {
 
     public static InputStream gzip(InputStream is) throws IOException {
         ByteArrayOutputStream bos = new ByteArrayOutputStream();
-        OutputStream gz = new GzipCompressorOutputStream(bos);
-        IOUtils.copy(is, gz);
-        gz.flush();
-        gz.close();
+        try (OutputStream gz = new GzipCompressorOutputStream(bos)) {
+            is.transferTo(gz);
+            gz.flush();
+        }
         return new ByteArrayInputStream(bos.toByteArray());
     }
 
@@ -185,23 +186,26 @@ public abstract class CXFTestBase {
             // Copy tika config to temp file first
             Files.copy(getTikaConfigInputStream(), tmp, 
StandardCopyOption.REPLACE_EXISTING);
 
-            InputStream pipesConfigInputStream = getPipesConfigInputStream();
-            if (pipesConfigInputStream != null) {
-                // Test provided its own pipes config - merge in PASSBACK_ALL 
emit strategy
-                this.pipesConfigPath = 
mergePassbackAllStrategy(pipesConfigInputStream);
-            } else {
-                // Create a default pipes config, merging metadata-filters 
from tika config
-                this.pipesConfigPath = createDefaultTestConfig(tmp);
+            Path tmpPipesConfigPath;
+            try (InputStream pipesConfigInputStream = 
getPipesConfigInputStream()) {
+                if (pipesConfigInputStream != null) {
+                    // Test provided its own pipes config - merge in 
PASSBACK_ALL emit strategy
+                    tmpPipesConfigPath = 
mergePassbackAllStrategy(pipesConfigInputStream);
+                } else {
+                    // Create a default pipes config, merging metadata-filters 
from tika config
+                    tmpPipesConfigPath = createDefaultTestConfig(tmp);
+                }
             }
 
             this.tika = TikaLoader.load(tmp);
 
             // Create input temp directory for pipes-based parsing
-            Path inputTempDirectory = 
Files.createTempDirectory("tika-server-test-input-");
+            inputTempDirectory = 
Files.createTempDirectory("tika-server-test-input-");
 
             // Initialize PipesParsingHelper for pipes-based parsing
             // Merge the fetcher config with basePath pointing to the temp 
directory
-            this.pipesConfigPath = mergeFetcherConfig(this.pipesConfigPath, 
inputTempDirectory);
+            this.pipesConfigPath = mergeFetcherConfig(tmpPipesConfigPath, 
inputTempDirectory);
+            Files.delete(tmpPipesConfigPath);
             TikaJsonConfig tikaJsonConfig = 
TikaJsonConfig.load(this.pipesConfigPath);
             PipesConfig pipesConfig = tikaJsonConfig.deserialize("pipes", 
PipesConfig.class);
             if (pipesConfig == null) {
@@ -243,6 +247,8 @@ public abstract class CXFTestBase {
     /**
      * Merges PASSBACK_ALL emit strategy into a pipes config.
      * This ensures the child process uses PASSBACK_ALL regardless of what's 
in the config file.
+     * 
+     * @return JSON config file in the temp directory.
      */
     private Path mergePassbackAllStrategy(InputStream pipesConfigInputStream) 
throws IOException {
         ObjectMapper mapper = new ObjectMapper();
@@ -268,6 +274,8 @@ public abstract class CXFTestBase {
     /**
      * Merges the tika-server-fetcher configuration into the pipes config.
      * The fetcher is configured with basePath pointing to the input temp 
directory.
+     * 
+     * @return new (different) JSON configPath in the temp directory.
      */
     private Path mergeFetcherConfig(Path configPath, Path inputTempDirectory) 
throws IOException {
         ObjectMapper mapper = new ObjectMapper();
@@ -301,6 +309,8 @@ public abstract class CXFTestBase {
      * If the tika config contains metadata-filters, they are merged into the 
pipes config.
      *
      * @param tikaConfigPath path to the tika config (may contain 
metadata-filters)
+     * 
+     * @return JSON config file in the temp directory.
      */
     private Path createDefaultTestConfig(Path tikaConfigPath) throws 
IOException {
         Path pluginsDir = Paths.get("target/plugins").toAbsolutePath();
@@ -417,6 +427,9 @@ public abstract class CXFTestBase {
                 LOG.warn("Error deleting config file", e);
             }
         }
+        if (inputTempDirectory != null) {
+            Files.deleteIfExists(inputTempDirectory);
+        }
     }
 
     protected Map<String, String> readZipArchive(InputStream inputStream) 
throws IOException {
@@ -424,14 +437,15 @@ public abstract class CXFTestBase {
         Path tempFile = null;
         try {
             tempFile = writeTemporaryArchiveFile(inputStream, "zip");
-            try (ZipFile zip = ZipFile.builder().setPath(tempFile).get())
-            {
+            try (ZipFile zip = ZipFile.builder().setPath(tempFile).get()) {
                 Enumeration<ZipArchiveEntry> entries = zip.getEntries();
                 while (entries.hasMoreElements()) {
                     ZipArchiveEntry entry = entries.nextElement();
-                    ByteArrayOutputStream bos = new ByteArrayOutputStream();
-                    IOUtils.copy(zip.getInputStream(entry), bos);
-                    data.put(entry.getName(), 
DigestUtils.md5Hex(bos.toByteArray()));
+                    try (InputStream zis = zip.getInputStream(entry)) {
+                        byte[] bytes = zis.readAllBytes();
+                        data.put(entry.getName(), DigestUtils.md5Hex(bytes));
+                    }
+                    
                 }
             }
         } finally {
@@ -447,14 +461,14 @@ public abstract class CXFTestBase {
         Path tempFile = null;
         try {
             tempFile = writeTemporaryArchiveFile(inputStream, "zip");
-            try (ZipFile zip = ZipFile.builder().setPath(tempFile).get())
-            {
+            try (ZipFile zip = ZipFile.builder().setPath(tempFile).get())  {
                 Enumeration<ZipArchiveEntry> entries = zip.getEntries();
                 while (entries.hasMoreElements()) {
                     ZipArchiveEntry entry = entries.nextElement();
-                    ByteArrayOutputStream bos = new ByteArrayOutputStream();
-                    IOUtils.copy(zip.getInputStream(entry), bos);
-                    data.put(entry.getName(), bos.toByteArray());
+                    try (InputStream zis = zip.getInputStream(entry)) {
+                        byte[] bytes = zis.readAllBytes();
+                        data.put(entry.getName(), bytes);
+                    }
                 }
             }
         } finally {
@@ -472,10 +486,7 @@ public abstract class CXFTestBase {
             if (entry == null) {
                 break;
             }
-
-            ByteArrayOutputStream bos = new ByteArrayOutputStream();
-            IOUtils.copy(zip, bos);
-            data.put(entry.getName(), DigestUtils.md5Hex(bos.toByteArray()));
+            data.put(entry.getName(), DigestUtils.md5Hex(zip.readAllBytes()));
         }
 
         return data;

Reply via email to