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

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-compress.git


The following commit(s) were added to refs/heads/master by this push:
     new faa2f8506 Internal refactoring for constructing ZipException with cause
faa2f8506 is described below

commit faa2f85067e2bf3037befec4c6586c766260613e
Author: Gary D. Gregory <garydgreg...@gmail.com>
AuthorDate: Sat Feb 15 14:04:02 2025 -0500

    Internal refactoring for constructing ZipException with cause
---
 .../commons/compress/archivers/zip/ExtraFieldUtils.java      |  5 ++---
 .../compress/archivers/zip/ZipArchiveInputStream.java        |  6 ++----
 .../org/apache/commons/compress/archivers/zip/ZipFile.java   |  9 ++-------
 .../org/apache/commons/compress/archivers/zip/ZipUtil.java   | 12 ++++++++++++
 4 files changed, 18 insertions(+), 14 deletions(-)

diff --git 
a/src/main/java/org/apache/commons/compress/archivers/zip/ExtraFieldUtils.java 
b/src/main/java/org/apache/commons/compress/archivers/zip/ExtraFieldUtils.java
index de2ca1af3..0ec851f75 100644
--- 
a/src/main/java/org/apache/commons/compress/archivers/zip/ExtraFieldUtils.java
+++ 
b/src/main/java/org/apache/commons/compress/archivers/zip/ExtraFieldUtils.java
@@ -193,8 +193,7 @@ public static ZipExtraField fillExtraField(final 
ZipExtraField ze, final byte[]
             }
             return ze;
         } catch (final ArrayIndexOutOfBoundsException e) {
-            throw (ZipException) new ZipException("Failed to parse corrupt ZIP 
extra field of type " + Integer.toHexString(ze.getHeaderId().getValue()))
-                    .initCause(e);
+            throw ZipUtil.newZipException("Failed to parse corrupt ZIP extra 
field of type " + Integer.toHexString(ze.getHeaderId().getValue()), e);
         }
     }
 
@@ -326,7 +325,7 @@ public static ZipExtraField[] parse(final byte[] data, 
final boolean local, fina
                 v.add(Objects.requireNonNull(parsingBehavior.fill(ze, data, 
start + WORD, length, local), "fill must not return null"));
                 start += length + WORD;
             } catch (final InstantiationException | IllegalAccessException e) {
-                throw (ZipException) new 
ZipException(e.getMessage()).initCause(e);
+                throw ZipUtil.newZipException(e.getMessage(), e);
             }
         }
 
diff --git 
a/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
 
b/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
index 0dd12a3b5..138f396a4 100644
--- 
a/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
+++ 
b/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
@@ -736,9 +736,7 @@ public ZipArchiveEntry getNextZipEntry() throws IOException 
{
         try {
             current.entry.setExtra(extraData);
         } catch (final RuntimeException ex) {
-            final ZipException z = new ZipException("Invalid extra data in 
entry " + current.entry.getName());
-            z.initCause(ex);
-            throw z;
+            throw ZipUtil.newZipException("Invalid extra data in entry " + 
current.entry.getName(), ex);
         }
 
         if (!hasUTF8Flag && useUnicodeExtraFields) {
@@ -1089,7 +1087,7 @@ private int readFromInflater(final byte[] buffer, final 
int offset, final int le
             try {
                 read = inf.inflate(buffer, offset, length);
             } catch (final DataFormatException e) {
-                throw (IOException) new 
ZipException(e.getMessage()).initCause(e);
+                throw (IOException) ZipUtil.newZipException(e.getMessage(), e);
             }
         } while (read == 0 && inf.needsInput());
         return read;
diff --git 
a/src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java 
b/src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java
index 4425ecc0e..197e632ee 100644
--- a/src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java
+++ b/src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java
@@ -1533,9 +1533,7 @@ private void readCentralDirectoryEntry(final 
Map<ZipArchiveEntry, NameAndComment
         try {
             ze.setCentralDirectoryExtra(cdExtraData);
         } catch (final RuntimeException e) {
-            final ZipException z = new ZipException("Invalid extra data in 
entry " + ze.getName());
-            z.initCause(e);
-            throw z;
+            throw ZipUtil.newZipException("Invalid extra data in entry " + 
ze.getName(), e);
         }
 
         setSizesAndOffsetFromZip64Extra(ze);
@@ -1575,11 +1573,8 @@ private void resolveLocalFileHeaderData(final 
Map<ZipArchiveEntry, NameAndCommen
             try {
                 ze.setExtra(localExtraData);
             } catch (final RuntimeException e) {
-                final ZipException z = new ZipException("Invalid extra data in 
entry " + ze.getName());
-                z.initCause(e);
-                throw z;
+                throw ZipUtil.newZipException("Invalid extra data in entry " + 
ze.getName(), e);
             }
-
             if (entriesWithoutUTF8Flag.containsKey(ze)) {
                 final NameAndComment nc = entriesWithoutUTF8Flag.get(ze);
                 ZipUtil.setNameAndCommentFromExtraFields(ze, nc.name, 
nc.comment);
diff --git 
a/src/main/java/org/apache/commons/compress/archivers/zip/ZipUtil.java 
b/src/main/java/org/apache/commons/compress/archivers/zip/ZipUtil.java
index d5be5bc4c..72d55de1f 100644
--- a/src/main/java/org/apache/commons/compress/archivers/zip/ZipUtil.java
+++ b/src/main/java/org/apache/commons/compress/archivers/zip/ZipUtil.java
@@ -28,6 +28,7 @@
 import java.util.Date;
 import java.util.zip.CRC32;
 import java.util.zip.ZipEntry;
+import java.util.zip.ZipException;
 
 /**
  * Utility class for handling DOS and Java time conversions.
@@ -262,6 +263,17 @@ static BigInteger longToBig(long l) {
         return BigInteger.valueOf(l);
     }
 
+    /**
+     * Constructs a new ZipException.
+     *
+     * @param message the detail message.
+     * @param cause   throwable The cause of this Throwable.
+     * @return a new ZipException.
+     */
+    static ZipException newZipException(final String message, final Throwable 
cause) {
+        return (ZipException) new ZipException(message).initCause(cause);
+    }
+
     /**
      * Reverses a byte[] array. Reverses in-place (thus provided array is 
mutated), but also returns same for convenience.
      *

Reply via email to