diff options
author | Lasse Collin <lasse.collin@tukaani.org> | 2017-10-12 20:00:23 +0300 |
---|---|---|
committer | Lasse Collin <lasse.collin@tukaani.org> | 2017-12-16 17:34:30 +0200 |
commit | 718d2a32cf3d5c850daf16d7461bceb6a753692a (patch) | |
tree | a271ec2e4553c5160e7dd8e8c397e85ae64e386a | |
parent | c9977ef12b482d621622d14dd3e75e7416c2bd7c (diff) | |
download | xz-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.java | 5 | ||||
-rw-r--r-- | src/org/tukaani/xz/ARMThumbOptions.java | 5 | ||||
-rw-r--r-- | src/org/tukaani/xz/DeltaOptions.java | 5 | ||||
-rw-r--r-- | src/org/tukaani/xz/FilterOptions.java | 30 | ||||
-rw-r--r-- | src/org/tukaani/xz/IA64Options.java | 5 | ||||
-rw-r--r-- | src/org/tukaani/xz/LZMA2Options.java | 6 | ||||
-rw-r--r-- | src/org/tukaani/xz/PowerPCOptions.java | 5 | ||||
-rw-r--r-- | src/org/tukaani/xz/SPARCOptions.java | 5 | ||||
-rw-r--r-- | src/org/tukaani/xz/X86Options.java | 5 |
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)); } |