You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2007/07/14 05:30:34 UTC
svn commit: r556215 - in /maven/plugins/trunk/maven-assembly-plugin/src:
main/java/org/apache/maven/plugin/assembly/archive/
main/java/org/apache/maven/plugin/assembly/archive/archiver/
main/java/org/apache/maven/plugin/assembly/filter/ main/mdo/ main/...
Author: jdcasey
Date: Fri Jul 13 20:30:33 2007
New Revision: 556215
URL: http://svn.apache.org/viewvc?view=rev&rev=556215
Log:
Adding the ability to specify descriptor aggregators, similar to the one for components.xml, to process other files.
Added:
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/ContainerDescriptorHandler.java (with props)
Modified:
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.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/archiver/PrefixingProxyArchiver.java
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/ComponentsXmlArchiverFileFilter.java
maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo
maven/plugins/trunk/maven-assembly-plugin/src/main/resources/META-INF/plexus/components.xml
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java?view=diff&rev=556215&r1=556214&r2=556215
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java Fri Jul 13 20:30:33 2007
@@ -5,27 +5,37 @@
import org.apache.maven.plugin.assembly.archive.archiver.PrefixingProxyArchiver;
import org.apache.maven.plugin.assembly.archive.phase.AssemblyArchiverPhase;
import org.apache.maven.plugin.assembly.filter.ComponentsXmlArchiverFileFilter;
+import org.apache.maven.plugin.assembly.filter.ContainerDescriptorHandler;
import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
import org.apache.maven.plugin.assembly.model.Assembly;
+import org.apache.maven.plugin.assembly.model.ContainerDescriptorHandlerConfig;
import org.apache.maven.plugin.assembly.utils.AssemblyFileUtils;
import org.apache.maven.plugin.assembly.utils.AssemblyFormatUtils;
-import org.codehaus.plexus.archiver.ArchiveFileFilter;
+import org.codehaus.plexus.DefaultPlexusContainer;
+import org.codehaus.plexus.PlexusConstants;
+import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.PlexusContainerException;
import org.codehaus.plexus.archiver.Archiver;
import org.codehaus.plexus.archiver.ArchiverException;
-import org.codehaus.plexus.archiver.FilterEnabled;
-import org.codehaus.plexus.archiver.FinalizerEnabled;
-import org.codehaus.plexus.archiver.filters.JarSecurityFileFilter;
+import org.codehaus.plexus.archiver.filters.JarSecurityFileSelector;
import org.codehaus.plexus.archiver.jar.JarArchiver;
import org.codehaus.plexus.archiver.manager.ArchiverManager;
import org.codehaus.plexus.archiver.manager.NoSuchArchiverException;
import org.codehaus.plexus.archiver.tar.TarArchiver;
import org.codehaus.plexus.archiver.tar.TarLongFileMode;
import org.codehaus.plexus.archiver.war.WarArchiver;
+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+import org.codehaus.plexus.configuration.PlexusConfigurationResourceException;
+import org.codehaus.plexus.context.Context;
+import org.codehaus.plexus.context.ContextException;
import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
import java.io.File;
import java.io.IOException;
+import java.io.StringReader;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -34,11 +44,9 @@
*/
public class DefaultAssemblyArchiver
extends AbstractLogEnabled
- implements AssemblyArchiver
+ implements AssemblyArchiver, Contextualizable
{
- private static final ArchiveFileFilter JAR_SECURITY_FILE_FILTER = new JarSecurityFileFilter();
-
/**
* @plexus.requirement
*/
@@ -49,15 +57,18 @@
*/
private List assemblyPhases;
+ private PlexusContainer container;
+
public DefaultAssemblyArchiver()
{
// needed for plexus
}
// introduced for testing.
- public DefaultAssemblyArchiver( ArchiverManager archiverManager, List assemblyPhases )
+ public DefaultAssemblyArchiver( ArchiverManager archiverManager, PlexusContainer container, List assemblyPhases )
{
this.archiverManager = archiverManager;
+ this.container = container;
this.assemblyPhases = assemblyPhases;
}
@@ -69,8 +80,6 @@
AssemblyFileUtils.verifyTempDirectoryAvailability( configSource.getTemporaryRootDirectory(), getLogger() );
- ComponentsXmlArchiverFileFilter componentsXmlFilter = new ComponentsXmlArchiverFileFilter();
-
File outputDirectory = configSource.getOutputDirectory();
File destFile = new File( outputDirectory, filename );
@@ -88,8 +97,10 @@
finalName );
}
+ List containerHandlers = createContainerDescriptorHandlers( assembly.getContainerDescriptorHandlers() );
+
Archiver archiver = createArchiver( format, assembly.isIncludeBaseDirectory(), basedir, configSource,
- componentsXmlFilter );
+ containerHandlers );
for ( Iterator phaseIterator = assemblyPhases.iterator(); phaseIterator.hasNext(); )
{
@@ -118,6 +129,74 @@
return destFile;
}
+ private List createContainerDescriptorHandlers( List containerDescriptorHandlers )
+ throws InvalidAssemblerConfigurationException
+ {
+ if ( containerDescriptorHandlers == null )
+ {
+ containerDescriptorHandlers = new ArrayList();
+ }
+
+ List handlers = new ArrayList();
+ boolean foundPlexus = false;
+
+ for ( Iterator it = containerDescriptorHandlers.iterator(); it.hasNext(); )
+ {
+ ContainerDescriptorHandlerConfig config = (ContainerDescriptorHandlerConfig) it.next();
+
+ String hint = config.getHandlerName();
+ ContainerDescriptorHandler handler;
+
+ // TODO: There MUST BE a better way that this, but I kept running into
+ // incompatible ClassRealm class definitions...so, I give up.
+ DefaultPlexusContainer handlerContainer = new DefaultPlexusContainer();
+ handlerContainer.setParentPlexusContainer( container );
+
+ Object conf = config.getConfiguration();
+ if ( conf != null )
+ {
+ StringReader reader = new StringReader( String.valueOf( conf ) );
+
+ try
+ {
+ handlerContainer.setConfigurationResource( reader );
+ handlerContainer.initialize();
+ }
+ catch ( PlexusConfigurationResourceException e )
+ {
+ throw new InvalidAssemblerConfigurationException( "containerDescriptorHandler: " + hint + " could not be loaded.", e );
+ }
+ catch ( PlexusContainerException e )
+ {
+ throw new InvalidAssemblerConfigurationException( "containerDescriptorHandler: " + hint + " could not be loaded.", e );
+ }
+ }
+
+ try
+ {
+ handler = (ContainerDescriptorHandler) handlerContainer.lookup( ContainerDescriptorHandler.class.getName(), hint );
+ }
+ catch ( ComponentLookupException e )
+ {
+ throw new InvalidAssemblerConfigurationException( "containerDescriptorHandler: " + hint + " could not be loaded.", e );
+ }
+
+ handlers.add( handler );
+
+ if ( "plexus".equals( hint ) )
+ {
+ foundPlexus = true;
+ }
+ }
+
+ if ( !foundPlexus )
+ {
+ handlers.add( new ComponentsXmlArchiverFileFilter() );
+ }
+
+ return handlers;
+ }
+
/**
* Creates the necessary archiver to build the distribution file.
*
@@ -133,7 +212,7 @@
*/
protected Archiver createArchiver( String format, boolean includeBaseDir, String finalName,
AssemblerConfigurationSource configSource,
- ComponentsXmlArchiverFileFilter componentsXmlFilter )
+ List containerHandlers )
throws ArchiverException, NoSuchArchiverException
{
Archiver archiver;
@@ -150,58 +229,29 @@
archiver = archiverManager.getArchiver( format );
}
- configureArchiverFilters( archiver, componentsXmlFilter );
-
- configureArchiverFinalizers( archiver, format, configSource, componentsXmlFilter );
-
- if ( includeBaseDir )
+ List extraSelectors = null;
+ if ( archiver instanceof JarArchiver )
{
- archiver = new PrefixingProxyArchiver( finalName, archiver );
+ extraSelectors = Collections.singletonList( new JarSecurityFileSelector() );
}
- return archiver;
- }
-
- protected void configureArchiverFinalizers( Archiver archiver, String format,
- AssemblerConfigurationSource configSource,
- ComponentsXmlArchiverFileFilter componentsXmlFilter )
- {
- if ( archiver instanceof FinalizerEnabled )
+ List extraFinalizers = null;
+ if ( "jar".equals( format ) )
{
- List finalizers = new ArrayList();
-
- finalizers.add( componentsXmlFilter );
-
- if ( "jar".equals( format ) )
- {
- finalizers.add( new ManifestCreationFinalizer( configSource.getProject(), configSource
- .getJarArchiveConfiguration() ) );
- }
-
- ( (FinalizerEnabled) archiver ).setArchiveFinalizers( finalizers );
+ extraFinalizers = Collections.singletonList( new ManifestCreationFinalizer( configSource.getProject(),
+ configSource.getJarArchiveConfiguration() ) );
}
- }
- protected void configureArchiverFilters( Archiver archiver, ComponentsXmlArchiverFileFilter componentsXmlFilter )
- {
- /*
- * If the assembly is 'jar-with-dependencies', remove the security files in all dependencies that will prevent
- * the uberjar to execute. Please see MASSEMBLY-64 for details.
- */
- if ( archiver instanceof FilterEnabled )
+ String prefix = "";
+ if ( includeBaseDir )
{
- List filters = new ArrayList();
-
- filters.add( componentsXmlFilter );
+ prefix = finalName;
+ }
- if ( archiver instanceof JarArchiver )
- {
- filters.add( JAR_SECURITY_FILE_FILTER );
- }
+ archiver = new PrefixingProxyArchiver( prefix, archiver, containerHandlers, extraSelectors, extraFinalizers );
- ( (FilterEnabled) archiver ).setArchiveFilters( filters );
- }
+ return archiver;
}
protected Archiver createWarArchiver()
@@ -249,6 +299,12 @@
tarArchiver.setLongfile( tarFileMode );
return tarArchiver;
+ }
+
+ public void contextualize( Context context )
+ throws ContextException
+ {
+ container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
}
}
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?view=diff&rev=556215&r1=556214&r2=556215
==============================================================================
--- 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 Fri Jul 13 20:30:33 2007
@@ -11,10 +11,12 @@
private final String rootPrefix;
private final ArchivedFileSet fileSet;
+ private final FileSelector[] selectors;
- public PrefixedArchivedFileSet( ArchivedFileSet fileSet, String rootPrefix )
+ public PrefixedArchivedFileSet( ArchivedFileSet fileSet, String rootPrefix, FileSelector[] selectors )
{
this.fileSet = fileSet;
+ this.selectors = selectors;
if ( ! rootPrefix.endsWith( "/" ) )
{
@@ -38,7 +40,22 @@
public FileSelector[] getFileSelectors()
{
- return fileSet.getFileSelectors();
+ FileSelector[] sel = fileSet.getFileSelectors();
+ if ( ( sel != null ) && ( selectors != null ) )
+ {
+ FileSelector[] temp = new FileSelector[ sel.length + selectors.length ];
+
+ System.arraycopy( sel, 0, temp, 0, sel.length );
+ System.arraycopy( selectors, 0, temp, sel.length, selectors.length );
+
+ sel = temp;
+ }
+ else if ( ( sel == null ) && ( selectors != null ) )
+ {
+ sel = selectors;
+ }
+
+ return sel;
}
public String[] getIncludes()
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?view=diff&rev=556215&r1=556214&r2=556215
==============================================================================
--- 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 Fri Jul 13 20:30:33 2007
@@ -11,10 +11,12 @@
private final String rootPrefix;
private final FileSet fileSet;
+ private final FileSelector[] selectors;
- public PrefixedFileSet( FileSet fileSet, String rootPrefix )
+ public PrefixedFileSet( FileSet fileSet, String rootPrefix, FileSelector[] selectors )
{
this.fileSet = fileSet;
+ this.selectors = selectors;
if ( ! rootPrefix.endsWith( "/" ) )
{
@@ -33,7 +35,22 @@
public FileSelector[] getFileSelectors()
{
- return fileSet.getFileSelectors();
+ FileSelector[] sel = fileSet.getFileSelectors();
+ if ( ( sel != null ) && ( selectors != null ) )
+ {
+ FileSelector[] temp = new FileSelector[ sel.length + selectors.length ];
+
+ System.arraycopy( sel, 0, temp, 0, sel.length );
+ System.arraycopy( selectors, 0, temp, sel.length, selectors.length );
+
+ sel = temp;
+ }
+ else if ( ( sel == null ) && ( selectors != null ) )
+ {
+ sel = selectors;
+ }
+
+ return sel;
}
public String[] getIncludes()
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/PrefixingProxyArchiver.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/PrefixingProxyArchiver.java?view=diff&rev=556215&r1=556214&r2=556215
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/PrefixingProxyArchiver.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/PrefixingProxyArchiver.java Fri Jul 13 20:30:33 2007
@@ -1,12 +1,24 @@
package org.apache.maven.plugin.assembly.archive.archiver;
+import org.apache.maven.plugin.assembly.filter.ContainerDescriptorHandler;
+import org.codehaus.plexus.archiver.ArchiveFinalizer;
import org.codehaus.plexus.archiver.ArchivedFileSet;
import org.codehaus.plexus.archiver.Archiver;
import org.codehaus.plexus.archiver.ArchiverException;
import org.codehaus.plexus.archiver.FileSet;
+import org.codehaus.plexus.archiver.FinalizerEnabled;
+import org.codehaus.plexus.archiver.util.DefaultArchivedFileSet;
+import org.codehaus.plexus.archiver.util.DefaultFileSet;
+import org.codehaus.plexus.components.io.fileselectors.FileInfo;
+import org.codehaus.plexus.components.io.fileselectors.FileSelector;
import java.io.File;
+import java.io.FileInputStream;
import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
import java.util.Map;
public class PrefixingProxyArchiver
@@ -14,77 +26,184 @@
{
private Archiver delegate;
+
private String rootPrefix;
- public PrefixingProxyArchiver( String rootPrefix, Archiver delegate )
+ private FileSelector[] selectors;
+
+ public PrefixingProxyArchiver( String rootPrefix, Archiver delegate, List containerDescriptorHandlers,
+ List extraSelectors, List extraFinalizers )
{
this.rootPrefix = rootPrefix;
this.delegate = delegate;
- if ( !rootPrefix.endsWith( "/" ) )
+ if ( !"".equals( rootPrefix ) && !rootPrefix.endsWith( "/" ) )
{
this.rootPrefix += "/";
}
+
+ List selectors = new ArrayList();
+
+ boolean isFinalizerEnabled = ( delegate instanceof FinalizerEnabled );
+
+ if ( containerDescriptorHandlers != null )
+ {
+ for ( Iterator it = containerDescriptorHandlers.iterator(); it.hasNext(); )
+ {
+ ContainerDescriptorHandler handler = (ContainerDescriptorHandler) it.next();
+
+ selectors.add( handler );
+
+ if ( isFinalizerEnabled )
+ {
+ ( (FinalizerEnabled) delegate ).addArchiveFinalizer( handler );
+ }
+ }
+ }
+
+ if ( extraSelectors != null )
+ {
+ for ( Iterator it = extraSelectors.iterator(); it.hasNext(); )
+ {
+ FileSelector selector = (FileSelector) it.next();
+ selectors.add( selector );
+ }
+ }
+
+ if ( ( extraFinalizers != null ) && isFinalizerEnabled )
+ {
+ for ( Iterator it = extraFinalizers.iterator(); it.hasNext(); )
+ {
+ ( (FinalizerEnabled) delegate ).addArchiveFinalizer( (ArchiveFinalizer) it.next() );
+ }
+ }
+
+ if ( !selectors.isEmpty() )
+ {
+ this.selectors = (FileSelector[]) selectors.toArray( new FileSelector[0] );
+ }
}
public void addArchivedFileSet( File archiveFile, String prefix, String[] includes, String[] excludes )
throws ArchiverException
{
- delegate.addArchivedFileSet( archiveFile, rootPrefix + prefix, includes, excludes );
+ DefaultArchivedFileSet fs = new DefaultArchivedFileSet();
+
+ fs.setArchive( archiveFile );
+ fs.setIncludes( includes );
+ fs.setExcludes( excludes );
+ fs.setPrefix( rootPrefix + prefix );
+ fs.setFileSelectors( selectors );
+
+ delegate.addArchivedFileSet( fs );
}
public void addArchivedFileSet( File archiveFile, String prefix )
throws ArchiverException
{
- delegate.addArchivedFileSet( archiveFile, rootPrefix + prefix );
+ DefaultArchivedFileSet fs = new DefaultArchivedFileSet();
+
+ fs.setArchive( archiveFile );
+ fs.setPrefix( rootPrefix + prefix );
+ fs.setFileSelectors( selectors );
+
+ delegate.addArchivedFileSet( fs );
}
public void addArchivedFileSet( File archiveFile, String[] includes, String[] excludes )
throws ArchiverException
{
- delegate.addArchivedFileSet( archiveFile, rootPrefix, includes, excludes );
+ DefaultArchivedFileSet fs = new DefaultArchivedFileSet();
+
+ fs.setArchive( archiveFile );
+ fs.setIncludes( includes );
+ fs.setExcludes( excludes );
+ fs.setPrefix( rootPrefix );
+ fs.setFileSelectors( selectors );
+
+ delegate.addArchivedFileSet( fs );
}
public void addArchivedFileSet( File archiveFile )
throws ArchiverException
{
- delegate.addArchivedFileSet( archiveFile, rootPrefix );
+ DefaultArchivedFileSet fs = new DefaultArchivedFileSet();
+
+ fs.setArchive( archiveFile );
+ fs.setPrefix( rootPrefix );
+ fs.setFileSelectors( selectors );
+
+ delegate.addArchivedFileSet( fs );
}
public void addDirectory( File directory, String prefix, String[] includes, String[] excludes )
throws ArchiverException
{
- delegate.addDirectory( directory, rootPrefix + prefix, includes, excludes );
+ DefaultFileSet fs = new DefaultFileSet();
+
+ fs.setDirectory( directory );
+ fs.setIncludes( includes );
+ fs.setExcludes( excludes );
+ fs.setPrefix( rootPrefix + prefix );
+ fs.setFileSelectors( selectors );
+
+ delegate.addFileSet( fs );
}
public void addDirectory( File directory, String prefix )
throws ArchiverException
{
- delegate.addDirectory( directory, rootPrefix + prefix );
+ DefaultFileSet fs = new DefaultFileSet();
+
+ fs.setDirectory( directory );
+ fs.setPrefix( rootPrefix + prefix );
+ fs.setFileSelectors( selectors );
+
+ delegate.addFileSet( fs );
}
public void addDirectory( File directory, String[] includes, String[] excludes )
throws ArchiverException
{
- delegate.addDirectory( directory, rootPrefix, includes, excludes );
+ DefaultFileSet fs = new DefaultFileSet();
+
+ fs.setDirectory( directory );
+ fs.setIncludes( includes );
+ fs.setExcludes( excludes );
+ fs.setPrefix( rootPrefix );
+ fs.setFileSelectors( selectors );
+
+ delegate.addFileSet( fs );
}
public void addDirectory( File directory )
throws ArchiverException
{
- delegate.addDirectory( directory, rootPrefix );
+ DefaultFileSet fs = new DefaultFileSet();
+
+ fs.setDirectory( directory );
+ fs.setPrefix( rootPrefix );
+ fs.setFileSelectors( selectors );
+
+ delegate.addFileSet( fs );
}
public void addFile( File inputFile, String destFileName, int permissions )
throws ArchiverException
{
- delegate.addFile( inputFile, rootPrefix + destFileName, permissions );
+ if ( acceptFile( inputFile ) )
+ {
+ delegate.addFile( inputFile, rootPrefix + destFileName, permissions );
+ }
}
public void addFile( File inputFile, String destFileName )
throws ArchiverException
{
- delegate.addFile( inputFile, rootPrefix + destFileName );
+ if ( acceptFile( inputFile ) )
+ {
+ delegate.addFile( inputFile, rootPrefix + destFileName );
+ }
}
public void createArchive()
@@ -161,13 +280,74 @@
public void addArchivedFileSet( ArchivedFileSet fileSet )
throws ArchiverException
{
- delegate.addArchivedFileSet( new PrefixedArchivedFileSet( fileSet, rootPrefix ) );
+ delegate.addArchivedFileSet( new PrefixedArchivedFileSet( fileSet, rootPrefix, selectors ) );
}
public void addFileSet( FileSet fileSet )
throws ArchiverException
{
- delegate.addFileSet( fileSet );
+ delegate.addFileSet( new PrefixedFileSet( fileSet, rootPrefix, selectors ) );
+ }
+
+ private boolean acceptFile( File inputFile )
+ throws ArchiverException
+ {
+ if ( selectors != null )
+ {
+ FileInfo fileInfo = new DefaultFileInfo( inputFile );
+
+ for ( int i = 0; i < selectors.length; i++ )
+ {
+ try
+ {
+ if ( !selectors[i].isSelected( fileInfo ) )
+ {
+ return false;
+ }
+ }
+ catch ( IOException e )
+ {
+ throw new ArchiverException( "Error processing file: " + inputFile + " using selector: "
+ + selectors[i], e );
+ }
+ }
+ }
+
+ return true;
+ }
+
+ private static final class DefaultFileInfo
+ implements FileInfo
+ {
+
+ private final File inputFile;
+
+ DefaultFileInfo( File inputFile )
+ {
+ this.inputFile = inputFile;
+ }
+
+ public InputStream getContents()
+ throws IOException
+ {
+ return new FileInputStream( inputFile );
+ }
+
+ public String getName()
+ {
+ return inputFile.getName();
+ }
+
+ public boolean isDirectory()
+ {
+ return inputFile.isDirectory();
+ }
+
+ public boolean isFile()
+ {
+ return inputFile.isFile();
+ }
+
}
}
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/ComponentsXmlArchiverFileFilter.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/ComponentsXmlArchiverFileFilter.java?view=diff&rev=556215&r1=556214&r2=556215
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/ComponentsXmlArchiverFileFilter.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/ComponentsXmlArchiverFileFilter.java Fri Jul 13 20:30:33 2007
@@ -16,6 +16,17 @@
* limitations under the License.
*/
+import org.codehaus.plexus.archiver.ArchiveFilterException;
+import org.codehaus.plexus.archiver.Archiver;
+import org.codehaus.plexus.archiver.ArchiverException;
+import org.codehaus.plexus.archiver.UnArchiver;
+import org.codehaus.plexus.components.io.fileselectors.FileInfo;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
+import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
+import org.codehaus.plexus.util.xml.Xpp3DomWriter;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
@@ -28,27 +39,13 @@
import java.util.List;
import java.util.Map;
-import org.codehaus.plexus.archiver.AbstractArchiveFinalizer;
-import org.codehaus.plexus.archiver.ArchiveFileFilter;
-import org.codehaus.plexus.archiver.ArchiveFilterException;
-import org.codehaus.plexus.archiver.Archiver;
-import org.codehaus.plexus.archiver.ArchiverException;
-import org.codehaus.plexus.components.io.fileselectors.FileInfo;
-import org.codehaus.plexus.components.io.fileselectors.FileSelector;
-import org.codehaus.plexus.util.IOUtil;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
-import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
-import org.codehaus.plexus.util.xml.Xpp3DomWriter;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-
/**
* Components XML file filter.
*
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
*/
public class ComponentsXmlArchiverFileFilter
- extends AbstractArchiveFinalizer
- implements ArchiveFileFilter, FileSelector
+ implements ContainerDescriptorHandler
{
// [jdcasey] Switched visibility to protected to allow testing. Also, because this class isn't final, it should allow
// some minimal access to the components accumulated for extending classes.
@@ -208,17 +205,29 @@
public boolean isSelected( FileInfo fileInfo )
throws IOException
{
- try
+ if ( fileInfo.isFile() )
{
- return isIncluded( fileInfo.getContents(), fileInfo.getName() );
+ try
+ {
+ return isIncluded( fileInfo.getContents(), fileInfo.getName() );
+ }
+ catch ( XmlPullParserException e )
+ {
+ IOException error = new IOException( "Error finalizing component-set for archive. Reason: " + e.getMessage() );
+ error.initCause( e );
+
+ throw error;
+ }
}
- catch ( XmlPullParserException e )
+ else
{
- IOException error = new IOException( "Error finalizing component-set for archive. Reason: " + e.getMessage() );
- error.initCause( e );
-
- throw error;
+ return false;
}
+ }
+
+ public void finalizeArchiveExtraction( UnArchiver unarchiver )
+ throws ArchiverException
+ {
}
}
Added: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/ContainerDescriptorHandler.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/ContainerDescriptorHandler.java?view=auto&rev=556215
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/ContainerDescriptorHandler.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/ContainerDescriptorHandler.java Fri Jul 13 20:30:33 2007
@@ -0,0 +1,10 @@
+package org.apache.maven.plugin.assembly.filter;
+
+import org.codehaus.plexus.archiver.ArchiveFinalizer;
+import org.codehaus.plexus.components.io.fileselectors.FileSelector;
+
+public interface ContainerDescriptorHandler
+ extends ArchiveFinalizer, FileSelector
+{
+
+}
Propchange: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/ContainerDescriptorHandler.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/ContainerDescriptorHandler.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo?view=diff&rev=556215&r1=556214&r2=556215
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo Fri Jul 13 20:30:33 2007
@@ -98,7 +98,7 @@
<li><b>"gz"</b> - Creates a GZIP format</li>
<li><b>"tar"</b> - Creates a TAR format</li>
<li><b>"tar.gz"</b> - Creates a gzip'd TAR format</li>
- <li><b>"tar.bz2</b> - Creates a bzip'd TAR format</li>
+ <li><b>"tar.bz2"</b> - Creates a bzip'd TAR format</li>
</ul>
]]>
</description>
@@ -137,6 +137,20 @@
</description>
</field>
<field>
+ <name>containerDescriptorHandlers</name>
+ <version>1.1.0</version>
+ <association>
+ <type>ContainerDescriptorHandlerConfig</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ <description>
+ <![CDATA[
+ Set of components which filter various container descriptors out of
+ the normal archive stream, so they can be aggregated then added.
+ ]]>
+ </description>
+ </field>
+ <field>
<name>moduleSets</name>
<version>1.0.0+</version>
<association>
@@ -921,6 +935,34 @@
</description>
<defaultValue>false</defaultValue>
<type>boolean</type>
+ </field>
+ </fields>
+ </class>
+ <class>
+ <name>ContainerDescriptorHandlerConfig</name>
+ <version>1.1.0</version>
+ <description>
+ Configures a filter for files headed into the assembly archive, to enable
+ aggregation of various types of descriptor fragments, such as components.xml,
+ web.xml, etc.
+ </description>
+ <fields>
+ <field>
+ <name>handlerName</name>
+ <version>1.1.0</version>
+ <description>
+ The handler's plexus role-hint, for lookup from the container.
+ </description>
+ <type>String</type>
+ <required>true</required>
+ </field>
+ <field>
+ <name>configuration</name>
+ <version>1.1.0</version>
+ <description>
+ Configuration options for the handler.
+ </description>
+ <type>DOM</type>
</field>
</fields>
</class>
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/resources/META-INF/plexus/components.xml?view=diff&rev=556215&r1=556214&r2=556215
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/resources/META-INF/plexus/components.xml Fri Jul 13 20:30:33 2007
@@ -25,5 +25,12 @@
<implementation>org.codehaus.plexus.archiver.zip.ZipUnArchiver</implementation>
<instantiation-strategy>per-lookup</instantiation-strategy>
</component>
+
+ <component>
+ <role>org.apache.maven.plugin.assembly.filter.ContainerDescriptorHandler</role>
+ <role-hint>plexus</role-hint>
+ <implementation>org.apache.maven.plugin.assembly.filter.ComponentsXmlArchiverFileFilter</implementation>
+ <instantiation-strategy>per-lookup</instantiation-strategy>
+ </component>
</components>
</component-set>
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?view=diff&rev=556215&r1=556214&r2=556215
==============================================================================
--- 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 Fri Jul 13 20:30:33 2007
@@ -1,20 +1,16 @@
package org.apache.maven.plugin.assembly.archive;
-import org.apache.maven.archiver.MavenArchiveConfiguration;
-import org.apache.maven.model.Model;
import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
import org.apache.maven.plugin.assembly.InvalidAssemblerConfigurationException;
import org.apache.maven.plugin.assembly.archive.phase.AssemblyArchiverPhase;
-import org.apache.maven.plugin.assembly.filter.ComponentsXmlArchiverFileFilter;
import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
import org.apache.maven.plugin.assembly.model.Assembly;
import org.apache.maven.plugin.assembly.testutils.MockManager;
import org.apache.maven.plugin.assembly.testutils.TestFileManager;
-import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.archiver.ArchiveFinalizer;
import org.codehaus.plexus.archiver.Archiver;
import org.codehaus.plexus.archiver.ArchiverException;
-import org.codehaus.plexus.archiver.FilterEnabled;
import org.codehaus.plexus.archiver.FinalizerEnabled;
import org.codehaus.plexus.archiver.manager.ArchiverManager;
import org.codehaus.plexus.archiver.manager.NoSuchArchiverException;
@@ -41,9 +37,9 @@
public class DefaultAssemblyArchiverTest
extends TestCase
{
-
+
private TestFileManager fileManager = new TestFileManager( "def-assy-archiver.test.", "" );
-
+
public void tearDown() throws IOException
{
fileManager.cleanUp();
@@ -55,8 +51,8 @@
{
MockManager mm = new MockManager();
- MockAndControlForArchiverManager macMgr = new MockAndControlForArchiverManager( mm );
-
+ MockAndControlForAssemblyArchiver macMgr = new MockAndControlForAssemblyArchiver( mm );
+
macMgr.expectGetArchiver( "zip", Archiver.class );
MockControl phaseControl = MockControl.createControl( AssemblyArchiverPhase.class );
@@ -66,22 +62,22 @@
phase.execute( null, null, null );
phaseControl.setMatcher( MockControl.ALWAYS_MATCHER );
-
+
MockControl csControl = MockControl.createControl( AssemblerConfigurationSource.class );
mm.add( csControl );
-
+
AssemblerConfigurationSource configSource = ( AssemblerConfigurationSource ) csControl.getMock();
-
+
File tempDir = fileManager.createTempDir();
FileUtils.deleteDirectory( tempDir );
-
+
configSource.getTemporaryRootDirectory();
csControl.setReturnValue( tempDir, MockControl.ZERO_OR_MORE );
-
+
File outDir = fileManager.createTempDir();
-
+
macMgr.archiver.setDestFile( new File( outDir, "full-name.zip" ) );
-
+
try
{
macMgr.archiver.createArchive();
@@ -94,21 +90,21 @@
{
fail( "Should never happen" );
}
-
+
configSource.getOutputDirectory();
csControl.setReturnValue( outDir );
-
+
configSource.getFinalName();
csControl.setReturnValue( "finalName" );
-
+
Assembly assembly = new Assembly();
-
+
mm.replayAll();
-
- DefaultAssemblyArchiver subject = createSubject( macMgr.archiverManager, Collections.singletonList( phase ), null );
-
+
+ DefaultAssemblyArchiver subject = createSubject( macMgr, Collections.singletonList( phase ), null );
+
subject.createArchive( assembly, "full-name", "zip", configSource );
-
+
mm.verifyAll();
}
@@ -119,26 +115,24 @@
TestTarArchiver ttArchiver = new TestTarArchiver();
- MockAndControlForArchiverManager macArchiverManager = new MockAndControlForArchiverManager( mm );
+ MockAndControlForAssemblyArchiver macArchiverManager = new MockAndControlForAssemblyArchiver( mm );
macArchiverManager.expectGetArchiver( "tar", ttArchiver );
-
+
MockControl configCtl = MockControl.createControl( AssemblerConfigurationSource.class );
AssemblerConfigurationSource configSource = (AssemblerConfigurationSource) configCtl.getMock();
-
+
configSource.getTarLongFileMode();
configCtl.setReturnValue( TarLongFileMode.FAIL, MockControl.ZERO_OR_MORE );
-
- mm.add( configCtl );
- ComponentsXmlArchiverFileFilter filter = new ComponentsXmlArchiverFileFilter();
+ mm.add( configCtl );
mm.replayAll();
DefaultAssemblyArchiver subject =
- createSubject( macArchiverManager.archiverManager, Collections.EMPTY_LIST, null );
+ createSubject( macArchiverManager, Collections.EMPTY_LIST, null );
- subject.createArchiver( "tar", false, "finalName", configSource, filter );
+ subject.createArchiver( "tar", false, "finalName", configSource, null );
assertNull( ttArchiver.compressionMethod );
assertEquals( TarLongFileMode.FAIL, ttArchiver.longFileMode.getValue() );
@@ -153,18 +147,16 @@
TestWarArchiver twArchiver = new TestWarArchiver();
- MockAndControlForArchiverManager macArchiverManager = new MockAndControlForArchiverManager( mm );
+ MockAndControlForAssemblyArchiver macArchiverManager = new MockAndControlForAssemblyArchiver( mm );
macArchiverManager.expectGetArchiver( "war", twArchiver );
- ComponentsXmlArchiverFileFilter filter = new ComponentsXmlArchiverFileFilter();
-
mm.replayAll();
DefaultAssemblyArchiver subject =
- createSubject( macArchiverManager.archiverManager, Collections.EMPTY_LIST, null );
+ createSubject( macArchiverManager, Collections.EMPTY_LIST, null );
- subject.createArchiver( "war", false, null, null, filter );
+ subject.createArchiver( "war", false, null, null, null );
assertFalse( twArchiver.ignoreWebxml );
}
@@ -176,122 +168,121 @@
ZipArchiver archiver = new ZipArchiver();
- MockAndControlForArchiverManager macArchiverManager = new MockAndControlForArchiverManager( mm );
+ MockAndControlForAssemblyArchiver macArchiverManager = new MockAndControlForAssemblyArchiver( mm );
macArchiverManager.expectGetArchiver( "zip", archiver );
- ComponentsXmlArchiverFileFilter filter = new ComponentsXmlArchiverFileFilter();
-
- mm.replayAll();
-
- DefaultAssemblyArchiver subject =
- createSubject( macArchiverManager.archiverManager, Collections.EMPTY_LIST, null );
-
- subject.createArchiver( "zip", false, null, null, filter );
- }
-
- public void testConfigureArchiverFinalizers_ShouldDoNothingWhenNotSupportedByArchiver()
- {
- MockManager mm = new MockManager();
-
- MockAndControlForArchiverManager macArchiverManager = new MockAndControlForArchiverManager( mm );
-
- macArchiverManager.createArchiver( Archiver.class );
-
- ComponentsXmlArchiverFileFilter filter = new ComponentsXmlArchiverFileFilter();
-
- mm.replayAll();
-
- DefaultAssemblyArchiver subject =
- createSubject( macArchiverManager.archiverManager, Collections.EMPTY_LIST, null );
-
- subject.configureArchiverFinalizers( macArchiverManager.archiver, "format", null, filter );
-
- mm.verifyAll();
- }
-
- public void testConfigureArchiverFinalizers_ShouldAddManifestFinalizerWhenSupportedByArchiver()
- {
- MockManager mm = new MockManager();
-
- MockAndControlForArchiverManager macArchiverManager = new MockAndControlForArchiverManager( mm );
-
- macArchiverManager.createArchiver( TestFinalizerFilteredArchiver.class );
-
- Set finalizerClasses = new HashSet();
- finalizerClasses.add( ComponentsXmlArchiverFileFilter.class );
- finalizerClasses.add( ManifestCreationFinalizer.class );
-
- macArchiverManager.expectSetArchiverFinalizers( finalizerClasses );
-
- ComponentsXmlArchiverFileFilter filter = new ComponentsXmlArchiverFileFilter();
-
- MockControl configCtl = MockControl.createControl( AssemblerConfigurationSource.class );
- AssemblerConfigurationSource configSource = (AssemblerConfigurationSource) configCtl.getMock();
-
- Model model = new Model();
- model.setGroupId( "group" );
- model.setArtifactId( "artifact" );
- model.setVersion( "1" );
-
- configSource.getProject();
- configCtl.setReturnValue( new MavenProject( model ), MockControl.ZERO_OR_MORE );
-
- configSource.getJarArchiveConfiguration();
- configCtl.setReturnValue( new MavenArchiveConfiguration() );
-
- mm.add( configCtl );
-
- mm.replayAll();
-
- DefaultAssemblyArchiver subject =
- createSubject( macArchiverManager.archiverManager, Collections.EMPTY_LIST, null );
-
- subject.configureArchiverFinalizers( macArchiverManager.archiver, "jar", configSource, filter );
-
- mm.verifyAll();
- }
-
- public void testConfigureArchiverFilters_ShouldDoNothingWhenNotSupportedByArchiver()
- {
- MockManager mm = new MockManager();
-
- MockAndControlForArchiverManager macArchiverManager = new MockAndControlForArchiverManager( mm );
-
- macArchiverManager.createArchiver( Archiver.class );
-
- ComponentsXmlArchiverFileFilter filter = new ComponentsXmlArchiverFileFilter();
-
mm.replayAll();
DefaultAssemblyArchiver subject =
- createSubject( macArchiverManager.archiverManager, Collections.EMPTY_LIST, null );
-
- subject.configureArchiverFilters( macArchiverManager.archiver, filter );
+ createSubject( macArchiverManager, Collections.EMPTY_LIST, null );
- mm.verifyAll();
+ subject.createArchiver( "zip", false, null, null, null );
}
- public void testConfigureArchiverFilters_ShouldAddComponentsFilterWhenSupportedByArchiver()
- {
- MockManager mm = new MockManager();
-
- MockAndControlForArchiverManager macArchiverManager = new MockAndControlForArchiverManager( mm );
-
- macArchiverManager.createArchiver( TestFinalizerFilteredArchiver.class );
- macArchiverManager.expectSetArchiverFilters();
-
- ComponentsXmlArchiverFileFilter filter = new ComponentsXmlArchiverFileFilter();
-
- mm.replayAll();
-
- DefaultAssemblyArchiver subject =
- createSubject( macArchiverManager.archiverManager, Collections.EMPTY_LIST, null );
-
- subject.configureArchiverFilters( macArchiverManager.archiver, filter );
-
- mm.verifyAll();
- }
+ // TODO: Re-implement these tests on the createArchiver(..) method. For now, they're no big loss.
+// public void testConfigureArchiverFinalizers_ShouldDoNothingWhenNotSupportedByArchiver()
+// {
+// MockManager mm = new MockManager();
+//
+// MockAndControlForArchiverManager macArchiverManager = new MockAndControlForArchiverManager( mm );
+//
+// macArchiverManager.createArchiver( Archiver.class );
+//
+// ComponentsXmlArchiverFileFilter filter = new ComponentsXmlArchiverFileFilter();
+//
+// mm.replayAll();
+//
+// DefaultAssemblyArchiver subject =
+// createSubject( macArchiverManager.archiverManager, Collections.EMPTY_LIST, null );
+//
+// subject.configureArchiverFinalizers( macArchiverManager.archiver, "format", null, filter );
+//
+// mm.verifyAll();
+// }
+//
+// public void testConfigureArchiverFinalizers_ShouldAddManifestFinalizerWhenSupportedByArchiver()
+// {
+// MockManager mm = new MockManager();
+//
+// MockAndControlForArchiverManager macArchiverManager = new MockAndControlForArchiverManager( mm );
+//
+// macArchiverManager.createArchiver( TestFinalizerFilteredArchiver.class );
+//
+// Set finalizerClasses = new HashSet();
+// finalizerClasses.add( ComponentsXmlArchiverFileFilter.class );
+// finalizerClasses.add( ManifestCreationFinalizer.class );
+//
+// macArchiverManager.expectSetArchiverFinalizers( finalizerClasses );
+//
+// ComponentsXmlArchiverFileFilter filter = new ComponentsXmlArchiverFileFilter();
+//
+// MockControl configCtl = MockControl.createControl( AssemblerConfigurationSource.class );
+// AssemblerConfigurationSource configSource = (AssemblerConfigurationSource) configCtl.getMock();
+//
+// Model model = new Model();
+// model.setGroupId( "group" );
+// model.setArtifactId( "artifact" );
+// model.setVersion( "1" );
+//
+// configSource.getProject();
+// configCtl.setReturnValue( new MavenProject( model ), MockControl.ZERO_OR_MORE );
+//
+// configSource.getJarArchiveConfiguration();
+// configCtl.setReturnValue( new MavenArchiveConfiguration() );
+//
+// mm.add( configCtl );
+//
+// mm.replayAll();
+//
+// DefaultAssemblyArchiver subject =
+// createSubject( macArchiverManager.archiverManager, Collections.EMPTY_LIST, null );
+//
+// subject.configureArchiverFinalizers( macArchiverManager.archiver, "jar", configSource, filter );
+//
+// mm.verifyAll();
+// }
+//
+// public void testConfigureArchiverFilters_ShouldDoNothingWhenNotSupportedByArchiver()
+// {
+// MockManager mm = new MockManager();
+//
+// MockAndControlForArchiverManager macArchiverManager = new MockAndControlForArchiverManager( mm );
+//
+// macArchiverManager.createArchiver( Archiver.class );
+//
+// ComponentsXmlArchiverFileFilter filter = new ComponentsXmlArchiverFileFilter();
+//
+// mm.replayAll();
+//
+// DefaultAssemblyArchiver subject =
+// createSubject( macArchiverManager.archiverManager, Collections.EMPTY_LIST, null );
+//
+// subject.configureArchiverFilters( macArchiverManager.archiver, filter );
+//
+// mm.verifyAll();
+// }
+//
+// public void testConfigureArchiverFilters_ShouldAddComponentsFilterWhenSupportedByArchiver()
+// {
+// MockManager mm = new MockManager();
+//
+// MockAndControlForArchiverManager macArchiverManager = new MockAndControlForArchiverManager( mm );
+//
+// macArchiverManager.createArchiver( TestFinalizerFilteredArchiver.class );
+// macArchiverManager.expectSetArchiverFilters();
+//
+// ComponentsXmlArchiverFileFilter filter = new ComponentsXmlArchiverFileFilter();
+//
+// mm.replayAll();
+//
+// DefaultAssemblyArchiver subject =
+// createSubject( macArchiverManager.archiverManager, Collections.EMPTY_LIST, null );
+//
+// subject.configureArchiverFilters( macArchiverManager.archiver, filter );
+//
+// mm.verifyAll();
+// }
public void testCreateWarArchiver_ShouldDisableIgnoreWebxmlOption()
throws NoSuchArchiverException
@@ -300,14 +291,14 @@
TestWarArchiver twArchiver = new TestWarArchiver();
- MockAndControlForArchiverManager macArchiverManager = new MockAndControlForArchiverManager( mm );
+ MockAndControlForAssemblyArchiver macArchiverManager = new MockAndControlForAssemblyArchiver( mm );
macArchiverManager.expectGetArchiver( "war", twArchiver );
mm.replayAll();
DefaultAssemblyArchiver subject =
- createSubject( macArchiverManager.archiverManager, Collections.EMPTY_LIST, null );
+ createSubject( macArchiverManager, Collections.EMPTY_LIST, null );
subject.createWarArchiver();
@@ -321,14 +312,14 @@
TestTarArchiver ttArchiver = new TestTarArchiver();
- MockAndControlForArchiverManager macArchiverManager = new MockAndControlForArchiverManager( mm );
+ MockAndControlForAssemblyArchiver macArchiverManager = new MockAndControlForAssemblyArchiver( mm );
macArchiverManager.expectGetArchiver( "tar", ttArchiver );
mm.replayAll();
DefaultAssemblyArchiver subject =
- createSubject( macArchiverManager.archiverManager, Collections.EMPTY_LIST, null );
+ createSubject( macArchiverManager, Collections.EMPTY_LIST, null );
subject.createTarArchiver( "tar", TarLongFileMode.FAIL );
@@ -345,14 +336,14 @@
TestTarArchiver ttArchiver = new TestTarArchiver();
- MockAndControlForArchiverManager macArchiverManager = new MockAndControlForArchiverManager( mm );
+ MockAndControlForAssemblyArchiver macArchiverManager = new MockAndControlForAssemblyArchiver( mm );
macArchiverManager.expectGetArchiver( "tar", ttArchiver );
mm.replayAll();
DefaultAssemblyArchiver subject =
- createSubject( macArchiverManager.archiverManager, Collections.EMPTY_LIST, null );
+ createSubject( macArchiverManager, Collections.EMPTY_LIST, null );
subject.createTarArchiver( "tar.gz", TarLongFileMode.FAIL );
@@ -369,14 +360,14 @@
TestTarArchiver ttArchiver = new TestTarArchiver();
- MockAndControlForArchiverManager macArchiverManager = new MockAndControlForArchiverManager( mm );
+ MockAndControlForAssemblyArchiver macArchiverManager = new MockAndControlForAssemblyArchiver( mm );
macArchiverManager.expectGetArchiver( "tar", ttArchiver );
mm.replayAll();
DefaultAssemblyArchiver subject =
- createSubject( macArchiverManager.archiverManager, Collections.EMPTY_LIST, null );
+ createSubject( macArchiverManager, Collections.EMPTY_LIST, null );
subject.createTarArchiver( "tar.bz2", TarLongFileMode.FAIL );
@@ -393,14 +384,14 @@
TestTarArchiver ttArchiver = new TestTarArchiver();
- MockAndControlForArchiverManager macArchiverManager = new MockAndControlForArchiverManager( mm );
+ MockAndControlForAssemblyArchiver macArchiverManager = new MockAndControlForAssemblyArchiver( mm );
macArchiverManager.expectGetArchiver( "tar", ttArchiver );
mm.replayAll();
DefaultAssemblyArchiver subject =
- createSubject( macArchiverManager.archiverManager, Collections.EMPTY_LIST, null );
+ createSubject( macArchiverManager, Collections.EMPTY_LIST, null );
try
{
@@ -416,9 +407,9 @@
mm.verifyAll();
}
- private DefaultAssemblyArchiver createSubject( ArchiverManager archiverManager, List phases, Logger logger )
+ private DefaultAssemblyArchiver createSubject( MockAndControlForAssemblyArchiver macMgr, List phases, Logger logger )
{
- DefaultAssemblyArchiver subject = new DefaultAssemblyArchiver( archiverManager, phases );
+ DefaultAssemblyArchiver subject = new DefaultAssemblyArchiver( macMgr.archiverManager, macMgr.container, phases );
if ( logger != null )
{
@@ -428,7 +419,7 @@
return subject;
}
- private final class MockAndControlForArchiverManager
+ private final class MockAndControlForAssemblyArchiver
{
ArchiverManager archiverManager;
@@ -438,15 +429,24 @@
Archiver archiver;
+ MockControl containerControl;
+
+ PlexusContainer container;
+
private final MockManager mm;
- public MockAndControlForArchiverManager( MockManager mm )
+ public MockAndControlForAssemblyArchiver( MockManager mm )
{
this.mm = mm;
control = MockControl.createControl( ArchiverManager.class );
mm.add( control );
archiverManager = ( ArchiverManager ) control.getMock();
+
+ containerControl = MockControl.createControl( PlexusContainer.class );
+ mm.add( containerControl );
+
+ container = (PlexusContainer) containerControl.getMock();
}
void createArchiver( Class archiverClass )
@@ -473,15 +473,15 @@
{
boolean match = true;
List actualClasses = (List) actual[0];
-
+
Set finClasses = new HashSet( finalizerClasses );
-
+
for ( Iterator it = actualClasses.iterator(); it.hasNext(); )
{
ArchiveFinalizer finalizer = (ArchiveFinalizer) it.next();
match = match && finClasses.remove( finalizer.getClass() );
}
-
+
return match;
}
@@ -489,20 +489,20 @@
{
return "Matcher for finalizer-classes: " + finalizerClasses;
}
-
+
});
}
- void expectSetArchiverFilters()
- {
- ( ( FilterEnabled ) archiver ).setArchiveFilters( null );
- archiverControl.setMatcher( MockControl.ALWAYS_MATCHER );
- }
+// void expectSetArchiverFilters()
+// {
+// ( ( FilterEnabled ) archiver ).setArchiveFilters( null );
+// archiverControl.setMatcher( MockControl.ALWAYS_MATCHER );
+// }
void expectGetArchiver( String format, Class archiverClass )
{
createArchiver( archiverClass );
-
+
try
{
archiverManager.getArchiver( format );
@@ -511,7 +511,7 @@
{
Assert.fail( "should never happen" );
}
-
+
control.setReturnValue( archiver );
}
@@ -601,7 +601,7 @@
}
interface TestFinalizerFilteredArchiver
- extends Archiver, FilterEnabled, FinalizerEnabled
+ extends Archiver, FinalizerEnabled
{
}