use of org.apache.commons.compress.compressors.CompressorStreamFactory in project weave by continuuity.
the class KafkaTest method extractKafka.
private static File extractKafka() throws IOException, ArchiveException, CompressorException {
File kafkaExtract = TMP_FOLDER.newFolder();
InputStream kakfaResource = KafkaTest.class.getClassLoader().getResourceAsStream("kafka-0.7.2.tgz");
ArchiveInputStream archiveInput = new ArchiveStreamFactory().createArchiveInputStream(ArchiveStreamFactory.TAR, new CompressorStreamFactory().createCompressorInputStream(CompressorStreamFactory.GZIP, kakfaResource));
try {
ArchiveEntry entry = archiveInput.getNextEntry();
while (entry != null) {
File file = new File(kafkaExtract, entry.getName());
if (entry.isDirectory()) {
file.mkdirs();
} else {
ByteStreams.copy(archiveInput, Files.newOutputStreamSupplier(file));
}
entry = archiveInput.getNextEntry();
}
} finally {
archiveInput.close();
}
return kafkaExtract;
}
use of org.apache.commons.compress.compressors.CompressorStreamFactory in project caffeine by ben-manes.
the class AbstractTraceReader method readFile.
/** Returns the input stream, decompressing if required. */
private InputStream readFile(String filePath) throws IOException {
BufferedInputStream input = new BufferedInputStream(openFile(filePath), BUFFER_SIZE);
input.mark(100);
try {
return new XZInputStream(input);
} catch (IOException e) {
input.reset();
}
try {
return new CompressorStreamFactory().createCompressorInputStream(input);
} catch (CompressorException e) {
input.reset();
}
try {
return new ArchiveStreamFactory().createArchiveInputStream(input);
} catch (ArchiveException e) {
input.reset();
}
return input;
}
use of org.apache.commons.compress.compressors.CompressorStreamFactory in project gitblit by gitblit.
the class CompressionUtils method tar.
/**
* Compresses/archives the contents of the tree at the (optionally)
* specified revision and the (optionally) specified basepath to the
* supplied outputstream.
*
* @param algorithm
* compression algorithm for tar (optional)
* @param repository
* @param basePath
* if unspecified, entire repository is assumed.
* @param objectId
* if unspecified, HEAD is assumed.
* @param os
* @return true if repository was successfully zipped to supplied output
* stream
*/
private static boolean tar(String algorithm, Repository repository, IFilestoreManager filestoreManager, String basePath, String objectId, OutputStream os) {
RevCommit commit = JGitUtils.getCommit(repository, objectId);
if (commit == null) {
return false;
}
OutputStream cos = os;
if (!StringUtils.isEmpty(algorithm)) {
try {
cos = new CompressorStreamFactory().createCompressorOutputStream(algorithm, os);
} catch (CompressorException e1) {
error(e1, repository, "{0} failed to open {1} stream", algorithm);
}
}
boolean success = false;
RevWalk rw = new RevWalk(repository);
TreeWalk tw = new TreeWalk(repository);
try {
tw.reset();
tw.addTree(commit.getTree());
TarArchiveOutputStream tos = new TarArchiveOutputStream(cos);
tos.setAddPaxHeadersForNonAsciiNames(true);
tos.setLongFileMode(TarArchiveOutputStream.LONGFILE_POSIX);
if (!StringUtils.isEmpty(basePath)) {
PathFilter f = PathFilter.create(basePath);
tw.setFilter(f);
}
tw.setRecursive(true);
MutableObjectId id = new MutableObjectId();
long modified = commit.getAuthorIdent().getWhen().getTime();
while (tw.next()) {
FileMode mode = tw.getFileMode(0);
if (mode == FileMode.GITLINK || mode == FileMode.TREE) {
continue;
}
tw.getObjectId(id, 0);
ObjectLoader loader = repository.open(id);
if (FileMode.SYMLINK == mode) {
TarArchiveEntry entry = new TarArchiveEntry(tw.getPathString(), TarArchiveEntry.LF_SYMLINK);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
loader.copyTo(bos);
entry.setLinkName(bos.toString());
entry.setModTime(modified);
tos.putArchiveEntry(entry);
tos.closeArchiveEntry();
} else {
TarArchiveEntry entry = new TarArchiveEntry(tw.getPathString());
entry.setMode(mode.getBits());
entry.setModTime(modified);
FilestoreModel filestoreItem = null;
if (JGitUtils.isPossibleFilestoreItem(loader.getSize())) {
filestoreItem = JGitUtils.getFilestoreItem(tw.getObjectReader().open(id));
}
final long size = (filestoreItem == null) ? loader.getSize() : filestoreItem.getSize();
entry.setSize(size);
tos.putArchiveEntry(entry);
if (filestoreItem == null) {
//Copy repository stored file
loader.copyTo(tos);
} else {
//Copy filestore file
try (FileInputStream streamIn = new FileInputStream(filestoreManager.getStoragePath(filestoreItem.oid))) {
IOUtils.copyLarge(streamIn, tos);
} catch (Throwable e) {
LOGGER.error(MessageFormat.format("Failed to archive filestore item {0}", filestoreItem.oid), e);
//Handle as per other errors
throw e;
}
}
tos.closeArchiveEntry();
}
}
tos.finish();
tos.close();
cos.close();
success = true;
} catch (IOException e) {
error(e, repository, "{0} failed to {1} stream files from commit {2}", algorithm, commit.getName());
} finally {
tw.close();
rw.dispose();
}
return success;
}
use of org.apache.commons.compress.compressors.CompressorStreamFactory in project cloudstack by apache.
the class VhdProcessor method getTemplateVirtualSize.
protected long getTemplateVirtualSize(File file) throws IOException {
byte[] currentSize = new byte[8];
byte[] cookie = new byte[8];
byte[] creatorApp = new byte[4];
BufferedInputStream fileStream = new BufferedInputStream(new FileInputStream(file));
InputStream strm = fileStream;
boolean isCompressed = checkCompressed(file.getAbsolutePath());
if (isCompressed) {
try {
strm = new CompressorStreamFactory().createCompressorInputStream(fileStream);
} catch (CompressorException e) {
s_logger.info("error opening compressed VHD file " + file.getName());
return file.length();
}
}
try {
//read the backup footer present at the top of the VHD file
strm.read(cookie);
if (!new String(cookie).equals(vhdIdentifierCookie)) {
strm.close();
return file.length();
}
long skipped = strm.skip(vhdFooterCreatorAppOffset - vhdCookieOffset);
if (skipped == -1) {
throw new IOException("Unexpected end-of-file");
}
long read = strm.read(creatorApp);
if (read == -1) {
throw new IOException("Unexpected end-of-file");
}
skipped = strm.skip(vhdFooterCurrentSizeOffset - vhdFooterCreatorVerOffset - vhdCookieOffset);
if (skipped == -1) {
throw new IOException("Unexpected end-of-file");
}
read = strm.read(currentSize);
if (read == -1) {
throw new IOException("Unexpected end-of-file");
}
} catch (IOException e) {
s_logger.warn("Error reading virtual size from VHD file " + e.getMessage() + " VHD: " + file.getName());
return file.length();
} finally {
if (strm != null) {
strm.close();
}
}
return NumbersUtil.bytesToLong(currentSize);
}
use of org.apache.commons.compress.compressors.CompressorStreamFactory in project jackrabbit-oak by apache.
the class WikipediaImport method importWikipedia.
public int importWikipedia(Session session) throws Exception {
long start = System.currentTimeMillis();
int count = 0;
int code = 0;
if (doReport) {
System.out.format("Importing %s...%n", dump);
}
String type = "nt:unstructured";
if (session.getWorkspace().getNodeTypeManager().hasNodeType("oak:Unstructured")) {
type = "oak:Unstructured";
}
Node wikipedia = session.getRootNode().addNode("wikipedia", type);
int levels = 0;
if (!flat) {
// estimate that the average XML size of a page is about 1kB
for (long pages = dump.length() / 1024; pages > 256; pages /= 256) {
levels++;
}
}
String title = null;
String text = null;
XMLInputFactory factory = XMLInputFactory.newInstance();
StreamSource source;
if (dump.getName().endsWith(".xml")) {
source = new StreamSource(dump);
} else {
CompressorStreamFactory csf = new CompressorStreamFactory();
source = new StreamSource(csf.createCompressorInputStream(new BufferedInputStream(new FileInputStream(dump))));
}
haltImport = false;
XMLStreamReader reader = factory.createXMLStreamReader(source);
while (reader.hasNext() && !haltImport) {
switch(reader.next()) {
case XMLStreamConstants.START_ELEMENT:
if ("title".equals(reader.getLocalName())) {
title = reader.getElementText();
} else if ("text".equals(reader.getLocalName())) {
text = reader.getElementText();
}
break;
case XMLStreamConstants.END_ELEMENT:
if ("page".equals(reader.getLocalName())) {
String name = Text.escapeIllegalJcrChars(title);
Node parent = wikipedia;
if (levels > 0) {
int n = name.length();
for (int i = 0; i < levels; i++) {
int hash = name.substring(min(i, n)).hashCode();
parent = JcrUtils.getOrAddNode(parent, String.format("%02x", hash & 0xff));
}
}
Node page = parent.addNode(name);
page.setProperty("title", title);
page.setProperty("text", text);
code += title.hashCode();
code += text.hashCode();
count++;
if (count % 1000 == 0) {
batchDone(session, start, count);
}
pageAdded(title, text);
}
break;
}
}
session.save();
if (doReport) {
long millis = System.currentTimeMillis() - start;
System.out.format("Imported %d pages in %d seconds (%.2fms/page)%n", count, millis / 1000, (double) millis / count);
}
return code;
}
Aggregations