org.apache.tools.ant.types
Class ArchiveFileSet

java.lang.Object
  extended by org.apache.tools.ant.ProjectComponent
      extended by org.apache.tools.ant.types.DataType
          extended by org.apache.tools.ant.types.AbstractFileSet
              extended by org.apache.tools.ant.types.FileSet
                  extended by org.apache.tools.ant.types.ArchiveFileSet
All Implemented Interfaces:
java.lang.Cloneable, java.lang.Iterable<Resource>, ResourceCollection, SelectorContainer
Direct Known Subclasses:
TarFileSet, ZipFileSet

public abstract class ArchiveFileSet
extends FileSet

A ArchiveFileSet is a FileSet with extra attributes useful in the context of archiving tasks. It includes a prefix attribute which is prepended to each entry in the output archive file as well as a fullpath attribute. It also supports Unix file permissions for files and directories.

Since:
Ant 1.7

Field Summary
static int DEFAULT_DIR_MODE
          Default value for the dirmode attribute.
static int DEFAULT_FILE_MODE
          Default value for the filemode attribute.
 
Fields inherited from class org.apache.tools.ant.types.DataType
checked, ref
 
Fields inherited from class org.apache.tools.ant.ProjectComponent
description, location, project
 
Constructor Summary
  ArchiveFileSet()
          Constructor for ArchiveFileSet
protected ArchiveFileSet(ArchiveFileSet fileset)
          Constructor using a archive fileset argument.
protected ArchiveFileSet(FileSet fileset)
          Constructor using a fileset argument.
 
Method Summary
 void addConfigured(ResourceCollection a)
          Set the source Archive file for the archivefileset.
 java.lang.Object clone()
          Return a ArchiveFileSet that has the same properties as this one.
protected  void configureFileSet(ArchiveFileSet zfs)
          A ArchiveFileset accepts another ArchiveFileSet or a FileSet as reference FileSets are often used by the war task for the lib attribute
protected  void dieOnCircularReference(java.util.Stack<java.lang.Object> stk, Project p)
          Check to see whether any DataType we hold references to is included in the Stack (which holds all DataType instances that directly or indirectly reference this instance, including this instance itself).
protected  java.lang.Object getCheckedRef(Project p)
          Performs the check for circular references and returns the referenced object.
 DirectoryScanner getDirectoryScanner(Project p)
          Return the DirectoryScanner associated with this FileSet.
 int getDirMode()
          Deprecated. since 1.7.
 int getDirMode(Project p)
          Get the dir mode of the archive fileset
 int getFileMode()
          Deprecated. since 1.7.
 int getFileMode(Project p)
          Get the mode of the archive fileset
 java.lang.String getFullpath()
          Deprecated. since 1.7.
 java.lang.String getFullpath(Project p)
          Return the full pathname of the single entry in this fileset.
 java.lang.String getPrefix()
          Deprecated. since 1.7.
 java.lang.String getPrefix(Project p)
          Return the prefix prepended to entries in the archive file.
 java.io.File getSrc()
          Get the archive file from which entries will be extracted.
 java.io.File getSrc(Project p)
          Get the archive from which entries will be extracted.
 boolean hasDirModeBeenSet()
          Whether the user has specified the mode explicitly.
 boolean hasFileModeBeenSet()
          Whether the user has specified the mode explicitly.
 void integerSetDirMode(int mode)
          specify the user, group and other modes in the standard Unix fashion; optional, default=0755
 void integerSetFileMode(int mode)
          specify the user, group and other modes in the standard Unix fashion; optional, default=0644
 boolean isFilesystemOnly()
          Indicate whether this ResourceCollection is composed entirely of Resources accessible via local filesystem conventions.
 java.util.Iterator<Resource> iterator()
          Fulfill the ResourceCollection contract.
protected abstract  ArchiveScanner newArchiveScanner()
          Creates a scanner for this type of archive.
 void setDir(java.io.File dir)
          Set the directory for the fileset.
 void setDirMode(java.lang.String octalString)
          A 3 digit octal string, specify the user, group and other modes in the standard Unix fashion; optional, default=0755
 void setErrorOnMissingArchive(boolean errorOnMissingArchive)
          Sets whether an error is thrown if an archive does not exist.
 void setFileMode(java.lang.String octalString)
          A 3 digit octal string, specify the user, group and other modes in the standard Unix fashion; optional, default=0644
 void setFullpath(java.lang.String fullpath)
          Set the full pathname of the single entry in this fileset.
 void setPrefix(java.lang.String prefix)
          Prepend this prefix to the path for each archive entry.
 void setSrc(java.io.File srcFile)
          Set the source Archive file for the archivefileset.
 void setSrcResource(Resource src)
          Set the source Archive file for the archivefileset.
 int size()
          Fulfill the ResourceCollection contract.
 java.lang.String toString()
          For file-based archivefilesets, return the same as for normal filesets; else just return the path of the zip.
 
Methods inherited from class org.apache.tools.ant.types.AbstractFileSet
add, addAnd, addContains, addContainsRegexp, addCustom, addDate, addDepend, addDepth, addDifferent, addFilename, addMajority, addModified, addNone, addNot, addOr, addPresent, addReadable, addSelector, addSize, addType, addWritable, appendExcludes, appendIncludes, appendSelector, createExclude, createExcludesFile, createInclude, createIncludesFile, createPatternSet, getDefaultexcludes, getDir, getDir, getDirectoryScanner, getErrorOnMissingDir, getMaxLevelsOfSymlinks, getRef, getSelectors, hasPatterns, hasSelectors, isCaseSensitive, isFollowSymlinks, mergeExcludes, mergeIncludes, mergePatterns, selectorCount, selectorElements, setCaseSensitive, setDefaultexcludes, setErrorOnMissingDir, setExcludes, setExcludesfile, setFile, setFollowSymlinks, setIncludes, setIncludesfile, setMaxLevelsOfSymlinks, setRefid, setupDirectoryScanner, setupDirectoryScanner
 
Methods inherited from class org.apache.tools.ant.types.DataType
checkAttributesAllowed, checkChildrenAllowed, circularReference, dieOnCircularReference, dieOnCircularReference, getCheckedRef, getCheckedRef, getCheckedRef, getDataTypeName, getRefid, invokeCircularReferenceCheck, isChecked, isReference, noChildrenAllowed, pushAndInvokeCircularReferenceCheck, setChecked, tooManyAttributes
 
Methods inherited from class org.apache.tools.ant.ProjectComponent
getDescription, getLocation, getProject, log, log, setDescription, setLocation, setProject
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

DEFAULT_DIR_MODE

public static final int DEFAULT_DIR_MODE
Default value for the dirmode attribute.

Since:
Ant 1.5.2
See Also:
Constant Field Values

DEFAULT_FILE_MODE

public static final int DEFAULT_FILE_MODE
Default value for the filemode attribute.

Since:
Ant 1.5.2
See Also:
Constant Field Values
Constructor Detail

ArchiveFileSet

public ArchiveFileSet()
Constructor for ArchiveFileSet


ArchiveFileSet

protected ArchiveFileSet(FileSet fileset)
Constructor using a fileset argument.

Parameters:
fileset - the fileset to use

ArchiveFileSet

protected ArchiveFileSet(ArchiveFileSet fileset)
Constructor using a archive fileset argument.

Parameters:
fileset - the archivefileset to use
Method Detail

setDir

public void setDir(java.io.File dir)
            throws BuildException
Set the directory for the fileset.

Overrides:
setDir in class AbstractFileSet
Parameters:
dir - the directory for the fileset
Throws:
BuildException - on error

addConfigured

public void addConfigured(ResourceCollection a)
Set the source Archive file for the archivefileset. Prevents both "dir" and "src" from being specified.

Parameters:
a - the archive as a single element Resource collection.

setSrc

public void setSrc(java.io.File srcFile)
Set the source Archive file for the archivefileset. Prevents both "dir" and "src" from being specified.

Parameters:
srcFile - The archive from which to extract entries.

setSrcResource

public void setSrcResource(Resource src)
Set the source Archive file for the archivefileset. Prevents both "dir" and "src" from being specified.

Parameters:
src - The archive from which to extract entries.

getSrc

public java.io.File getSrc(Project p)
Get the archive from which entries will be extracted.

Parameters:
p - the project to use
Returns:
the source file

setErrorOnMissingArchive

public void setErrorOnMissingArchive(boolean errorOnMissingArchive)
Sets whether an error is thrown if an archive does not exist.

Parameters:
errorOnMissingArchive - true if missing archives cause errors, false if not.
Since:
Ant 1.8.0

getSrc

public java.io.File getSrc()
Get the archive file from which entries will be extracted.

Returns:
the archive in case the archive is a file, null otherwise.

getCheckedRef

protected java.lang.Object getCheckedRef(Project p)
Performs the check for circular references and returns the referenced object. This is an override which does not delegate to the superclass; instead it invokes AbstractFileSet.getRef(Project), because that contains the special support for fileset references, which can be handled by all ArchiveFileSets.

Overrides:
getCheckedRef in class DataType
Parameters:
p - the Ant Project instance against which to resolve references.
Returns:
the dereferenced object.
Throws:
BuildException - if the reference is invalid (circular ref, wrong class, etc).
Since:
Ant 1.8

setPrefix

public void setPrefix(java.lang.String prefix)
Prepend this prefix to the path for each archive entry. Prevents both prefix and fullpath from being specified

Parameters:
prefix - The prefix to prepend to entries in the archive file.

getPrefix

public java.lang.String getPrefix(Project p)
Return the prefix prepended to entries in the archive file.

Parameters:
p - the project to use
Returns:
the prefix

setFullpath

public void setFullpath(java.lang.String fullpath)
Set the full pathname of the single entry in this fileset. Prevents both prefix and fullpath from being specified

Parameters:
fullpath - the full pathname of the single entry in this fileset.

getFullpath

public java.lang.String getFullpath(Project p)
Return the full pathname of the single entry in this fileset.

Parameters:
p - the project to use
Returns:
the full path

newArchiveScanner

protected abstract ArchiveScanner newArchiveScanner()
Creates a scanner for this type of archive.

Returns:
the scanner.

getDirectoryScanner

public DirectoryScanner getDirectoryScanner(Project p)
Return the DirectoryScanner associated with this FileSet. If the ArchiveFileSet defines a source Archive file, then an ArchiveScanner is returned instead.

Overrides:
getDirectoryScanner in class AbstractFileSet
Parameters:
p - the project to use
Returns:
a directory scanner

iterator

public java.util.Iterator<Resource> iterator()
Fulfill the ResourceCollection contract.

Specified by:
iterator in interface java.lang.Iterable<Resource>
Specified by:
iterator in interface ResourceCollection
Overrides:
iterator in class FileSet
Returns:
Iterator of Resources.
Since:
Ant 1.7

size

public int size()
Fulfill the ResourceCollection contract.

Specified by:
size in interface ResourceCollection
Overrides:
size in class FileSet
Returns:
size of the collection as int.
Since:
Ant 1.7

isFilesystemOnly

public boolean isFilesystemOnly()
Indicate whether this ResourceCollection is composed entirely of Resources accessible via local filesystem conventions. If true, all Resources returned from this ResourceCollection should be instances of FileResource.

Specified by:
isFilesystemOnly in interface ResourceCollection
Overrides:
isFilesystemOnly in class FileSet
Returns:
whether this is a filesystem-only resource collection.
Since:
Ant 1.7

setFileMode

public void setFileMode(java.lang.String octalString)
A 3 digit octal string, specify the user, group and other modes in the standard Unix fashion; optional, default=0644

Parameters:
octalString - a String value

integerSetFileMode

public void integerSetFileMode(int mode)
specify the user, group and other modes in the standard Unix fashion; optional, default=0644

We use the strange name so this method doesn't appear in IntrospectionHelpers list of attribute setters.

Parameters:
mode - a int value
Since:
Ant 1.7

getFileMode

public int getFileMode(Project p)
Get the mode of the archive fileset

Parameters:
p - the project to use
Returns:
the mode

hasFileModeBeenSet

public boolean hasFileModeBeenSet()
Whether the user has specified the mode explicitly.

Returns:
true if it has been set

setDirMode

public void setDirMode(java.lang.String octalString)
A 3 digit octal string, specify the user, group and other modes in the standard Unix fashion; optional, default=0755

Parameters:
octalString - a String value

integerSetDirMode

public void integerSetDirMode(int mode)
specify the user, group and other modes in the standard Unix fashion; optional, default=0755

We use the strange name so this method doesn't appear in IntrospectionHelpers list of attribute setters.

Parameters:
mode - a int value
Since:
Ant 1.7

getDirMode

public int getDirMode(Project p)
Get the dir mode of the archive fileset

Parameters:
p - the project to use
Returns:
the mode

hasDirModeBeenSet

public boolean hasDirModeBeenSet()
Whether the user has specified the mode explicitly.

Returns:
true if it has been set

configureFileSet

protected void configureFileSet(ArchiveFileSet zfs)
A ArchiveFileset accepts another ArchiveFileSet or a FileSet as reference FileSets are often used by the war task for the lib attribute

Parameters:
zfs - the project to use

clone

public java.lang.Object clone()
Return a ArchiveFileSet that has the same properties as this one.

Overrides:
clone in class FileSet
Returns:
the cloned archiveFileSet
Since:
Ant 1.6

toString

public java.lang.String toString()
For file-based archivefilesets, return the same as for normal filesets; else just return the path of the zip.

Overrides:
toString in class AbstractFileSet
Returns:
for file based archivefilesets, included files as a list of semicolon-separated filenames. else just the name of the zip.

getPrefix

public java.lang.String getPrefix()
Deprecated. since 1.7.

Return the prefix prepended to entries in the archive file.

Returns:
the prefix.

getFullpath

public java.lang.String getFullpath()
Deprecated. since 1.7.

Return the full pathname of the single entryZ in this fileset.

Returns:
the full pathname.

getFileMode

public int getFileMode()
Deprecated. since 1.7.

Returns:
the file mode.

getDirMode

public int getDirMode()
Deprecated. since 1.7.

Returns:
the dir mode.

dieOnCircularReference

protected void dieOnCircularReference(java.util.Stack<java.lang.Object> stk,
                                      Project p)
                               throws BuildException
Description copied from class: DataType
Check to see whether any DataType we hold references to is included in the Stack (which holds all DataType instances that directly or indirectly reference this instance, including this instance itself).

If one is included, throw a BuildException created by circularReference.

This implementation is appropriate only for a DataType that cannot hold other DataTypes as children.

The general contract of this method is that it shouldn't do anything if checked is true and set it to true on exit.

Overrides:
dieOnCircularReference in class AbstractFileSet
Parameters:
stk - the stack of references to check.
p - the project to use to dereference the references.
Throws:
BuildException - on error.