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 2018/07/28 14:26:22 UTC
[1/2] commons-compress git commit: Allow specifying Zstandard
compression level
Repository: commons-compress
Updated Branches:
refs/heads/master 6f8c4960c -> 792da6735
Allow specifying Zstandard compression level
ZstdCompressorOutputStream allows to compress data using Zstandard, but the default compression level of 3 is hard-coded.
Programs that wish to use a different compression level must reimplement ZstdCompressorOutputStream.
I suggest we add a constructor that takes a compression level and passes it to
`new ZstdOutputStream(...)`.
Project: http://git-wip-us.apache.org/repos/asf/commons-compress/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-compress/commit/c5c231e6
Tree: http://git-wip-us.apache.org/repos/asf/commons-compress/tree/c5c231e6
Diff: http://git-wip-us.apache.org/repos/asf/commons-compress/diff/c5c231e6
Branch: refs/heads/master
Commit: c5c231e643365485c5805cbca81070a51429de9c
Parents: 6f8c496
Author: Carmi Grushko <ca...@fb.com>
Authored: Tue Jul 24 10:30:20 2018 +0300
Committer: Stefan Bodewig <bo...@apache.org>
Committed: Sat Jul 28 16:08:17 2018 +0200
----------------------------------------------------------------------
.../zstandard/ZstdCompressorOutputStream.java | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-compress/blob/c5c231e6/src/main/java/org/apache/commons/compress/compressors/zstandard/ZstdCompressorOutputStream.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/compress/compressors/zstandard/ZstdCompressorOutputStream.java b/src/main/java/org/apache/commons/compress/compressors/zstandard/ZstdCompressorOutputStream.java
index b54dfa7..3a393e9 100644
--- a/src/main/java/org/apache/commons/compress/compressors/zstandard/ZstdCompressorOutputStream.java
+++ b/src/main/java/org/apache/commons/compress/compressors/zstandard/ZstdCompressorOutputStream.java
@@ -34,8 +34,20 @@ public class ZstdCompressorOutputStream extends CompressorOutputStream {
private final ZstdOutputStream encOS;
- public ZstdCompressorOutputStream(final OutputStream out) throws IOException {
- this.encOS = new ZstdOutputStream(out);
+ public ZstdCompressorOutputStream(final OutputStream outStream, int level, boolean closeFrameOnFlush, boolean useChecksum) throws IOException {
+ this.encOS = new ZstdOutputStream(outStream, level, closeFrameOnFlush, useChecksum);
+ }
+
+ public ZstdCompressorOutputStream(final OutputStream outStream, int level, boolean closeFrameOnFlush) throws IOException {
+ this.encOS = new ZstdOutputStream(outStream, level, closeFrameOnFlush);
+ }
+
+ public ZstdCompressorOutputStream(final OutputStream outStream, int level) throws IOException {
+ this.encOS = new ZstdOutputStream(outStream, level);
+ }
+
+ public ZstdCompressorOutputStream(final OutputStream outStream) throws IOException {
+ this.encOS = new ZstdOutputStream(outStream);
}
@Override
[2/2] commons-compress git commit: COMPRESS-460 rudimentary javadocs
and tests
Posted by bo...@apache.org.
COMPRESS-460 rudimentary javadocs and tests
closes #68
Project: http://git-wip-us.apache.org/repos/asf/commons-compress/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-compress/commit/792da673
Tree: http://git-wip-us.apache.org/repos/asf/commons-compress/tree/792da673
Diff: http://git-wip-us.apache.org/repos/asf/commons-compress/diff/792da673
Branch: refs/heads/master
Commit: 792da6735e532a6e7f2f2a017d999a8f7c30f2fe
Parents: c5c231e
Author: Stefan Bodewig <bo...@apache.org>
Authored: Sat Jul 28 16:24:59 2018 +0200
Committer: Stefan Bodewig <bo...@apache.org>
Committed: Sat Jul 28 16:25:18 2018 +0200
----------------------------------------------------------------------
src/changes/changes.xml | 5 +++
.../zstandard/ZstdCompressorOutputStream.java | 33 +++++++++++++-
.../zstandard/ZstdRoundtripTest.java | 45 +++++++++++++++++++-
3 files changed, 80 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-compress/blob/792da673/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index de587a0..bb477f3 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -69,6 +69,11 @@ The <action> type attribute can be add,update,fix,remove.
The cpio stream didn't handle archives using a multi-byte
encoding properly.
</action>
+ <action issue="COMPRESS-460" type="add" date="2018-07-28"
+ due-to="Carmi Grushko">
+ It is now possible to specify the arguments of zstd-jni's
+ ZstdOutputStream constructors via Commons Compress as well.
+ </action>
</release>
<release version="1.17" date="2018-06-03"
description="Release 1.17">
http://git-wip-us.apache.org/repos/asf/commons-compress/blob/792da673/src/main/java/org/apache/commons/compress/compressors/zstandard/ZstdCompressorOutputStream.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/compress/compressors/zstandard/ZstdCompressorOutputStream.java b/src/main/java/org/apache/commons/compress/compressors/zstandard/ZstdCompressorOutputStream.java
index 3a393e9..4027914 100644
--- a/src/main/java/org/apache/commons/compress/compressors/zstandard/ZstdCompressorOutputStream.java
+++ b/src/main/java/org/apache/commons/compress/compressors/zstandard/ZstdCompressorOutputStream.java
@@ -34,18 +34,47 @@ public class ZstdCompressorOutputStream extends CompressorOutputStream {
private final ZstdOutputStream encOS;
- public ZstdCompressorOutputStream(final OutputStream outStream, int level, boolean closeFrameOnFlush, boolean useChecksum) throws IOException {
+ /**
+ * Wraps the given stream into a zstd-jni ZstdOutputStream.
+ * @param level value for zstd-jni's level argument
+ * @param closeFrameOnFlush value for zstd-jni's closeFrameOnFlush argument
+ * @param useChecksum value for zstd-jni's useChecksum argument
+ * @throws IOException if zstd-jni does
+ * @since 1.18
+ */
+ public ZstdCompressorOutputStream(final OutputStream outStream, int level, boolean closeFrameOnFlush,
+ boolean useChecksum) throws IOException {
this.encOS = new ZstdOutputStream(outStream, level, closeFrameOnFlush, useChecksum);
}
- public ZstdCompressorOutputStream(final OutputStream outStream, int level, boolean closeFrameOnFlush) throws IOException {
+ /**
+ * Wraps the given stream into a zstd-jni ZstdOutputStream using the default value for {@code useChecksum}.
+ * @param level value for zstd-jni's level argument
+ * @param closeFrameOnFlush value for zstd-jni's closeFrameOnFlush argument
+ * @throws IOException if zstd-jni does
+ * @since 1.18
+ */
+ public ZstdCompressorOutputStream(final OutputStream outStream, int level, boolean closeFrameOnFlush)
+ throws IOException {
this.encOS = new ZstdOutputStream(outStream, level, closeFrameOnFlush);
}
+ /**
+ * Wraps the given stream into a zstd-jni ZstdOutputStream using the default values for {@code closeFrameOnFlush}
+ * and {@code useChecksum}.
+ * @param level value for zstd-jni's level argument
+ * @throws IOException if zstd-jni does
+ * @since 1.18
+ */
public ZstdCompressorOutputStream(final OutputStream outStream, int level) throws IOException {
this.encOS = new ZstdOutputStream(outStream, level);
}
+ /**
+ * Wraps the given stream into a zstd-jni ZstdOutputStream using the default values for {@code level}, {@code
+ * closeFrameOnFlush} and {@code useChecksum}.
+ * @throws IOException if zstd-jni does
+ */
public ZstdCompressorOutputStream(final OutputStream outStream) throws IOException {
this.encOS = new ZstdOutputStream(outStream);
}
http://git-wip-us.apache.org/repos/asf/commons-compress/blob/792da673/src/test/java/org/apache/commons/compress/compressors/zstandard/ZstdRoundtripTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/compress/compressors/zstandard/ZstdRoundtripTest.java b/src/test/java/org/apache/commons/compress/compressors/zstandard/ZstdRoundtripTest.java
index 3c1469b..6e9dfef 100644
--- a/src/test/java/org/apache/commons/compress/compressors/zstandard/ZstdRoundtripTest.java
+++ b/src/test/java/org/apache/commons/compress/compressors/zstandard/ZstdRoundtripTest.java
@@ -31,14 +31,27 @@ import org.junit.Test;
public class ZstdRoundtripTest extends AbstractTestCase {
+ private interface OutputStreamCreator {
+ ZstdCompressorOutputStream wrap(FileOutputStream os) throws IOException;
+ }
+
@Test
public void directRoundtrip() throws Exception {
+ roundtrip(new OutputStreamCreator() {
+ @Override
+ public ZstdCompressorOutputStream wrap(FileOutputStream os) throws IOException {
+ return new ZstdCompressorOutputStream(os);
+ }
+ });
+ }
+
+ private void roundtrip(OutputStreamCreator oc) throws IOException {
File input = getFile("bla.tar");
long start = System.currentTimeMillis();
final File output = new File(dir, input.getName() + ".zstd");
try (FileInputStream is = new FileInputStream(input);
FileOutputStream os = new FileOutputStream(output);
- ZstdCompressorOutputStream zos = new ZstdCompressorOutputStream(os)) {
+ ZstdCompressorOutputStream zos = oc.wrap(os)) {
IOUtils.copy(is, zos);
}
System.err.println(input.getName() + " written, uncompressed bytes: " + input.length()
@@ -73,4 +86,34 @@ public class ZstdRoundtripTest extends AbstractTestCase {
}
}
+ @Test
+ public void roundtripWithCustomLevel() throws Exception {
+ roundtrip(new OutputStreamCreator() {
+ @Override
+ public ZstdCompressorOutputStream wrap(FileOutputStream os) throws IOException {
+ return new ZstdCompressorOutputStream(os, 1);
+ }
+ });
+ }
+
+ @Test
+ public void roundtripWithCloseFrameOnFlush() throws Exception {
+ roundtrip(new OutputStreamCreator() {
+ @Override
+ public ZstdCompressorOutputStream wrap(FileOutputStream os) throws IOException {
+ return new ZstdCompressorOutputStream(os, 3, true);
+ }
+ });
+ }
+
+ @Test
+ public void roundtripWithChecksum() throws Exception {
+ roundtrip(new OutputStreamCreator() {
+ @Override
+ public ZstdCompressorOutputStream wrap(FileOutputStream os) throws IOException {
+ return new ZstdCompressorOutputStream(os, 3, false, true);
+ }
+ });
+ }
+
}