You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by do...@apache.org on 2002/01/04 10:26:42 UTC

cvs commit: jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/types Filter.java FileList.java FileSet.java FilterSet.java Mapper.java Path.java PatternSet.java RegularExpression.java DataType.java

donaldp     02/01/04 01:26:42

  Modified:    proposal/myrmidon/src/main/org/apache/tools/ant/types
                        FileList.java FileSet.java FilterSet.java
                        Mapper.java Path.java PatternSet.java
                        RegularExpression.java
  Added:       proposal/myrmidon/src/main/org/apache/tools/ant/types
                        Filter.java
  Removed:     proposal/myrmidon/src/main/org/apache/tools/ant/types
                        DataType.java
  Log:
  Removed DataType and maual handling of references etc
  
  Revision  Changes    Path
  1.8       +15 -97    jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/types/FileList.java
  
  Index: FileList.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/types/FileList.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- FileList.java	30 Dec 2001 00:21:52 -0000	1.7
  +++ FileList.java	4 Jan 2002 09:26:42 -0000	1.8
  @@ -9,10 +9,9 @@
   
   import java.io.File;
   import java.util.ArrayList;
  -import java.util.Stack;
   import java.util.StringTokenizer;
   import org.apache.myrmidon.api.TaskException;
  -import org.apache.tools.ant.Project;
  +import org.apache.tools.ant.ProjectComponent;
   
   /**
    * FileList represents an explicitly named list of files. FileLists are useful
  @@ -21,137 +20,56 @@
    * a matched file if it currently exists in the file system.
    *
    * @author <a href="mailto:cstrong@arielpartners.com">Craeg Strong</a>
  - * @version $Revision: 1.7 $ $Date: 2001/12/30 00:21:52 $
  + * @version $Revision: 1.8 $ $Date: 2002/01/04 09:26:42 $
    */
  -public class FileList extends DataType
  +public class FileList
  +    extends ProjectComponent
   {
  -
  -    private ArrayList filenames = new ArrayList();
  -    private File dir;
  +    private final ArrayList m_filenames = new ArrayList();
  +    private File m_dir;
   
       public FileList()
       {
  -        super();
  -    }
  -
  -    protected FileList( FileList filelist )
  -    {
  -        this.dir = filelist.dir;
  -        this.filenames = filelist.filenames;
       }
   
       public void setDir( File dir )
  -        throws TaskException
       {
  -        if( isReference() )
  -        {
  -            throw tooManyAttributes();
  -        }
  -        this.dir = dir;
  +        m_dir = dir;
       }
   
       public void setFiles( String filenames )
  -        throws TaskException
       {
  -        if( isReference() )
  -        {
  -            throw tooManyAttributes();
  -        }
           if( filenames != null && filenames.length() > 0 )
           {
               StringTokenizer tok = new StringTokenizer( filenames, ", \t\n\r\f", false );
               while( tok.hasMoreTokens() )
               {
  -                this.filenames.add( tok.nextToken() );
  +                m_filenames.add( tok.nextToken() );
               }
           }
       }
   
  -    /**
  -     * Makes this instance in effect a reference to another FileList instance.
  -     * <p>
  -     *
  -     * You must not set another attribute or nest elements inside this element
  -     * if you make it a reference.</p>
  -     *
  -     * @param r The new Refid value
  -     * @exception TaskException Description of Exception
  -     */
  -    public void setRefid( Reference r )
  -        throws TaskException
  -    {
  -        if( ( dir != null ) || ( filenames.size() != 0 ) )
  -        {
  -            throw tooManyAttributes();
  -        }
  -        super.setRefid( r );
  -    }
  -
  -    public File getDir( Project p )
  -        throws TaskException
  +    public File getDir()
       {
  -        if( isReference() )
  -        {
  -            return getRef( p ).getDir( p );
  -        }
  -        return dir;
  +        return m_dir;
       }
   
       /**
        * Returns the list of files represented by this FileList.
  -     *
  -     * @param p Description of Parameter
  -     * @return The Files value
        */
  -    public String[] getFiles( Project p )
  +    public String[] getFiles()
           throws TaskException
       {
  -        if( isReference() )
  -        {
  -            return getRef( p ).getFiles( p );
  -        }
  -
  -        if( dir == null )
  +        if( m_dir == null )
           {
               throw new TaskException( "No directory specified for filelist." );
           }
   
  -        if( filenames.size() == 0 )
  +        if( m_filenames.size() == 0 )
           {
               throw new TaskException( "No files specified for filelist." );
           }
   
  -        final String result[] = new String[ filenames.size() ];
  -        return (String[])filenames.toArray( result );
  +        return (String[])m_filenames.toArray( new String[ m_filenames.size() ] );
       }
  -
  -    /**
  -     * Performs the check for circular references and returns the referenced
  -     * FileList.
  -     *
  -     * @param p Description of Parameter
  -     * @return The Ref value
  -     */
  -    protected FileList getRef( Project p )
  -        throws TaskException
  -    {
  -        if( !checked )
  -        {
  -            Stack stk = new Stack();
  -            stk.push( this );
  -            dieOnCircularReference( stk, p );
  -        }
  -
  -        Object o = ref.getReferencedObject( p );
  -        if( !( o instanceof FileList ) )
  -        {
  -            String msg = ref.getRefId() + " doesn\'t denote a filelist";
  -            throw new TaskException( msg );
  -        }
  -        else
  -        {
  -            return (FileList)o;
  -        }
  -    }
  -
  -}//-- FileList.java
  +}
  
  
  
  1.12      +2 -1      jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/types/FileSet.java
  
  Index: FileSet.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/types/FileSet.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- FileSet.java	1 Jan 2002 09:13:46 -0000	1.11
  +++ FileSet.java	4 Jan 2002 09:26:42 -0000	1.12
  @@ -12,6 +12,7 @@
   import org.apache.myrmidon.api.TaskException;
   import org.apache.tools.ant.DirectoryScanner;
   import org.apache.tools.ant.FileScanner;
  +import org.apache.tools.ant.ProjectComponent;
   
   /**
    * Moved out of MatchingTask to make it a standalone object that could be
  @@ -26,7 +27,7 @@
    * @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a>
    */
   public class FileSet
  -    extends DataType
  +    extends ProjectComponent
       implements Cloneable
   {
       private PatternSet m_defaultPatterns = new PatternSet();
  
  
  
  1.9       +14 -169   jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/types/FilterSet.java
  
  Index: FilterSet.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/types/FilterSet.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- FilterSet.java	30 Dec 2001 10:46:59 -0000	1.8
  +++ FilterSet.java	4 Jan 2002 09:26:42 -0000	1.9
  @@ -16,6 +16,7 @@
   import java.util.Iterator;
   import java.util.Properties;
   import org.apache.myrmidon.api.TaskException;
  +import org.apache.tools.ant.ProjectComponent;
   
   /**
    * A set of filters to be applied to something. A filter set may have begintoken
  @@ -25,7 +26,7 @@
    * @created 14 March 2001
    */
   public class FilterSet
  -    extends DataType
  +    extends ProjectComponent
       implements Cloneable
   {
   
  @@ -39,13 +40,13 @@
        */
       public final static String DEFAULT_TOKEN_END = "@";
   
  -    private String startOfToken = DEFAULT_TOKEN_START;
  -    private String endOfToken = DEFAULT_TOKEN_END;
  +    private String m_startOfToken = DEFAULT_TOKEN_START;
  +    private String m_endOfToken = DEFAULT_TOKEN_END;
   
       /**
        * List of ordered filters and filter files.
        */
  -    private ArrayList filters = new ArrayList();
  +    private ArrayList m_filters = new ArrayList();
   
       public FilterSet()
       {
  @@ -60,7 +61,7 @@
           throws TaskException
       {
           super();
  -        this.filters = (ArrayList)filterset.getFilters().clone();
  +        m_filters = (ArrayList)filterset.getFilters().clone();
       }
   
       /**
  @@ -71,15 +72,11 @@
       public void setBeginToken( String startOfToken )
           throws TaskException
       {
  -        if( isReference() )
  -        {
  -            throw tooManyAttributes();
  -        }
           if( startOfToken == null || "".equals( startOfToken ) )
           {
               throw new TaskException( "beginToken must not be empty" );
           }
  -        this.startOfToken = startOfToken;
  +        m_startOfToken = startOfToken;
       }
   
       /**
  @@ -90,15 +87,11 @@
       public void setEndToken( String endOfToken )
           throws TaskException
       {
  -        if( isReference() )
  -        {
  -            throw tooManyAttributes();
  -        }
           if( endOfToken == null || "".equals( endOfToken ) )
           {
               throw new TaskException( "endToken must not be empty" );
           }
  -        this.endOfToken = endOfToken;
  +        m_endOfToken = endOfToken;
       }
   
       /**
  @@ -111,31 +104,17 @@
       public void setFiltersfile( File filtersFile )
           throws TaskException
       {
  -        if( isReference() )
  -        {
  -            throw tooManyAttributes();
  -        }
           readFiltersFromFile( filtersFile );
       }
   
       public String getBeginToken()
  -        throws TaskException
       {
  -        if( isReference() )
  -        {
  -            return getRef().getBeginToken();
  -        }
  -        return startOfToken;
  +        return m_startOfToken;
       }
   
       public String getEndToken()
  -        throws TaskException
       {
  -        if( isReference() )
  -        {
  -            return getRef().getEndToken();
  -        }
  -        return endOfToken;
  +        return m_endOfToken;
       }
   
       /**
  @@ -162,13 +141,8 @@
        * @param filter The feature to be added to the Filter attribute
        */
       public void addFilter( Filter filter )
  -        throws TaskException
       {
  -        if( isReference() )
  -        {
  -            throw noChildrenAllowed();
  -        }
  -        filters.add( filter );
  +        m_filters.add( filter );
       }
   
       /**
  @@ -178,13 +152,8 @@
        * @param value The value for the new filter.
        */
       public void addFilter( String token, String value )
  -        throws TaskException
       {
  -        if( isReference() )
  -        {
  -            throw noChildrenAllowed();
  -        }
  -        filters.add( new Filter( token, value ) );
  +        m_filters.add( new Filter( token, value ) );
       }
   
       /**
  @@ -193,34 +162,10 @@
        * @param filterSet the filterset to be added to this filterset
        */
       public void addFilterSet( FilterSet filterSet )
  -        throws TaskException
       {
  -        if( isReference() )
  -        {
  -            throw noChildrenAllowed();
  -        }
           for( Iterator e = filterSet.getFilters().iterator(); e.hasNext(); )
           {
  -            filters.add( (Filter)e.next() );
  -        }
  -    }
  -
  -    public Object clone()
  -    {
  -        try
  -        {
  -            if( isReference() )
  -            {
  -                return new FilterSet( getRef() );
  -            }
  -            else
  -            {
  -                return new FilterSet( this );
  -            }
  -        }
  -        catch( final TaskException te )
  -        {
  -            throw new RuntimeException( te.toString() );
  +            m_filters.add( (Filter)e.next() );
           }
       }
   
  @@ -230,12 +175,7 @@
        * @return The filter that was created.
        */
       public FiltersFile createFiltersfile()
  -        throws TaskException
       {
  -        if( isReference() )
  -        {
  -            throw noChildrenAllowed();
  -        }
           return new FiltersFile();
       }
   
  @@ -260,11 +200,6 @@
       public void readFiltersFromFile( File filtersFile )
           throws TaskException
       {
  -        if( isReference() )
  -        {
  -            throw tooManyAttributes();
  -        }
  -
           if( filtersFile.isFile() )
           {
               getLogger().debug( "Reading filters from " + filtersFile );
  @@ -371,97 +306,8 @@
       }
   
       protected ArrayList getFilters()
  -        throws TaskException
  -    {
  -        if( isReference() )
  -        {
  -            return getRef().getFilters();
  -        }
  -        return filters;
  -    }
  -
  -    protected FilterSet getRef()
  -        throws TaskException
       {
  -        return (FilterSet)getCheckedRef( FilterSet.class, "filterset" );
  -    }
  -
  -    /**
  -     * Individual filter component of filterset
  -     *
  -     * @author Michael McCallum
  -     * @created 14 March 2001
  -     */
  -    public static class Filter
  -    {
  -        /**
  -         * Token which will be replaced in the filter operation
  -         */
  -        String token;
  -
  -        /**
  -         * The value which will replace the token in the filtering operation
  -         */
  -        String value;
  -
  -        /**
  -         * Constructor for the Filter object
  -         *
  -         * @param token The token which will be replaced when filtering
  -         * @param value The value which will replace the token when filtering
  -         */
  -        public Filter( String token, String value )
  -        {
  -            this.token = token;
  -            this.value = value;
  -        }
  -
  -        /**
  -         * No argument conmstructor
  -         */
  -        public Filter()
  -        {
  -        }
  -
  -        /**
  -         * Sets the Token attribute of the Filter object
  -         *
  -         * @param token The new Token value
  -         */
  -        public void setToken( String token )
  -        {
  -            this.token = token;
  -        }
  -
  -        /**
  -         * Sets the Value attribute of the Filter object
  -         *
  -         * @param value The new Value value
  -         */
  -        public void setValue( String value )
  -        {
  -            this.value = value;
  -        }
  -
  -        /**
  -         * Gets the Token attribute of the Filter object
  -         *
  -         * @return The Token value
  -         */
  -        public String getToken()
  -        {
  -            return token;
  -        }
  -
  -        /**
  -         * Gets the Value attribute of the Filter object
  -         *
  -         * @return The Value value
  -         */
  -        public String getValue()
  -        {
  -            return value;
  -        }
  +        return m_filters;
       }
   
       /**
  @@ -472,7 +318,6 @@
        */
       public class FiltersFile
       {
  -
           /**
            * Constructor for the Filter object
            */
  
  
  
  1.8       +15 -117   jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/types/Mapper.java
  
  Index: Mapper.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/types/Mapper.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Mapper.java	30 Dec 2001 03:33:58 -0000	1.7
  +++ Mapper.java	4 Jan 2002 09:26:42 -0000	1.8
  @@ -9,8 +9,8 @@
   
   import java.net.URL;
   import java.net.URLClassLoader;
  -import java.util.Stack;
   import org.apache.myrmidon.api.TaskException;
  +import org.apache.tools.ant.ProjectComponent;
   import org.apache.tools.ant.util.FileNameMapper;
   
   /**
  @@ -19,7 +19,7 @@
    * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
    */
   public class Mapper
  -    extends DataType
  +    extends ProjectComponent
       implements Cloneable
   {
       private MapperType m_type;
  @@ -33,14 +33,9 @@
        *
        * @param classname The new Classname value
        */
  -    public void setClassname( String classname )
  -        throws TaskException
  +    public void setClassname( final String classname )
       {
  -        if( isReference() )
  -        {
  -            throw tooManyAttributes();
  -        }
  -        this.m_classname = classname;
  +        m_classname = classname;
       }
   
       /**
  @@ -51,97 +46,38 @@
       public void setClasspath( Path classpath )
           throws TaskException
       {
  -        if( isReference() )
  -        {
  -            throw tooManyAttributes();
  -        }
  -        if( this.m_classpath == null )
  +        if( m_classpath == null )
           {
  -            this.m_classpath = classpath;
  +            m_classpath = classpath;
           }
           else
           {
  -            this.m_classpath.append( classpath );
  +            m_classpath.append( classpath );
           }
       }
   
       /**
  -     * Set the classpath to load the FileNameMapper through via reference
  -     * (attribute).
  -     *
  -     * @param r The new ClasspathRef value
  -     */
  -    public void setClasspathRef( Reference r )
  -        throws TaskException
  -    {
  -        if( isReference() )
  -        {
  -            throw tooManyAttributes();
  -        }
  -        createClasspath().setRefid( r );
  -    }
  -
  -    /**
        * Set the argument to FileNameMapper.setFrom
  -     *
  -     * @param from The new From value
        */
  -    public void setFrom( String from )
  -        throws TaskException
  -    {
  -        if( isReference() )
  -        {
  -            throw tooManyAttributes();
  -        }
  -        this.m_from = from;
  -    }
  -
  -    /**
  -     * Make this Mapper instance a reference to another Mapper. <p>
  -     *
  -     * You must not set any other attribute if you make it a reference.</p>
  -     *
  -     * @param r The new Refid value
  -     * @exception TaskException Description of Exception
  -     */
  -    public void setRefid( Reference r )
  -        throws TaskException
  +    public void setFrom( final String from )
       {
  -        if( m_type != null || m_from != null || m_to != null )
  -        {
  -            throw tooManyAttributes();
  -        }
  -        super.setRefid( r );
  +        m_from = from;
       }
   
       /**
        * Set the argument to FileNameMapper.setTo
  -     *
  -     * @param to The new To value
        */
  -    public void setTo( String to )
  -        throws TaskException
  +    public void setTo( final String to )
       {
  -        if( isReference() )
  -        {
  -            throw tooManyAttributes();
  -        }
  -        this.m_to = to;
  +        m_to = to;
       }
   
       /**
        * Set the type of FileNameMapper to use.
  -     *
  -     * @param type The new Type value
        */
       public void setType( MapperType type )
  -        throws TaskException
       {
  -        if( isReference() )
  -        {
  -            throw tooManyAttributes();
  -        }
  -        this.m_type = type;
  +        m_type = type;
       }
   
       /**
  @@ -153,11 +89,6 @@
       public FileNameMapper getImplementation()
           throws TaskException
       {
  -        if( isReference() )
  -        {
  -            return getRef().getImplementation();
  -        }
  -
           if( m_type == null && m_classname == null )
           {
               throw new TaskException( "one of the attributes type or classname is required" );
  @@ -217,43 +148,10 @@
       public Path createClasspath()
           throws TaskException
       {
  -        if( isReference() )
  +        if( m_classpath == null )
           {
  -            throw noChildrenAllowed();
  +            m_classpath = new Path();
           }
  -        if( this.m_classpath == null )
  -        {
  -            this.m_classpath = new Path();
  -        }
  -        return this.m_classpath.createPath();
  +        return m_classpath.createPath();
       }
  -
  -    /**
  -     * Performs the check for circular references and returns the referenced
  -     * Mapper.
  -     *
  -     * @return The Ref value
  -     */
  -    protected Mapper getRef()
  -        throws TaskException
  -    {
  -        if( !checked )
  -        {
  -            Stack stk = new Stack();
  -            stk.push( this );
  -            dieOnCircularReference( stk, getProject() );
  -        }
  -
  -        Object o = ref.getReferencedObject( getProject() );
  -        if( !( o instanceof Mapper ) )
  -        {
  -            String msg = ref.getRefId() + " doesn\'t denote a mapper";
  -            throw new TaskException( msg );
  -        }
  -        else
  -        {
  -            return (Mapper)o;
  -        }
  -    }
  -
   }
  
  
  
  1.13      +51 -202   jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/types/Path.java
  
  Index: Path.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/types/Path.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Path.java	1 Jan 2002 09:13:46 -0000	1.12
  +++ Path.java	4 Jan 2002 09:26:42 -0000	1.13
  @@ -11,14 +11,12 @@
   import java.io.IOException;
   import java.net.URL;
   import java.util.ArrayList;
  -import java.util.Iterator;
   import java.util.Locale;
  -import java.util.Stack;
   import org.apache.avalon.excalibur.io.FileUtil;
   import org.apache.myrmidon.api.TaskException;
   import org.apache.tools.ant.DirectoryScanner;
   import org.apache.tools.ant.PathTokenizer;
  -import org.apache.tools.ant.Project;
  +import org.apache.tools.ant.ProjectComponent;
   
   /**
    * This object represents a path as used by CLASSPATH or PATH environment
  @@ -51,9 +49,8 @@
    * @author Thomas.Haas@softwired-inc.com
    * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
    */
  -
   public class Path
  -    extends DataType
  +    extends ProjectComponent
       implements Cloneable
   {
       public final static Path systemClasspath = createSystemClasspath();
  @@ -91,11 +88,8 @@
       /**
        * Returns its argument with all file separator characters replaced so that
        * they match the local OS conventions.
  -     *
  -     * @param source Description of Parameter
  -     * @return Description of the Returned Value
        */
  -    public static String translateFile( String source )
  +    private static String translateFile( final String source )
       {
           if( source == null )
               return "";
  @@ -112,7 +106,7 @@
       /**
        * Splits a PATH (with : or ; as separators) into its parts.
        */
  -    public String[] translatePath( Project project, String source )
  +    private String[] translatePath( final File baseDirectory, String source )
       {
           final ArrayList result = new ArrayList();
           if( source == null )
  @@ -123,15 +117,18 @@
           while( tok.hasMoreTokens() )
           {
               element.setLength( 0 );
  -            String pathElement = tok.nextToken();
  +            final String pathElement = tok.nextToken();
               try
               {
  -                element.append( resolveFile( project, pathElement ) );
  +                element.append( resolveFile( baseDirectory, pathElement ) );
               }
               catch( TaskException e )
               {
  -                getLogger().debug( "Dropping path element " + pathElement + " as it is not valid relative to the project" );
  +                final String message =
  +                    "Dropping path element " + pathElement + " as it is not valid relative to the project";
  +                getLogger().debug( message );
               }
  +
               for( int i = 0; i < element.length(); i++ )
               {
                   translateFileSep( element, i );
  @@ -139,8 +136,7 @@
               result.add( element.toString() );
           }
   
  -        final String[] res = new String[ result.size() ];
  -        return (String[])result.toArray( res );
  +        return (String[])result.toArray( new String[ result.size() ] );
       }
   
       /**
  @@ -151,7 +147,7 @@
        * @param pos Description of Parameter
        * @return Description of the Returned Value
        */
  -    protected static boolean translateFileSep( StringBuffer buffer, int pos )
  +    private static boolean translateFileSep( StringBuffer buffer, int pos )
       {
           if( buffer.charAt( pos ) == '/' || buffer.charAt( pos ) == '\\' )
           {
  @@ -163,15 +159,12 @@
   
       /**
        * Adds a String to the ArrayList if it isn't already included.
  -     *
  -     * @param v The feature to be added to the UnlessPresent attribute
  -     * @param s The feature to be added to the UnlessPresent attribute
        */
  -    private static void addUnlessPresent( ArrayList v, String s )
  +    private static void addUnlessPresent( final ArrayList list, final String entry )
       {
  -        if( v.indexOf( s ) == -1 )
  +        if( !list.contains( entry ) )
           {
  -            v.add( s );
  +            list.add( entry );
           }
       }
   
  @@ -179,18 +172,14 @@
        * Resolve a filename with Project's help - if we know one that is. <p>
        *
        * Assume the filename is absolute if project is null.</p>
  -     *
  -     * @param project Description of Parameter
  -     * @param relativeName Description of Parameter
  -     * @return Description of the Returned Value
        */
  -    private static String resolveFile( Project project, String relativeName )
  +    private static String resolveFile( final File baseDirectory, final String relativeName )
           throws TaskException
       {
  -        if( project != null )
  +        if( null != baseDirectory )
           {
  -            File f = FileUtil.resolveFile( project.getBaseDir(), relativeName );
  -            return f.getAbsolutePath();
  +            final File file = FileUtil.resolveFile( baseDirectory, relativeName );
  +            return file.getAbsolutePath();
           }
           return relativeName;
       }
  @@ -200,15 +189,9 @@
        *
        * @param location the location of the element to add (must not be <code>null</code>
        *      nor empty.
  -     * @exception TaskException Description of Exception
        */
  -    public void setLocation( File location )
  -        throws TaskException
  +    public void setLocation( final File location )
       {
  -        if( isReference() )
  -        {
  -            throw tooManyAttributes();
  -        }
           createPathElement().setLocation( location );
       }
   
  @@ -216,63 +199,28 @@
        * Parses a path definition and creates single PathElements.
        *
        * @param path the path definition.
  -     * @exception TaskException Description of Exception
        */
       public void setPath( String path )
  -        throws TaskException
       {
  -        if( isReference() )
  -        {
  -            throw tooManyAttributes();
  -        }
           createPathElement().setPath( path );
       }
   
       /**
  -     * Makes this instance in effect a reference to another Path instance. <p>
  -     *
  -     * You must not set another attribute or nest elements inside this element
  -     * if you make it a reference.</p>
  -     *
  -     * @param r The new Refid value
  -     * @exception TaskException Description of Exception
  -     */
  -    public void setRefid( Reference r )
  -        throws TaskException
  -    {
  -        if( !elements.isEmpty() )
  -        {
  -            throw tooManyAttributes();
  -        }
  -        elements.add( r );
  -        super.setRefid( r );
  -    }
  -
  -    /**
        * Adds the components on the given path which exist to this Path.
        * Components that don't exist, aren't added.
        *
        * @param source - source path whose components are examined for existence
        */
  -    public void addExisting( Path source )
  +    public void addExisting( final Path source )
           throws TaskException
       {
  -        String[] list = source.list();
  +        final String[] list = source.list();
           for( int i = 0; i < list.length; i++ )
           {
  -            File f = null;
  -            if( getProject() != null )
  -            {
  -                f = resolveFile( list[ i ] );
  -            }
  -            else
  -            {
  -                f = new File( list[ i ] );
  -            }
  -
  -            if( f.exists() )
  +            final File file = new File( list[ i ] );
  +            if( file.exists() )
               {
  -                setLocation( f );
  +                setLocation( file );
               }
           }
       }
  @@ -281,8 +229,6 @@
        * Emulation of extdirs feature in java >= 1.2. This method adds all files
        * in the given directories (but not in sub-directories!) to the classpath,
        * so that you don't have to specify them all one by one.
  -     *
  -     * @param extdirs The feature to be added to the Extdirs attribute
        */
       public void addExtdirs( Path extdirs )
           throws TaskException
  @@ -300,16 +246,16 @@
               }
           }
   
  -        String[] dirs = extdirs.list();
  +        final String[] dirs = extdirs.list();
           for( int i = 0; i < dirs.length; i++ )
           {
  -            File dir = resolveFile( dirs[ i ] );
  +            final File dir = resolveFile( dirs[ i ] );
               if( dir.exists() && dir.isDirectory() )
               {
  -                FileSet fs = new FileSet();
  -                fs.setDir( dir );
  -                fs.setIncludes( "*" );
  -                addFileset( fs );
  +                final FileSet fileSet = new FileSet();
  +                fileSet.setDir( dir );
  +                fileSet.setIncludes( "*" );
  +                addFileset( fileSet );
               }
           }
       }
  @@ -320,15 +266,9 @@
        * @param fs The feature to be added to the Fileset attribute
        * @exception TaskException Description of Exception
        */
  -    public void addFileset( FileSet fs )
  -        throws TaskException
  +    public void addFileset( final FileSet fileSet )
       {
  -        if( isReference() )
  -        {
  -            throw noChildrenAllowed();
  -        }
  -        elements.add( fs );
  -        checked = false;
  +        elements.add( fileSet );
       }
   
       /**
  @@ -382,42 +322,24 @@
   
       /**
        * Append the contents of the other Path instance to this.
  -     *
  -     * @param other Description of Parameter
        */
  -    public void append( Path other )
  +    public void append( final Path other )
           throws TaskException
       {
  -        if( other == null )
  -            return;
  -        String[] l = other.list();
  -        for( int i = 0; i < l.length; i++ )
  +        if( null == other )
           {
  -            if( elements.indexOf( l[ i ] ) == -1 )
  -            {
  -                elements.add( l[ i ] );
  -            }
  +            throw new NullPointerException( "other" );
           }
  -    }
   
  -    /**
  -     * Return a Path that holds the same elements as this instance.
  -     *
  -     * @return Description of the Returned Value
  -     */
  -    public Object clone()
  -    {
  -        try
  -        {
  -            Path p = new Path();
  -            p.append( this );
  -            return p;
  -        }
  -        catch( TaskException e )
  +        final String[] list = other.list();
  +        for( int i = 0; i < list.length; i++ )
           {
  -            throw new IllegalStateException( e.getMessage() );
  +            final String file = list[ i ];
  +            if( elements.contains( file ) )
  +            {
  +                elements.add( file );
  +            }
           }
  -
       }
   
       /**
  @@ -459,20 +381,17 @@
           {
               // only: the developer knows what (s)he is doing
               result.addExisting( Path.systemClasspath );
  -
           }
           else if( order.equals( "first" ) )
           {
               // first: developer could use a little help
               result.addExisting( Path.systemClasspath );
               result.addExisting( this );
  -
           }
           else if( order.equals( "ignore" ) )
           {
               // ignore: don't trust anyone
               result.addExisting( this );
  -
           }
           else
           {
  @@ -499,50 +418,27 @@
       public Path createPath()
           throws TaskException
       {
  -        if( isReference() )
  -        {
  -            throw noChildrenAllowed();
  -        }
  -        Path p = new Path();
  -        elements.add( p );
  -        checked = false;
  -        return p;
  +        final Path other = new Path();
  +        elements.add( other );
  +        return other;
       }
   
       /**
        * Creates the nested <code>&lt;pathelement&gt;</code> element.
  -     *
  -     * @return Description of the Returned Value
  -     * @exception TaskException Description of Exception
        */
       public PathElement createPathElement()
  -        throws TaskException
       {
  -        if( isReference() )
  -        {
  -            throw noChildrenAllowed();
  -        }
  -        PathElement pe = new PathElement();
  -        elements.add( pe );
  -        return pe;
  +        final PathElement pathElement = new PathElement();
  +        elements.add( pathElement );
  +        return pathElement;
       }
   
       /**
        * Returns all path elements defined by this and nested path objects.
  -     *
  -     * @return list of path elements.
        */
       public String[] list()
           throws TaskException
       {
  -        if( !checked )
  -        {
  -            // make sure we don't have a circular reference here
  -            Stack stk = new Stack();
  -            stk.push( this );
  -            dieOnCircularReference( stk, getProject() );
  -        }
  -
           ArrayList result = new ArrayList( 2 * elements.size() );
           for( int i = 0; i < elements.size(); i++ )
           {
  @@ -599,14 +495,11 @@
                   }
               }
           }
  -        String[] res = new String[ result.size() ];
  -        return (String[])result.toArray( res );
  +        return (String[])result.toArray( new String[ result.size() ] );
       }
   
       /**
        * How many parts does this Path instance consist of.
  -     *
  -     * @return Description of the Returned Value
        */
       public int size()
           throws TaskException
  @@ -674,51 +567,7 @@
       }
   
       /**
  -     * Overrides the version of DataType to recurse on all DataType child
  -     * elements that may have been added.
  -     *
  -     * @param stk Description of Parameter
  -     * @param p Description of Parameter
  -     * @exception TaskException Description of Exception
  -     */
  -    protected void dieOnCircularReference( Stack stk, Project p )
  -        throws TaskException
  -    {
  -        if( checked )
  -        {
  -            return;
  -        }
  -
  -        Iterator enum = elements.iterator();
  -        while( enum.hasNext() )
  -        {
  -            Object o = enum.next();
  -            if( o instanceof Reference )
  -            {
  -                o = ( (Reference)o ).getReferencedObject( p );
  -            }
  -
  -            if( o instanceof DataType )
  -            {
  -                if( stk.contains( o ) )
  -                {
  -                    throw circularReference();
  -                }
  -                else
  -                {
  -                    stk.push( o );
  -                    ( (DataType)o ).dieOnCircularReference( stk, p );
  -                    stk.pop();
  -                }
  -            }
  -        }
  -        checked = true;
  -    }
  -
  -    /**
        * Helper class, holds the nested <code>&lt;pathelement&gt;</code> values.
  -     *
  -     * @author RT
        */
       public class PathElement
       {
  @@ -731,7 +580,7 @@
   
           public void setPath( String path )
           {
  -            parts = translatePath( getProject(), path );
  +            parts = translatePath( getProject().getBaseDir(), path );
           }
   
           public String[] getParts()
  
  
  
  1.9       +2 -1      jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/types/PatternSet.java
  
  Index: PatternSet.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/types/PatternSet.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- PatternSet.java	1 Jan 2002 09:13:46 -0000	1.8
  +++ PatternSet.java	4 Jan 2002 09:26:42 -0000	1.9
  @@ -16,6 +16,7 @@
   import java.util.StringTokenizer;
   import org.apache.myrmidon.api.TaskException;
   import org.apache.tools.ant.Project;
  +import org.apache.tools.ant.ProjectComponent;
   
   /**
    * Named collection of include/exclude tags. <p>
  @@ -31,7 +32,7 @@
    * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
    */
   public class PatternSet
  -    extends DataType
  +    extends ProjectComponent
   {
       private ArrayList m_includeList = new ArrayList();
       private ArrayList m_excludeList = new ArrayList();
  
  
  
  1.5       +11 -54    jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/types/RegularExpression.java
  
  Index: RegularExpression.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/types/RegularExpression.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- RegularExpression.java	23 Dec 2001 06:32:48 -0000	1.4
  +++ RegularExpression.java	4 Jan 2002 09:26:42 -0000	1.5
  @@ -7,9 +7,8 @@
    */
   package org.apache.tools.ant.types;
   
  -import java.util.Stack;
   import org.apache.myrmidon.api.TaskException;
  -import org.apache.tools.ant.Project;
  +import org.apache.tools.ant.ProjectComponent;
   import org.apache.tools.ant.util.regexp.Regexp;
   import org.apache.tools.ant.util.regexp.RegexpFactory;
   
  @@ -42,79 +41,37 @@
    * @see java.util.regex.Pattern
    * @see org.apache.tools.ant.util.regexp.Regexp
    */
  -public class RegularExpression extends DataType
  +public class RegularExpression
  +    extends ProjectComponent
   {
  -    public final static String DATA_TYPE_NAME = "regularexpression";
  -
       // The regular expression factory
       private final static RegexpFactory factory = new RegexpFactory();
   
  -    private Regexp regexp;
  +    private Regexp m_regexp;
   
       public RegularExpression()
           throws TaskException
       {
  -        this.regexp = factory.newRegexp();
  +        m_regexp = factory.newRegexp();
       }
   
  -    public void setPattern( String pattern )
  +    public void setPattern( final String pattern )
           throws TaskException
       {
  -        this.regexp.setPattern( pattern );
  +        m_regexp.setPattern( pattern );
       }
   
       /**
        * Gets the pattern string for this RegularExpression in the given project.
  -     *
  -     * @param p Description of Parameter
  -     * @return The Pattern value
  -     */
  -    public String getPattern( Project p )
  -        throws TaskException
  -    {
  -        if( isReference() )
  -            return getRef( p ).getPattern( p );
  -
  -        return regexp.getPattern();
  -    }
  -
  -    /**
  -     * Get the RegularExpression this reference refers to in the given project.
  -     * Check for circular references too
  -     *
  -     * @param p Description of Parameter
  -     * @return The Ref value
        */
  -    public RegularExpression getRef( Project p )
  +    public String getPattern()
           throws TaskException
       {
  -        if( !checked )
  -        {
  -            Stack stk = new Stack();
  -            stk.push( this );
  -            dieOnCircularReference( stk, p );
  -        }
  -
  -        Object o = ref.getReferencedObject( p );
  -        if( !( o instanceof RegularExpression ) )
  -        {
  -            String msg = ref.getRefId() + " doesn\'t denote a regularexpression";
  -            throw new TaskException( msg );
  -        }
  -        else
  -        {
  -            return (RegularExpression)o;
  -        }
  +        return m_regexp.getPattern();
       }
   
  -    public Regexp getRegexp( Project p )
  -        throws TaskException
  +    public Regexp getRegexp()
       {
  -        if( isReference() )
  -        {
  -            return getRef( p ).getRegexp( p );
  -        }
  -        return this.regexp;
  +        return m_regexp;
       }
  -
   }
  
  
  
  1.1                  jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/types/Filter.java
  
  Index: Filter.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.tools.ant.types;
  
  /**
   * Individual filter component of filterset
   *
   * @author Michael McCallum
   * @created 14 March 2001
   */
  public class Filter
  {
      /**
       * Token which will be replaced in the filter operation
       */
      private String m_token;
  
      /**
       * The value which will replace the token in the filtering operation
       */
      private String m_value;
  
      /**
       * Constructor for the Filter object
       *
       * @param token The token which will be replaced when filtering
       * @param value The value which will replace the token when filtering
       */
      public Filter( final String token, final String value )
      {
          m_token = token;
          m_value = value;
      }
  
      /**
       * No argument conmstructor
       */
      public Filter()
      {
      }
  
      /**
       * Sets the Token attribute of the Filter object
       */
      public void setToken( final String token )
      {
          m_token = token;
      }
  
      /**
       * Sets the Value attribute of the Filter object
       */
      public void setValue( final String value )
      {
          m_value = value;
      }
  
      /**
       * Gets the Token attribute of the Filter object
       */
      public String getToken()
      {
          return m_token;
      }
  
      /**
       * Gets the Value attribute of the Filter object
       */
      public String getValue()
      {
          return m_value;
      }
  }
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>