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/30 17:04:31 UTC

svn commit: r1635529 - in /maven/plugins/trunk/maven-assembly-plugin/src: main/java/org/apache/maven/plugin/assembly/ main/java/org/apache/maven/plugin/assembly/archive/archiver/ main/java/org/apache/maven/plugin/assembly/archive/phase/ main/java/org/a...

Author: krosenvold
Date: Thu Oct 30 16:04:30 2014
New Revision: 1635529

URL: http://svn.apache.org/r1635529
Log:
Switched entirely to reader based filtering

Added:
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/PojoConfigSource.java
Removed:
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileFormatter.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/format/FileFormatterTest.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/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/AssemblyProxyArchiver.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhase.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/ReaderFormatter.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/test/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhaseTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/format/ReaderFormatterTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/interpolation/AssemblyExpressionEvaluatorTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/interpolation/AssemblyInterpolatorTest.java

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=1635529&r1=1635528&r2=1635529&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 Thu Oct 30 16:04:30 2014
@@ -23,7 +23,6 @@ import org.apache.maven.archiver.MavenAr
 import org.apache.maven.artifact.repository.ArtifactRepository;
 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;
@@ -176,11 +175,6 @@ public interface AssemblerConfigurationS
     String getArchiverConfig();
 
     /**
-     * @return The maven file filter.
-     */
-    MavenFileFilter getMavenFileFilter();
-
-    /**
      * Maven shared filtering utility.
      * @ return the maven reader filter
      */

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/AssemblyProxyArchiver.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/AssemblyProxyArchiver.java?rev=1635529&r1=1635528&r2=1635529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/AssemblyProxyArchiver.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/AssemblyProxyArchiver.java Thu Oct 30 16:04:30 2014
@@ -999,14 +999,19 @@ public class AssemblyProxyArchiver
     public void addResource( final PlexusIoResource resource, final String destFileName, final int permissions )
         throws ArchiverException
     {
-        inPublicApi.set( Boolean.TRUE );
-        try
+        File file = new File(resource.getName()); // zOMG.
+        if ( acceptFile( file ) )
         {
-            delegate.addResource( resource, destFileName, permissions );
-        }
-        finally
-        {
-            inPublicApi.set( null );
+
+            inPublicApi.set( Boolean.TRUE );
+            try
+            {
+                delegate.addResource( resource, destFileName, permissions );
+            }
+            finally
+            {
+                inPublicApi.set( null );
+            }
         }
     }
 

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhase.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhase.java?rev=1635529&r1=1635528&r2=1635529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhase.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhase.java Thu Oct 30 16:04:30 2014
@@ -19,22 +19,36 @@ package org.apache.maven.plugin.assembly
  * under the License.
  */
 
-import java.io.File;
-import java.util.List;
-
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.io.output.DeferredFileOutputStream;
 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.FileFormatter;
+import org.apache.maven.plugin.assembly.format.ReaderFormatter;
 import org.apache.maven.plugin.assembly.model.FileItem;
 import org.apache.maven.plugin.assembly.resolved.ResolvedAssembly;
 import org.apache.maven.plugin.assembly.utils.AssemblyFormatUtils;
 import org.apache.maven.plugin.assembly.utils.TypeConversionUtils;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
+import org.codehaus.plexus.archiver.util.ArchiverAttributeUtils;
 import org.codehaus.plexus.component.annotations.Component;
+import org.codehaus.plexus.components.io.functions.InputStreamTransformer;
+import org.codehaus.plexus.components.io.resources.PlexusIoFileResource;
+import org.codehaus.plexus.components.io.resources.PlexusIoResource;
+import org.codehaus.plexus.components.io.resources.PlexusIoSymlink;
+import org.codehaus.plexus.components.io.resources.proxy.PlexusIoProxyResource;
+import org.codehaus.plexus.components.io.resources.proxy.PlexusIoProxySymlinkResource;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 
+import javax.annotation.Nonnull;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+
 /**
  * Handles the top-level <files/> section of the assembly descriptor.
  *
@@ -56,7 +70,6 @@ public class FileItemAssemblyPhase
         final List<FileItem> fileList = assembly.getFiles();
         final File basedir = configSource.getBasedir();
 
-        final FileFormatter fileFormatter = new FileFormatter( configSource, getLogger() );
         for ( final FileItem fileItem : fileList )
         {
             final String sourcePath = fileItem.getSource();
@@ -73,9 +86,6 @@ public class FileItemAssemblyPhase
                 source = new File( basedir, sourcePath );
             }
 
-            source = fileFormatter.format( source, fileItem.isFiltered(), fileItem.getLineEnding(),
-                                           configSource.getEncoding() );
-
             String destName = fileItem.getDestName();
 
             if ( destName == null )
@@ -103,16 +113,161 @@ public class FileItemAssemblyPhase
                 target = outputDirectory + "/" + destName;
             }
 
+            final PlexusIoFileResource
+                res = new PlexusIoFileResource( source, ArchiverAttributeUtils.getFileAttributes( source ));
+            PlexusIoResource restoUse = res;
             try
             {
-                archiver.addFile( source, target,
-                                  TypeConversionUtils.modeToInt( fileItem.getFileMode(), getLogger() ) );
+                final InputStreamTransformer fileSetTransformers =
+                    ReaderFormatter.getFileSetTransformers( configSource, fileItem.isFiltered(), fileItem.getLineEnding() );
+
+                if (fileSetTransformers != null){
+                    restoUse = new Deferred( res ){
+                        @Override
+                        protected InputStream getInputStream()
+                            throws IOException
+                        {
+                            return fileSetTransformers.transform(res, res.getContents());
+                        }
+
+                        @Override
+                        public String getName()
+                        { return res.getName();
+                        }
+                    }.asResource();
+                }
+
+                    int mode = TypeConversionUtils.modeToInt( fileItem.getFileMode(), getLogger() );
+                    archiver.addResource( restoUse, target, mode );
             }
             catch ( final ArchiverException e )
             {
                 throw new ArchiveCreationException( "Error adding file to archive: " + e.getMessage(), e );
             }
+            catch ( IOException e )
+            {
+                throw new ArchiveCreationException( "Error adding file to archive: " + e.getMessage(), e );
+            }
+        }
+    }
+
+    // Nicked from archiver until I can get a better solution. I am the author :)
+    abstract class Deferred
+    {
+        final DeferredFileOutputStream dfos;
+
+        final PlexusIoResource resource;
+
+        public Deferred( final PlexusIoResource resource )
+            throws IOException
+        {
+            this.resource = resource;
+            dfos = new DeferredFileOutputStream( 1000000, "m-assembly-archiver", null, null );
+            InputStream inputStream = getInputStream();
+            IOUtils.copy( inputStream, dfos );
+            IOUtils.closeQuietly( inputStream );
         }
+
+        protected abstract  InputStream getInputStream() throws IOException;
+
+        @Nonnull
+        public InputStream getContents()
+            throws IOException
+        {
+            if ( dfos.isInMemory() )
+            {
+                return new ByteArrayInputStream( dfos.getData() );
+            }
+            else
+            {
+                return new FileInputStream( dfos.getFile() )
+                {
+                    @Override
+                    public void close()
+                        throws IOException
+                    {
+                        super.close();
+                        dfos.getFile().delete();
+                    }
+                };
+            }
+        }
+
+        public long getSize()
+        {
+            if ( dfos == null )
+            {
+                return resource.getSize();
+            }
+            if ( dfos.isInMemory() )
+            {
+                return dfos.getByteCount();
+            }
+            else
+            {
+                return dfos.getFile().length();
+            }
+        }
+
+        public abstract String getName();
+
+        private PlexusIoResource asSymlinkResource()
+        {
+            return new PlexusIoProxySymlinkResource( resource )
+            {
+                @Override
+                public String getName()
+                {
+                    return Deferred.this.getName();
+                }
+
+                @Nonnull
+                @Override
+                public InputStream getContents()
+                    throws IOException
+                {
+                    return Deferred.this.getContents();
+                }
+
+                @Override
+                public long getSize()
+                {
+                    return Deferred.this.getSize();
+                }
+            };
+        }
+
+        public PlexusIoResource asResource()
+        {
+            if ( resource instanceof PlexusIoSymlink )
+            {
+                return asSymlinkResource();
+            }
+
+            return new PlexusIoProxyResource( resource )
+            {
+                @Override
+                public String getName()
+                {
+                    return Deferred.this.getName();
+                }
+
+                @Nonnull
+                @Override
+                public InputStream getContents()
+                    throws IOException
+                {
+                    return Deferred.this.getContents();
+                }
+
+                @Override
+                public long getSize()
+                {
+                    return Deferred.this.getSize();
+                }
+            };
+        }
+
     }
 
 }

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/ReaderFormatter.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/ReaderFormatter.java?rev=1635529&r1=1635528&r2=1635529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/ReaderFormatter.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/ReaderFormatter.java Thu Oct 30 16:04:30 2014
@@ -40,19 +40,17 @@ import java.util.List;
 
 public class ReaderFormatter
 {
-    private static Reader createReaderFilter( @Nonnull Reader source, String sourceName, String encoding,
-                                              String escapeString, List<String> delimiters,
-                                              AssemblerConfigurationSource configSource )
+    private static Reader createReaderFilter( @Nonnull Reader source, String escapeString, List<String> delimiters,
+                                              AssemblerConfigurationSource configSource, boolean isPropertiesFile )
         throws AssemblyFormattingException
     {
         try
         {
-            boolean isPropertiesFile = AssemblyFileUtils.isPropertyFile( sourceName );
 
             MavenReaderFilterRequest filterRequest =
                 new MavenReaderFilterRequest( source, true, configSource.getProject(), configSource.getFilters(),
-                                              isPropertiesFile, encoding, configSource.getMavenSession(), null );
-            filterRequest.setInjectProjectBuildFilters(true);
+                                              isPropertiesFile, null, configSource.getMavenSession(), null );
+//            filterRequest.setInjectProjectBuildFilters(true);
             filterRequest.setEscapeString( escapeString );
 
             // if these are NOT set, just use the defaults, which are '${*}' and '@'.
@@ -114,10 +112,10 @@ public class ReaderFormatter
                             : new InputStreamReader( inputStream ); // wtf platform encoding ? TODO: Fix this
                         try
                         {
+                            boolean isPropertyFile = AssemblyFileUtils.isPropertyFile( plexusIoResource.getName() );
                             Reader filtered =
-                                createReaderFilter( source, plexusIoResource.getName(), configSource.getEncoding(),
-                                                    configSource.getEscapeString(), configSource.getDelimiters(),
-                                                    configSource );
+                                createReaderFilter( source, configSource.getEscapeString(), configSource.getDelimiters(),
+                                                    configSource, isPropertyFile );
                             final ReaderInputStream readerInputStream = encoding != null
                                 ? new ReaderInputStream( filtered, encoding )
                                 : new ReaderInputStream( filtered );

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=1635529&r1=1635528&r2=1635529&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 Thu Oct 30 16:04:30 2014
@@ -224,12 +224,6 @@ public abstract class AbstractAssemblyMo
      * Maven shared filtering utility.
      */
     @Component
-    private MavenFileFilter mavenFileFilter;
-
-    /**
-     * Maven shared filtering utility.
-     */
-    @Component
     private MavenReaderFilter mavenReaderFilter;
 
     /**
@@ -856,11 +850,6 @@ public abstract class AbstractAssemblyMo
         return archiverConfig == null ? null : archiverConfig.toString();
     }
 
-    public MavenFileFilter getMavenFileFilter()
-    {
-        return mavenFileFilter;
-    }
-
     public MavenReaderFilter getMavenReaderFilter()
     {
         return mavenReaderFilter;

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhaseTest.java?rev=1635529&r1=1635528&r2=1635529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhaseTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhaseTest.java Thu Oct 30 16:04:30 2014
@@ -33,6 +33,7 @@ import org.apache.maven.plugin.assembly.
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
+import org.codehaus.plexus.components.io.resources.PlexusIoResource;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.easymock.classextension.EasyMockSupport;
@@ -40,6 +41,8 @@ import org.easymock.classextension.EasyM
 import java.io.File;
 import java.io.IOException;
 
+import static org.easymock.EasyMock.anyInt;
+import static org.easymock.EasyMock.anyObject;
 import static org.easymock.EasyMock.expect;
 
 public class FileItemAssemblyPhaseTest
@@ -93,8 +96,6 @@ public class FileItemAssemblyPhaseTest
 
         final File tempRoot = fileManager.createTempDir();
 
-        macCS.expectGetTemporaryRootDirectory( tempRoot );
-
         macCS.expectGetProject( new MavenProject( new Model() ) );
 
         macCS.expectGetFinalName( "final-name" );
@@ -118,8 +119,6 @@ public class FileItemAssemblyPhaseTest
 
         assembly.addFile( fi );
         
-        macCS.expectGetEncoding();
-
         mm.replayAll();
 
         createPhase( macLogger.logger ).execute( ResolvedAssembly.create( assembly), macArchiver.archiver, macCS.configSource );
@@ -142,8 +141,6 @@ public class FileItemAssemblyPhaseTest
 
         final File tempRoot = fileManager.createTempDir();
 
-        macCS.expectGetTemporaryRootDirectory( tempRoot );
-
         macCS.expectGetProject( new MavenProject( new Model() ) );
 
         macCS.expectGetFinalName( "final-name" );
@@ -167,8 +164,6 @@ public class FileItemAssemblyPhaseTest
 
         assembly.addFile( fi );
 
-        macCS.expectGetEncoding();
-
         mm.replayAll();
 
         createPhase( macLogger.logger ).execute( ResolvedAssembly.create( assembly), macArchiver.archiver, macCS.configSource );
@@ -195,8 +190,6 @@ public class FileItemAssemblyPhaseTest
 
         final File tempRoot = fileManager.createTempDir();
 
-        macCS.expectGetTemporaryRootDirectory( tempRoot );
-
         macCS.expectGetProject( new MavenProject( new Model() ) );
 
         macCS.expectGetFinalName( "final-name" );
@@ -244,8 +237,6 @@ public class FileItemAssemblyPhaseTest
         assembly.addFile( licenseFileItem );
         assembly.addFile( configFileItem );
 
-        macCS.expectGetEncoding();
-
         mm.replayAll();
 
         createPhase( macLogger.logger ).execute( ResolvedAssembly.create( assembly), macArchiver.archiver, macCS.configSource );
@@ -272,8 +263,6 @@ public class FileItemAssemblyPhaseTest
 
         final File tempRoot = fileManager.createTempDir();
 
-        macCS.expectGetTemporaryRootDirectory( tempRoot );
-
         macCS.expectGetProject( new MavenProject( new Model() ) );
 
         macCS.expectGetFinalName( "final-name" );
@@ -324,8 +313,6 @@ public class FileItemAssemblyPhaseTest
         assembly.addFile( licenseFileItem );
         assembly.addFile( configFileItem );
 
-        macCS.expectGetEncoding();
-
         mm.replayAll();
 
         createPhase( macLogger.logger ).execute( ResolvedAssembly.create( assembly), macArchiver.archiver, macCS.configSource );
@@ -352,8 +339,6 @@ public class FileItemAssemblyPhaseTest
 
         final File tempRoot = fileManager.createTempDir();
 
-        macCS.expectGetTemporaryRootDirectory( tempRoot );
-
         macCS.expectGetProject( new MavenProject( new Model() ) );
 
         macCS.expectGetFinalName( "final-name" );
@@ -402,8 +387,6 @@ public class FileItemAssemblyPhaseTest
         assembly.addFile( licenseFileItem );
         assembly.addFile( configFileItem );
 
-        macCS.expectGetEncoding();
-
         mm.replayAll();
 
         createPhase( macLogger.logger ).execute( ResolvedAssembly.create( assembly), macArchiver.archiver, macCS.configSource );
@@ -432,7 +415,7 @@ public class FileItemAssemblyPhaseTest
         {
             try
             {
-                archiver.addFile( file, outputLocation, fileMode );
+                archiver.addResource( ( PlexusIoResource) anyObject(), (String) anyObject(), anyInt() );
             }
             catch ( final ArchiverException e )
             {

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/format/ReaderFormatterTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/format/ReaderFormatterTest.java?rev=1635529&r1=1635528&r2=1635529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/format/ReaderFormatterTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/format/ReaderFormatterTest.java Thu Oct 30 16:04:30 2014
@@ -1,23 +1,95 @@
 package org.apache.maven.plugin.assembly.format;
 
-import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
-import org.apache.maven.plugin.assembly.testutils.ConfigSourceStub;
+import org.apache.commons.io.IOUtils;
+import org.apache.maven.model.Model;
+import org.apache.maven.plugin.assembly.testutils.PojoConfigSource;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.filtering.DefaultMavenReaderFilter;
+import org.codehaus.plexus.archiver.resources.PlexusIoVirtualFileResource;
 import org.codehaus.plexus.components.io.functions.InputStreamTransformer;
-import org.junit.Ignore;
+import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.junit.Test;
 
-import static org.junit.Assert.*;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
 
+import static org.apache.maven.plugin.assembly.format.ReaderFormatter.getFileSetTransformers;
+import static org.junit.Assert.assertEquals;
+
+
+@SuppressWarnings( "ConstantConditions" )
 public class ReaderFormatterTest
 {
+    @Test
+    public void lineDosFeed()
+        throws IOException, AssemblyFormattingException
+    {
+        final PojoConfigSource cfg = getPojoConfigSource();
+        InputStreamTransformer fileSetTransformers = getFileSetTransformers( cfg, true, "dos" );
+        InputStream fud = fileSetTransformers.transform( dummyResource(), payload( "This is a\ntest." ) );
+        assertEquals( "This is a\r\ntest.", readResultStream( fud ) );
+    }
 
     @Test
-    @Ignore
-    public void testGetFileSetTransformers()
-        throws Exception
+    public void lineUnixFeedWithInterpolation()
+        throws IOException, AssemblyFormattingException
     {
-        final AssemblerConfigurationSource assemblerConfigurationSource =  new ConfigSourceStub();
-        ReaderFormatter.getFileSetTransformers( assemblerConfigurationSource, true, "\r\n" );
+        final PojoConfigSource cfg = getPojoConfigSource();
+        InputStreamTransformer fileSetTransformers = getFileSetTransformers( cfg, true, "unix" );
+        InputStream fud = fileSetTransformers.transform( dummyResource(), payload( "This is a test for project: ${artifactId} @artifactId@.") );
+        assertEquals( "This is a test for project: anArtifact anArtifact.", readResultStream( fud ) );
     }
 
+
+    private MavenProject createBasicMavenProject()
+    {
+        final Model model = new Model();
+        model.setArtifactId( "anArtifact" );
+        model.setGroupId( "group" );
+        model.setVersion( "version" );
+
+        return new MavenProject( model );
+    }
+
+
+    private String readResultStream( InputStream fud )
+        throws IOException
+    {
+        byte[] actual = new byte[100];
+        int read = IOUtils.read( fud, actual );
+        return new String( actual, 0, read);
+    }
+
+    private ByteArrayInputStream payload( String payload )
+    {
+        return new ByteArrayInputStream( payload.getBytes() );
+    }
+
+    private PojoConfigSource getPojoConfigSource()
+    {
+        final PojoConfigSource cfg =  new PojoConfigSource();
+        cfg.setEncoding( "UTF-8" );
+        DefaultMavenReaderFilter mavenReaderFilter = new DefaultMavenReaderFilter();
+        mavenReaderFilter.enableLogging( new ConsoleLogger( 2, "fud" ) );
+        cfg.setMavenReaderFilter( mavenReaderFilter );
+        cfg.setEscapeString( null );
+        cfg.setMavenProject( createBasicMavenProject() );
+
+/*        expect( configSource.getFilters()).andReturn( filters );
+
+        expect( configSource.isIncludeProjectBuildFilters()).andReturn( includeProjectBuildFilters );
+
+        expect( configSource.getDelimiters()).andReturn( delimiters );
+*/
+        return cfg;
+    }
+
+    private PlexusIoVirtualFileResource dummyResource()
+    {
+        return new PlexusIoVirtualFileResource( new File( "fud" ) )
+        {
+        };
+    }
 }
\ No newline at end of file

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/interpolation/AssemblyExpressionEvaluatorTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/interpolation/AssemblyExpressionEvaluatorTest.java?rev=1635529&r1=1635528&r2=1635529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/interpolation/AssemblyExpressionEvaluatorTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/interpolation/AssemblyExpressionEvaluatorTest.java Thu Oct 30 16:04:30 2014
@@ -25,7 +25,7 @@ import org.apache.maven.execution.MavenS
 import org.apache.maven.model.Build;
 import org.apache.maven.model.Model;
 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
-import org.apache.maven.plugin.assembly.testutils.ConfigSourceStub;
+import org.apache.maven.plugin.assembly.testutils.PojoConfigSource;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 import org.easymock.classextension.EasyMockSupport;
@@ -39,7 +39,7 @@ public class AssemblyExpressionEvaluator
     extends TestCase
 {
 
-    private final ConfigSourceStub configSourceStub = new ConfigSourceStub();
+    private final PojoConfigSource configSourceStub = new PojoConfigSource();
 
     public void testShouldResolveModelGroupId()
         throws ExpressionEvaluationException
@@ -50,7 +50,7 @@ public class AssemblyExpressionEvaluator
         model.setVersion( "1" );
         model.setPackaging( "jar" );
 
-        configSourceStub.setProject( new MavenProject( model ) );
+        configSourceStub.setMavenProject( new MavenProject( model ) );
 
         final Object result = new AssemblyExpressionEvaluator( configSourceStub ).evaluate( "assembly.${groupId}" );
 
@@ -71,7 +71,7 @@ public class AssemblyExpressionEvaluator
 
         model.setProperties( props );
 
-        configSourceStub.setProject( new MavenProject( model ) );
+        configSourceStub.setMavenProject( new MavenProject( model ) );
 
         final Object result = new AssemblyExpressionEvaluator( configSourceStub ).evaluate( "assembly.${groupId}" );
 
@@ -131,7 +131,7 @@ public class AssemblyExpressionEvaluator
         model.setVersion( "1" );
         model.setPackaging( "jar" );
 
-        configSourceStub.setProject( new MavenProject( model ) );
+        configSourceStub.setMavenProject( new MavenProject( model ) );
 
         final Object result = new AssemblyExpressionEvaluator( configSourceStub ).evaluate( "assembly.${unresolved}" );
 
@@ -147,7 +147,7 @@ public class AssemblyExpressionEvaluator
         final Model model = new Model();
         model.setBuild( build );
 
-        configSourceStub.setProject( new MavenProject( model ) );
+        configSourceStub.setMavenProject( new MavenProject( model ) );
 
         final Object result =
             new AssemblyExpressionEvaluator( configSourceStub ).evaluate( "assembly.${project.build.finalName}" );

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/interpolation/AssemblyInterpolatorTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/interpolation/AssemblyInterpolatorTest.java?rev=1635529&r1=1635528&r2=1635529&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/interpolation/AssemblyInterpolatorTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/interpolation/AssemblyInterpolatorTest.java Thu Oct 30 16:04:30 2014
@@ -19,12 +19,7 @@ package org.apache.maven.plugin.assembly
  * under the License.
  */
 
-import java.io.IOException;
-import java.util.List;
-import java.util.Properties;
-
 import junit.framework.TestCase;
-
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Build;
@@ -32,12 +27,16 @@ import org.apache.maven.model.Model;
 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugin.assembly.model.Assembly;
 import org.apache.maven.plugin.assembly.model.DependencySet;
-import org.apache.maven.plugin.assembly.testutils.ConfigSourceStub;
+import org.apache.maven.plugin.assembly.testutils.PojoConfigSource;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.easymock.classextension.EasyMockSupport;
 
+import java.io.IOException;
+import java.util.List;
+import java.util.Properties;
+
 import static org.easymock.EasyMock.expect;
 
 public class AssemblyInterpolatorTest
@@ -46,7 +45,7 @@ public class AssemblyInterpolatorTest
 
     private AssemblyInterpolator interpolator;
 
-    private final AssemblerConfigurationSource configSourceStub = new ConfigSourceStub();
+    private final AssemblerConfigurationSource configSourceStub = new PojoConfigSource();
 
     @Override
     public void setUp()

Added: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/PojoConfigSource.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/PojoConfigSource.java?rev=1635529&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/PojoConfigSource.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/PojoConfigSource.java Thu Oct 30 16:04:30 2014
@@ -0,0 +1,452 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.plugin.assembly.testutils;
+
+import org.apache.maven.archiver.MavenArchiveConfiguration;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.filtering.MavenReaderFilter;
+
+import java.io.File;
+import java.util.List;
+
+public class PojoConfigSource implements AssemblerConfigurationSource
+{
+    String descriptor;
+
+    private File basedir;
+
+    private MavenProject mavenProject;
+
+    private boolean isSitencluded;
+
+    private File siteDirectory;
+
+    private String decriptorId;
+
+    private String finalName;
+
+    private List<String> delimiters;
+
+    private String escapeString;
+
+    private String encoding;
+
+    private boolean isUpdateOnly;
+
+    private boolean isUseJvmChmod;
+
+    private boolean isIgnorePermissions;
+
+    private String archiverConfig;
+
+    private boolean isAssemblyIdAppended;
+
+    private String classifier;
+
+    private String tarLongFileMode;
+
+    private File workingDirectory;
+
+    private MavenArchiveConfiguration jarArchiveConfiguration;
+
+    private MavenReaderFilter mavenReaderFilter;
+
+    private File outputDirectory;
+
+    private String[] descriptors;
+
+    private String[] descriptorReferences;
+
+    private File descriptorSourceReference;
+
+    private ArtifactRepository localRepository;
+
+    private File temporaryRootDirectory;
+
+    private File archiveBaseDirectory;
+
+    private List<String> filters;
+
+    private boolean isIncludeProjectBuildFilter;
+
+    private List<MavenProject> reactorProjects;
+
+    private List<ArtifactRepository> remoteRepository;
+
+    private boolean isDryRun;
+
+    private boolean isIgnoreDirFormatExtensions;
+
+    private boolean isIgnoreMissingDescriptor;
+
+    private MavenSession mavenSession;
+
+    public String getDescriptor()
+    {
+        return descriptor;
+    }
+
+    public String getDescriptorId()
+    {
+        return decriptorId;
+    }
+
+    public String[] getDescriptors()
+    {
+        return descriptors;
+    }
+
+    public String[] getDescriptorReferences()
+    {
+        return descriptorReferences;
+    }
+
+    public File getDescriptorSourceDirectory()
+    {
+        return descriptorSourceReference;
+    }
+
+    public File getBasedir()
+    {
+        return basedir;
+    }
+
+    public MavenProject getProject()
+    {
+        return mavenProject;
+    }
+
+    public boolean isSiteIncluded()
+    {
+        return isSitencluded;
+    }
+
+    public File getSiteDirectory()
+    {
+        return siteDirectory;
+    }
+
+    public String getFinalName()
+    {
+        return finalName;
+    }
+
+    public boolean isAssemblyIdAppended()
+    {
+        return isAssemblyIdAppended;
+    }
+
+    public String getClassifier()
+    {
+        return classifier;
+    }
+
+    public String getTarLongFileMode()
+    {
+        return tarLongFileMode;
+    }
+
+    public File getOutputDirectory()
+    {
+        return outputDirectory;
+    }
+
+    public File getWorkingDirectory()
+    {
+        return workingDirectory;
+    }
+
+    public MavenArchiveConfiguration getJarArchiveConfiguration()
+    {
+        return jarArchiveConfiguration;
+    }
+
+    public ArtifactRepository getLocalRepository()
+    {
+        return localRepository;
+    }
+
+    public File getTemporaryRootDirectory()
+    {
+        return temporaryRootDirectory;
+    }
+
+    public File getArchiveBaseDirectory()
+    {
+        return archiveBaseDirectory;
+    }
+
+    public List<String> getFilters()
+    {
+        return filters;
+    }
+
+    public boolean isIncludeProjectBuildFilters()
+    {
+        return isIncludeProjectBuildFilter;
+    }
+
+    public List<MavenProject> getReactorProjects()
+    {
+        return reactorProjects;
+    }
+
+    public List<ArtifactRepository> getRemoteRepositories()
+    {
+        return remoteRepository;
+    }
+
+    public boolean isDryRun()
+    {
+        return isDryRun;
+    }
+
+    public boolean isIgnoreDirFormatExtensions()
+    {
+        return isIgnoreDirFormatExtensions;
+    }
+
+    public boolean isIgnoreMissingDescriptor()
+    {
+        return isIgnoreMissingDescriptor;
+    }
+
+    public MavenSession getMavenSession()
+    {
+        return mavenSession;
+    }
+
+    public String getArchiverConfig()
+    {
+        return archiverConfig;
+    }
+
+    public MavenReaderFilter getMavenReaderFilter()
+    {
+        return mavenReaderFilter;
+    }
+
+    public boolean isUpdateOnly()
+    {
+        return isUpdateOnly;
+    }
+
+    public boolean isUseJvmChmod()
+    {
+        return isUseJvmChmod;
+    }
+
+    public boolean isIgnorePermissions()
+    {
+        return isIgnorePermissions;
+    }
+
+    public String getEncoding()
+    {
+        return encoding;
+    }
+
+    public String getEscapeString()
+    {
+        return escapeString;
+    }
+
+    public List<String> getDelimiters()
+    {
+        return delimiters;
+    }
+
+    public void setDescriptor( String descriptor )
+    {
+        this.descriptor = descriptor;
+    }
+
+    public void setBasedir( File basedir )
+    {
+        this.basedir = basedir;
+    }
+
+    public void setMavenProject( MavenProject mavenProject )
+    {
+        this.mavenProject = mavenProject;
+    }
+
+    public void setSitencluded( boolean isSitencluded )
+    {
+        this.isSitencluded = isSitencluded;
+    }
+
+    public void setSiteDirectory( File siteDirectory )
+    {
+        this.siteDirectory = siteDirectory;
+    }
+
+    public void setDecriptorId( String decriptorId )
+    {
+        this.decriptorId = decriptorId;
+    }
+
+    public void setFinalName( String finalName )
+    {
+        this.finalName = finalName;
+    }
+
+    public void setDelimiters( List<String> delimiters )
+    {
+        this.delimiters = delimiters;
+    }
+
+    public void setEscapeString( String escapeString )
+    {
+        this.escapeString = escapeString;
+    }
+
+    public void setEncoding( String encoding )
+    {
+        this.encoding = encoding;
+    }
+
+    public void setUpdateOnly( boolean isUpdateOnly )
+    {
+        this.isUpdateOnly = isUpdateOnly;
+    }
+
+    public void setUseJvmChmod( boolean isUseJvmChmod )
+    {
+        this.isUseJvmChmod = isUseJvmChmod;
+    }
+
+    public void setIgnorePermissions( boolean isIgnorePermissions )
+    {
+        this.isIgnorePermissions = isIgnorePermissions;
+    }
+
+    public void setArchiverConfig( String archiverConfig )
+    {
+        this.archiverConfig = archiverConfig;
+    }
+
+    public void setAssemblyIdAppended( boolean isAssemblyIdAppended )
+    {
+        this.isAssemblyIdAppended = isAssemblyIdAppended;
+    }
+
+    public void setClassifier( String classifier )
+    {
+        this.classifier = classifier;
+    }
+
+    public void setTarLongFileMode( String tarLongFileMode )
+    {
+        this.tarLongFileMode = tarLongFileMode;
+    }
+
+    public void setWorkingDirectory( File workingDirectory )
+    {
+        this.workingDirectory = workingDirectory;
+    }
+
+    public void setJarArchiveConfiguration( MavenArchiveConfiguration jarArchiveConfiguration )
+    {
+        this.jarArchiveConfiguration = jarArchiveConfiguration;
+    }
+
+    public void setMavenReaderFilter( MavenReaderFilter mavenReaderFilter )
+    {
+        this.mavenReaderFilter = mavenReaderFilter;
+    }
+
+    public void setOutputDirectory( File outputDirectory )
+    {
+        this.outputDirectory = outputDirectory;
+    }
+
+    public void setDescriptors( String[] descriptors )
+    {
+        this.descriptors = descriptors;
+    }
+
+    public void setDescriptorReferences( String[] descriptorReferences )
+    {
+        this.descriptorReferences = descriptorReferences;
+    }
+
+    public void setDescriptorSourceReference( File descriptorSourceReference )
+    {
+        this.descriptorSourceReference = descriptorSourceReference;
+    }
+
+    public void setLocalRepository( ArtifactRepository localRepository )
+    {
+        this.localRepository = localRepository;
+    }
+
+    public void setTemporaryRootDirectory( File temporaryRootDirectory )
+    {
+        this.temporaryRootDirectory = temporaryRootDirectory;
+    }
+
+    public void setArchiveBaseDirectory( File archiveBaseDirectory )
+    {
+        this.archiveBaseDirectory = archiveBaseDirectory;
+    }
+
+    public void setFilters( List<String> filters )
+    {
+        this.filters = filters;
+    }
+
+    public void setIncludeProjectBuildFilter( boolean isIncludeProjectBuildFilter )
+    {
+        this.isIncludeProjectBuildFilter = isIncludeProjectBuildFilter;
+    }
+
+    public void setReactorProjects( List<MavenProject> reactorProjects )
+    {
+        this.reactorProjects = reactorProjects;
+    }
+
+    public void setRemoteRepository( List<ArtifactRepository> remoteRepository )
+    {
+        this.remoteRepository = remoteRepository;
+    }
+
+    public void setDryRun( boolean isDryRun )
+    {
+        this.isDryRun = isDryRun;
+    }
+
+    public void setIgnoreDirFormatExtensions( boolean isIgnoreDirFormatExtensions )
+    {
+        this.isIgnoreDirFormatExtensions = isIgnoreDirFormatExtensions;
+    }
+
+    public void setIgnoreMissingDescriptor( boolean isIgnoreMissingDescriptor )
+    {
+        this.isIgnoreMissingDescriptor = isIgnoreMissingDescriptor;
+    }
+
+    public void setMavenSession( MavenSession mavenSession )
+    {
+        this.mavenSession = mavenSession;
+    }
+}