Skip to content

Commit 5665721

Browse files
committed
Adjusted again for trunk c-c
1 parent 896ff91 commit 5665721

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

src/main/java/org/codehaus/plexus/archiver/zip/ConcurrentJarCreator.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import java.util.zip.Deflater;
2929
import java.util.zip.ZipEntry;
3030

31+
import static org.apache.commons.compress.archivers.zip.ZipArchiveEntryRequest.createZipArchiveEntryRequest;
32+
3133
public class ConcurrentJarCreator {
3234

3335
private final ScatterZipOutputStream directories;
@@ -72,18 +74,27 @@ public void addArchiveEntry(final ZipArchiveEntry zipArchiveEntry, final InputSt
7274
final int method = zipArchiveEntry.getMethod();
7375
if (method == -1) throw new IllegalArgumentException("Method must be set on the supplied zipArchiveEntry");
7476
if (zipArchiveEntry.isDirectory() && !zipArchiveEntry.isUnixSymlink()) {
75-
ByteArrayInputStream payload = new ByteArrayInputStream(new byte[]{});
76-
directories.addArchiveEntry(zipArchiveEntry, payload, ZipEntry.STORED);
77+
final ByteArrayInputStream payload = new ByteArrayInputStream(new byte[]{});
78+
directories.addArchiveEntry(createZipArchiveEntryRequest(zipArchiveEntry, createInputStreamSupplier(payload)));
7779
payload.close();
7880
} else if ("META-INF".equals(zipArchiveEntry.getName()) || "META-INF/MANIFEST.MF".equals(zipArchiveEntry.getName())) {
7981
InputStream payload = source.get();
80-
manifest.addArchiveEntry(zipArchiveEntry, payload, zipArchiveEntry.isDirectory() ? ZipEntry.STORED : method);
82+
if (zipArchiveEntry.isDirectory()) zipArchiveEntry.setMethod(ZipEntry.STORED);
83+
manifest.addArchiveEntry(createZipArchiveEntryRequest(zipArchiveEntry, createInputStreamSupplier(payload)));
8184
payload.close();
8285
} else {
8386
parallelScatterZipCreator.addArchiveEntry(zipArchiveEntry, source);
8487
}
8588
}
8689

90+
private InputStreamSupplier createInputStreamSupplier(final InputStream payload) {
91+
return new InputStreamSupplier() {
92+
public InputStream get() {
93+
return payload;
94+
}
95+
};
96+
}
97+
8798
public void writeTo(ZipArchiveOutputStream targetStream) throws IOException, ExecutionException, InterruptedException {
8899
manifest.writeTo(targetStream);
89100
directories.writeTo(targetStream);

0 commit comments

Comments
 (0)