Skip to content

Commit 2b6beef

Browse files
committed
Allow zip part mappers to drop entries
1 parent 6b18c5a commit 2b6beef

File tree

5 files changed

+20
-15
lines changed

5 files changed

+20
-15
lines changed

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>software.coley</groupId>
88
<artifactId>lljzip</artifactId>
9-
<version>2.0.0</version>
9+
<version>2.1.0</version>
1010

1111
<name>LL Java ZIP</name>
1212
<description>Lower level ZIP support for Java</description>

src/main/java/software/coley/lljzip/format/model/ZipArchive.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,10 @@ public ZipArchive(@Nonnull Closeable closableBackingResource) {
4646
@Nonnull
4747
public ZipArchive withMapping(@Nonnull ZipPartMapper mapper) {
4848
ZipArchive copy = new ZipArchive();
49-
for (ZipPart part : parts)
50-
copy.addPart(mapper.map(this, part));
49+
for (ZipPart part : parts) {
50+
ZipPart mappedPart = mapper.map(this, part);
51+
if (mappedPart != null) copy.addPart(mappedPart);
52+
}
5153
return copy;
5254
}
5355

src/main/java/software/coley/lljzip/format/transform/CentralAdoptingMapper.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import software.coley.lljzip.format.model.ZipArchive;
66

77
import javax.annotation.Nonnull;
8+
import javax.annotation.Nullable;
89

910
/**
1011
* Patches {@link LocalFileHeader} to adopt {@link CentralDirectoryFileHeader} values.
@@ -20,7 +21,7 @@ public CentralAdoptingMapper(@Nonnull ZipPartMapper delegate) {
2021
super(delegate);
2122
}
2223

23-
@Nonnull
24+
@Nullable
2425
@Override
2526
public LocalFileHeader mapLocal(@Nonnull ZipArchive archive, @Nonnull LocalFileHeader localFileHeader) {
2627
if (localFileHeader.getLinkedDirectoryFileHeader() != null) {

src/main/java/software/coley/lljzip/format/transform/DelegatingZipPartMapper.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import software.coley.lljzip.format.model.ZipArchive;
77

88
import javax.annotation.Nonnull;
9+
import javax.annotation.Nullable;
910

1011
/**
1112
* Zip part mapper that delegates to another mapper. Useful as a base to implement other mappers.
@@ -23,19 +24,19 @@ public DelegatingZipPartMapper(@Nonnull ZipPartMapper delegate) {
2324
this.delegate = delegate;
2425
}
2526

26-
@Nonnull
27+
@Nullable
2728
@Override
2829
public LocalFileHeader mapLocal(@Nonnull ZipArchive archive, @Nonnull LocalFileHeader localFileHeader) {
2930
return delegate.mapLocal(archive, localFileHeader);
3031
}
3132

32-
@Nonnull
33+
@Nullable
3334
@Override
3435
public CentralDirectoryFileHeader mapCentral(@Nonnull ZipArchive archive, @Nonnull CentralDirectoryFileHeader centralDirectoryFileHeader) {
3536
return delegate.mapCentral(archive, centralDirectoryFileHeader);
3637
}
3738

38-
@Nonnull
39+
@Nullable
3940
@Override
4041
public EndOfCentralDirectory mapEnd(@Nonnull ZipArchive archive, @Nonnull EndOfCentralDirectory endOfCentralDirectory) {
4142
return delegate.mapEnd(archive, endOfCentralDirectory);

src/main/java/software/coley/lljzip/format/transform/ZipPartMapper.java

+9-8
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import software.coley.lljzip.format.model.*;
44

55
import javax.annotation.Nonnull;
6+
import javax.annotation.Nullable;
67

78
/**
89
* Mapper outline for zip parts.
@@ -16,9 +17,9 @@ public interface ZipPartMapper {
1617
* @param part
1718
* Part to map.
1819
*
19-
* @return Mapped part.
20+
* @return Mapped part, or {@code null} on removal.
2021
*/
21-
@Nonnull
22+
@Nullable
2223
default ZipPart map(@Nonnull ZipArchive archive, @Nonnull ZipPart part) {
2324
if (part instanceof LocalFileHeader) {
2425
return mapLocal(archive, (LocalFileHeader) part);
@@ -37,9 +38,9 @@ default ZipPart map(@Nonnull ZipArchive archive, @Nonnull ZipPart part) {
3738
* @param localFileHeader
3839
* Original local file.
3940
*
40-
* @return Mapped local file.
41+
* @return Mapped local file, or {@code null} on removal.
4142
*/
42-
@Nonnull
43+
@Nullable
4344
LocalFileHeader mapLocal(@Nonnull ZipArchive archive, @Nonnull LocalFileHeader localFileHeader);
4445

4546
/**
@@ -48,9 +49,9 @@ default ZipPart map(@Nonnull ZipArchive archive, @Nonnull ZipPart part) {
4849
* @param centralDirectoryFileHeader
4950
* Original central directory file.
5051
*
51-
* @return Mapped central directory file.
52+
* @return Mapped central directory file, or {@code null} on removal.
5253
*/
53-
@Nonnull
54+
@Nullable
5455
CentralDirectoryFileHeader mapCentral(@Nonnull ZipArchive archive, @Nonnull CentralDirectoryFileHeader centralDirectoryFileHeader);
5556

5657
/**
@@ -59,8 +60,8 @@ default ZipPart map(@Nonnull ZipArchive archive, @Nonnull ZipPart part) {
5960
* @param endOfCentralDirectory
6061
* Original end.
6162
*
62-
* @return Mapped end.
63+
* @return Mapped end, or {@code null} on removal.
6364
*/
64-
@Nonnull
65+
@Nullable
6566
EndOfCentralDirectory mapEnd(@Nonnull ZipArchive archive, @Nonnull EndOfCentralDirectory endOfCentralDirectory);
6667
}

0 commit comments

Comments
 (0)