package org.apache.commons.vfs2.provider.bzip2;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
import org.apache.commons.compress.compressors.bzip2.BZip2CompressorOutputStream;
import org.apache.commons.vfs2.FileObject;
import org.apache.commons.vfs2.provider.AbstractFileName;
import org.apache.commons.vfs2.provider.compressed.CompressedFileFileObject;
import org.apache.commons.vfs2.provider.compressed.CompressedFileFileSystem;
public class Bzip2FileObject extends CompressedFileFileObject<Bzip2FileSystem> {
@Deprecated
protected Bzip2FileObject(final AbstractFileName name, final FileObject container,
final CompressedFileFileSystem fs) {
super(name, container, cast(fs));
}
protected Bzip2FileObject(final AbstractFileName name, final FileObject container, final Bzip2FileSystem fs) {
super(name, container, fs);
}
@Override
protected InputStream doGetInputStream() throws Exception {
final InputStream is = getContainer().getContent().getInputStream();
return wrapInputStream(getName().getURI(), is);
}
public static InputStream wrapInputStream(final String name, final InputStream is) throws IOException {
return new BZip2CompressorInputStream(is);
}
@Override
protected OutputStream doGetOutputStream(final boolean bAppend) throws Exception {
final OutputStream os = getContainer().getContent().getOutputStream(false);
return new BZip2CompressorOutputStream(os);
}
private static Bzip2FileSystem cast(final CompressedFileFileSystem fs) {
if (fs instanceof Bzip2FileSystem) {
return (Bzip2FileSystem) fs;
}
throw new IllegalArgumentException("Bzip2FileObject requires a Bzip2FileSystem implementation");
}
}