adammurdoch 02/03/02 18:28:18
Modified: proposal/myrmidon/src/xdocs vfs.xml
proposal/myrmidon/src/java/org/apache/antlib/vfile
FileSelector.java FilteredFileList.java
Resources.properties
proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors
AbstractNameFileSelector.java AndFileSelector.java
BaseNameFileSelector.java
ExistenceFileSelector.java
IsEmptyFolderSelector.java IsFileSelector.java
IsFolderSelector.java NameFileSelector.java
NotFileSelector.java OrFileSelector.java
UrlFileSelector.java
Added: proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors
ConditionSelector.java FileTestCondition.java
Resources.properties
Log:
Added Condition <-> File Selector adaptors:
* Added <condition> file selector, which allows a set of nested conditions to
be used to select files.
* Added <file-test> condition, which evaluates a set of nested selectors
against
a file.
* FileSelector doesn't extend DataType any more.
* Got rid of the @ant:data-type tags from the file selectors, cause they
ain't.
* Renamed <condition> nested element in <filtered-path> -> <filter>.
* Renamed <is-empty> selector -> <is-empty-folder>
* Fixed NPE using <name> selector in a path.
* Fixed error messages.
Revision Changes Path
1.3 +1 -1 jakarta-ant/proposal/myrmidon/src/xdocs/vfs.xml
Index: vfs.xml
===================================================================
RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/xdocs/vfs.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- vfs.xml 2 Mar 2002 03:00:56 -0000 1.2
+++ vfs.xml 3 Mar 2002 02:28:17 -0000 1.3
@@ -167,7 +167,7 @@
<p>Selects files that exist.</p>
- <h3><code><is-empty></code></h3>
+ <h3><code><is-empty-folder></code></h3>
<p>Selects empty folders, that is, folders that have no
children.</p>
1.2 +1 -2
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/FileSelector.java
Index: FileSelector.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/FileSelector.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- FileSelector.java 27 Feb 2002 12:05:36 -0000 1.1
+++ FileSelector.java 3 Mar 2002 02:28:17 -0000 1.2
@@ -16,12 +16,11 @@
* Accepts files as part of a set.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
- * @version $Revision: 1.1 $ $Date: 2002/02/27 12:05:36 $
+ * @version $Revision: 1.2 $ $Date: 2002/03/03 02:28:17 $
*
* @ant:role shorthand="v-file-selector"
*/
public interface FileSelector
- extends DataType
{
/**
* Accepts a file.
1.4 +2 -2
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/FilteredFileList.java
Index: FilteredFileList.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/FilteredFileList.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- FilteredFileList.java 1 Mar 2002 08:54:19 -0000 1.3
+++ FilteredFileList.java 3 Mar 2002 02:28:17 -0000 1.4
@@ -17,7 +17,7 @@
* A file-list which filters another.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
- * @version $Revision: 1.3 $ $Date: 2002/03/01 08:54:19 $
+ * @version $Revision: 1.4 $ $Date: 2002/03/03 02:28:17 $
*
* @ant:data-type name="filtered-path"
* @ant:type type="v-path" name="filtered-path"
@@ -31,7 +31,7 @@
/**
* Sets the selector to use to filter with.
*/
- public void setCondition( final AndFileSelector selector )
+ public void setFilter( final AndFileSelector selector )
{
m_selector = selector;
}
1.3 +0 -6
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/Resources.properties
Index: Resources.properties
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/Resources.properties,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Resources.properties 27 Feb 2002 12:05:36 -0000 1.2
+++ Resources.properties 3 Mar 2002 02:28:17 -0000 1.3
@@ -8,10 +8,4 @@
copyfilestask.no-destination.error=No destination directory specified for
{0} task.
copyfilestask.copy-file.error=Could not copy "{0}" to "{1}".
-nameselector.too-many-patterns.error=Too many name patterns specified.
-nameselector.no-pattern.error=No name pattern specified.
-nameselector.bad-pattern.error=Invalid name pattern "{0}".
-
filteredfilelist.no-selector.error=No filter criteria specified.
-
-notfileselector.no-selector.error=No selector specified.
1.3 +3 -2
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/AbstractNameFileSelector.java
Index: AbstractNameFileSelector.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/AbstractNameFileSelector.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AbstractNameFileSelector.java 1 Mar 2002 08:54:19 -0000 1.2
+++ AbstractNameFileSelector.java 3 Mar 2002 02:28:17 -0000 1.3
@@ -23,7 +23,7 @@
* An abstract file selector that selects files based on name.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
- * @version $Revision: 1.2 $ $Date: 2002/03/01 08:54:19 $
+ * @version $Revision: 1.3 $ $Date: 2002/03/03 02:28:17 $
*/
public abstract class AbstractNameFileSelector
implements FileSelector
@@ -133,5 +133,6 @@
* Returns the name to match against.
*/
protected abstract String getNameForMatch( final String path,
- final FileObject file );
+ final FileObject file )
+ throws TaskException;
}
1.3 +1 -2
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/AndFileSelector.java
Index: AndFileSelector.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/AndFileSelector.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AndFileSelector.java 1 Mar 2002 08:54:19 -0000 1.2
+++ AndFileSelector.java 3 Mar 2002 02:28:17 -0000 1.3
@@ -18,9 +18,8 @@
* lazy evaluation. Returns true when no nested elements are supplied.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
- * @version $Revision: 1.2 $ $Date: 2002/03/01 08:54:19 $
+ * @version $Revision: 1.3 $ $Date: 2002/03/03 02:28:17 $
*
- * @ant:data-type name="and-selector"
* @ant:type type="v-file-selector" name="and"
*/
public class AndFileSelector
1.3 +1 -2
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/BaseNameFileSelector.java
Index: BaseNameFileSelector.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/BaseNameFileSelector.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- BaseNameFileSelector.java 1 Mar 2002 08:54:19 -0000 1.2
+++ BaseNameFileSelector.java 3 Mar 2002 02:28:17 -0000 1.3
@@ -13,9 +13,8 @@
* A file selector that selects files based on their base-name.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
- * @version $Revision: 1.2 $ $Date: 2002/03/01 08:54:19 $
+ * @version $Revision: 1.3 $ $Date: 2002/03/03 02:28:17 $
*
- * @ant:data-type name="basename-selector"
* @ant:type type="v-file-selector" name="basename"
*/
public class BaseNameFileSelector
1.3 +1 -2
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/ExistenceFileSelector.java
Index: ExistenceFileSelector.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/ExistenceFileSelector.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ExistenceFileSelector.java 1 Mar 2002 08:54:19 -0000 1.2
+++ ExistenceFileSelector.java 3 Mar 2002 02:28:17 -0000 1.3
@@ -17,9 +17,8 @@
* A file selector that only selects files that exist.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
- * @version $Revision: 1.2 $ $Date: 2002/03/01 08:54:19 $
+ * @version $Revision: 1.3 $ $Date: 2002/03/03 02:28:17 $
*
- * @ant:data-type name="exists-selector"
* @ant:type type="v-file-selector" name="exists"
*/
public class ExistenceFileSelector
1.3 +2 -3
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/IsEmptyFolderSelector.java
Index: IsEmptyFolderSelector.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/IsEmptyFolderSelector.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- IsEmptyFolderSelector.java 1 Mar 2002 08:54:19 -0000 1.2
+++ IsEmptyFolderSelector.java 3 Mar 2002 02:28:17 -0000 1.3
@@ -18,10 +18,9 @@
* A file selector that selects empty directories.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
- * @version $Revision: 1.2 $ $Date: 2002/03/01 08:54:19 $
+ * @version $Revision: 1.3 $ $Date: 2002/03/03 02:28:17 $
*
- * @ant:data-type name="is-empty-folder-selector"
- * @ant:type type="v-file-selector" name="is-empty"
+ * @ant:type type="v-file-selector" name="is-empty-folder"
*/
public class IsEmptyFolderSelector
implements FileSelector
1.3 +1 -2
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/IsFileSelector.java
Index: IsFileSelector.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/IsFileSelector.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- IsFileSelector.java 1 Mar 2002 08:54:19 -0000 1.2
+++ IsFileSelector.java 3 Mar 2002 02:28:17 -0000 1.3
@@ -18,9 +18,8 @@
* A file selector which only selects files, not folders.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
- * @version $Revision: 1.2 $ $Date: 2002/03/01 08:54:19 $
+ * @version $Revision: 1.3 $ $Date: 2002/03/03 02:28:17 $
*
- * @ant:data-type name="is-file-selector"
* @ant:type type="v-file-selector" name="is-file"
*/
public class IsFileSelector
1.3 +1 -2
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/IsFolderSelector.java
Index: IsFolderSelector.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/IsFolderSelector.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- IsFolderSelector.java 1 Mar 2002 08:54:19 -0000 1.2
+++ IsFolderSelector.java 3 Mar 2002 02:28:17 -0000 1.3
@@ -18,9 +18,8 @@
* A file selector which only selects folders, not files.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
- * @version $Revision: 1.2 $ $Date: 2002/03/01 08:54:19 $
+ * @version $Revision: 1.3 $ $Date: 2002/03/03 02:28:17 $
*
- * @ant:data-type name="is-folder-selector"
* @ant:type type="v-file-selector" name="is-folder"
*/
public class IsFolderSelector
1.3 +13 -2
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/NameFileSelector.java
Index: NameFileSelector.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/NameFileSelector.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- NameFileSelector.java 1 Mar 2002 08:54:19 -0000 1.2
+++ NameFileSelector.java 3 Mar 2002 02:28:17 -0000 1.3
@@ -8,25 +8,36 @@
package org.apache.antlib.vfile.selectors;
import org.apache.aut.vfs.FileObject;
+import org.apache.myrmidon.api.TaskException;
+import org.apache.avalon.excalibur.i18n.ResourceManager;
+import org.apache.avalon.excalibur.i18n.Resources;
/**
* A file selector that selects files based on their name.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
- * @version $Revision: 1.2 $ $Date: 2002/03/01 08:54:19 $
+ * @version $Revision: 1.3 $ $Date: 2002/03/03 02:28:17 $
*
- * @ant:data-type name="name-selector"
* @ant:type type="v-file-selector" name="name"
*/
public class NameFileSelector
extends AbstractNameFileSelector
{
+ private final static Resources REZ
+ = ResourceManager.getPackageResources( NameFileSelector.class );
+
/**
* Returns the name to match against.
*/
protected String getNameForMatch( final String path,
final FileObject file )
+ throws TaskException
{
+ if( path == null )
+ {
+ final String message = REZ.getString(
"namefileselector.no-path.error" );
+ throw new TaskException( message );
+ }
return path;
}
}
1.3 +8 -3
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/NotFileSelector.java
Index: NotFileSelector.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/NotFileSelector.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- NotFileSelector.java 1 Mar 2002 08:54:19 -0000 1.2
+++ NotFileSelector.java 3 Mar 2002 02:28:17 -0000 1.3
@@ -11,19 +11,23 @@
import org.apache.aut.vfs.FileObject;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
+import org.apache.avalon.excalibur.i18n.ResourceManager;
+import org.apache.avalon.excalibur.i18n.Resources;
/**
* A file selector that negates a nested file selector.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
- * @version $Revision: 1.2 $ $Date: 2002/03/01 08:54:19 $
+ * @version $Revision: 1.3 $ $Date: 2002/03/03 02:28:17 $
*
- * @ant:data-type name="not-selector"
* @ant:type type="v-file-selector" name="not"
*/
public class NotFileSelector
implements FileSelector
{
+ private final static Resources REZ
+ = ResourceManager.getPackageResources( NotFileSelector.class );
+
private FileSelector m_selector;
/**
@@ -44,7 +48,8 @@
{
if( m_selector == null )
{
- throw new TaskException( "notfileselector.no-selector.error" );
+ final String message = REZ.getString(
"notfileselector.no-selector.error" );
+ throw new TaskException( message );
}
return !m_selector.accept( file, path, context );
}
1.3 +1 -2
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/OrFileSelector.java
Index: OrFileSelector.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/OrFileSelector.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- OrFileSelector.java 1 Mar 2002 08:54:19 -0000 1.2
+++ OrFileSelector.java 3 Mar 2002 02:28:17 -0000 1.3
@@ -18,9 +18,8 @@
* lazy evaluation. Returns true when no nested elements are supplied.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
- * @version $Revision: 1.2 $ $Date: 2002/03/01 08:54:19 $
+ * @version $Revision: 1.3 $ $Date: 2002/03/03 02:28:17 $
*
- * @ant:data-type name="or-selector"
* @ant:type type="v-file-selector" name="or"
*/
public class OrFileSelector
1.3 +1 -2
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/UrlFileSelector.java
Index: UrlFileSelector.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/UrlFileSelector.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- UrlFileSelector.java 1 Mar 2002 08:54:19 -0000 1.2
+++ UrlFileSelector.java 3 Mar 2002 02:28:17 -0000 1.3
@@ -13,9 +13,8 @@
* A file selector that selects files based on their URL.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
- * @version $Revision: 1.2 $ $Date: 2002/03/01 08:54:19 $
+ * @version $Revision: 1.3 $ $Date: 2002/03/03 02:28:17 $
*
- * @ant:data-type name="url-selector"
* @ant:type type="v-file-selector" name="url"
*/
public class UrlFileSelector
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/ConditionSelector.java
Index: ConditionSelector.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.antlib.vfile.selectors;
import org.apache.myrmidon.framework.Condition;
import org.apache.myrmidon.framework.conditions.AndCondition;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
import org.apache.antlib.vfile.FileSelector;
import org.apache.aut.vfs.FileObject;
/**
* A file selector that evaluates a set of nested [EMAIL PROTECTED]
Condition} elements.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
* @version $Revision: 1.1 $ $Date: 2002/03/03 02:28:17 $
*
* @ant:type type="v-file-selector" name="condition"
*/
public class ConditionSelector
implements FileSelector
{
private AndCondition m_condition = new AndCondition();
/**
* Adds a condition.
*/
public void add( final Condition condition )
{
m_condition.add( condition );
}
/**
* Accepts a file.
*/
public boolean accept( final FileObject file,
final String path,
final TaskContext context )
throws TaskException
{
return m_condition.evaluate( context );
}
}
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/FileTestCondition.java
Index: FileTestCondition.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.antlib.vfile.selectors;
import org.apache.myrmidon.framework.Condition;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
import org.apache.aut.vfs.FileObject;
import org.apache.antlib.vfile.FileSelector;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
/**
* A condition that applies a set of file selectors to a file.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
* @version $Revision: 1.1 $ $Date: 2002/03/03 02:28:17 $
*
* @ant:type type="condition" name="file-test"
*/
public class FileTestCondition
implements Condition
{
private final static Resources REZ
= ResourceManager.getPackageResources( FileTestCondition.class );
private FileObject m_file;
private AndFileSelector m_selector = new AndFileSelector();
/**
* Sets the file to test.
*/
public void setFile( final FileObject file )
{
m_file = file;
}
/**
* Adds a selector.
*/
public void add( final FileSelector selector )
{
m_selector.add( selector );
}
/**
* Evaluates this condition.
*/
public boolean evaluate( final TaskContext context )
throws TaskException
{
if( m_file == null )
{
final String message = REZ.getString(
"filetestcondition.no-file.error" );
throw new TaskException( message );
}
return m_selector.accept( m_file, null, context );
}
}
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/selectors/Resources.properties
Index: Resources.properties
===================================================================
nameselector.too-many-patterns.error=Too many name patterns specified.
nameselector.no-pattern.error=No name pattern specified.
nameselector.bad-pattern.error=Invalid name pattern "{0}".
notfileselector.no-selector.error=No selector specified.
namefileselector.no-path.error=Cannot use the <name> file selector here.
filetestcondition.no-file.error=No file specified.
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>