This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-compress.git
The following commit(s) were added to refs/heads/master by this push:
new 29481dd Add SevenZOutputFile.createArchiveEntry(Path, String).
29481dd is described below
commit 29481dd09b4b7d0b5ddbcc9ae92db49b9f2fba6a
Author: Gary Gregory <[email protected]>
AuthorDate: Sat Aug 8 16:17:25 2020 -0400
Add SevenZOutputFile.createArchiveEntry(Path, String).
---
src/changes/changes.xml | 3 +++
.../commons/compress/archivers/examples/Archiver.java | 2 +-
.../compress/archivers/sevenz/SevenZOutputFile.java | 19 +++++++++++++++++++
.../archivers/sevenz/SevenZOutputFileTest.java | 11 +++++++++++
4 files changed, 34 insertions(+), 1 deletion(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index cad70d1..777b9d6 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -137,6 +137,9 @@ The <action> type attribute can be add,update,fix,remove.
Add SevenZOutputFile.write(Path, OpenOption...).
</action>
<action type="update" date="2020-08-08" due-to="Gary Gregory"
dev="ggregory">
+ Add SevenZOutputFile.createArchiveEntry(Path, String).
+ </action>
+ <action type="update" date="2020-08-08" due-to="Gary Gregory"
dev="ggregory">
Add Path support to ZipArchiveOutputStream #123.
</action>
<action type="update" date="2020-07-23" due-to="Dependabot"
dev="ggregory">
diff --git
a/src/main/java/org/apache/commons/compress/archivers/examples/Archiver.java
b/src/main/java/org/apache/commons/compress/archivers/examples/Archiver.java
index cf6bfa0..3b10009 100644
--- a/src/main/java/org/apache/commons/compress/archivers/examples/Archiver.java
+++ b/src/main/java/org/apache/commons/compress/archivers/examples/Archiver.java
@@ -167,7 +167,7 @@ public class Archiver {
Objects.requireNonNull(attrs);
final String name =
directory.relativize(path).toString().replace('\\', '/');
if (!name.isEmpty()) {
- final ArchiveEntry archiveEntry =
target.createArchiveEntry(path.toFile(),
+ final ArchiveEntry archiveEntry =
target.createArchiveEntry(path,
isFile || name.endsWith("/") ? name : name + "/");
target.putArchiveEntry(archiveEntry);
if (isFile) {
diff --git
a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFile.java
b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFile.java
index fe9db09..3485e1f 100644
---
a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFile.java
+++
b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFile.java
@@ -163,6 +163,25 @@ public class SevenZOutputFile implements Closeable {
}
/**
+ * Create an archive entry using the inputPath and entryName provided.
+ *
+ * @param inputPath path to create an entry from
+ * @param entryName the name to use
+ * @return the ArchiveEntry set up with details from the file
+ *
+ * @throws IOException on error
+ * @since 1.21
+ */
+ public SevenZArchiveEntry createArchiveEntry(final Path inputPath,
+ final String entryName) throws IOException {
+ final SevenZArchiveEntry entry = new SevenZArchiveEntry();
+ entry.setDirectory(Files.isDirectory(inputPath));
+ entry.setName(entryName);
+ entry.setLastModifiedDate(new
Date(Files.getLastModifiedTime(inputPath).toMillis()));
+ return entry;
+ }
+
+ /**
* Records an archive entry to add.
*
* The caller must then write the content to the archive and call
diff --git
a/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFileTest.java
b/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFileTest.java
index bebc26b..b31ffcb 100644
---
a/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFileTest.java
+++
b/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFileTest.java
@@ -122,6 +122,11 @@ public class SevenZOutputFileTest extends AbstractTestCase
{
outArchive.putArchiveEntry(entry);
outArchive.closeArchiveEntry();
+ entry = outArchive.createArchiveEntry(dir.toPath(), "baz2/");
+ entry.setAntiItem(true);
+ outArchive.putArchiveEntry(entry);
+ outArchive.closeArchiveEntry();
+
entry = new SevenZArchiveEntry();
entry.setName("dada");
entry.setHasWindowsAttributes(true);
@@ -207,6 +212,12 @@ public class SevenZOutputFileTest extends AbstractTestCase
{
entry = archive.getNextEntry();
assert (entry != null);
+ assertEquals("baz2/", entry.getName());
+ assertTrue(entry.isDirectory());
+ assertTrue(entry.isAntiItem());
+
+ entry = archive.getNextEntry();
+ assert (entry != null);
assertEquals("dada", entry.getName());
assertEquals(2, entry.getSize());
final byte[] content = new byte[2];