You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kr...@apache.org on 2014/10/22 06:02:00 UTC

svn commit: r1633510 - in /maven/plugins/trunk/maven-assembly-plugin: ./ src/it/projects/dependency-sets/dependencySet-unpackedExcludingMetaInf/ src/it/projects/file-sets/multimodule-unix-lineEndings/ src/it/projects/file-sets/multimodule-unix-lineEndi...

Author: krosenvold
Date: Wed Oct 22 04:01:59 2014
New Revision: 1633510

URL: http://svn.apache.org/r1633510
Log:
Added in-place filtering with p-archiver 2.8

Modified:
    maven/plugins/trunk/maven-assembly-plugin/pom.xml
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpackedExcludingMetaInf/pom.xml
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/file-sets/multimodule-unix-lineEndings/child/pom.xml
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/file-sets/multimodule-unix-lineEndings/pom.xml
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/file-sets/multimodule-win-lineEndings/pom.xml
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AssemblerConfigurationSource.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/PrefixedArchivedFileSet.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/PrefixedFileSet.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDirectoryTask.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileFormatter.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/LineEndings.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/LineEndingsUtils.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/ConfigSourceStub.java

Modified: maven/plugins/trunk/maven-assembly-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/pom.xml?rev=1633510&r1=1633509&r2=1633510&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-assembly-plugin/pom.xml Wed Oct 22 04:01:59 2014
@@ -62,7 +62,7 @@ under the License.
   <properties>
     <mdoVersion>1.1.2</mdoVersion>
     <mavenArchiverVersion>2.5</mavenArchiverVersion>
-    <mavenFilteringVersion>1.2</mavenFilteringVersion>
+    <mavenFilteringVersion>1.3</mavenFilteringVersion>
     <mavenVersion>2.2.1</mavenVersion>
     <testOutputToFile>true</testOutputToFile>
     <mavenPluginVersion>3.2</mavenPluginVersion>
@@ -128,7 +128,7 @@ under the License.
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-archiver</artifactId>
-      <version>2.7.1</version>
+      <version>2.8</version>
       <exclusions>
         <exclusion>
           <groupId>org.codehaus.plexus</groupId>
@@ -147,6 +147,11 @@ under the License.
       <version>1.1</version>
     </dependency>
     <dependency>
+    <groupId>commons-io</groupId>
+    <artifactId>commons-io</artifactId>
+    <version>2.2</version>
+  </dependency>
+    <dependency>
       <groupId>org.apache.maven.shared</groupId>
       <artifactId>maven-filtering</artifactId>
       <version>${mavenFilteringVersion}</version>
@@ -154,7 +159,7 @@ under the License.
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-io</artifactId>
-      <version>2.2</version>
+      <version>2.3</version>
       <exclusions>
         <exclusion>
           <groupId>org.codehaus.plexus</groupId>

Modified: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpackedExcludingMetaInf/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpackedExcludingMetaInf/pom.xml?rev=1633510&r1=1633509&r2=1633510&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpackedExcludingMetaInf/pom.xml (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpackedExcludingMetaInf/pom.xml Wed Oct 22 04:01:59 2014
@@ -25,6 +25,7 @@ under the License.
     <groupId>org.apache.maven.plugin.assembly.test</groupId>
     <artifactId>it-project-parent</artifactId>
     <version>1</version>
+    <relativePath>../../../it-project-parent/pom.xml</relativePath>
   </parent>
   
   <groupId>test</groupId>

Modified: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/file-sets/multimodule-unix-lineEndings/child/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/file-sets/multimodule-unix-lineEndings/child/pom.xml?rev=1633510&r1=1633509&r2=1633510&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/file-sets/multimodule-unix-lineEndings/child/pom.xml (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/file-sets/multimodule-unix-lineEndings/child/pom.xml Wed Oct 22 04:01:59 2014
@@ -25,6 +25,7 @@ under the License.
     <groupId>org.apache.maven.plugin.assembly.test</groupId>
     <artifactId>it-project-parent</artifactId>
     <version>1</version>
+    <relativePath>../../../../it-project-parent/pom.xml</relativePath>
   </parent>
   
   <artifactId>child</artifactId>

Modified: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/file-sets/multimodule-unix-lineEndings/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/file-sets/multimodule-unix-lineEndings/pom.xml?rev=1633510&r1=1633509&r2=1633510&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/file-sets/multimodule-unix-lineEndings/pom.xml (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/file-sets/multimodule-unix-lineEndings/pom.xml Wed Oct 22 04:01:59 2014
@@ -25,6 +25,7 @@ under the License.
     <groupId>org.apache.maven.plugin.assembly.test</groupId>
     <artifactId>it-project-parent</artifactId>
     <version>1</version>
+    <relativePath>../../../it-project-parent/pom.xml</relativePath>
   </parent>
   
   <artifactId>filtered-multimodule-parent</artifactId>

Modified: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/file-sets/multimodule-win-lineEndings/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/file-sets/multimodule-win-lineEndings/pom.xml?rev=1633510&r1=1633509&r2=1633510&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/file-sets/multimodule-win-lineEndings/pom.xml (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/file-sets/multimodule-win-lineEndings/pom.xml Wed Oct 22 04:01:59 2014
@@ -25,6 +25,7 @@ under the License.
     <groupId>org.apache.maven.plugin.assembly.test</groupId>
     <artifactId>it-project-parent</artifactId>
     <version>1</version>
+    <relativePath>../../../it-project-parent/pom.xml</relativePath>
   </parent>
   
   <artifactId>filtered-multimodule-parent</artifactId>

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AssemblerConfigurationSource.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AssemblerConfigurationSource.java?rev=1633510&r1=1633509&r2=1633510&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AssemblerConfigurationSource.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AssemblerConfigurationSource.java Wed Oct 22 04:01:59 2014
@@ -24,6 +24,7 @@ import org.apache.maven.artifact.reposit
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.filtering.MavenFileFilter;
+import org.apache.maven.shared.filtering.MavenReaderFilter;
 
 import java.io.File;
 import java.util.List;
@@ -180,6 +181,11 @@ public interface AssemblerConfigurationS
     MavenFileFilter getMavenFileFilter();
 
     /**
+     * Maven shared filtering utility.
+     */
+    MavenReaderFilter getMavenReaderFilter();
+
+    /**
      * @return Update only yes/no.
      */
     boolean isUpdateOnly();

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/PrefixedArchivedFileSet.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/PrefixedArchivedFileSet.java?rev=1633510&r1=1633509&r2=1633510&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/PrefixedArchivedFileSet.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/PrefixedArchivedFileSet.java Wed Oct 22 04:01:59 2014
@@ -23,6 +23,7 @@ import static org.apache.maven.plugin.as
 
 import org.codehaus.plexus.archiver.ArchivedFileSet;
 import org.codehaus.plexus.components.io.fileselectors.FileSelector;
+import org.codehaus.plexus.components.io.functions.InputStreamTransformer;
 
 import java.io.File;
 
@@ -120,4 +121,9 @@ public class PrefixedArchivedFileSet
         return fileSet.isUsingDefaultExcludes();
     }
 
+    public InputStreamTransformer getStreamTransformer()
+    {
+        return fileSet.getStreamTransformer();
+    }
+
 }

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/PrefixedFileSet.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/PrefixedFileSet.java?rev=1633510&r1=1633509&r2=1633510&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/PrefixedFileSet.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/PrefixedFileSet.java Wed Oct 22 04:01:59 2014
@@ -21,6 +21,7 @@ package org.apache.maven.plugin.assembly
 
 import org.codehaus.plexus.archiver.FileSet;
 import org.codehaus.plexus.components.io.fileselectors.FileSelector;
+import org.codehaus.plexus.components.io.functions.InputStreamTransformer;
 
 import java.io.File;
 
@@ -145,4 +146,8 @@ public class PrefixedFileSet
         return fileSet.getDirectory();
     }
 
+    public InputStreamTransformer getStreamTransformer()
+    {
+        return fileSet.getStreamTransformer();
+    }
 }

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDirectoryTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDirectoryTask.java?rev=1633510&r1=1633509&r2=1633510&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDirectoryTask.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDirectoryTask.java Wed Oct 22 04:01:59 2014
@@ -25,6 +25,7 @@ import org.apache.maven.plugin.assembly.
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
 import org.codehaus.plexus.archiver.util.DefaultFileSet;
+import org.codehaus.plexus.components.io.functions.InputStreamTransformer;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -39,6 +40,8 @@ public class AddDirectoryTask
 
     private final File directory;
 
+    private final InputStreamTransformer transformer;
+
     private List<String> includes;
 
     private List<String> excludes;
@@ -51,9 +54,15 @@ public class AddDirectoryTask
 
     private int fileMode = -1;
 
-    public AddDirectoryTask( final File directory )
+    public AddDirectoryTask( final File directory, InputStreamTransformer transformers )
     {
         this.directory = directory;
+
+        this.transformer = transformers;
+    }
+    public AddDirectoryTask( final File directory )
+    {
+        this( directory, null);
     }
 
     public void execute( final Archiver archiver, final AssemblerConfigurationSource configSource )
@@ -130,6 +139,9 @@ public class AddDirectoryTask
                     fs.setDirectory( directory );
                     fs.setIncludes( includesArray );
                     fs.setExcludes( excludesArray );
+                    if (transformer != null){
+                            fs.setStreamTransformer( transformer );
+                    }
 
                     archiver.addFileSet( fs );
                 }

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java?rev=1633510&r1=1633509&r2=1633510&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java Wed Oct 22 04:01:59 2014
@@ -21,19 +21,27 @@ package org.apache.maven.plugin.assembly
 
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
+import org.apache.commons.io.input.ReaderInputStream;
 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugin.assembly.archive.ArchiveCreationException;
 import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
-import org.apache.maven.plugin.assembly.format.FileSetFormatter;
+import org.apache.maven.plugin.assembly.format.FileFormatter;
 import org.apache.maven.plugin.assembly.model.FileSet;
 import org.apache.maven.plugin.assembly.utils.AssemblyFormatUtils;
+import org.apache.maven.plugin.assembly.utils.LineEndings;
+import org.apache.maven.plugin.assembly.utils.LineEndingsUtils;
 import org.apache.maven.plugin.assembly.utils.TypeConversionUtils;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.archiver.Archiver;
+import org.codehaus.plexus.components.io.functions.InputStreamTransformer;
+import org.codehaus.plexus.components.io.resources.PlexusIoResource;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.logging.console.ConsoleLogger;
 
@@ -99,8 +107,6 @@ public class AddFileSetsTask
         // throw this check in just in case someone extends this class...
         checkLogger();
 
-        final FileSetFormatter fileSetFormatter = new FileSetFormatter( configSource, logger );
-
         if ( project == null )
         {
             project = configSource.getProject();
@@ -133,18 +139,7 @@ public class AddFileSetsTask
 
         if ( fileSetDir.exists() )
         {
-            try
-            {
-                fileSetDir = fileSetFormatter.formatFileSetForAssembly( fileSetDir, fileSet );
-            }
-            catch ( final IOException e )
-            {
-                throw new ArchiveCreationException( "Error fixing file-set line endings for assembly: "
-                    + e.getMessage(), e );
-            }
-
-            logger.debug( "Adding file-set from directory: '" + fileSetDir.getAbsolutePath()
-                + "'\nassembly output directory is: \'" + destDirectory + "\'" );
+            InputStreamTransformer fileSetTransformers = getFileSetTransformers( configSource, fileSetDir, fileSet );
 
             if ( fileSetDir.getPath().equals( File.separator ) )
             {
@@ -152,7 +147,7 @@ public class AddFileSetsTask
                     + File.separator
                     + ", which is your *entire* file system.\nThese are not the files you are looking for" );
             }
-            final AddDirectoryTask task = new AddDirectoryTask( fileSetDir );
+            final AddDirectoryTask task = new AddDirectoryTask( fileSetDir, fileSetTransformers );
 
             final int dirMode = TypeConversionUtils.modeToInt( fileSet.getDirectoryMode(), logger );
             if ( dirMode != -1 )
@@ -180,6 +175,69 @@ public class AddFileSetsTask
         }
     }
 
+    private InputStreamTransformer getFileSetTransformers( final AssemblerConfigurationSource configSource, File fileSetDir,
+                                                            final org.apache.maven.plugin.assembly.model.FileSet set )
+        throws AssemblyFormattingException
+    {
+        final String lineEndingHint = set.getLineEnding();
+
+        String lineEnding = LineEndingsUtils.getLineEndingCharacters( lineEndingHint );
+
+        if ( ( lineEnding != null ) || set.isFiltered() )
+        {
+            InputStreamTransformer isf = new InputStreamTransformer()
+            {
+                public InputStream transform( PlexusIoResource plexusIoResource, InputStream inputStream )
+                    throws IOException
+                {
+                    FileFormatter fileFormatter = new FileFormatter( configSource, logger );
+
+                    if ( set.isFiltered() )
+                    {
+                        final String encoding = configSource.getEncoding();
+
+                        Reader source = encoding != null ? new InputStreamReader( inputStream, encoding )
+                            : new InputStreamReader( inputStream ); // wtf platform encoding ?
+                        try
+                        {
+                            Reader filtered = fileFormatter.doReaderFilter( source, plexusIoResource.getName(),
+                                                                            configSource.getEncoding(),
+                                                                            configSource.getEscapeString(),
+                                                                            configSource.getDelimiters() );
+                            final ReaderInputStream readerInputStream = encoding != null ? new ReaderInputStream( filtered, encoding)
+                                : new ReaderInputStream( filtered );
+
+                            LineEndings lineEnding = LineEndingsUtils.getLineEnding( lineEndingHint );
+                            if ( !LineEndings.keep.equals( lineEnding ) )
+                            {
+                                return LineEndingsUtils.lineEndingConverter( readerInputStream, lineEnding );
+
+                            }
+                            return readerInputStream;
+
+                        }
+                        catch ( AssemblyFormattingException e )
+                        {
+                            throw new IOException( e );
+                        }
+
+                    }
+                    else
+                    {
+                        return inputStream;
+                    }
+                }
+            };
+            return isf;
+        }
+        else
+        {
+            logger.debug( "NOT reformatting any files in " + fileSetDir );
+            return null;
+        }
+    }
+
+
     protected File getFileSetDirectory( final FileSet fileSet, final File basedir, final File archiveBaseDir )
         throws ArchiveCreationException, AssemblyFormattingException
     {

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileFormatter.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileFormatter.java?rev=1633510&r1=1633509&r2=1633510&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileFormatter.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileFormatter.java Wed Oct 22 04:01:59 2014
@@ -36,6 +36,7 @@ import org.apache.maven.plugin.assembly.
 import org.apache.maven.plugin.assembly.utils.LineEndingsUtils;
 import org.apache.maven.shared.filtering.MavenFileFilterRequest;
 import org.apache.maven.shared.filtering.MavenFilteringException;
+import org.apache.maven.shared.filtering.MavenReaderFilterRequest;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
@@ -144,6 +145,54 @@ public class FileFormatter
         }
     }
 
+    public Reader doReaderFilter( @Nonnull Reader source, String sourceName, String encoding, String escapeString,
+                               List<String> delimiters )
+        throws AssemblyFormattingException
+    {
+        try
+        {
+            // @todo this test can be improved
+            boolean isPropertiesFile = sourceName.toLowerCase( Locale.ENGLISH ).endsWith( ".properties" );
+
+            MavenReaderFilterRequest filterRequest =
+                new MavenReaderFilterRequest( source, true, configSource.getProject(), configSource.getFilters(),
+                                            isPropertiesFile, encoding, configSource.getMavenSession(), null );
+            filterRequest.setEscapeString( escapeString );
+
+            // if these are NOT set, just use the defaults, which are '${*}' and '@'.
+            if ( delimiters != null && !delimiters.isEmpty() )
+            {
+                LinkedHashSet<String> delims = new LinkedHashSet<String>();
+                for ( String delim : delimiters )
+                {
+                    if ( delim == null )
+                    {
+                        // FIXME: ${filter:*} could also trigger this condition. Need a better long-term solution.
+                        delims.add( "${*}" );
+                    }
+                    else
+                    {
+                        delims.add( delim );
+                    }
+                }
+
+                filterRequest.setDelimiters( delims );
+            }
+            else
+            {
+                filterRequest.setDelimiters( filterRequest.getDelimiters() );
+            }
+
+            filterRequest.setInjectProjectBuildFilters( configSource.isIncludeProjectBuildFilters() );
+            return configSource.getMavenReaderFilter().filter( filterRequest );
+        }
+        catch ( MavenFilteringException e )
+        {
+            throw new AssemblyFormattingException( "Error filtering file '" + source + "': " + e.getMessage(), e );
+        }
+    }
+
+
     private File formatLineEndings( LineEndings lineEnding, File source, File tempRoot, String encoding )
         throws AssemblyFormattingException
     {

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java?rev=1633510&r1=1633509&r2=1633510&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java Wed Oct 22 04:01:59 2014
@@ -44,6 +44,7 @@ import org.apache.maven.plugins.annotati
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectHelper;
 import org.apache.maven.shared.filtering.MavenFileFilter;
+import org.apache.maven.shared.filtering.MavenReaderFilter;
 import org.codehaus.plexus.configuration.PlexusConfiguration;
 
 /**
@@ -226,6 +227,12 @@ public abstract class AbstractAssemblyMo
     private MavenFileFilter mavenFileFilter;
 
     /**
+     * Maven shared filtering utility.
+     */
+    @Component
+    private MavenReaderFilter mavenReaderFilter;
+
+    /**
      * The Maven Session Object
      */
     @Parameter( defaultValue = "${session}", readonly = true, required = true )
@@ -868,6 +875,11 @@ public abstract class AbstractAssemblyMo
         return mavenFileFilter;
     }
 
+    public MavenReaderFilter getMavenReaderFilter()
+    {
+        return mavenReaderFilter;
+    }
+
     public boolean isUpdateOnly()
     {
         return updateOnly;

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/LineEndings.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/LineEndings.java?rev=1633510&r1=1633509&r2=1633510&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/LineEndings.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/LineEndings.java Wed Oct 22 04:01:59 2014
@@ -35,6 +35,13 @@ public enum LineEndings
         this.lineEndingCharacters = lineEndingCharacters;
     }
 
+    public boolean isNewLine(){
+        return this== unix || this == lf;
+    }
+    public boolean isCrLF(){
+        return this== windows || this == crlf || this == dos;
+    }
+
     public String getLineEndingCharacters()
     {
         return this.lineEndingCharacters;

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/LineEndingsUtils.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/LineEndingsUtils.java?rev=1633510&r1=1633509&r2=1633510&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/LineEndingsUtils.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/LineEndingsUtils.java Wed Oct 22 04:01:59 2014
@@ -19,22 +19,22 @@ package org.apache.maven.plugin.assembly
  * under the License.
  */
 
+import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
+import org.codehaus.plexus.util.IOUtil;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
 import java.io.RandomAccessFile;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
-import org.codehaus.plexus.util.IOUtil;
-
 /**
  * Line Ending class which contains convenience methods to change line endings.
  */
@@ -49,15 +49,15 @@ public final class LineEndingsUtils
     /**
      * Converts the line endings of a file, writing a new file. The encoding of reading and writing can be specified.
      *
-     * @param source The source file, not null
-     * @param dest The destination file, not null
+     * @param source      The source file, not null
+     * @param dest        The destination file, not null
      * @param lineEndings This is the result of the getLineEndingChars(..) method in this utility class; the actual
-     *            line-ending characters, not null.
+     *                    line-ending characters, not null.
      * @param atEndOfFile The end-of-file line ending, if true then the resulting file will have a new line at the end
-     *            even if the input didn't have one, if false then the resulting file will have no new line at the end
-     *            even if the input did have one, null to determine whether to have a new line at the end of the file
-     *            based on the input file
-     * @param encoding The encoding to use, null for platform encoding
+     *                    even if the input didn't have one, if false then the resulting file will have no new line at the end
+     *                    even if the input did have one, null to determine whether to have a new line at the end of the file
+     *                    based on the input file
+     * @param encoding    The encoding to use, null for platform encoding
      */
     public static void convertLineEndings( @Nonnull File source, @Nonnull File dest, LineEndings lineEndings,
                                            Boolean atEndOfFile, String encoding )
@@ -147,6 +147,21 @@ public final class LineEndingsUtils
         }
     }
 
+    /**
+     * Converts the line endings of a file, writing a new file. The encoding of reading and writing can be specified.
+     *
+     * @param in          The source reader
+     * @param lineEndings This is the result of the getLineEndingChars(..) method in this utility class; the actual
+     *                    line-ending characters, not null.
+     * @param in          with proper line endings.
+     */
+    public static InputStream lineEndingConverter( @Nonnull InputStream in, LineEndings lineEndings )
+        throws IOException
+    {
+        return lineEndings.isNewLine() ? new LinuxLineFeedInputStream( in, false )
+            : lineEndings.isCrLF() ? new WindowsLineFeedInputStream( in, false ) : in;
+    }
+
     public static LineEndings getLineEnding( @Nullable String lineEnding )
         throws AssemblyFormattingException
     {
@@ -165,8 +180,7 @@ public final class LineEndingsUtils
         return result;
     }
 
-    @Nullable
-    public static String getLineEndingCharacters( @Nullable String lineEnding )
+    @Nullable public static String getLineEndingCharacters( @Nullable String lineEnding )
         throws AssemblyFormattingException
     {
 

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java?rev=1633510&r1=1633509&r2=1633510&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java Wed Oct 22 04:01:59 2014
@@ -19,22 +19,7 @@ package org.apache.maven.plugin.assembly
  * under the License.
  */
 
-import static org.easymock.EasyMock.expect;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.fail;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-
 import junit.framework.Assert;
-
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.model.Model;
@@ -45,7 +30,6 @@ import org.apache.maven.plugin.assembly.
 import org.apache.maven.plugin.assembly.artifact.DependencyResolver;
 import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
 import org.apache.maven.plugin.assembly.model.Assembly;
-import org.apache.maven.plugin.assembly.resolved.ResolvedAssembly;
 import org.apache.maven.plugin.assembly.testutils.MockManager;
 import org.apache.maven.plugin.assembly.testutils.TestFileManager;
 import org.apache.maven.project.MavenProject;
@@ -72,9 +56,19 @@ import org.codehaus.plexus.util.FileUtil
 import org.easymock.MockControl;
 import org.junit.AfterClass;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+
+import static org.easymock.EasyMock.expect;
+import static org.junit.Assert.*;
+
 public class DefaultAssemblyArchiverTest
 // extends PlexusTestCase
 {
@@ -878,7 +872,6 @@ public class DefaultAssemblyArchiverTest
             throws ArchiverException
         {
         }
-
         public void addArchivedFileSet( final File arg0, final String[] arg1, final String[] arg2 )
             throws ArchiverException
         {

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/ConfigSourceStub.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/ConfigSourceStub.java?rev=1633510&r1=1633509&r2=1633510&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/ConfigSourceStub.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/ConfigSourceStub.java Wed Oct 22 04:01:59 2014
@@ -28,6 +28,7 @@ import org.apache.maven.execution.MavenS
 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.filtering.MavenFileFilter;
+import org.apache.maven.shared.filtering.MavenReaderFilter;
 
 public class ConfigSourceStub
     implements AssemblerConfigurationSource
@@ -186,6 +187,12 @@ public class ConfigSourceStub
         return null;
     }
 
+    public MavenReaderFilter getMavenReaderFilter()
+    {
+        return null;
+    }
+
+
     public void setProject( final MavenProject mavenProject )
     {
         project = mavenProject;