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 3a1b9cb9662a76a4a8aa6b8f460854ae8e976f24 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Fri Feb 2 13:43:08 2024 -0500 Make org.apache.commons.compress.archivers.sevenz.StreamMap ivars final --- .../compress/archivers/sevenz/SevenZFile.java | 35 ++++++++++------------ .../compress/archivers/sevenz/StreamMap.java | 15 +++++++--- 2 files changed, 26 insertions(+), 24 deletions(-) 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 492b35cab..0fad4fb2e 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 @@ -825,36 +825,32 @@ public class SevenZFile implements Closeable { } private void calculateStreamMap(final Archive archive) throws IOException { - final StreamMap streamMap = new StreamMap(); - int nextFolderPackStreamIndex = 0; final int numFolders = archive.folders != null ? archive.folders.length : 0; - streamMap.folderFirstPackStreamIndex = new int[numFolders]; + final int[] folderFirstPackStreamIndex = new int[numFolders]; for (int i = 0; i < numFolders; i++) { - streamMap.folderFirstPackStreamIndex[i] = nextFolderPackStreamIndex; + folderFirstPackStreamIndex[i] = nextFolderPackStreamIndex; nextFolderPackStreamIndex += archive.folders[i].packedStreams.length; } - long nextPackStreamOffset = 0; final int numPackSizes = archive.packSizes.length; - streamMap.packStreamOffsets = new long[numPackSizes]; + final long[] packStreamOffsets = new long[numPackSizes]; for (int i = 0; i < numPackSizes; i++) { - streamMap.packStreamOffsets[i] = nextPackStreamOffset; + packStreamOffsets[i] = nextPackStreamOffset; nextPackStreamOffset += archive.packSizes[i]; } - - streamMap.folderFirstFileIndex = new int[numFolders]; - streamMap.fileFolderIndex = new int[archive.files.length]; + final int[] folderFirstFileIndex = new int[numFolders]; + final int[] fileFolderIndex = new int[archive.files.length]; int nextFolderIndex = 0; int nextFolderUnpackStreamIndex = 0; for (int i = 0; i < archive.files.length; i++) { if (!archive.files[i].hasStream() && nextFolderUnpackStreamIndex == 0) { - streamMap.fileFolderIndex[i] = -1; + fileFolderIndex[i] = -1; continue; } if (nextFolderUnpackStreamIndex == 0) { for (; nextFolderIndex < archive.folders.length; ++nextFolderIndex) { - streamMap.folderFirstFileIndex[nextFolderIndex] = i; + folderFirstFileIndex[nextFolderIndex] = i; if (archive.folders[nextFolderIndex].numUnpackSubStreams > 0) { break; } @@ -863,7 +859,7 @@ public class SevenZFile implements Closeable { throw new IOException("Too few folders in archive"); } } - streamMap.fileFolderIndex[i] = nextFolderIndex; + fileFolderIndex[i] = nextFolderIndex; if (!archive.files[i].hasStream()) { continue; } @@ -873,8 +869,7 @@ public class SevenZFile implements Closeable { nextFolderUnpackStreamIndex = 0; } } - - archive.streamMap = streamMap; + archive.streamMap = new StreamMap(folderFirstPackStreamIndex, packStreamOffsets, folderFirstFileIndex, fileFolderIndex); } private void checkEntryIsInitialized(final Map<Integer, SevenZArchiveEntry> archiveEntries, final int index) { @@ -1543,16 +1538,16 @@ public class SevenZFile implements Closeable { // built-in CRC check try (DataInputStream dataInputStream = new DataInputStream( new CRC32VerifyingInputStream(new BoundedSeekableByteChannelInputStream(channel, 20), 20, startHeaderCrc))) { - long nextHeaderOffset = Long.reverseBytes(dataInputStream.readLong()); + final long nextHeaderOffset = Long.reverseBytes(dataInputStream.readLong()); if (nextHeaderOffset < 0 || nextHeaderOffset + SIGNATURE_HEADER_SIZE > channel.size()) { throw new IOException("nextHeaderOffset is out of bounds"); } - long nextHeaderSize = Long.reverseBytes(dataInputStream.readLong()); + final long nextHeaderSize = Long.reverseBytes(dataInputStream.readLong()); final long nextHeaderEnd = nextHeaderOffset + nextHeaderSize; if (nextHeaderEnd < nextHeaderOffset || nextHeaderEnd + SIGNATURE_HEADER_SIZE > channel.size()) { throw new IOException("nextHeaderSize is out of bounds"); } - long nextHeaderCrc = 0xffffFFFFL & Integer.reverseBytes(dataInputStream.readInt()); + final long nextHeaderCrc = 0xffffFFFFL & Integer.reverseBytes(dataInputStream.readInt()); return new StartHeader(nextHeaderOffset, nextHeaderSize, nextHeaderCrc); } } @@ -2216,8 +2211,8 @@ public class SevenZFile implements Closeable { if (nid == NID.kEncodedHeader || nid == NID.kHeader) { try { // Try to initialize Archive structure from here - long nextHeaderOffset = pos - previousDataSize; - long nextHeaderSize = channel.size() - pos; + final long nextHeaderOffset = pos - previousDataSize; + final long nextHeaderSize = channel.size() - pos; final StartHeader startHeader = new StartHeader(nextHeaderOffset, nextHeaderSize, 0); final Archive result = initializeArchive(startHeader, password, false); // Sanity check: There must be some data... diff --git a/src/main/java/org/apache/commons/compress/archivers/sevenz/StreamMap.java b/src/main/java/org/apache/commons/compress/archivers/sevenz/StreamMap.java index 1647e963c..f527daebe 100644 --- a/src/main/java/org/apache/commons/compress/archivers/sevenz/StreamMap.java +++ b/src/main/java/org/apache/commons/compress/archivers/sevenz/StreamMap.java @@ -24,22 +24,29 @@ final class StreamMap { /** * The first Archive.packStream index of each folder. */ - int[] folderFirstPackStreamIndex; + final int[] folderFirstPackStreamIndex; /** * Offset to beginning of this pack stream's data, relative to the beginning of the first pack stream. */ - long[] packStreamOffsets; + final long[] packStreamOffsets; /** * Index of first file for each folder. */ - int[] folderFirstFileIndex; + final int[] folderFirstFileIndex; /** * Index of folder for each file. */ - int[] fileFolderIndex; + final int[] fileFolderIndex; + + StreamMap(final int[] folderFirstPackStreamIndex, final long[] packStreamOffsets, final int[] folderFirstFileIndex, final int[] fileFolderIndex) { + this.folderFirstPackStreamIndex = folderFirstPackStreamIndex; + this.packStreamOffsets = packStreamOffsets; + this.folderFirstFileIndex = folderFirstFileIndex; + this.fileFolderIndex = fileFolderIndex; + } @Override public String toString() {