List of usage examples for org.apache.commons.compress.archivers.tar TarArchiveEntry getName
public String getName()
From source file:org.vafer.jdeb.DebMakerTestCase.java
public void testControlFilesVariables() throws Exception { File deb = new File("target/test-classes/test-control.deb"); if (deb.exists() && !deb.delete()) { fail("Couldn't delete " + deb); }/*from w w w . j av a 2 s .com*/ Map<String, String> variables = new HashMap<String, String>(); variables.put("name", "jdeb"); variables.put("version", "1.0"); Collection<DataProducer> producers = Arrays.asList(new DataProducer[] { new EmptyDataProducer() }); DebMaker maker = new DebMaker(new NullConsole(), producers); maker.setDeb(deb); maker.setControl(new File("target/test-classes/org/vafer/jdeb/deb/control")); maker.setResolver(new MapVariableResolver(variables)); maker.createDeb(Compression.NONE); // now reopen the package and check the control files assertTrue("package not build", deb.exists()); boolean found = ArchiveWalker.walkControl(deb, new ArchiveVisitor<TarArchiveEntry>() { public void visit(TarArchiveEntry entry, byte[] content) throws IOException { if (entry.getName().contains("postinst") || entry.getName().contains("prerm")) { String body = new String(content, "ISO-8859-1"); assertFalse("Variables not replaced in the control file " + entry.getName(), body.contains("[[name]] [[version]]")); assertTrue("Expected variables not found in the control file " + entry.getName(), body.contains("jdeb 1.0")); } } }); assertTrue("Control files not found in the package", found); }
From source file:org.vafer.jdeb.mapping.LsMapper.java
private Map<String, TarArchiveEntry> parse(final InputStream pInput) throws IOException, ParseError { final Map<String, TarArchiveEntry> mapping = new HashMap<String, TarArchiveEntry>(); final BufferedReader reader = new BufferedReader(new InputStreamReader(pInput)); boolean first = true; while (true) { final String base; if (first) { base = ""; first = false;/*from w ww . ja v a 2s.com*/ } else { base = readBase(reader); if (base == null) { break; } } readTotal(reader); final TarArchiveEntry dir = readDir(reader, base); mapping.put(dir.getName(), dir); while (true) { final TarArchiveEntry file = readFile(reader, base); if (file == null) { break; } mapping.put(file.getName(), file); } } return mapping; }
From source file:org.vafer.jdeb.mapping.LsMapper.java
public TarArchiveEntry map(final TarArchiveEntry pEntry) { final TarArchiveEntry entry = mapping.get(pEntry.getName()); if (entry != null) { final TarArchiveEntry newEntry = new TarArchiveEntry(entry.getName(), true); newEntry.setUserId(entry.getUserId()); newEntry.setGroupId(entry.getGroupId()); newEntry.setUserName(entry.getUserName()); newEntry.setGroupName(entry.getGroupName()); newEntry.setMode(entry.getMode()); newEntry.setSize(entry.getSize()); return newEntry; }// w w w . j a v a2 s . c o m return pEntry; }
From source file:org.vafer.jdeb.mapping.PermMapper.java
public TarArchiveEntry map(final TarArchiveEntry entry) { final String name = entry.getName(); final TarArchiveEntry newEntry = new TarArchiveEntry(prefix + '/' + Utils.stripPath(strip, name), true); // Set ownership if (uid > -1) { newEntry.setUserId(uid);/*w ww.j a v a 2 s. c o m*/ } else { newEntry.setUserId(entry.getUserId()); } if (gid > -1) { newEntry.setGroupId(gid); } else { newEntry.setGroupId(entry.getGroupId()); } if (user != null) { newEntry.setUserName(user); } else { newEntry.setUserName(entry.getUserName()); } if (group != null) { newEntry.setGroupName(group); } else { newEntry.setGroupName(entry.getGroupName()); } // Set permissions if (newEntry.isDirectory()) { if (dirMode > -1) { newEntry.setMode(dirMode); } else { newEntry.setMode(entry.getMode()); } } else { if (fileMode > -1) { newEntry.setMode(fileMode); } else { newEntry.setMode(entry.getMode()); } } newEntry.setSize(entry.getSize()); return newEntry; }
From source file:org.vafer.jdeb.producers.DataProducerArchive.java
public void produce(final DataConsumer pReceiver) throws IOException { InputStream is = new BufferedInputStream(new FileInputStream(archive)); CompressorInputStream compressorInputStream = null; try {/*w ww.j a v a 2 s . c o m*/ compressorInputStream = new CompressorStreamFactory().createCompressorInputStream(is); } catch (CompressorException e) { // expected if the input file is a zip archive } if (compressorInputStream != null) { is = new BufferedInputStream(compressorInputStream); } ArchiveInputStream archiveInputStream = null; try { archiveInputStream = new ArchiveStreamFactory().createArchiveInputStream(is); } catch (ArchiveException e) { throw new IOException("Unsupported archive format: " + archive, e); } EntryConverter converter = null; if (archiveInputStream instanceof TarArchiveInputStream) { converter = new EntryConverter() { public TarArchiveEntry convert(ArchiveEntry entry) { TarArchiveEntry src = (TarArchiveEntry) entry; TarArchiveEntry dst = new TarArchiveEntry(src.getName(), true); dst.setSize(src.getSize()); dst.setGroupName(src.getGroupName()); dst.setGroupId(src.getGroupId()); dst.setUserId(src.getUserId()); dst.setMode(src.getMode()); dst.setModTime(src.getModTime()); return dst; } }; } else if (archiveInputStream instanceof ZipArchiveInputStream) { converter = new EntryConverter() { public TarArchiveEntry convert(ArchiveEntry entry) { ZipArchiveEntry src = (ZipArchiveEntry) entry; TarArchiveEntry dst = new TarArchiveEntry(src.getName(), true); dst.setSize(src.getSize()); dst.setMode(src.getUnixMode()); dst.setModTime(src.getTime()); return dst; } }; } else { throw new IOException("Unsupported archive format: " + archive); } try { while (true) { ArchiveEntry archiveEntry = archiveInputStream.getNextEntry(); if (archiveEntry == null) { break; } if (!isIncluded(archiveEntry.getName())) { continue; } TarArchiveEntry entry = converter.convert(archiveEntry); entry = map(entry); if (entry.isDirectory()) { pReceiver.onEachDir(entry.getName(), entry.getLinkName(), entry.getUserName(), entry.getUserId(), entry.getGroupName(), entry.getGroupId(), entry.getMode(), entry.getSize()); continue; } pReceiver.onEachFile(archiveInputStream, entry.getName(), entry.getLinkName(), entry.getUserName(), entry.getUserId(), entry.getGroupName(), entry.getGroupId(), entry.getMode(), entry.getSize()); } } finally { if (archiveInputStream != null) { archiveInputStream.close(); } } }
From source file:org.vafer.jdeb.producers.DataProducerDirectory.java
public void produce(final DataConsumer pReceiver) throws IOException { scanner.scan();/* w w w .j a v a 2 s .c o m*/ final File baseDir = scanner.getBasedir(); for (String dir : scanner.getIncludedDirectories()) { final File file = new File(baseDir, dir); String dirname = getFilename(baseDir, file); if ("".equals(dirname)) { continue; } if (!isIncluded(dirname)) { continue; } if ('/' != File.separatorChar) { dirname = dirname.replace(File.separatorChar, '/'); } if (!dirname.endsWith("/")) { dirname += "/"; } TarArchiveEntry entry = new TarArchiveEntry(dirname, true); entry.setUserId(0); entry.setUserName("root"); entry.setGroupId(0); entry.setGroupName("root"); entry.setMode(TarArchiveEntry.DEFAULT_DIR_MODE); entry = map(entry); entry.setSize(0); pReceiver.onEachDir(entry.getName(), entry.getLinkName(), entry.getUserName(), entry.getUserId(), entry.getGroupName(), entry.getGroupId(), entry.getMode(), entry.getSize()); } for (String f : scanner.getIncludedFiles()) { final File file = new File(baseDir, f); String filename = getFilename(baseDir, file); if (!isIncluded(filename)) { continue; } if ('/' != File.separatorChar) { filename = filename.replace(File.separatorChar, '/'); } TarArchiveEntry entry = new TarArchiveEntry(filename, true); entry.setUserId(0); entry.setUserName("root"); entry.setGroupId(0); entry.setGroupName("root"); entry.setMode(TarArchiveEntry.DEFAULT_FILE_MODE); entry = map(entry); entry.setSize(file.length()); final InputStream inputStream = new FileInputStream(file); try { pReceiver.onEachFile(inputStream, entry.getName(), entry.getLinkName(), entry.getUserName(), entry.getUserId(), entry.getGroupName(), entry.getGroupId(), entry.getMode(), entry.getSize()); } finally { inputStream.close(); } } }
From source file:org.vafer.jdeb.producers.DataProducerFile.java
public void produce(final DataConsumer pReceiver) throws IOException { String fileName;//w w w. ja va2 s . c o m if (destinationName != null && destinationName.trim().length() > 0) { fileName = destinationName.trim(); } else { fileName = file.getName(); } TarArchiveEntry entry = new TarArchiveEntry(fileName, true); entry.setUserId(0); entry.setUserName("root"); entry.setGroupId(0); entry.setGroupName("root"); entry.setMode(TarArchiveEntry.DEFAULT_FILE_MODE); entry = map(entry); entry.setSize(file.length()); final InputStream inputStream = new FileInputStream(file); try { pReceiver.onEachFile(inputStream, entry.getName(), entry.getLinkName(), entry.getUserName(), entry.getUserId(), entry.getGroupName(), entry.getGroupId(), entry.getMode(), entry.getSize()); } finally { inputStream.close(); } }
From source file:org.vafer.jdeb.producers.DataProducerPathTemplate.java
public void produce(DataConsumer pReceiver) throws IOException { for (String literalPath : literalPaths) { TarArchiveEntry entry = new TarArchiveEntry(literalPath, true); entry.setUserId(0);/* w w w . ja v a2s . c o m*/ entry.setUserName("root"); entry.setGroupId(0); entry.setGroupName("root"); entry.setMode(TarArchiveEntry.DEFAULT_DIR_MODE); entry = map(entry); entry.setSize(0); pReceiver.onEachDir(entry.getName(), entry.getLinkName(), entry.getUserName(), entry.getUserId(), entry.getGroupName(), entry.getGroupId(), entry.getMode(), entry.getSize()); } }
From source file:org.vafer.jdeb.producers.Producers.java
/** * Forwards tar archive entry entry to a consumer. * @param consumer the consumer// w ww .j a v a2 s . com * @param entry the entry to pass * @throws IOException */ static void produceDirEntry(final DataConsumer consumer, final TarArchiveEntry entry) throws IOException { consumer.onEachDir(entry.getName(), entry.getLinkName(), entry.getUserName(), entry.getUserId(), entry.getGroupName(), entry.getGroupId(), entry.getMode(), entry.getSize()); }
From source file:org.vafer.jdeb.producers.Producers.java
/** * Feeds input stream to data consumer using metadata from tar entry. * @param consumer the consumer// ww w. ja v a 2s . c o m * @param inputStream the stream to feed * @param entry the entry to use for metadata * @throws IOException on consume error */ static void produceInputStreamWithEntry(final DataConsumer consumer, final InputStream inputStream, final TarArchiveEntry entry) throws IOException { try { consumer.onEachFile(inputStream, entry.getName(), entry.getLinkName(), entry.getUserName(), entry.getUserId(), entry.getGroupName(), entry.getGroupId(), entry.getMode(), entry.getSize()); } finally { IOUtils.closeQuietly(inputStream); } }