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 &amp; 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);

Reply via email to