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;
+ }
+}