From d8f349575b42d9386eb51a16fd3b527ea19cc5fe Mon Sep 17 00:00:00 2001 From: Thomas COLLIGNON Date: Sun, 15 Jul 2018 00:51:54 +0200 Subject: [PATCH 1/2] [MASSEMBLY-886] Add fileMappers to BaseFileSet --- .../plexus/archiver/AbstractArchiver.java | 1 + .../codehaus/plexus/archiver/BaseFileSet.java | 9 +++++++++ .../plexus/archiver/util/AbstractFileSet.java | 18 ++++++++++++++++++ 3 files changed, 28 insertions(+) diff --git a/src/main/java/org/codehaus/plexus/archiver/AbstractArchiver.java b/src/main/java/org/codehaus/plexus/archiver/AbstractArchiver.java index 3fab3dd2a..0b695200b 100755 --- a/src/main/java/org/codehaus/plexus/archiver/AbstractArchiver.java +++ b/src/main/java/org/codehaus/plexus/archiver/AbstractArchiver.java @@ -346,6 +346,7 @@ public void addFileSet( @Nonnull final FileSet fileSet ) collection.setCaseSensitive( fileSet.isCaseSensitive() ); collection.setUsingDefaultExcludes( fileSet.isUsingDefaultExcludes() ); collection.setStreamTransformer( fileSet.getStreamTransformer() ); + collection.setFileMappers( fileSet.getFileMappers() ); if ( getOverrideDirectoryMode() > -1 || getOverrideFileMode() > -1 ) { diff --git a/src/main/java/org/codehaus/plexus/archiver/BaseFileSet.java b/src/main/java/org/codehaus/plexus/archiver/BaseFileSet.java index a3cc2f892..52f0baf21 100644 --- a/src/main/java/org/codehaus/plexus/archiver/BaseFileSet.java +++ b/src/main/java/org/codehaus/plexus/archiver/BaseFileSet.java @@ -1,6 +1,8 @@ package org.codehaus.plexus.archiver; import javax.annotation.CheckForNull; + +import org.codehaus.plexus.components.io.filemappers.FileMapper; import org.codehaus.plexus.components.io.fileselectors.FileSelector; import org.codehaus.plexus.components.io.functions.InputStreamTransformer; @@ -64,5 +66,12 @@ public interface BaseFileSet * @return The transformers. */ InputStreamTransformer getStreamTransformer(); + + /** + * Returns a set of file mappers, which should be used + * to change the included files. + */ + @CheckForNull + FileMapper[] getFileMappers(); } diff --git a/src/main/java/org/codehaus/plexus/archiver/util/AbstractFileSet.java b/src/main/java/org/codehaus/plexus/archiver/util/AbstractFileSet.java index 73dbb2357..5d5d7a0c4 100644 --- a/src/main/java/org/codehaus/plexus/archiver/util/AbstractFileSet.java +++ b/src/main/java/org/codehaus/plexus/archiver/util/AbstractFileSet.java @@ -17,6 +17,7 @@ import javax.annotation.Nonnull; import org.codehaus.plexus.archiver.BaseFileSet; +import org.codehaus.plexus.components.io.filemappers.FileMapper; import org.codehaus.plexus.components.io.fileselectors.FileSelector; import org.codehaus.plexus.components.io.functions.InputStreamTransformer; @@ -44,6 +45,8 @@ public abstract class AbstractFileSet private boolean includingEmptyDirectories = true; private InputStreamTransformer streamTransformer = null; + + private FileMapper[] fileMappers; /** * Sets a string of patterns, which excluded files @@ -189,5 +192,20 @@ public InputStreamTransformer getStreamTransformer() { return streamTransformer; } + + /** + * Sets a set of file mappers, which should be used + * to change included files. + */ + public void setFileMappers( FileMapper[] fileMappers ) + { + this.fileMappers = fileMappers; + } + + @Override + public FileMapper[] getFileMappers() + { + return fileMappers; + } } From 330a4c0f53fcfc714c2680961d10655bb3cde7e8 Mon Sep 17 00:00:00 2001 From: Thomas COLLIGNON Date: Wed, 25 Jul 2018 22:29:08 +0200 Subject: [PATCH 2/2] Add test case to verify the application of file mappers, improve documentation in javadoc --- .../org/codehaus/plexus/archiver/AbstractArchiver.java | 1 + .../java/org/codehaus/plexus/archiver/BaseFileSet.java | 2 +- .../org/codehaus/plexus/archiver/util/AbstractFileSet.java | 2 +- .../org/codehaus/plexus/archiver/zip/ZipArchiverTest.java | 7 ++++++- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/codehaus/plexus/archiver/AbstractArchiver.java b/src/main/java/org/codehaus/plexus/archiver/AbstractArchiver.java index 0b695200b..eae95e0c1 100755 --- a/src/main/java/org/codehaus/plexus/archiver/AbstractArchiver.java +++ b/src/main/java/org/codehaus/plexus/archiver/AbstractArchiver.java @@ -738,6 +738,7 @@ protected PlexusIoResourceCollection asResourceCollection( final ArchivedFileSet proxy.setUsingDefaultExcludes( fileSet.isUsingDefaultExcludes() ); proxy.setFileSelectors( fileSet.getFileSelectors() ); proxy.setStreamTransformer( fileSet.getStreamTransformer() ); + proxy.setFileMappers( fileSet.getFileMappers() ); if ( getOverrideDirectoryMode() > -1 || getOverrideFileMode() > -1 ) { diff --git a/src/main/java/org/codehaus/plexus/archiver/BaseFileSet.java b/src/main/java/org/codehaus/plexus/archiver/BaseFileSet.java index 52f0baf21..b8ede7369 100644 --- a/src/main/java/org/codehaus/plexus/archiver/BaseFileSet.java +++ b/src/main/java/org/codehaus/plexus/archiver/BaseFileSet.java @@ -69,7 +69,7 @@ public interface BaseFileSet /** * Returns a set of file mappers, which should be used - * to change the included files. + * to change the filename of the included files. */ @CheckForNull FileMapper[] getFileMappers(); diff --git a/src/main/java/org/codehaus/plexus/archiver/util/AbstractFileSet.java b/src/main/java/org/codehaus/plexus/archiver/util/AbstractFileSet.java index 5d5d7a0c4..7543a6d96 100644 --- a/src/main/java/org/codehaus/plexus/archiver/util/AbstractFileSet.java +++ b/src/main/java/org/codehaus/plexus/archiver/util/AbstractFileSet.java @@ -195,7 +195,7 @@ public InputStreamTransformer getStreamTransformer() /** * Sets a set of file mappers, which should be used - * to change included files. + * to change the filename of the included files. */ public void setFileMappers( FileMapper[] fileMappers ) { diff --git a/src/test/java/org/codehaus/plexus/archiver/zip/ZipArchiverTest.java b/src/test/java/org/codehaus/plexus/archiver/zip/ZipArchiverTest.java index 03cd44026..9be4a77b8 100644 --- a/src/test/java/org/codehaus/plexus/archiver/zip/ZipArchiverTest.java +++ b/src/test/java/org/codehaus/plexus/archiver/zip/ZipArchiverTest.java @@ -59,6 +59,8 @@ import org.codehaus.plexus.components.io.attributes.PlexusIoResourceAttributeUtils; import org.codehaus.plexus.components.io.attributes.PlexusIoResourceAttributes; import org.codehaus.plexus.components.io.attributes.SimpleResourceAttributes; +import org.codehaus.plexus.components.io.filemappers.FileMapper; +import org.codehaus.plexus.components.io.filemappers.PrefixFileMapper; import org.codehaus.plexus.components.io.functions.InputStreamTransformer; import org.codehaus.plexus.components.io.resources.PlexusIoFileResourceCollection; import org.codehaus.plexus.components.io.resources.PlexusIoResource; @@ -429,6 +431,9 @@ public InputStream transform( @Nonnull PlexusIoResource resource, @Nonnull Input }; sfd.setStreamTransformer( is ); + PrefixFileMapper mapper = new PrefixFileMapper(); + mapper.setPrefix( "prefix" ); + sfd.setFileMappers( new FileMapper[] { mapper } ); zipArchiver.addArchivedFileSet( sfd ); zipArchiver.createArchive(); @@ -438,7 +443,7 @@ public InputStream transform( @Nonnull PlexusIoResource resource, @Nonnull Input zipUnArchiver.setDestFile( destFile ); zipUnArchiver.extract(); File a3byteFile = new File( destFile, - "Users/kristian/lsrc/plexus/plexus-archiver/src/main/java/org/codehaus/plexus/archiver/zip/ZipArchiver.java" ); + "prefixUsers/kristian/lsrc/plexus/plexus-archiver/src/main/java/org/codehaus/plexus/archiver/zip/ZipArchiver.java" ); assertTrue( a3byteFile.exists() ); assertTrue( a3byteFile.length() == 3 ); }