COMPRESS-416 Add signed 32bit int constructor and accessor to ZipLong Signed-off-by: Simon Spero <sesunc...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/commons-compress/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-compress/commit/d0595b71 Tree: http://git-wip-us.apache.org/repos/asf/commons-compress/tree/d0595b71 Diff: http://git-wip-us.apache.org/repos/asf/commons-compress/diff/d0595b71 Branch: refs/heads/master Commit: d0595b7121f57f1f49fe7fdc384479dd73ad64f5 Parents: 992911d Author: Simon Spero <sesunc...@gmail.com> Authored: Mon Jul 3 18:24:55 2017 -0400 Committer: Stefan Bodewig <bode...@apache.org> Committed: Tue Jul 4 08:51:32 2017 +0200 ---------------------------------------------------------------------- .../commons/compress/archivers/zip/ZipLong.java | 18 ++++++++++++++++-- .../compress/archivers/zip/ZipLongTest.java | 13 ++++++++++--- 2 files changed, 26 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-compress/blob/d0595b71/src/main/java/org/apache/commons/compress/archivers/zip/ZipLong.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/compress/archivers/zip/ZipLong.java b/src/main/java/org/apache/commons/compress/archivers/zip/ZipLong.java index 2976183..07da7d5 100644 --- a/src/main/java/org/apache/commons/compress/archivers/zip/ZipLong.java +++ b/src/main/java/org/apache/commons/compress/archivers/zip/ZipLong.java @@ -17,10 +17,10 @@ */ package org.apache.commons.compress.archivers.zip; -import java.io.Serializable; - import org.apache.commons.compress.utils.ByteUtils; +import java.io.Serializable; + import static org.apache.commons.compress.archivers.zip.ZipConstants.WORD; /** @@ -82,6 +82,14 @@ public final class ZipLong implements Cloneable, Serializable { } /** + * create instance from a java int. + * @param value + */ + public ZipLong(int value) { + this.value = value; + } + + /** * Create instance from bytes. * @param bytes the bytes to store as a ZipLong */ @@ -115,6 +123,12 @@ public final class ZipLong implements Cloneable, Serializable { } /** + * Get value as a (signed) java int + * @return + */ + public int getIntValue() { return (int)value;} + + /** * Get value as four bytes in big endian byte order. * @param value the value to convert * @return value as four bytes in big endian byte order http://git-wip-us.apache.org/repos/asf/commons-compress/blob/d0595b71/src/test/java/org/apache/commons/compress/archivers/zip/ZipLongTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/compress/archivers/zip/ZipLongTest.java b/src/test/java/org/apache/commons/compress/archivers/zip/ZipLongTest.java index f72d886..75709fd 100644 --- a/src/test/java/org/apache/commons/compress/archivers/zip/ZipLongTest.java +++ b/src/test/java/org/apache/commons/compress/archivers/zip/ZipLongTest.java @@ -18,10 +18,10 @@ package org.apache.commons.compress.archivers.zip; -import static org.junit.Assert.*; - import org.junit.Test; +import static org.junit.Assert.*; + /** * JUnit testcases for org.apache.commons.compress.archivers.zip.ZipLong. * @@ -90,8 +90,15 @@ public class ZipLongTest { */ @Test public void testSign() { - final ZipLong zl = new ZipLong(new byte[] {(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF}); + ZipLong zl = new ZipLong(new byte[] {(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF}); assertEquals(0x00000000FFFFFFFFl, zl.getValue()); + assertEquals(-1,zl.getIntValue()); + + zl = new ZipLong(0xFFFF_FFFFL); + assertEquals(0x00000000FFFFFFFFl, zl.getValue()); + zl = new ZipLong(0xFFFF_FFFF); + assertEquals(0xFFFF_FFFF_FFFF_FFFFL, zl.getValue()); + } @Test