diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/types/FileSet.java b/proposal/myrmidon/src/main/org/apache/tools/ant/types/FileSet.java
index 737f9b2e3..10dbab09d 100644
--- a/proposal/myrmidon/src/main/org/apache/tools/ant/types/FileSet.java
+++ b/proposal/myrmidon/src/main/org/apache/tools/ant/types/FileSet.java
@@ -8,11 +8,9 @@
package org.apache.tools.ant.types;
import java.io.File;
-import java.util.ArrayList;
import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.framework.Pattern;
import org.apache.myrmidon.framework.PatternSet;
-import org.apache.tools.ant.ProjectComponent;
/**
* Moved out of MatchingTask to make it a standalone object that could be
@@ -27,14 +25,11 @@ import org.apache.tools.ant.ProjectComponent;
* @author Magesh Umasankar
*/
public class FileSet
- extends ProjectComponent
- implements Cloneable
{
- private PatternSet m_defaultPatterns = new PatternSet();
- private ArrayList m_additionalPatterns = new ArrayList();
+ private File m_dir;
+ private PatternSet m_patternSet = new PatternSet();
private boolean m_useDefaultExcludes = true;
private boolean m_isCaseSensitive = true;
- private File m_dir;
/**
* Sets case sensitivity of the file system
@@ -66,102 +61,58 @@ public class FileSet
*/
public void setExcludes( final String excludes )
{
- m_defaultPatterns.setExcludes( excludes );
+ m_patternSet.setExcludes( excludes );
}
/**
- * Sets the set of include patterns. Patterns may be separated by a comma or
- * a space.
- *
- * @param includes the string containing the include patterns
+ * add a name entry on the exclude list
*/
- public void setIncludes( final String includes )
+ public void addExclude( final Pattern pattern )
{
- m_defaultPatterns.setIncludes( includes );
+ m_patternSet.addExclude( pattern );
}
- public void setupDirectoryScanner( final FileScanner ds )
- throws TaskException
+ /**
+ * add a name entry on the include list
+ */
+ public void addInclude( final Pattern pattern )
{
- if( null == ds )
- {
- final String message = "ds cannot be null";
- throw new IllegalArgumentException( message );
- }
-
- ds.setBasedir( m_dir );
-
- final int size = m_additionalPatterns.size();
- for( int i = 0; i < size; i++ )
- {
- final Object o = m_additionalPatterns.get( i );
- m_defaultPatterns.append( (PatternSet)o );
- }
-
- final String message = "FileSet: Setup file scanner in dir " +
- m_dir + " with " + m_defaultPatterns;
- getLogger().debug( message );
-
- ds.setIncludes( m_defaultPatterns.getIncludePatterns( getContext() ) );
- ds.setExcludes( m_defaultPatterns.getExcludePatterns( getContext() ) );
- if( m_useDefaultExcludes )
- {
- ds.addDefaultExcludes();
- }
- ds.setCaseSensitive( m_isCaseSensitive );
+ m_patternSet.addInclude( pattern );
}
- public File getDir()
+ public void addPatternSet( final PatternSet set )
{
- return m_dir;
+ m_patternSet.append( set );
}
/**
- * Returns the directory scanner needed to access the files to process.
+ * Sets the set of include patterns. Patterns may be separated by a comma or
+ * a space.
+ *
+ * @param includes the string containing the include patterns
*/
- public DirectoryScanner getDirectoryScanner()
- throws TaskException
+ public void setIncludes( final String includes )
{
- if( m_dir == null )
- {
- throw new TaskException( "No directory specified for fileset." );
- }
-
- if( !m_dir.exists() )
- {
- throw new TaskException( m_dir.getAbsolutePath() + " not found." );
- }
- if( !m_dir.isDirectory() )
- {
- throw new TaskException( m_dir.getAbsolutePath() + " is not a directory." );
- }
+ m_patternSet.setIncludes( includes );
+ }
- final DirectoryScanner scanner = new DirectoryScanner();
- setupDirectoryScanner( scanner );
- scanner.scan();
- return scanner;
+ public final PatternSet getPatternSet()
+ {
+ return m_patternSet;
}
- /**
- * add a name entry on the exclude list
- */
- public void addExclude( final Pattern pattern )
+ public boolean isCaseSensitive()
{
- m_defaultPatterns.addExclude( pattern );
+ return m_isCaseSensitive;
}
- /**
- * add a name entry on the include list
- */
- public void addInclude( final Pattern pattern )
+ public boolean useDefaultExcludes()
{
- m_defaultPatterns.addInclude( pattern );
+ return m_useDefaultExcludes;
}
- public PatternSet createPatternSet()
+ public File getDir()
{
- final PatternSet patterns = new PatternSet();
- m_additionalPatterns.add( patterns );
- return patterns;
+ return m_dir;
}
}
diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/types/Path.java b/proposal/myrmidon/src/main/org/apache/tools/ant/types/Path.java
index 545097a52..96bc86992 100644
--- a/proposal/myrmidon/src/main/org/apache/tools/ant/types/Path.java
+++ b/proposal/myrmidon/src/main/org/apache/tools/ant/types/Path.java
@@ -205,7 +205,7 @@ public class Path
else if( o instanceof FileSet )
{
final FileSet fs = (FileSet)o;
- final DirectoryScanner ds = fs.getDirectoryScanner();
+ final DirectoryScanner ds = ScannerUtil.getDirectoryScanner( fs );
final String[] s = ds.getIncludedFiles();
final File dir = fs.getDir();
for( int j = 0; j < s.length; j++ )
diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/types/ScannerUtil.java b/proposal/myrmidon/src/main/org/apache/tools/ant/types/ScannerUtil.java
index 500a1bf32..d23237a50 100644
--- a/proposal/myrmidon/src/main/org/apache/tools/ant/types/ScannerUtil.java
+++ b/proposal/myrmidon/src/main/org/apache/tools/ant/types/ScannerUtil.java
@@ -10,6 +10,9 @@ package org.apache.tools.ant.types;
import java.io.File;
import java.util.ArrayList;
import java.util.StringTokenizer;
+import org.apache.myrmidon.api.TaskContext;
+import org.apache.myrmidon.api.TaskException;
+import org.apache.myrmidon.framework.PatternUtil;
/**
*
@@ -524,4 +527,57 @@ public class ScannerUtil
return true;
}
}
+
+ public static void setupDirectoryScanner( final FileSet set,
+ final FileScanner scanner,
+ final TaskContext context )
+ throws TaskException
+ {
+ if( null == scanner )
+ {
+ final String message = "ds cannot be null";
+ throw new IllegalArgumentException( message );
+ }
+
+ scanner.setBasedir( set.getDir() );
+
+ final String message = "FileSet: Setup file scanner in dir " +
+ set.getDir() + " with " + set.getPatternSet();
+ //getLogger().debug( message );
+
+ scanner.setIncludes( PatternUtil.getIncludePatterns( set.getPatternSet(), context ) );
+ scanner.setExcludes( PatternUtil.getExcludePatterns( set.getPatternSet(), context ) );
+ if( set.useDefaultExcludes() )
+ {
+ scanner.addDefaultExcludes();
+ }
+ scanner.setCaseSensitive( set.isCaseSensitive() );
+ }
+
+ public static DirectoryScanner getDirectoryScanner( final FileSet set )
+ throws TaskException
+ {
+ final File dir = set.getDir();
+ if( null == dir )
+ {
+ final String message = "No directory specified for fileset.";
+ throw new TaskException( message );
+ }
+
+ if( !dir.exists() )
+ {
+ final String message = dir.getAbsolutePath() + " not found.";
+ throw new TaskException( message );
+ }
+ if( !dir.isDirectory() )
+ {
+ final String message = dir.getAbsolutePath() + " is not a directory.";
+ throw new TaskException( message );
+ }
+
+ final DirectoryScanner scanner = new DirectoryScanner();
+ setupDirectoryScanner( set, scanner, null );
+ scanner.scan();
+ return scanner;
+ }
}
diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/types/ZipFileSet.java b/proposal/myrmidon/src/main/org/apache/tools/ant/types/ZipFileSet.java
index fffd38f91..bb78420ca 100644
--- a/proposal/myrmidon/src/main/org/apache/tools/ant/types/ZipFileSet.java
+++ b/proposal/myrmidon/src/main/org/apache/tools/ant/types/ZipFileSet.java
@@ -9,6 +9,7 @@ package org.apache.tools.ant.types;
import java.io.File;
import org.apache.myrmidon.api.TaskException;
+import org.apache.myrmidon.api.TaskContext;
import org.apache.tools.ant.Project;
/**
@@ -103,16 +104,16 @@ public class ZipFileSet
{
if( srcFile != null )
{
- ZipScanner zs = new ZipScanner();
+ final ZipScanner zs = new ZipScanner();
zs.setSrc( srcFile );
super.setDir( p.getBaseDir() );
- setupDirectoryScanner( zs );
+ ScannerUtil.setupDirectoryScanner( this, zs, null );
zs.init();
return zs;
}
else
{
- return super.getDirectoryScanner();
+ return ScannerUtil.getDirectoryScanner( this );
}
}
diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/types/FileSet.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/types/FileSet.java
index 737f9b2e3..10dbab09d 100644
--- a/proposal/myrmidon/src/todo/org/apache/tools/ant/types/FileSet.java
+++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/types/FileSet.java
@@ -8,11 +8,9 @@
package org.apache.tools.ant.types;
import java.io.File;
-import java.util.ArrayList;
import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.framework.Pattern;
import org.apache.myrmidon.framework.PatternSet;
-import org.apache.tools.ant.ProjectComponent;
/**
* Moved out of MatchingTask to make it a standalone object that could be
@@ -27,14 +25,11 @@ import org.apache.tools.ant.ProjectComponent;
* @author Magesh Umasankar
*/
public class FileSet
- extends ProjectComponent
- implements Cloneable
{
- private PatternSet m_defaultPatterns = new PatternSet();
- private ArrayList m_additionalPatterns = new ArrayList();
+ private File m_dir;
+ private PatternSet m_patternSet = new PatternSet();
private boolean m_useDefaultExcludes = true;
private boolean m_isCaseSensitive = true;
- private File m_dir;
/**
* Sets case sensitivity of the file system
@@ -66,102 +61,58 @@ public class FileSet
*/
public void setExcludes( final String excludes )
{
- m_defaultPatterns.setExcludes( excludes );
+ m_patternSet.setExcludes( excludes );
}
/**
- * Sets the set of include patterns. Patterns may be separated by a comma or
- * a space.
- *
- * @param includes the string containing the include patterns
+ * add a name entry on the exclude list
*/
- public void setIncludes( final String includes )
+ public void addExclude( final Pattern pattern )
{
- m_defaultPatterns.setIncludes( includes );
+ m_patternSet.addExclude( pattern );
}
- public void setupDirectoryScanner( final FileScanner ds )
- throws TaskException
+ /**
+ * add a name entry on the include list
+ */
+ public void addInclude( final Pattern pattern )
{
- if( null == ds )
- {
- final String message = "ds cannot be null";
- throw new IllegalArgumentException( message );
- }
-
- ds.setBasedir( m_dir );
-
- final int size = m_additionalPatterns.size();
- for( int i = 0; i < size; i++ )
- {
- final Object o = m_additionalPatterns.get( i );
- m_defaultPatterns.append( (PatternSet)o );
- }
-
- final String message = "FileSet: Setup file scanner in dir " +
- m_dir + " with " + m_defaultPatterns;
- getLogger().debug( message );
-
- ds.setIncludes( m_defaultPatterns.getIncludePatterns( getContext() ) );
- ds.setExcludes( m_defaultPatterns.getExcludePatterns( getContext() ) );
- if( m_useDefaultExcludes )
- {
- ds.addDefaultExcludes();
- }
- ds.setCaseSensitive( m_isCaseSensitive );
+ m_patternSet.addInclude( pattern );
}
- public File getDir()
+ public void addPatternSet( final PatternSet set )
{
- return m_dir;
+ m_patternSet.append( set );
}
/**
- * Returns the directory scanner needed to access the files to process.
+ * Sets the set of include patterns. Patterns may be separated by a comma or
+ * a space.
+ *
+ * @param includes the string containing the include patterns
*/
- public DirectoryScanner getDirectoryScanner()
- throws TaskException
+ public void setIncludes( final String includes )
{
- if( m_dir == null )
- {
- throw new TaskException( "No directory specified for fileset." );
- }
-
- if( !m_dir.exists() )
- {
- throw new TaskException( m_dir.getAbsolutePath() + " not found." );
- }
- if( !m_dir.isDirectory() )
- {
- throw new TaskException( m_dir.getAbsolutePath() + " is not a directory." );
- }
+ m_patternSet.setIncludes( includes );
+ }
- final DirectoryScanner scanner = new DirectoryScanner();
- setupDirectoryScanner( scanner );
- scanner.scan();
- return scanner;
+ public final PatternSet getPatternSet()
+ {
+ return m_patternSet;
}
- /**
- * add a name entry on the exclude list
- */
- public void addExclude( final Pattern pattern )
+ public boolean isCaseSensitive()
{
- m_defaultPatterns.addExclude( pattern );
+ return m_isCaseSensitive;
}
- /**
- * add a name entry on the include list
- */
- public void addInclude( final Pattern pattern )
+ public boolean useDefaultExcludes()
{
- m_defaultPatterns.addInclude( pattern );
+ return m_useDefaultExcludes;
}
- public PatternSet createPatternSet()
+ public File getDir()
{
- final PatternSet patterns = new PatternSet();
- m_additionalPatterns.add( patterns );
- return patterns;
+ return m_dir;
}
}
diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/types/Path.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/types/Path.java
index 545097a52..96bc86992 100644
--- a/proposal/myrmidon/src/todo/org/apache/tools/ant/types/Path.java
+++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/types/Path.java
@@ -205,7 +205,7 @@ public class Path
else if( o instanceof FileSet )
{
final FileSet fs = (FileSet)o;
- final DirectoryScanner ds = fs.getDirectoryScanner();
+ final DirectoryScanner ds = ScannerUtil.getDirectoryScanner( fs );
final String[] s = ds.getIncludedFiles();
final File dir = fs.getDir();
for( int j = 0; j < s.length; j++ )
diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/types/ScannerUtil.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/types/ScannerUtil.java
index 500a1bf32..d23237a50 100644
--- a/proposal/myrmidon/src/todo/org/apache/tools/ant/types/ScannerUtil.java
+++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/types/ScannerUtil.java
@@ -10,6 +10,9 @@ package org.apache.tools.ant.types;
import java.io.File;
import java.util.ArrayList;
import java.util.StringTokenizer;
+import org.apache.myrmidon.api.TaskContext;
+import org.apache.myrmidon.api.TaskException;
+import org.apache.myrmidon.framework.PatternUtil;
/**
*
@@ -524,4 +527,57 @@ public class ScannerUtil
return true;
}
}
+
+ public static void setupDirectoryScanner( final FileSet set,
+ final FileScanner scanner,
+ final TaskContext context )
+ throws TaskException
+ {
+ if( null == scanner )
+ {
+ final String message = "ds cannot be null";
+ throw new IllegalArgumentException( message );
+ }
+
+ scanner.setBasedir( set.getDir() );
+
+ final String message = "FileSet: Setup file scanner in dir " +
+ set.getDir() + " with " + set.getPatternSet();
+ //getLogger().debug( message );
+
+ scanner.setIncludes( PatternUtil.getIncludePatterns( set.getPatternSet(), context ) );
+ scanner.setExcludes( PatternUtil.getExcludePatterns( set.getPatternSet(), context ) );
+ if( set.useDefaultExcludes() )
+ {
+ scanner.addDefaultExcludes();
+ }
+ scanner.setCaseSensitive( set.isCaseSensitive() );
+ }
+
+ public static DirectoryScanner getDirectoryScanner( final FileSet set )
+ throws TaskException
+ {
+ final File dir = set.getDir();
+ if( null == dir )
+ {
+ final String message = "No directory specified for fileset.";
+ throw new TaskException( message );
+ }
+
+ if( !dir.exists() )
+ {
+ final String message = dir.getAbsolutePath() + " not found.";
+ throw new TaskException( message );
+ }
+ if( !dir.isDirectory() )
+ {
+ final String message = dir.getAbsolutePath() + " is not a directory.";
+ throw new TaskException( message );
+ }
+
+ final DirectoryScanner scanner = new DirectoryScanner();
+ setupDirectoryScanner( set, scanner, null );
+ scanner.scan();
+ return scanner;
+ }
}
diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/types/ZipFileSet.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/types/ZipFileSet.java
index fffd38f91..bb78420ca 100644
--- a/proposal/myrmidon/src/todo/org/apache/tools/ant/types/ZipFileSet.java
+++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/types/ZipFileSet.java
@@ -9,6 +9,7 @@ package org.apache.tools.ant.types;
import java.io.File;
import org.apache.myrmidon.api.TaskException;
+import org.apache.myrmidon.api.TaskContext;
import org.apache.tools.ant.Project;
/**
@@ -103,16 +104,16 @@ public class ZipFileSet
{
if( srcFile != null )
{
- ZipScanner zs = new ZipScanner();
+ final ZipScanner zs = new ZipScanner();
zs.setSrc( srcFile );
super.setDir( p.getBaseDir() );
- setupDirectoryScanner( zs );
+ ScannerUtil.setupDirectoryScanner( this, zs, null );
zs.init();
return zs;
}
else
{
- return super.getDirectoryScanner();
+ return ScannerUtil.getDirectoryScanner( this );
}
}