ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dona...@apache.org
Subject cvs commit: jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/file Delete.java
Date Sun, 30 Dec 2001 00:06:20 GMT
donaldp     01/12/29 16:06:20

  Modified:    proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/file
                        Delete.java
  Log:
  Remove deprecated behaviour of using MatchingTask
  
  Removed the ability of allowing pluggable log levels.
  
  Revision  Changes    Path
  1.8       +71 -293   jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/file/Delete.java
  
  Index: Delete.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/file/Delete.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Delete.java	23 Dec 2001 14:22:45 -0000	1.7
  +++ Delete.java	30 Dec 2001 00:06:20 -0000	1.8
  @@ -11,10 +11,8 @@
   import java.util.ArrayList;
   import org.apache.myrmidon.api.TaskException;
   import org.apache.tools.ant.DirectoryScanner;
  -import org.apache.tools.ant.Project;
  -import org.apache.tools.ant.taskdefs.MatchingTask;
  +import org.apache.tools.ant.Task;
   import org.apache.tools.ant.types.FileSet;
  -import org.apache.tools.ant.types.PatternSet;
   
   /**
    * Deletes a file or directory, or set of files defined by a fileset. The
  @@ -34,29 +32,12 @@
    * @author Jon S. Stevens <a href="mailto:jon@latchkey.com">jon@latchkey.com</a>
    */
   public class Delete
  -    extends MatchingTask
  +    extends Task
   {
  -    protected File file = null;
  -    protected File dir = null;
  -    protected ArrayList filesets = new ArrayList();
  -    protected boolean usedMatchingTask = false;
  -    protected boolean includeEmpty = false;// by default, remove matching empty dirs
  -
  -    private int verbosity = Project.MSG_VERBOSE;
  -    private boolean quiet = false;
  -    private boolean failonerror = true;
  -
  -    /**
  -     * Sets whether default exclusions should be used or not.
  -     *
  -     * @param useDefaultExcludes "true"|"on"|"yes" when default exclusions
  -     *      should be used, "false"|"off"|"no" when they shouldn't be used.
  -     */
  -    public void setDefaultexcludes( boolean useDefaultExcludes )
  -    {
  -        usedMatchingTask = true;
  -        super.setDefaultexcludes( useDefaultExcludes );
  -    }
  +    private final ArrayList filesets = new ArrayList();
  +    private File m_dir;
  +    private File m_file;
  +    private boolean includeEmpty;// by default, remove matching empty dirs
   
       /**
        * Set the directory from which files are to be deleted
  @@ -65,43 +46,7 @@
        */
       public void setDir( File dir )
       {
  -        this.dir = dir;
  -    }
  -
  -    /**
  -     * Sets the set of exclude patterns. Patterns may be separated by a comma or
  -     * a space.
  -     *
  -     * @param excludes the string containing the exclude patterns
  -     */
  -    public void setExcludes( String excludes )
  -        throws TaskException
  -    {
  -        usedMatchingTask = true;
  -        super.setExcludes( excludes );
  -    }
  -
  -    /**
  -     * Sets the name of the file containing the includes patterns.
  -     *
  -     * @param excludesfile A string containing the filename to fetch the include
  -     *      patterns from.
  -     */
  -    public void setExcludesfile( File excludesfile )
  -        throws TaskException
  -    {
  -        usedMatchingTask = true;
  -        super.setExcludesfile( excludesfile );
  -    }
  -
  -    /**
  -     * this flag means 'note errors to the output, but keep going'
  -     *
  -     * @param failonerror true or false
  -     */
  -    public void setFailOnError( boolean failonerror )
  -    {
  -        this.failonerror = failonerror;
  +        m_dir = dir;
       }
   
       /**
  @@ -111,78 +56,7 @@
        */
       public void setFile( File file )
       {
  -        this.file = file;
  -    }
  -
  -    /**
  -     * Used to delete empty directories.
  -     *
  -     * @param includeEmpty The new IncludeEmptyDirs value
  -     */
  -    public void setIncludeEmptyDirs( boolean includeEmpty )
  -    {
  -        this.includeEmpty = includeEmpty;
  -    }
  -
  -    /**
  -     * 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 void setIncludes( String includes )
  -        throws TaskException
  -    {
  -        usedMatchingTask = true;
  -        super.setIncludes( includes );
  -    }
  -
  -    /**
  -     * Sets the name of the file containing the includes patterns.
  -     *
  -     * @param includesfile A string containing the filename to fetch the include
  -     *      patterns from.
  -     */
  -    public void setIncludesfile( File includesfile )
  -        throws TaskException
  -    {
  -        usedMatchingTask = true;
  -        super.setIncludesfile( includesfile );
  -    }
  -
  -    /**
  -     * If the file does not exist, do not display a diagnostic message or modify
  -     * the exit status to reflect an error. This means that if a file or
  -     * directory cannot be deleted, then no error is reported. This setting
  -     * emulates the -f option to the Unix &quot;rm&quot; command. Default is
  -     * false meaning things are &quot;noisy&quot;
  -     *
  -     * @param quiet "true" or "on"
  -     */
  -    public void setQuiet( boolean quiet )
  -    {
  -        this.quiet = quiet;
  -        if( quiet )
  -        {
  -            this.failonerror = false;
  -        }
  -    }
  -
  -    /**
  -     * Used to force listing of all names of deleted files.
  -     *
  -     * @param verbose "true" or "on"
  -     */
  -    public void setVerbose( boolean verbose )
  -    {
  -        if( verbose )
  -        {
  -            this.verbosity = Project.MSG_INFO;
  -        }
  -        else
  -        {
  -            this.verbosity = Project.MSG_VERBOSE;
  -        }
  +        m_file = file;
       }
   
       /**
  @@ -196,42 +70,6 @@
       }
   
       /**
  -     * add a name entry on the exclude list
  -     *
  -     * @return Description of the Returned Value
  -     */
  -    public PatternSet.NameEntry createExclude()
  -        throws TaskException
  -    {
  -        usedMatchingTask = true;
  -        return super.createExclude();
  -    }
  -
  -    /**
  -     * add a name entry on the include list
  -     *
  -     * @return Description of the Returned Value
  -     */
  -    public PatternSet.NameEntry createInclude()
  -        throws TaskException
  -    {
  -        usedMatchingTask = true;
  -        return super.createInclude();
  -    }
  -
  -    /**
  -     * add a set of patterns
  -     *
  -     * @return Description of the Returned Value
  -     */
  -    public PatternSet createPatternSet()
  -        throws TaskException
  -    {
  -        usedMatchingTask = true;
  -        return super.createPatternSet();
  -    }
  -
  -    /**
        * Delete the file(s).
        *
        * @exception TaskException Description of Exception
  @@ -239,65 +77,45 @@
       public void execute()
           throws TaskException
       {
  -        if( usedMatchingTask )
  +        if( m_file == null && m_dir == null && filesets.size() == 0 )
           {
  -            getLogger().info( "DEPRECATED - Use of the implicit FileSet is deprecated.
 Use a nested fileset element instead." );
  -        }
  -
  -        if( file == null && dir == null && filesets.size() == 0 )
  -        {
  -            throw new TaskException( "At least one of the file or dir attributes, or a
fileset element, must be set." );
  -        }
  -
  -        if( quiet && failonerror )
  -        {
  -            throw new TaskException( "quiet and failonerror cannot both be set to true"
);
  +            final String message = "At least one of the file or dir attributes, " +
  +                "or a fileset element, must be set.";
  +            throw new TaskException( message );
           }
   
           // delete the single file
  -        if( file != null )
  +        if( null != m_file )
           {
  -            if( file.exists() )
  +            if( m_file.exists() )
               {
  -                if( file.isDirectory() )
  +                if( m_file.isDirectory() )
                   {
  -                    getLogger().info( "Directory " + file.getAbsolutePath() + " cannot
be removed using the file attribute.  Use dir instead." );
  +                    final String message = "Directory " + m_file.getAbsolutePath() +
  +                        " cannot be removed using the file attribute.  Use dir instead.";
  +                    getLogger().info( message );
                   }
                   else
                   {
  -                    getLogger().info( "Deleting: " + file.getAbsolutePath() );
  -
  -                    if( !file.delete() )
  +                    getLogger().info( "Deleting: " + m_file.getAbsolutePath() );
  +                    if( !m_file.delete() )
                       {
  -                        String message = "Unable to delete file " + file.getAbsolutePath();
  -                        if( failonerror )
  -                            throw new TaskException( message );
  -                        else
  -                            log( message,
  -                                 quiet ? Project.MSG_VERBOSE : Project.MSG_WARN );
  +                        String message = "Unable to delete file " + m_file.getAbsolutePath();
  +                        throw new TaskException( message );
                       }
                   }
               }
               else
               {
  -                getLogger().debug( "Could not find file " + file.getAbsolutePath() + "
to delete." );
  +                getLogger().debug( "Could not find file " + m_file.getAbsolutePath() +
" to delete." );
               }
           }
   
           // delete the directory
  -        if( dir != null && dir.exists() && dir.isDirectory() &&
!usedMatchingTask )
  +        if( m_dir != null && m_dir.exists() && m_dir.isDirectory() )
           {
  -            /*
  -             * If verbosity is MSG_VERBOSE, that mean we are doing regular logging
  -             * (backwards as that sounds).  In that case, we want to print one
  -             * message about deleting the top of the directory tree.  Otherwise,
  -             * the removeDir method will handle messages for _all_ directories.
  -             */
  -            if( verbosity == Project.MSG_VERBOSE )
  -            {
  -                getLogger().info( "Deleting directory " + dir.getAbsolutePath() );
  -            }
  -            removeDir( dir );
  +            getLogger().info( "Deleting directory " + m_dir.getAbsolutePath() );
  +            removeDir( m_dir );
           }
   
           // delete the files in the filesets
  @@ -314,40 +132,7 @@
               catch( TaskException be )
               {
                   // directory doesn't exist or is not readable
  -                if( failonerror )
  -                {
  -                    throw be;
  -                }
  -                else
  -                {
  -                    log( be.getMessage(),
  -                         quiet ? Project.MSG_VERBOSE : Project.MSG_WARN );
  -                }
  -            }
  -        }
  -
  -        // delete the files from the default fileset
  -        if( usedMatchingTask && dir != null )
  -        {
  -            try
  -            {
  -                DirectoryScanner ds = super.getDirectoryScanner( dir );
  -                String[] files = ds.getIncludedFiles();
  -                String[] dirs = ds.getIncludedDirectories();
  -                removeFiles( dir, files, dirs );
  -            }
  -            catch( TaskException be )
  -            {
  -                // directory doesn't exist or is not readable
  -                if( failonerror )
  -                {
  -                    throw be;
  -                }
  -                else
  -                {
  -                    log( be.getMessage(),
  -                         quiet ? Project.MSG_VERBOSE : Project.MSG_WARN );
  -                }
  +                throw be;
               }
           }
       }
  @@ -356,44 +141,42 @@
       //  protected and private methods
       //************************************************************************
   
  -    protected void removeDir( File d )
  +    protected void removeDir( final File baseDir )
  +        throws TaskException
  +    {
  +        final File[] list = baseDir.listFiles();
  +        if( list != null )
  +        {
  +            deleteFiles( list );
  +        }
  +        getLogger().debug( "Deleting directory " + baseDir.getAbsolutePath() );
  +        if( !baseDir.delete() )
  +        {
  +            String message = "Unable to delete directory " + m_dir.getAbsolutePath();
  +            throw new TaskException( message );
  +        }
  +    }
  +
  +    private void deleteFiles( final File[] list )
           throws TaskException
       {
  -        String[] list = d.list();
  -        if( list == null )
  -            list = new String[ 0 ];
           for( int i = 0; i < list.length; i++ )
           {
  -            String s = list[ i ];
  -            File f = new File( d, s );
  -            if( f.isDirectory() )
  +            final File file = list[ i ];
  +            if( file.isDirectory() )
               {
  -                removeDir( f );
  +                removeDir( file );
               }
               else
               {
  -                log( "Deleting " + f.getAbsolutePath(), verbosity );
  -                if( !f.delete() )
  +                getLogger().debug( "Deleting " + file.getAbsolutePath() );
  +                if( !file.delete() )
                   {
  -                    String message = "Unable to delete file " + f.getAbsolutePath();
  -                    if( failonerror )
  -                        throw new TaskException( message );
  -                    else
  -                        log( message,
  -                             quiet ? Project.MSG_VERBOSE : Project.MSG_WARN );
  +                    String message = "Unable to delete file " + file.getAbsolutePath();
  +                    throw new TaskException( message );
                   }
               }
           }
  -        log( "Deleting directory " + d.getAbsolutePath(), verbosity );
  -        if( !d.delete() )
  -        {
  -            String message = "Unable to delete directory " + dir.getAbsolutePath();
  -            if( failonerror )
  -                throw new TaskException( message );
  -            else
  -                log( message,
  -                     quiet ? Project.MSG_VERBOSE : Project.MSG_WARN );
  -        }
       }
   
       /**
  @@ -404,24 +187,23 @@
        * @param files array of files to delete; can be of zero length
        * @param dirs array of directories to delete; can of zero length
        */
  -    protected void removeFiles( File d, String[] files, String[] dirs )
  +    protected void removeFiles( final File baseDir,
  +                                final String[] files,
  +                                final String[] dirs )
           throws TaskException
       {
           if( files.length > 0 )
           {
  -            getLogger().info( "Deleting " + files.length + " files from " + d.getAbsolutePath()
);
  -            for( int j = 0; j < files.length; j++ )
  -            {
  -                File f = new File( d, files[ j ] );
  -                log( "Deleting " + f.getAbsolutePath(), verbosity );
  -                if( !f.delete() )
  +            final String message = "Deleting " + files.length + " files from " + baseDir.getAbsolutePath();
  +            getLogger().info( message );
  +            for( int i = 0; i < files.length; i++ )
  +            {
  +                final File file = new File( baseDir, files[ i ] );
  +                getLogger().debug( "Deleting " + file.getAbsolutePath() );
  +                if( !file.delete() )
                   {
  -                    String message = "Unable to delete file " + f.getAbsolutePath();
  -                    if( failonerror )
  -                        throw new TaskException( message );
  -                    else
  -                        log( message,
  -                             quiet ? Project.MSG_VERBOSE : Project.MSG_WARN );
  +                    String message2 = "Unable to delete file " + file.getAbsolutePath();
  +                    throw new TaskException( message2 );
                   }
               }
           }
  @@ -431,20 +213,16 @@
               int dirCount = 0;
               for( int j = dirs.length - 1; j >= 0; j-- )
               {
  -                File dir = new File( d, dirs[ j ] );
  +                File dir = new File( baseDir, dirs[ j ] );
                   String[] dirFiles = dir.list();
                   if( dirFiles == null || dirFiles.length == 0 )
                   {
  -                    log( "Deleting " + dir.getAbsolutePath(), verbosity );
  +                    getLogger().debug( "Deleting " + dir.getAbsolutePath() );
                       if( !dir.delete() )
                       {
  -                        String message = "Unable to delete directory "
  -                            + dir.getAbsolutePath();
  -                        if( failonerror )
  -                            throw new TaskException( message );
  -                        else
  -                            log( message,
  -                                 quiet ? Project.MSG_VERBOSE : Project.MSG_WARN );
  +                        final String message =
  +                            "Unable to delete directory " + dir.getAbsolutePath();
  +                        throw new TaskException( message );
                       }
                       else
                       {
  @@ -455,9 +233,9 @@
   
               if( dirCount > 0 )
               {
  -                getLogger().info( "Deleted " + dirCount + " director" +
  -                                  ( dirCount == 1 ? "y" : "ies" ) +
  -                                  " from " + d.getAbsolutePath() );
  +                final String message = "Deleted " + dirCount + " director" +
  +                    ( dirCount == 1 ? "y" : "ies" ) + " from " + baseDir.getAbsolutePath();
  +                getLogger().info( message );
               }
           }
       }
  
  
  

--
To unsubscribe, e-mail:   <mailto:ant-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:ant-dev-help@jakarta.apache.org>


Mime
View raw message