Skip to content

Commit 0ffc599

Browse files
committed
#114 added Archiver.setFilenameComparator(Comparator<String>)
permits optional ordering of archive entries to enable reproducible builds
1 parent b1787bb commit 0ffc599

File tree

6 files changed

+46
-2
lines changed

6 files changed

+46
-2
lines changed

pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,12 @@
5757
<dependency>
5858
<groupId>org.codehaus.plexus</groupId>
5959
<artifactId>plexus-utils</artifactId>
60-
<version>3.1.1</version>
60+
<version>3.3.0-SNAPSHOT</version>
6161
</dependency>
6262
<dependency>
6363
<groupId>org.codehaus.plexus</groupId>
6464
<artifactId>plexus-io</artifactId>
65-
<version>3.1.1</version>
65+
<version>3.2.0-SNAPSHOT</version>
6666
</dependency>
6767
<dependency>
6868
<groupId>org.apache.commons</groupId>

src/main/java/org/codehaus/plexus/archiver/AbstractArchiver.java

+17
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.lang.reflect.UndeclaredThrowableException;
2323
import java.nio.charset.Charset;
2424
import java.util.ArrayList;
25+
import java.util.Comparator;
2526
import java.util.Date;
2627
import java.util.HashMap;
2728
import java.util.HashSet;
@@ -109,6 +110,11 @@ public abstract class AbstractArchiver
109110
*/
110111
private Date lastModifiedDate;
111112

113+
/**
114+
* @sine 4.2.0
115+
*/
116+
private Comparator<String> filenameComparator;
117+
112118
// contextualized.
113119
private ArchiverManager archiverManager;
114120

@@ -352,6 +358,7 @@ public void addFileSet( @Nonnull final FileSet fileSet )
352358
collection.setUsingDefaultExcludes( fileSet.isUsingDefaultExcludes() );
353359
collection.setStreamTransformer( fileSet.getStreamTransformer() );
354360
collection.setFileMappers( fileSet.getFileMappers() );
361+
collection.setFilenameComparator( getFilenameComparator() );
355362

356363
if ( getOverrideDirectoryMode() > -1 || getOverrideFileMode() > -1 )
357364
{
@@ -1151,4 +1158,14 @@ public Date getLastModifiedDate()
11511158
return lastModifiedDate;
11521159
}
11531160

1161+
@Override
1162+
public void setFilenameComparator( Comparator<String> filenameComparator )
1163+
{
1164+
this.filenameComparator = filenameComparator;
1165+
}
1166+
1167+
public Comparator<String> getFilenameComparator()
1168+
{
1169+
return filenameComparator;
1170+
}
11541171
}

src/main/java/org/codehaus/plexus/archiver/Archiver.java

+5
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.io.File;
2020
import java.io.IOException;
2121
import java.nio.charset.Charset;
22+
import java.util.Comparator;
2223
import java.util.Date;
2324
import java.util.HashSet;
2425
import java.util.Map;
@@ -413,4 +414,8 @@ ResourceIterator getResources()
413414
*/
414415
Date getLastModifiedDate();
415416

417+
/**
418+
* @since 4.2.0
419+
*/
420+
void setFilenameComparator( Comparator<String> filenameComparator );
416421
}

src/main/java/org/codehaus/plexus/archiver/diags/DelgatingArchiver.java

+6
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.io.File;
1919
import java.io.IOException;
2020
import java.nio.charset.Charset;
21+
import java.util.Comparator;
2122
import java.util.Date;
2223
import java.util.Map;
2324
import javax.annotation.Nonnull;
@@ -344,4 +345,9 @@ public Date getLastModifiedDate()
344345
return target.getLastModifiedDate();
345346
}
346347

348+
@Override
349+
public void setFilenameComparator( final Comparator<String> filenameComparator )
350+
{
351+
target.setFilenameComparator( filenameComparator );
352+
}
347353
}

src/main/java/org/codehaus/plexus/archiver/diags/NoOpArchiver.java

+7
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.io.IOException;
2020
import java.nio.charset.Charset;
2121
import java.util.Collections;
22+
import java.util.Comparator;
2223
import java.util.Date;
2324
import java.util.Map;
2425
import javax.annotation.Nonnull;
@@ -359,4 +360,10 @@ public Date getLastModifiedDate()
359360
return null;
360361
}
361362

363+
@Override
364+
public void setFilenameComparator( final Comparator<String> filenameComparator )
365+
{
366+
367+
}
368+
362369
}

src/main/java/org/codehaus/plexus/archiver/diags/TrackingArchiver.java

+9
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.io.IOException;
2323
import java.nio.charset.Charset;
2424
import java.util.ArrayList;
25+
import java.util.Comparator;
2526
import java.util.Date;
2627
import java.util.HashMap;
2728
import java.util.List;
@@ -55,6 +56,8 @@ public class TrackingArchiver
5556

5657
private Date lastModified;
5758

59+
private Comparator<String> filenameComparator;
60+
5861
@Override
5962
public void createArchive()
6063
throws ArchiverException, IOException
@@ -415,4 +418,10 @@ public Date getLastModifiedDate()
415418
return lastModified;
416419
}
417420

421+
422+
@Override
423+
public void setFilenameComparator( final Comparator<String> filenameComparator )
424+
{
425+
this.filenameComparator = filenameComparator;
426+
}
418427
}

0 commit comments

Comments
 (0)