aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLasse Collin <lasse.collin@tukaani.org>2017-10-12 20:00:23 +0300
committerLasse Collin <lasse.collin@tukaani.org>2017-12-16 17:34:30 +0200
commit718d2a32cf3d5c850daf16d7461bceb6a753692a (patch)
treea271ec2e4553c5160e7dd8e8c397e85ae64e386a
parentc9977ef12b482d621622d14dd3e75e7416c2bd7c (diff)
downloadxz-java-718d2a32cf3d5c850daf16d7461bceb6a753692a.tar.gz
Add support for ArrayCache to FilterOptions and its subclasses.
Note that nothing actually uses caching yet. Subclasses must now support ArrayCache: - getOutputStream(out) -> getOutputStream(out, arrayCache) - getInputStream(in) -> getInputStream(in, arrayCache) FilterOptions now provides the old getOutputStream(out) and getInputStream(in) as wrappers that use the default array cache.
-rw-r--r--src/org/tukaani/xz/ARMOptions.java5
-rw-r--r--src/org/tukaani/xz/ARMThumbOptions.java5
-rw-r--r--src/org/tukaani/xz/DeltaOptions.java5
-rw-r--r--src/org/tukaani/xz/FilterOptions.java30
-rw-r--r--src/org/tukaani/xz/IA64Options.java5
-rw-r--r--src/org/tukaani/xz/LZMA2Options.java6
-rw-r--r--src/org/tukaani/xz/PowerPCOptions.java5
-rw-r--r--src/org/tukaani/xz/SPARCOptions.java5
-rw-r--r--src/org/tukaani/xz/X86Options.java5
9 files changed, 52 insertions, 19 deletions
diff --git a/src/org/tukaani/xz/ARMOptions.java b/src/org/tukaani/xz/ARMOptions.java
index 9577101..a3c6426 100644
--- a/src/org/tukaani/xz/ARMOptions.java
+++ b/src/org/tukaani/xz/ARMOptions.java
@@ -22,11 +22,12 @@ public class ARMOptions extends BCJOptions {
super(ALIGNMENT);
}
- public FinishableOutputStream getOutputStream(FinishableOutputStream out) {
+ public FinishableOutputStream getOutputStream(FinishableOutputStream out,
+ ArrayCache arrayCache) {
return new SimpleOutputStream(out, new ARM(true, startOffset));
}
- public InputStream getInputStream(InputStream in) {
+ public InputStream getInputStream(InputStream in, ArrayCache arrayCache) {
return new SimpleInputStream(in, new ARM(false, startOffset));
}
diff --git a/src/org/tukaani/xz/ARMThumbOptions.java b/src/org/tukaani/xz/ARMThumbOptions.java
index 60eb6ec..4dcfbe4 100644
--- a/src/org/tukaani/xz/ARMThumbOptions.java
+++ b/src/org/tukaani/xz/ARMThumbOptions.java
@@ -22,11 +22,12 @@ public class ARMThumbOptions extends BCJOptions {
super(ALIGNMENT);
}
- public FinishableOutputStream getOutputStream(FinishableOutputStream out) {
+ public FinishableOutputStream getOutputStream(FinishableOutputStream out,
+ ArrayCache arrayCache) {
return new SimpleOutputStream(out, new ARMThumb(true, startOffset));
}
- public InputStream getInputStream(InputStream in) {
+ public InputStream getInputStream(InputStream in, ArrayCache arrayCache) {
return new SimpleInputStream(in, new ARMThumb(false, startOffset));
}
diff --git a/src/org/tukaani/xz/DeltaOptions.java b/src/org/tukaani/xz/DeltaOptions.java
index 145130b..fac74d9 100644
--- a/src/org/tukaani/xz/DeltaOptions.java
+++ b/src/org/tukaani/xz/DeltaOptions.java
@@ -75,7 +75,8 @@ public class DeltaOptions extends FilterOptions {
return DeltaOutputStream.getMemoryUsage();
}
- public FinishableOutputStream getOutputStream(FinishableOutputStream out) {
+ public FinishableOutputStream getOutputStream(FinishableOutputStream out,
+ ArrayCache arrayCache) {
return new DeltaOutputStream(out, this);
}
@@ -83,7 +84,7 @@ public class DeltaOptions extends FilterOptions {
return 1;
}
- public InputStream getInputStream(InputStream in) {
+ public InputStream getInputStream(InputStream in, ArrayCache arrayCache) {
return new DeltaInputStream(in, distance);
}
diff --git a/src/org/tukaani/xz/FilterOptions.java b/src/org/tukaani/xz/FilterOptions.java
index a2398b4..34f4450 100644
--- a/src/org/tukaani/xz/FilterOptions.java
+++ b/src/org/tukaani/xz/FilterOptions.java
@@ -58,9 +58,23 @@ public abstract class FilterOptions implements Cloneable {
* the compressed data in the .xz container format instead of using
* a raw stream. To use this filter in a .xz file, pass this object
* to XZOutputStream.
+ * <p>
+ * This is uses ArrayCache.getDefaultCache() as the ArrayCache.
+ */
+ public FinishableOutputStream getOutputStream(FinishableOutputStream out) {
+ return getOutputStream(out, ArrayCache.getDefaultCache());
+ }
+
+ /**
+ * Gets a raw (no XZ headers) encoder output stream using these options
+ * and the given ArrayCache.
+ * Raw streams are an advanced feature. In most cases you want to store
+ * the compressed data in the .xz container format instead of using
+ * a raw stream. To use this filter in a .xz file, pass this object
+ * to XZOutputStream.
*/
public abstract FinishableOutputStream getOutputStream(
- FinishableOutputStream out);
+ FinishableOutputStream out, ArrayCache arrayCache);
/**
* Gets how much memory the decoder will need to decompress the data
@@ -70,9 +84,19 @@ public abstract class FilterOptions implements Cloneable {
/**
* Gets a raw (no XZ headers) decoder input stream using these options.
+ * <p>
+ * This is uses ArrayCache.getDefaultCache() as the ArrayCache.
+ */
+ public InputStream getInputStream(InputStream in) throws IOException {
+ return getInputStream(in, ArrayCache.getDefaultCache());
+ }
+
+ /**
+ * Gets a raw (no XZ headers) decoder input stream using these options
+ * and the given ArrayCache.
*/
- public abstract InputStream getInputStream(InputStream in)
- throws IOException;
+ public abstract InputStream getInputStream(
+ InputStream in, ArrayCache arrayCache) throws IOException;
abstract FilterEncoder getFilterEncoder();
diff --git a/src/org/tukaani/xz/IA64Options.java b/src/org/tukaani/xz/IA64Options.java
index ba57870..491edcf 100644
--- a/src/org/tukaani/xz/IA64Options.java
+++ b/src/org/tukaani/xz/IA64Options.java
@@ -22,11 +22,12 @@ public class IA64Options extends BCJOptions {
super(ALIGNMENT);
}
- public FinishableOutputStream getOutputStream(FinishableOutputStream out) {
+ public FinishableOutputStream getOutputStream(FinishableOutputStream out,
+ ArrayCache arrayCache) {
return new SimpleOutputStream(out, new IA64(true, startOffset));
}
- public InputStream getInputStream(InputStream in) {
+ public InputStream getInputStream(InputStream in, ArrayCache arrayCache) {
return new SimpleInputStream(in, new IA64(false, startOffset));
}
diff --git a/src/org/tukaani/xz/LZMA2Options.java b/src/org/tukaani/xz/LZMA2Options.java
index 9f113f1..11d4870 100644
--- a/src/org/tukaani/xz/LZMA2Options.java
+++ b/src/org/tukaani/xz/LZMA2Options.java
@@ -529,7 +529,8 @@ public class LZMA2Options extends FilterOptions {
: LZMA2OutputStream.getMemoryUsage(this);
}
- public FinishableOutputStream getOutputStream(FinishableOutputStream out) {
+ public FinishableOutputStream getOutputStream(FinishableOutputStream out,
+ ArrayCache arrayCache) {
if (mode == MODE_UNCOMPRESSED)
return new UncompressedLZMA2OutputStream(out);
@@ -562,7 +563,8 @@ public class LZMA2Options extends FilterOptions {
return LZMA2InputStream.getMemoryUsage(d + 1);
}
- public InputStream getInputStream(InputStream in) throws IOException {
+ public InputStream getInputStream(InputStream in, ArrayCache arrayCache)
+ throws IOException {
return new LZMA2InputStream(in, dictSize, presetDict);
}
diff --git a/src/org/tukaani/xz/PowerPCOptions.java b/src/org/tukaani/xz/PowerPCOptions.java
index f36d361..9b6fce1 100644
--- a/src/org/tukaani/xz/PowerPCOptions.java
+++ b/src/org/tukaani/xz/PowerPCOptions.java
@@ -22,11 +22,12 @@ public class PowerPCOptions extends BCJOptions {
super(ALIGNMENT);
}
- public FinishableOutputStream getOutputStream(FinishableOutputStream out) {
+ public FinishableOutputStream getOutputStream(FinishableOutputStream out,
+ ArrayCache arrayCache) {
return new SimpleOutputStream(out, new PowerPC(true, startOffset));
}
- public InputStream getInputStream(InputStream in) {
+ public InputStream getInputStream(InputStream in, ArrayCache arrayCache) {
return new SimpleInputStream(in, new PowerPC(false, startOffset));
}
diff --git a/src/org/tukaani/xz/SPARCOptions.java b/src/org/tukaani/xz/SPARCOptions.java
index 0f20677..a49dd9e 100644
--- a/src/org/tukaani/xz/SPARCOptions.java
+++ b/src/org/tukaani/xz/SPARCOptions.java
@@ -22,11 +22,12 @@ public class SPARCOptions extends BCJOptions {
super(ALIGNMENT);
}
- public FinishableOutputStream getOutputStream(FinishableOutputStream out) {
+ public FinishableOutputStream getOutputStream(FinishableOutputStream out,
+ ArrayCache arrayCache) {
return new SimpleOutputStream(out, new SPARC(true, startOffset));
}
- public InputStream getInputStream(InputStream in) {
+ public InputStream getInputStream(InputStream in, ArrayCache arrayCache) {
return new SimpleInputStream(in, new SPARC(false, startOffset));
}
diff --git a/src/org/tukaani/xz/X86Options.java b/src/org/tukaani/xz/X86Options.java
index e6d241f..671ec6d 100644
--- a/src/org/tukaani/xz/X86Options.java
+++ b/src/org/tukaani/xz/X86Options.java
@@ -22,11 +22,12 @@ public class X86Options extends BCJOptions {
super(ALIGNMENT);
}
- public FinishableOutputStream getOutputStream(FinishableOutputStream out) {
+ public FinishableOutputStream getOutputStream(FinishableOutputStream out,
+ ArrayCache arrayCache) {
return new SimpleOutputStream(out, new X86(true, startOffset));
}
- public InputStream getInputStream(InputStream in) {
+ public InputStream getInputStream(InputStream in, ArrayCache arrayCache) {
return new SimpleInputStream(in, new X86(false, startOffset));
}