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. *