org.eclipse.jgit.archive.Tbz2Format Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.eclipse.jgit.archive Show documentation
Show all versions of org.eclipse.jgit.archive Show documentation
Support for archiving a Git tree in formats such as zip and tar.
This is a separate bundle from org.eclipse.jgit to avoid a
dependency by the latter on commons-compress.
/*
* Copyright (C) 2013 Google Inc. and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0 which is available at
* https://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
package org.eclipse.jgit.archive;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.apache.commons.compress.archivers.ArchiveOutputStream;
import org.apache.commons.compress.compressors.bzip2.BZip2CompressorOutputStream;
import org.eclipse.jgit.api.ArchiveCommand;
import org.eclipse.jgit.lib.FileMode;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.ObjectLoader;
/**
* bzip2-compressed tarball (tar.bz2) format.
*/
public final class Tbz2Format extends BaseFormat implements
ArchiveCommand.Format {
private static final List SUFFIXES = Collections
.unmodifiableList(Arrays.asList(".tar.bz2", ".tbz", ".tbz2")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
private final ArchiveCommand.Format tarFormat = new TarFormat();
/** {@inheritDoc} */
@Override
public ArchiveOutputStream createArchiveOutputStream(OutputStream s)
throws IOException {
return createArchiveOutputStream(s,
Collections. emptyMap());
}
/** {@inheritDoc} */
@Override
public ArchiveOutputStream createArchiveOutputStream(OutputStream s,
Map o) throws IOException {
BZip2CompressorOutputStream out;
int compressionLevel = getCompressionLevel(o);
if (compressionLevel != -1) {
out = new BZip2CompressorOutputStream(s, compressionLevel);
} else {
out = new BZip2CompressorOutputStream(s);
}
return tarFormat.createArchiveOutputStream(out, o);
}
/** {@inheritDoc} */
@Override
public void putEntry(ArchiveOutputStream out,
ObjectId tree, String path, FileMode mode, ObjectLoader loader)
throws IOException {
tarFormat.putEntry(out, tree, path, mode, loader);
}
/** {@inheritDoc} */
@Override
public Iterable suffixes() {
return SUFFIXES;
}
/** {@inheritDoc} */
@Override
public boolean equals(Object other) {
return (other instanceof Tbz2Format);
}
/** {@inheritDoc} */
@Override
public int hashCode() {
return getClass().hashCode();
}
}