You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2024/02/02 19:58:03 UTC
(commons-compress) 07/07: Make org.apache.commons.compress.archivers.sevenz.StreamMap ivars final
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 <ga...@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() {