You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by bo...@apache.org on 2013/07/08 17:09:16 UTC
svn commit: r1500788 - in /commons/proper/compress/trunk/src:
changes/changes.xml
main/java/org/apache/commons/compress/archivers/tar/TarBuffer.java
Author: bodewig
Date: Mon Jul 8 15:09:16 2013
New Revision: 1500788
URL: http://svn.apache.org/r1500788
Log:
COMPRESS-233 performance and readability tweak for TarBuffer
Modified:
commons/proper/compress/trunk/src/changes/changes.xml
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarBuffer.java
Modified: commons/proper/compress/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/changes/changes.xml?rev=1500788&r1=1500787&r2=1500788&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/changes/changes.xml (original)
+++ commons/proper/compress/trunk/src/changes/changes.xml Mon Jul 8 15:09:16 2013
@@ -80,6 +80,10 @@ The <action> type attribute can be add,u
due-to="BELUGA BEHR">
Readabilty patch to TarArchiveInputStream.
</action>
+ <action type="update" date="2013-07-08" issue="COMPRESS-233"
+ due-to="BELUGA BEHR">
+ Performance and readability patch to TarBuffer.
+ </action>
</release>
<release version="1.5" date="2013-03-14"
description="Release 1.5">
Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarBuffer.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarBuffer.java?rev=1500788&r1=1500787&r2=1500788&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarBuffer.java (original)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarBuffer.java Mon Jul 8 15:09:16 2013
@@ -44,6 +44,8 @@ class TarBuffer { // Not public, because
/** Default block size */
public static final int DEFAULT_BLKSIZE = (DEFAULT_RCDSIZE * 20);
+ private static final byte[] DEFAULT_EOF_RECORD = new byte[DEFAULT_RCDSIZE];
+
// TODO make these final? (would need to change close() method)
private InputStream inStream;
private OutputStream outStream;
@@ -51,6 +53,7 @@ class TarBuffer { // Not public, because
private final int recordSize;
private final int recsPerBlock;
private final byte[] blockBuffer;
+ private final byte[] eofRecord;
private int currBlkIdx;
private int currRecIdx;
@@ -119,6 +122,8 @@ class TarBuffer { // Not public, because
this.recordSize = recordSize;
this.recsPerBlock = (this.blockSize / this.recordSize);
this.blockBuffer = new byte[this.blockSize];
+ this.eofRecord = recordSize == DEFAULT_RCDSIZE
+ ? DEFAULT_EOF_RECORD : new byte[recordSize];
if (this.inStream != null) {
this.currBlkIdx = -1;
@@ -153,14 +158,7 @@ class TarBuffer { // Not public, because
* @return true if the record data is an End of Archive
*/
public boolean isEOFRecord(byte[] record) {
- if (record != null) {
- for (int i = 0, sz = getRecordSize(); i < sz; ++i) {
- if (record[i] != 0) {
- return false;
- }
- }
- }
- return true;
+ return record == null || Arrays.equals(record, eofRecord);
}
/**