Package org.apache.tools.ant.types

# Class AbstractFileSet

java.lang.Object
org.apache.tools.ant.ProjectComponent
org.apache.tools.ant.types.DataType
org.apache.tools.ant.types.AbstractFileSet

All Implemented Interfaces:
  `java.lang.Cloneable`, `SelectorContainer`

Direct Known Subclasses:
  `DirSet`, `FileSet`, `MultiRootFileSet`, `Sync.SyncTarget`

    public abstract class AbstractFileSet
    extends DataType
    implements java.lang.Cloneable, SelectorContainer

Class that holds an implicit patternset and supports nested patternsets and creates a DirectoryScanner using these patterns.

Common base class for DirSet and FileSet.

## Field Summary

### 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

Constructors
Modifier | Constructor | Description
--- | --- | ---
`` | `AbstractFileSet()` | Construct a new `AbstractFileSet`.
`protected` | `AbstractFileSet​(AbstractFileSet fileset)` | Construct a new `AbstractFileSet`, shallowly cloned from the specified `AbstractFileSet`.

## Method Summary

Modifier and Type | Method | Description
--- | --- | ---
`void` | `add​(FileSelector selector)` | Add an arbitrary selector.
`void` | `addAnd​(AndSelector selector)` | Add an "And" selector entry on the selector list.
`void` | `addContains​(ContainsSelector selector)` | Add a contains selector entry on the selector list.
`void` | `addContainsRegexp​(ContainsRegexpSelector selector)` | Add a regular expression selector entry on the selector list.
`void` | `addCustom​(ExtendSelector selector)` | Add an extended selector entry on the selector list.
`void` | `addDate​(DateSelector selector)` | Add a selector date entry on the selector list.
`void` | `addDepend​(DependSelector selector)` | Add a depends selector entry on the selector list.
`void` | `addDepth​(DepthSelector selector)` | Add a depth selector entry on the selector list.
`void` | `addDifferent​(DifferentSelector selector)` | Add a DifferentSelector entry on the selector list.
`void` | `addExecutable​(ExecutableSelector e)` |
`void` | `addFilename​(FilenameSelector selector)` | Add a selector filename entry on the selector list.
`void` | `addMajority​(MajoritySelector selector)` | Add a majority selector entry on the selector list.
`void` | `addModified​(ModifiedSelector selector)` | Add the modified selector.
`void` | `addNone​(NoneSelector selector)` | Add a "None" selector entry on the selector list.
`void` | `addNot​(NotSelector selector)` | Add a "Not" selector entry on the selector list.
`void` | `addOr​(OrSelector selector)` | Add an "Or" selector entry on the selector list.
`void` | `addOwnedBy​(OwnedBySelector o)` |
`void` | `addPosixGroup​(PosixGroupSelector o)` |
`void` | `addPosixPermissions​(PosixPermissionsSelector o)` |
`void` | `addPresent​(PresentSelector selector)` | Add a present selector entry on the selector list.
`void` | `addReadable​(ReadableSelector r)` |
`void` | `addSelector​(SelectSelector selector)` | Add a "Select" selector entry on the selector list.
`void` | `addSize​(SizeSelector selector)` | Add a selector size entry on the selector list.
`void` | `addSymlink​(SymlinkSelector e)` |
`void` | `addType​(TypeSelector selector)` | Add a selector type entry on the selector list.
`void` | `addWritable​(WritableSelector w)` |
`void` | `appendExcludes​(java.lang.String[] excludes)` | Appends `excludes` to the current list of exclude patterns.
`void` | `appendIncludes​(java.lang.String[] includes)` | Appends `includes` to the current list of include patterns.
`void` | `appendSelector​(FileSelector selector)` | Add a new selector into this container.
`java.lang.Object` | `clone()` | Creates a deep clone of this instance, except for the nested selectors (the list of selectors is a shallow clone of this instance's list).
`PatternSet.NameEntry` | `createExclude()` | Add a name entry to the exclude list.
`PatternSet.NameEntry` | `createExcludesFile()` | Add a name entry to the excludes files list.
`PatternSet.NameEntry` | `createInclude()` | Add a name entry to the include list.
`PatternSet.NameEntry` | `createIncludesFile()` | Add a name entry to the include files list.
`PatternSet` | `createPatternSet()` | Creates a nested patternset.
`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).
`boolean` | `getDefaultexcludes()` | Whether default exclusions should be used or not.
`java.io.File` | `getDir()` | Retrieves the base-directory for this instance.
`java.io.File` | `getDir​(Project p)` | Retrieves the base-directory for this instance.
`DirectoryScanner` | `getDirectoryScanner()` | Returns the directory scanner needed to access the files to process.
`DirectoryScanner` | `getDirectoryScanner​(Project p)` | Returns the directory scanner needed to access the files to process.
`boolean` | `getErrorOnMissingDir()` | Gets whether an error is/should be thrown if the base directory does not exist.
`int` | `getMaxLevelsOfSymlinks()` | The maximum number of times a symbolic link may be followed during a scan.
`protected AbstractFileSet` | `getRef​(Project p)` | Performs the check for circular references and returns the referenced FileSet.
`FileSelector[]` | `getSelectors​(Project p)` | Returns the set of selectors as an array.
`boolean` | `hasPatterns()` | Indicates whether there are any patterns here.
`boolean` | `hasSelectors()` | Indicates whether there are any selectors here.
`boolean` | `isCaseSensitive()` | Find out if the fileset is case sensitive.
`boolean` | `isFollowSymlinks()` | Find out if the fileset wants to follow symbolic links.
`java.lang.String[]` | `mergeExcludes​(Project p)` | Get the merged exclude patterns for this AbstractFileSet.
`java.lang.String[]` | `mergeIncludes​(Project p)` | Get the merged include patterns for this AbstractFileSet.
`PatternSet` | `mergePatterns​(Project p)` | Get the merged patterns for this AbstractFileSet.
`int` | `selectorCount()` | Gives the count of the number of selectors in this container.
`java.util.Enumeration<FileSelector>` | `selectorElements()` | Returns an enumerator for accessing the set of selectors.
`void` | `setCaseSensitive​(boolean caseSensitive)` | Sets case sensitivity of the file system.
`void` | `setDefaultexcludes​(boolean useDefaultExcludes)` | Sets whether default exclusions should be used or not.
`void` | `setDir​(java.io.File dir)` | Sets the base-directory for this instance.
`void` | `setErrorOnMissingDir​(boolean errorOnMissingDir)` | Sets whether an error is thrown if a directory does not exist.
`void` | `setExcludes​(java.lang.String excludes)` | Appends `excludes` to the current list of exclude patterns.
`void` | `setExcludesfile​(java.io.File excl)` | Sets the `File` containing the excludes patterns.
`void` | `setFile​(java.io.File file)` | Creates a single file fileset.
`void` | `setFollowSymlinks​(boolean followSymlinks)` | Sets whether or not symbolic links should be followed.
`void` | `setIncludes​(java.lang.String includes)` | Appends `includes` to the current list of include patterns.
`void` | `setIncludesfile​(java.io.File incl)` | Sets the `File` containing the includes patterns.
`void` | `setMaxLevelsOfSymlinks​(int max)` | The maximum number of times a symbolic link may be followed during a scan.
`void` | `setRefid​(Reference r)` | Makes this instance in effect a reference to another instance.
`void` | `setupDirectoryScanner​(FileScanner ds)` | Set up the specified directory scanner against this AbstractFileSet's Project.
`void` | `setupDirectoryScanner​(FileScanner ds, Project p)` | Set up the specified directory scanner against the specified project.
`java.lang.String` | `toString()` | Returns included files as a list of semicolon-separated filenames.

### Methods inherited from class org.apache.tools.ant.types.DataType

`checkAttributesAllowed, checkChildrenAllowed, circularReference, dieOnCircularReference, dieOnCircularReference, getCheckedRef, getCheckedRef, 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`

## Constructor Details

### AbstractFileSet

public AbstractFileSet()
Construct a new `AbstractFileSet`.

### AbstractFileSet

protected AbstractFileSet​(AbstractFileSet fileset)
Construct a new `AbstractFileSet`, shallowly cloned from the specified `AbstractFileSet`.

Parameters:
  `fileset` - the `AbstractFileSet` to use as a template.

## Method Details

### setRefid

public void setRefid​(Reference r) throws BuildException
Makes this instance in effect a reference to another instance.

You must not set another attribute or nest elements inside this element if you make it a reference.

Overrides:
  `setRefid` in class `DataType`
Parameters:
  `r` - the `Reference` to use.
Throws:
  `BuildException` - on error

### setDir

public void setDir​(java.io.File dir) throws BuildException
Sets the base-directory for this instance.

Parameters:
  `dir` - the directory's `File` instance.
Throws:
  `BuildException` - on error

### getDir

public java.io.File getDir()
Retrieves the base-directory for this instance.

Returns:
  `File`.

### getDir

public java.io.File getDir​(Project p)
Retrieves the base-directory for this instance.

Parameters:
  `p` - the `Project` against which the reference is resolved, if set.
Returns:
  `File`.

### createPatternSet

public PatternSet createPatternSet()
Creates a nested patternset.

Returns:
  `PatternSet`.

### createInclude

public PatternSet.NameEntry createInclude()
Add a name entry to the include list.

Returns:
  `PatternSet.NameEntry`.

### createIncludesFile

public PatternSet.NameEntry createIncludesFile()
Add a name entry to the include files list.

Returns:
  `PatternSet.PatternFileNameEntry`.

### createExclude

public PatternSet.NameEntry createExclude()
Add a name entry to the exclude list.

Returns:
  `PatternSet.NameEntry`.

### createExcludesFile

public PatternSet.NameEntry createExcludesFile()
Add a name entry to the excludes files list.

Returns:
  `PatternSet.PatternFileNameEntry`.

### setFile

public void setFile​(java.io.File file)
Creates a single file fileset.

Parameters:
  `file` - the single `File` included in this `AbstractFileSet`.

### setIncludes

public void setIncludes​(java.lang.String includes)
Appends `includes` to the current list of include patterns.

Patterns may be separated by a comma or a space.

Parameters:
  `includes` - the `String` containing the include patterns.

### appendIncludes

public void appendIncludes​(java.lang.String[] includes)
Appends `includes` to the current list of include patterns.

Parameters:
  `includes` - array containing the include patterns.
Since:
  Ant 1.7

### setExcludes

public void setExcludes​(java.lang.String excludes)
Appends `excludes` to the current list of exclude patterns.

Patterns may be separated by a comma or a space.

Parameters:
  `excludes` - the `String` containing the exclude patterns.

### appendExcludes

public void appendExcludes​(java.lang.String[] excludes)
Appends `excludes` to the current list of exclude patterns.

Parameters:
  `excludes` - array containing the exclude patterns.
Since:
  Ant 1.7

### setIncludesfile

public void setIncludesfile​(java.io.File incl) throws BuildException
Sets the `File` containing the includes patterns.

Parameters:
  `incl` - `File` instance.
Throws:
  `BuildException` - on error

### setExcludesfile

public void setExcludesfile​(java.io.File excl) throws BuildException
Sets the `File` containing the excludes patterns.

Parameters:
  `excl` - `File` instance.
Throws:
  `BuildException` - on error

### setDefaultexcludes

public void setDefaultexcludes​(boolean useDefaultExcludes)
Sets whether default exclusions should be used or not.

Parameters:
  `useDefaultExcludes` - `boolean`.

### getDefaultexcludes

public boolean getDefaultexcludes()
Whether default exclusions should be used or not.

Returns:
  the default exclusions value.
Since:
  Ant 1.6.3

### setCaseSensitive

public void setCaseSensitive​(boolean caseSensitive)
Sets case sensitivity of the file system.

Parameters:
  `caseSensitive` - `boolean`.

### isCaseSensitive

public boolean isCaseSensitive()
Find out if the fileset is case sensitive.

Returns:
  `boolean` indicating whether the fileset is case sensitive.
Since:
  Ant 1.7

### setFollowSymlinks

public void setFollowSymlinks​(boolean followSymlinks)
Sets whether or not symbolic links should be followed.

Parameters:
  `followSymlinks` - whether or not symbolic links should be followed.

### isFollowSymlinks

public boolean isFollowSymlinks()
Find out if the fileset wants to follow symbolic links.

Returns:
  `boolean` indicating whether symbolic links should be followed.
Since:
  Ant 1.6

### setMaxLevelsOfSymlinks

public void setMaxLevelsOfSymlinks​(int max)
The maximum number of times a symbolic link may be followed during a scan.

Parameters:
  `max` - int
Since:
  Ant 1.8.0

### getMaxLevelsOfSymlinks

public int getMaxLevelsOfSymlinks()
The maximum number of times a symbolic link may be followed during a scan.

Returns:
  int
Since:
  Ant 1.8.0

### setErrorOnMissingDir

public void setErrorOnMissingDir​(boolean errorOnMissingDir)
Sets whether an error is thrown if a directory does not exist.

Parameters:
  `errorOnMissingDir` - true if missing directories cause errors, false if not.

### getErrorOnMissingDir

public boolean getErrorOnMissingDir()
Gets whether an error is/should be thrown if the base directory does not exist.

Returns:
  boolean
Since:
  Ant 1.8.2

### getDirectoryScanner

public DirectoryScanner getDirectoryScanner()
Returns the directory scanner needed to access the files to process.

Returns:
  a `DirectoryScanner` instance.

### getDirectoryScanner

public DirectoryScanner getDirectoryScanner​(Project p)
Returns the directory scanner needed to access the files to process.

Parameters:
  `p` - the Project against which the DirectoryScanner should be configured.
Returns:
  a `DirectoryScanner` instance.

### setupDirectoryScanner

public void setupDirectoryScanner​(FileScanner ds)
Set up the specified directory scanner against this AbstractFileSet's Project.

Parameters:
  `ds` - a `FileScanner` instance.

### setupDirectoryScanner

public void setupDirectoryScanner​(FileScanner ds, Project p)
Set up the specified directory scanner against the specified project.

Parameters:
  `ds` - a `FileScanner` instance.
  `p` - an Ant `Project` instance.

### getRef

protected AbstractFileSet getRef​(Project p)
Performs the check for circular references and returns the referenced FileSet. This method can be overridden together with `getRef()` providing implementations containing the special support for FileSet references, which can be handled by all ArchiveFileSets. NB! This method must be overridden in subclasses such as FileSet and DirSet to distinguish between the data types.

Parameters:
  `p` - the current project
Returns:
  the dereferenced object.

### hasSelectors

public boolean hasSelectors()
Indicates whether there are any selectors here.

Specified by:
  `hasSelectors` in interface `SelectorContainer`
Returns:
  whether any selectors are in this container.

### hasPatterns

public boolean hasPatterns()
Indicates whether there are any patterns here.

Returns:
  whether any patterns are in this container.

### selectorCount

public int selectorCount()
Gives the count of the number of selectors in this container.

Specified by:
  `selectorCount` in interface `SelectorContainer`
Returns:
  the number of selectors in this container as an `int`.

### getSelectors

public FileSelector[] getSelectors​(Project p)
Returns the set of selectors as an array.

Specified by:
  `getSelectors` in interface `SelectorContainer`
Parameters:
  `p` - the current project
Returns:
  a `FileSelector[]` of the selectors in this container.

### selectorElements

public java.util.Enumeration<FileSelector> selectorElements()
Returns an enumerator for accessing the set of selectors.

Specified by:
  `selectorElements` in interface `SelectorContainer`
Returns:
  an `Enumeration` of selectors.

### appendSelector

public void appendSelector​(FileSelector selector)
Add a new selector into this container.

Specified by:
  `appendSelector` in interface `SelectorContainer`
Parameters:
  `selector` - the new `FileSelector` to add.

### addSelector

public void addSelector​(SelectSelector selector)
Add a "Select" selector entry on the selector list.

Specified by:
  `addSelector` in interface `SelectorContainer`
Parameters:
  `selector` - the `SelectSelector` to add.

### addAnd

public void addAnd​(AndSelector selector)
Add an "And" selector entry on the selector list.

Specified by:
  `addAnd` in interface `SelectorContainer`
Parameters:
  `selector` - the `AndSelector` to add.

### addOr

public void addOr​(OrSelector selector)
Add an "Or" selector entry on the selector list.

Specified by:
  `addOr` in interface `SelectorContainer`
Parameters:
  `selector` - the `OrSelector` to add.

### addNot

public void addNot​(NotSelector selector)
Add a "Not" selector entry on the selector list.

Specified by:
  `addNot` in interface `SelectorContainer`
Parameters:
  `selector` - the `NotSelector` to add.

### addNone

public void addNone​(NoneSelector selector)
Add a "None" selector entry on the selector list.

Specified by:
  `addNone` in interface `SelectorContainer`
Parameters:
  `selector` - the `NoneSelector` to add.

### addMajority

public void addMajority​(MajoritySelector selector)
Add a majority selector entry on the selector list.

Specified by:
  `addMajority` in interface `SelectorContainer`
Parameters:
  `selector` - the `MajoritySelector` to add.

### addDate

public void addDate​(DateSelector selector)
Add a selector date entry on the selector list.

Specified by:
  `addDate` in interface `SelectorContainer`
Parameters:
  `selector` - the `DateSelector` to add.

### addSize

public void addSize​(SizeSelector selector)
Add a selector size entry on the selector list.

Specified by:
  `addSize` in interface `SelectorContainer`
Parameters:
  `selector` - the `SizeSelector` to add.

### addDifferent

public void addDifferent​(DifferentSelector selector)
Add a DifferentSelector entry on the selector list.

Specified by:
  `addDifferent` in interface `SelectorContainer`
Parameters:
  `selector` - the `DifferentSelector` to add.

### addFilename

public void addFilename​(FilenameSelector selector)
Add a selector filename entry on the selector list.

Specified by:
  `addFilename` in interface `SelectorContainer`
Parameters:
  `selector` - the `FilenameSelector` to add.

### addType

public void addType​(TypeSelector selector)
Add a selector type entry on the selector list.

Specified by:
  `addType` in interface `SelectorContainer`
Parameters:
  `selector` - the `TypeSelector` to add.

### addCustom

public void addCustom​(ExtendSelector selector)
Add an extended selector entry on the selector list.

Specified by:
  `addCustom` in interface `SelectorContainer`
Parameters:
  `selector` - the `ExtendSelector` to add.

### addContains

public void addContains​(ContainsSelector selector)
Add a contains selector entry on the selector list.

Specified by:
  `addContains` in interface `SelectorContainer`
Parameters:
  `selector` - the `ContainsSelector` to add.

### addPresent

public void addPresent​(PresentSelector selector)
Add a present selector entry on the selector list.

Specified by:
  `addPresent` in interface `SelectorContainer`
Parameters:
  `selector` - the `PresentSelector` to add.

### addDepth

public void addDepth​(DepthSelector selector)
Add a depth selector entry on the selector list.

Specified by:
  `addDepth` in interface `SelectorContainer`
Parameters:
  `selector` - the `DepthSelector` to add.

### addDepend

public void addDepend​(DependSelector selector)
Add a depends selector entry on the selector list.

Specified by:
  `addDepend` in interface `SelectorContainer`
Parameters:
  `selector` - the `DependSelector` to add.

### addContainsRegexp

public void addContainsRegexp​(ContainsRegexpSelector selector)
Add a regular expression selector entry on the selector list.

Specified by:
  `addContainsRegexp` in interface `SelectorContainer`
Parameters:
  `selector` - the `ContainsRegexpSelector` to add.

### addModified

public void addModified​(ModifiedSelector selector)
Add the modified selector.

Specified by:
  `addModified` in interface `SelectorContainer`
Parameters:
  `selector` - the `ModifiedSelector` to add.
Since:
  Ant 1.6

### addReadable

public void addReadable​(ReadableSelector r)

### addWritable

public void addWritable​(WritableSelector w)

### addExecutable

public void addExecutable​(ExecutableSelector e)

Parameters:
  `e` - ExecutableSelector
Since:
  1.10.0

### addSymlink

public void addSymlink​(SymlinkSelector e)

Parameters:
  `e` - SymlinkSelector
Since:
  1.10.0

### addOwnedBy

public void addOwnedBy​(OwnedBySelector o)

Parameters:
  `o` - OwnedBySelector
Since:
  1.10.0

### addPosixGroup

public void addPosixGroup​(PosixGroupSelector o)

Parameters:
  `o` - PosixGroupSelector
Since:
  1.10.4

### addPosixPermissions

public void addPosixPermissions​(PosixPermissionsSelector o)

Parameters:
  `o` - PosixPermissionsSelector
Since:
  1.10.4

### add

public void add​(FileSelector selector)
Add an arbitrary selector.

Specified by:
  `add` in interface `SelectorContainer`
Parameters:
  `selector` - the `FileSelector` to add.
Since:
  Ant 1.6

### toString

public java.lang.String toString()
Returns included files as a list of semicolon-separated filenames.

Overrides:
  `toString` in class `DataType`
Returns:
  a `String` of included filenames.

### clone

public java.lang.Object clone()
Creates a deep clone of this instance, except for the nested selectors (the list of selectors is a shallow clone of this instance's list).

Overrides:
  `clone` in class `DataType`
Returns:
  the cloned object
Since:
  Ant 1.6

### mergeIncludes

public java.lang.String[] mergeIncludes​(Project p)
Get the merged include patterns for this AbstractFileSet.

Parameters:
  `p` - the project to use.
Returns:
  the include patterns of the default pattern set and all nested patternsets.
Since:
  Ant 1.7

### mergeExcludes

public java.lang.String[] mergeExcludes​(Project p)
Get the merged exclude patterns for this AbstractFileSet.

Parameters:
  `p` - the project to use.
Returns:
  the exclude patterns of the default pattern set and all nested patternsets.
Since:
  Ant 1.7

### mergePatterns

public PatternSet mergePatterns​(Project p)
Get the merged patterns for this AbstractFileSet.

Parameters:
  `p` - the project to use.
Returns:
  the default patternset merged with the additional sets in a new PatternSet instance.
Since:
  Ant 1.7

### 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 `DataType.checked` is true and set it to true on exit.

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