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

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


The following commit(s) were added to refs/heads/branch_2x by this push:
     new 9dc037d3c TIKA-4221 -- temporary workaround for COMPRESS-675 (#1686)
9dc037d3c is described below

commit 9dc037d3cab80761256d60cdba256388987a2dfc
Author: Tim Allison <talli...@apache.org>
AuthorDate: Mon Mar 25 12:41:58 2024 -0400

    TIKA-4221 -- temporary workaround for COMPRESS-675 (#1686)
---
 .../apache/tika/parser/pkg/CompressorParser.java   | 60 ++++++++++++++++++++--
 1 file changed, 57 insertions(+), 3 deletions(-)

diff --git 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pkg-module/src/main/java/org/apache/tika/parser/pkg/CompressorParser.java
 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pkg-module/src/main/java/org/apache/tika/parser/pkg/CompressorParser.java
index 791a368ce..deb49e17b 100644
--- 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pkg-module/src/main/java/org/apache/tika/parser/pkg/CompressorParser.java
+++ 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pkg-module/src/main/java/org/apache/tika/parser/pkg/CompressorParser.java
@@ -56,7 +56,7 @@ import 
org.apache.commons.compress.compressors.snappy.FramedSnappyCompressorInpu
 import 
org.apache.commons.compress.compressors.snappy.SnappyCompressorInputStream;
 import org.apache.commons.compress.compressors.xz.XZCompressorInputStream;
 import org.apache.commons.compress.compressors.z.ZCompressorInputStream;
-import org.apache.commons.io.input.CloseShieldInputStream;
+import org.apache.commons.io.input.ClosedInputStream;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
 
@@ -170,10 +170,10 @@ public class CompressorParser extends AbstractParser {
         // any associated resources, but the underlying document stream
         // should not be closed
         if (stream.markSupported()) {
-            stream = new CloseShieldInputStream(stream);
+            stream = new TikaCloseShieldInputStream(stream);
         } else {
             // Ensure that the stream supports the mark feature
-            stream = new BufferedInputStream(new 
CloseShieldInputStream(stream));
+            stream = new BufferedInputStream(new 
TikaCloseShieldInputStream(stream));
         }
 
         CompressorInputStream cis;
@@ -267,4 +267,58 @@ public class CompressorParser extends AbstractParser {
         return this.decompressConcatenated;
     }
 
+    //TODO -- get rid of this workaround once TIKA-4221/COMPRESS-675 are fixed
+    private class TikaCloseShieldInputStream extends InputStream {
+
+        private InputStream stream;
+        public TikaCloseShieldInputStream(InputStream stream) {
+            this.stream = stream;
+        }
+
+        @Override
+        public void close() throws IOException {
+            this.stream = ClosedInputStream.INSTANCE;
+        }
+
+
+        @Override
+        public int read(byte[] b) throws IOException {
+            return stream.read(b);
+        }
+
+        @Override
+        public int read(byte[] b, int off, int len) throws IOException {
+            return stream.read(b, off, len);
+        }
+
+        @Override
+        public long skip(long n) throws IOException {
+            return stream.skip(n);
+        }
+
+        @Override
+        public int available() throws IOException {
+            return stream.available();
+        }
+
+        @Override
+        public synchronized void mark(int readlimit) {
+            stream.mark(readlimit);
+        }
+
+        @Override
+        public synchronized void reset() throws IOException {
+            stream.reset();
+        }
+
+        @Override
+        public boolean markSupported() {
+            return stream.markSupported();
+        }
+
+        @Override
+        public int read() throws IOException {
+            return stream.read();
+        }
+    }
 }

Reply via email to