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
commit b7524ab763bbf099320b4194c812675023b3210d Author: Gary D. Gregory <garydgreg...@gmail.com> AuthorDate: Fri Apr 11 15:43:52 2025 -0400 Reduce boilerplate and some possible NullPointerExceptions --- .../java/org/apache/commons/compress/archivers/Lister.java | 3 ++- .../apache/commons/compress/archivers/sevenz/Folder.java | 4 +++- .../commons/compress/archivers/sevenz/SevenZFile.java | 9 +++++---- .../commons/compress/archivers/zip/PKWareExtraHeader.java | 4 +++- .../compress/archivers/zip/UnparseableExtraFieldData.java | 4 +++- .../compress/archivers/zip/UnrecognizedExtraField.java | 4 +++- .../commons/compress/archivers/zip/X7875_NewUnix.java | 14 +++++--------- .../commons/compress/archivers/zip/ZipArchiveEntry.java | 5 +++-- 8 files changed, 27 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/apache/commons/compress/archivers/Lister.java b/src/main/java/org/apache/commons/compress/archivers/Lister.java index 67267c397..9086b907d 100644 --- a/src/main/java/org/apache/commons/compress/archivers/Lister.java +++ b/src/main/java/org/apache/commons/compress/archivers/Lister.java @@ -31,6 +31,7 @@ import org.apache.commons.compress.archivers.sevenz.SevenZFile; import org.apache.commons.compress.archivers.tar.TarFile; import org.apache.commons.compress.archivers.zip.ZipFile; +import org.apache.commons.lang3.ArrayUtils; /** * Simple command line application that lists the contents of an archive. @@ -76,7 +77,7 @@ private static String detectFormat(final Path file) throws ArchiveException, IOE * @throws IOException an I/O exception. */ public static void main(final String... args) throws ArchiveException, IOException { - if (args == null || args.length == 0) { + if (ArrayUtils.isEmpty(args)) { usage(); return; } diff --git a/src/main/java/org/apache/commons/compress/archivers/sevenz/Folder.java b/src/main/java/org/apache/commons/compress/archivers/sevenz/Folder.java index 6e7304728..935c72dbd 100644 --- a/src/main/java/org/apache/commons/compress/archivers/sevenz/Folder.java +++ b/src/main/java/org/apache/commons/compress/archivers/sevenz/Folder.java @@ -22,6 +22,8 @@ import java.util.Collections; import java.util.LinkedList; +import org.apache.commons.lang3.ArrayUtils; + /** * The unit of solid compression. */ @@ -90,7 +92,7 @@ int findBindPairForOutStream(final int index) { * </p> */ Iterable<Coder> getOrderedCoders() throws IOException { - if (packedStreams == null || coders == null || packedStreams.length == 0 || coders.length == 0) { + if (ArrayUtils.isEmpty(packedStreams) || ArrayUtils.isEmpty(coders)) { return Collections.emptyList(); } final LinkedList<Coder> list = new LinkedList<>(); diff --git a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java index 166fb75e3..73402796f 100644 --- a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java +++ b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java @@ -58,6 +58,7 @@ import org.apache.commons.io.build.AbstractStreamBuilder; import org.apache.commons.io.input.BoundedInputStream; import org.apache.commons.io.input.ChecksumInputStream; +import org.apache.commons.lang3.ArrayUtils; /** * Reads a 7z file, using SeekableByteChannel under the covers. @@ -205,7 +206,7 @@ public SevenZFile get() throws IOException { actualDescription = defaultName; } else { OpenOption[] openOptions = getOpenOptions(); - if (openOptions.length == 0) { + if (ArrayUtils.isEmpty(openOptions)) { openOptions = new OpenOption[] { StandardOpenOption.READ }; } final Path path = getPath(); @@ -881,7 +882,7 @@ private void buildDecodingStream(final int entryIndex, final boolean isRandomAcc private void calculateStreamMap(final Archive archive) throws IOException { int nextFolderPackStreamIndex = 0; - final int numFolders = archive.folders != null ? archive.folders.length : 0; + final int numFolders = ArrayUtils.getLength(archive.folders); final int[] folderFirstPackStreamIndex = new int[numFolders]; for (int i = 0; i < numFolders; i++) { folderFirstPackStreamIndex[i] = nextFolderPackStreamIndex; @@ -1231,10 +1232,10 @@ private ByteBuffer readEncodedHeader(final ByteBuffer header, final Archive arch readStreamsInfo(header, archive); - if (archive.folders == null || archive.folders.length == 0) { + if (ArrayUtils.isEmpty(archive.folders)) { throw new IOException("no folders, can't read encoded header"); } - if (archive.packSizes == null || archive.packSizes.length == 0) { + if (ArrayUtils.isEmpty(archive.packSizes)) { throw new IOException("no packed streams, can't read encoded header"); } diff --git a/src/main/java/org/apache/commons/compress/archivers/zip/PKWareExtraHeader.java b/src/main/java/org/apache/commons/compress/archivers/zip/PKWareExtraHeader.java index 6526d80bb..981f7e001 100644 --- a/src/main/java/org/apache/commons/compress/archivers/zip/PKWareExtraHeader.java +++ b/src/main/java/org/apache/commons/compress/archivers/zip/PKWareExtraHeader.java @@ -24,6 +24,8 @@ import java.util.Map; import java.util.zip.ZipException; +import org.apache.commons.lang3.ArrayUtils; + /** * Base class for all PKWare strong crypto extra headers. * @@ -335,7 +337,7 @@ public byte[] getLocalFileDataData() { */ @Override public ZipShort getLocalFileDataLength() { - return new ZipShort(localData != null ? localData.length : 0); + return new ZipShort(ArrayUtils.getLength(localData)); } /** diff --git a/src/main/java/org/apache/commons/compress/archivers/zip/UnparseableExtraFieldData.java b/src/main/java/org/apache/commons/compress/archivers/zip/UnparseableExtraFieldData.java index 5b30d2997..edece2c7d 100644 --- a/src/main/java/org/apache/commons/compress/archivers/zip/UnparseableExtraFieldData.java +++ b/src/main/java/org/apache/commons/compress/archivers/zip/UnparseableExtraFieldData.java @@ -20,6 +20,8 @@ import java.util.Arrays; +import org.apache.commons.lang3.ArrayUtils; + /** * Wrapper for extra field data that doesn't conform to the recommended format of header-tag + size + data. * @@ -84,7 +86,7 @@ public byte[] getLocalFileDataData() { */ @Override public ZipShort getLocalFileDataLength() { - return new ZipShort(localFileData == null ? 0 : localFileData.length); + return new ZipShort(ArrayUtils.getLength(localFileData)); } /** diff --git a/src/main/java/org/apache/commons/compress/archivers/zip/UnrecognizedExtraField.java b/src/main/java/org/apache/commons/compress/archivers/zip/UnrecognizedExtraField.java index 5b6306792..b46cf0aae 100644 --- a/src/main/java/org/apache/commons/compress/archivers/zip/UnrecognizedExtraField.java +++ b/src/main/java/org/apache/commons/compress/archivers/zip/UnrecognizedExtraField.java @@ -20,6 +20,8 @@ import java.util.Arrays; +import org.apache.commons.lang3.ArrayUtils; + /** * Simple placeholder for all those extra fields we don't want to deal with. * @@ -99,7 +101,7 @@ public byte[] getLocalFileDataData() { */ @Override public ZipShort getLocalFileDataLength() { - return new ZipShort(localData != null ? localData.length : 0); + return new ZipShort(ArrayUtils.getLength(localData)); } /** diff --git a/src/main/java/org/apache/commons/compress/archivers/zip/X7875_NewUnix.java b/src/main/java/org/apache/commons/compress/archivers/zip/X7875_NewUnix.java index deada8565..8ac2ffecf 100644 --- a/src/main/java/org/apache/commons/compress/archivers/zip/X7875_NewUnix.java +++ b/src/main/java/org/apache/commons/compress/archivers/zip/X7875_NewUnix.java @@ -27,6 +27,7 @@ import java.util.zip.ZipException; import org.apache.commons.compress.utils.ByteUtils; +import org.apache.commons.lang3.ArrayUtils; /** * An extra field that stores Unix UID/GID data (owner & group ownership) for a given ZIP entry. We're using the field definition given in Info-Zip's source @@ -194,22 +195,19 @@ public ZipShort getHeaderId() { public byte[] getLocalFileDataData() { byte[] uidBytes = uid.toByteArray(); byte[] gidBytes = gid.toByteArray(); - // BigInteger might prepend a leading-zero to force a positive representation // (for example, so that the sign-bit is set to zero). We need to remove that // before sending the number over the wire. uidBytes = trimLeadingZeroesForceMinLength(uidBytes); - final int uidBytesLen = uidBytes != null ? uidBytes.length : 0; + final int uidBytesLen = ArrayUtils.getLength(uidBytes); gidBytes = trimLeadingZeroesForceMinLength(gidBytes); - final int gidBytesLen = gidBytes != null ? gidBytes.length : 0; - + final int gidBytesLen = ArrayUtils.getLength(gidBytes); // Couldn't bring myself to just call getLocalFileDataLength() when we've // already got the arrays right here. Yeah, yeah, I know, premature // optimization is the root of all... // // The 3 comes from: version=1 + uidsize=1 + gidsize=1 final byte[] data = new byte[3 + uidBytesLen + gidBytesLen]; - // reverse() switches byte array from big-endian to little-endian. if (uidBytes != null) { reverse(uidBytes); @@ -217,7 +215,6 @@ public byte[] getLocalFileDataData() { if (gidBytes != null) { reverse(gidBytes); } - int pos = 0; data[pos++] = unsignedIntToSignedByte(version); data[pos++] = unsignedIntToSignedByte(uidBytesLen); @@ -240,10 +237,9 @@ public byte[] getLocalFileDataData() { @Override public ZipShort getLocalFileDataLength() { byte[] b = trimLeadingZeroesForceMinLength(uid.toByteArray()); - final int uidSize = b == null ? 0 : b.length; + final int uidSize = ArrayUtils.getLength(b); b = trimLeadingZeroesForceMinLength(gid.toByteArray()); - final int gidSize = b == null ? 0 : b.length; - + final int gidSize = ArrayUtils.getLength(b); // The 3 comes from: version=1 + uidsize=1 + gidsize=1 return new ZipShort(3 + uidSize + gidSize); } diff --git a/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java b/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java index 6a18f6310..190c95bbb 100644 --- a/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java +++ b/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java @@ -40,6 +40,7 @@ import org.apache.commons.compress.archivers.EntryStreamOffsets; import org.apache.commons.compress.utils.ByteUtils; import org.apache.commons.io.file.attribute.FileTimes; +import org.apache.commons.lang3.ArrayUtils; /** * Extension that adds better handling of extra fields and provides access to the internal and external file attributes. @@ -509,7 +510,7 @@ public void addAsFirstExtraField(final ZipExtraField ze) { internalRemoveExtraField(ze.getHeaderId()); } final ZipExtraField[] copy = extraFields; - final int newLen = extraFields != null ? extraFields.length + 1 : 1; + final int newLen = ArrayUtils.getLength(extraFields) + 1; extraFields = new ZipExtraField[newLen]; extraFields[0] = ze; if (copy != null) { @@ -767,7 +768,7 @@ public ZipExtraField[] getExtraFields(final ExtraFieldParsingBehavior parsingBeh } if (c != null) { final byte[] cd = c.getCentralDirectoryData(); - if (cd != null && cd.length > 0) { + if (!ArrayUtils.isEmpty(cd)) { l.parseFromCentralDirectoryData(cd, 0, cd.length); } centralFields.remove(c);