diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/CompileTask.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/CompileTask.java deleted file mode 100644 index 787a43f73..000000000 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/CompileTask.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs; -import java.util.Enumeration; -import java.util.Vector; -import org.apache.tools.ant.types.PatternSet; - -/** - * This task will compile and load a new taskdef all in one step. At times, this - * is useful for eliminating ordering dependencies which otherwise would require - * multiple executions of Ant. - * - * @author Sam Ruby rubys@us.ibm.com - * @deprecated use <taskdef> elements nested into <target>s instead - */ - -public class CompileTask extends Javac -{ - - protected Vector taskList = new Vector(); - - /** - * add a new task entry on the task list - * - * @return Description of the Returned Value - */ - public Taskdef createTaskdef() - { - Taskdef task = new Taskdef(); - taskList.addElement( task ); - return task; - } - - /** - * have execute do nothing - */ - public void execute() { } - - /** - * do all the real work in init - */ - public void init() - { - log( "!! CompileTask is deprecated. !!" ); - log( "Use elements nested into s instead" ); - - // create all the include entries from the task defs - for( Enumeration e = taskList.elements(); e.hasMoreElements(); ) - { - Taskdef task = ( Taskdef )e.nextElement(); - String source = task.getClassname().replace( '.', '/' ) + ".java"; - PatternSet.NameEntry include = super.createInclude(); - include.setName( "**/" + source ); - } - - // execute Javac - super.init(); - super.execute(); - - // now define all the new tasks - for( Enumeration e = taskList.elements(); e.hasMoreElements(); ) - { - Taskdef task = ( Taskdef )e.nextElement(); - task.init(); - } - - } -} diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Copydir.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Copydir.java deleted file mode 100644 index f539fffe2..000000000 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Copydir.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs; -import java.io.File; -import java.io.IOException; -import java.util.Enumeration; -import java.util.Hashtable; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.DirectoryScanner; - -/** - * Copies a directory. - * - * @author James Davidson duncan@x180.com - * @deprecated The copydir task is deprecated. Use copy instead. - */ - -public class Copydir extends MatchingTask -{ - private boolean filtering = false; - private boolean flatten = false; - private boolean forceOverwrite = false; - private Hashtable filecopyList = new Hashtable(); - private File destDir; - - private File srcDir; - - public void setDest( File dest ) - { - destDir = dest; - } - - public void setFiltering( boolean filter ) - { - filtering = filter; - } - - public void setFlatten( boolean flatten ) - { - this.flatten = flatten; - } - - public void setForceoverwrite( boolean force ) - { - forceOverwrite = force; - } - - public void setSrc( File src ) - { - srcDir = src; - } - - public void execute() - throws BuildException - { - log( "DEPRECATED - The copydir task is deprecated. Use copy instead." ); - - if( srcDir == null ) - { - throw new BuildException( "src attribute must be set!", - location ); - } - - if( !srcDir.exists() ) - { - throw new BuildException( "srcdir " + srcDir.toString() - + " does not exist!", location ); - } - - if( destDir == null ) - { - throw new BuildException( "The dest attribute must be set.", location ); - } - - if( srcDir.equals( destDir ) ) - { - log( "Warning: src == dest" ); - } - - DirectoryScanner ds = super.getDirectoryScanner( srcDir ); - - String[] files = ds.getIncludedFiles(); - scanDir( srcDir, destDir, files ); - if( filecopyList.size() > 0 ) - { - log( "Copying " + filecopyList.size() + " file" - + ( filecopyList.size() == 1 ? "" : "s" ) - + " to " + destDir.getAbsolutePath() ); - Enumeration enum = filecopyList.keys(); - while( enum.hasMoreElements() ) - { - String fromFile = ( String )enum.nextElement(); - String toFile = ( String )filecopyList.get( fromFile ); - try - { - project.copyFile( fromFile, toFile, filtering, - forceOverwrite ); - } - catch( IOException ioe ) - { - String msg = "Failed to copy " + fromFile + " to " + toFile - + " due to " + ioe.getMessage(); - throw new BuildException( msg, ioe, location ); - } - } - } - } - - private void scanDir( File from, File to, String[] files ) - { - for( int i = 0; i < files.length; i++ ) - { - String filename = files[i]; - File srcFile = new File( from, filename ); - File destFile; - if( flatten ) - { - destFile = new File( to, new File( filename ).getName() ); - } - else - { - destFile = new File( to, filename ); - } - if( forceOverwrite || - ( srcFile.lastModified() > destFile.lastModified() ) ) - { - filecopyList.put( srcFile.getAbsolutePath(), - destFile.getAbsolutePath() ); - } - } - } -} diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Copyfile.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Copyfile.java deleted file mode 100644 index 8d3398975..000000000 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Copyfile.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs; -import java.io.File; -import java.io.IOException; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.Task; - -/** - * Copies a file. - * - * @author duncan@x180.com - * @deprecated The copyfile task is deprecated. Use copy instead. - */ - -public class Copyfile extends Task -{ - private boolean filtering = false; - private boolean forceOverwrite = false; - private File destFile; - - private File srcFile; - - public void setDest( File dest ) - { - destFile = dest; - } - - public void setFiltering( String filter ) - { - filtering = Project.toBoolean( filter ); - } - - public void setForceoverwrite( boolean force ) - { - forceOverwrite = force; - } - - public void setSrc( File src ) - { - srcFile = src; - } - - public void execute() - throws BuildException - { - log( "DEPRECATED - The copyfile task is deprecated. Use copy instead." ); - - if( srcFile == null ) - { - throw new BuildException( "The src attribute must be present.", location ); - } - - if( !srcFile.exists() ) - { - throw new BuildException( "src " + srcFile.toString() - + " does not exist.", location ); - } - - if( destFile == null ) - { - throw new BuildException( "The dest attribute must be present.", location ); - } - - if( srcFile.equals( destFile ) ) - { - log( "Warning: src == dest" ); - } - - if( forceOverwrite || srcFile.lastModified() > destFile.lastModified() ) - { - try - { - project.copyFile( srcFile, destFile, filtering, forceOverwrite ); - } - catch( IOException ioe ) - { - String msg = "Error copying file: " + srcFile.getAbsolutePath() - + " due to " + ioe.getMessage(); - throw new BuildException( msg ); - } - } - } -} diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Deltree.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Deltree.java deleted file mode 100644 index f6e746e7b..000000000 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Deltree.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs; -import java.io.File; -import java.io.IOException; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Task; - -/** - * @author duncan@x180.com - * @deprecated The deltree task is deprecated. Use delete instead. - */ - -public class Deltree extends Task -{ - - private File dir; - - public void setDir( File dir ) - { - this.dir = dir; - } - - public void execute() - throws BuildException - { - log( "DEPRECATED - The deltree task is deprecated. Use delete instead." ); - - if( dir == null ) - { - throw new BuildException( "dir attribute must be set!", location ); - } - - if( dir.exists() ) - { - if( !dir.isDirectory() ) - { - if( !dir.delete() ) - { - throw new BuildException( "Unable to delete directory " - + dir.getAbsolutePath(), - location ); - } - return; - // String msg = "Given dir: " + dir.getAbsolutePath() + - // " is not a dir"; - // throw new BuildException(msg); - } - - log( "Deleting: " + dir.getAbsolutePath() ); - - try - { - removeDir( dir ); - } - catch( IOException ioe ) - { - String msg = "Unable to delete " + dir.getAbsolutePath(); - throw new BuildException( msg, location ); - } - } - } - - private void removeDir( File dir ) - throws IOException - { - - // check to make sure that the given dir isn't a symlink - // the comparison of absolute path and canonical path - // catches this - - // if (dir.getCanonicalPath().equals(dir.getAbsolutePath())) { - // (costin) It will not work if /home/costin is symlink to /da0/home/costin ( taz - // for example ) - String[] list = dir.list(); - for( int i = 0; i < list.length; i++ ) - { - String s = list[i]; - File f = new File( dir, s ); - if( f.isDirectory() ) - { - removeDir( f ); - } - else - { - if( !f.delete() ) - { - throw new BuildException( "Unable to delete file " + f.getAbsolutePath() ); - } - } - } - if( !dir.delete() ) - { - throw new BuildException( "Unable to delete directory " + dir.getAbsolutePath() ); - } - } -} - diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Exec.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Exec.java deleted file mode 100644 index 076de6fde..000000000 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Exec.java +++ /dev/null @@ -1,252 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.PrintWriter; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.Task; - -/** - * Executes a given command if the os platform is appropriate. - * - * @author duncan@x180.com - * @author rubys@us.ibm.com - * @deprecated Instead of using this class, please extend ExecTask or delegate - * to Execute. - */ -public class Exec extends Task -{ - - private final static int BUFFER_SIZE = 512; - protected PrintWriter fos = null; - private boolean failOnError = false; - private String command; - private File dir; - private String os; - private String out; - - public void setCommand( String command ) - { - this.command = command; - } - - public void setDir( String d ) - { - this.dir = project.resolveFile( d ); - } - - public void setFailonerror( boolean fail ) - { - failOnError = fail; - } - - public void setOs( String os ) - { - this.os = os; - } - - public void setOutput( String out ) - { - this.out = out; - } - - public void execute() - throws BuildException - { - run( command ); - } - - protected void logFlush() - { - if( fos != null ) - fos.close(); - } - - protected void outputLog( String line, int messageLevel ) - { - if( fos == null ) - { - log( line, messageLevel ); - } - else - { - fos.println( line ); - } - } - - protected int run( String command ) - throws BuildException - { - - int err = -1;// assume the worst - - // test if os match - String myos = System.getProperty( "os.name" ); - log( "Myos = " + myos, Project.MSG_VERBOSE ); - if( ( os != null ) && ( os.indexOf( myos ) < 0 ) ) - { - // this command will be executed only on the specified OS - log( "Not found in " + os, Project.MSG_VERBOSE ); - return 0; - } - - // default directory to the project's base directory - if( dir == null ) - dir = project.getBaseDir(); - - if( myos.toLowerCase().indexOf( "windows" ) >= 0 ) - { - if( !dir.equals( project.resolveFile( "." ) ) ) - { - if( myos.toLowerCase().indexOf( "nt" ) >= 0 ) - { - command = "cmd /c cd " + dir + " && " + command; - } - else - { - String ant = project.getProperty( "ant.home" ); - if( ant == null ) - { - throw new BuildException( "Property 'ant.home' not found", location ); - } - - String antRun = project.resolveFile( ant + "/bin/antRun.bat" ).toString(); - command = antRun + " " + dir + " " + command; - } - } - } - else - { - String ant = project.getProperty( "ant.home" ); - if( ant == null ) - throw new BuildException( "Property 'ant.home' not found", location ); - String antRun = project.resolveFile( ant + "/bin/antRun" ).toString(); - - command = antRun + " " + dir + " " + command; - } - - try - { - // show the command - log( command, Project.MSG_VERBOSE ); - - // exec command on system runtime - Process proc = Runtime.getRuntime().exec( command ); - - if( out != null ) - { - fos = new PrintWriter( new FileWriter( out ) ); - log( "Output redirected to " + out, Project.MSG_VERBOSE ); - } - - // copy input and error to the output stream - StreamPumper inputPumper = - new StreamPumper( proc.getInputStream(), Project.MSG_INFO, this ); - StreamPumper errorPumper = - new StreamPumper( proc.getErrorStream(), Project.MSG_WARN, this ); - - // starts pumping away the generated output/error - inputPumper.start(); - errorPumper.start(); - - // Wait for everything to finish - proc.waitFor(); - inputPumper.join(); - errorPumper.join(); - proc.destroy(); - - // close the output file if required - logFlush(); - - // check its exit value - err = proc.exitValue(); - if( err != 0 ) - { - if( failOnError ) - { - throw new BuildException( "Exec returned: " + err, location ); - } - else - { - log( "Result: " + err, Project.MSG_ERR ); - } - } - } - catch( IOException ioe ) - { - throw new BuildException( "Error exec: " + command, ioe, location ); - } - catch( InterruptedException ex ) - {} - - return err; - } - - // Inner class for continually pumping the input stream during - // Process's runtime. - class StreamPumper extends Thread - { - private boolean endOfStream = false; - private int SLEEP_TIME = 5; - private BufferedReader din; - private int messageLevel; - private Exec parent; - - public StreamPumper( InputStream is, int messageLevel, Exec parent ) - { - this.din = new BufferedReader( new InputStreamReader( is ) ); - this.messageLevel = messageLevel; - this.parent = parent; - } - - public void pumpStream() - throws IOException - { - byte[] buf = new byte[BUFFER_SIZE]; - if( !endOfStream ) - { - String line = din.readLine(); - - if( line != null ) - { - outputLog( line, messageLevel ); - } - else - { - endOfStream = true; - } - } - } - - public void run() - { - try - { - try - { - while( !endOfStream ) - { - pumpStream(); - sleep( SLEEP_TIME ); - } - } - catch( InterruptedException ie ) - {} - din.close(); - } - catch( IOException ioe ) - {} - } - } -} diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/JavacOutputStream.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/JavacOutputStream.java deleted file mode 100644 index 4d959fbf8..000000000 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/JavacOutputStream.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs; -import java.io.IOException; -import java.io.OutputStream; -import org.apache.tools.ant.Task; - -/** - * Serves as an output stream to Javac. This let's us print messages out to the - * log and detect whether or not Javac had an error while compiling. - * - * @author James Duncan Davidson (duncan@x180.com) - * @deprecated use returnvalue of compile to detect compilation failure. - */ - -class JavacOutputStream extends OutputStream -{ - private boolean errorFlag = false; - private StringBuffer line; - - private Task task; - - /** - * Constructs a new JavacOutputStream with the given task as the output - * source for messages. - * - * @param task Description of Parameter - */ - - JavacOutputStream( Task task ) - { - this.task = task; - line = new StringBuffer(); - } - - /** - * Write a character to the output stream. This method looks to make sure - * that there isn't an error being reported and will flush each line of - * input out to the project's log stream. - * - * @param c Description of Parameter - * @exception IOException Description of Exception - */ - - public void write( int c ) - throws IOException - { - char cc = ( char )c; - if( cc == '\r' || cc == '\n' ) - { - // line feed - if( line.length() > 0 ) - { - processLine(); - } - } - else - { - line.append( cc ); - } - } - - /** - * Returns the error status of the compile. If no errors occured, this - * method will return false, else this method will return true. - * - * @return The ErrorFlag value - */ - - boolean getErrorFlag() - { - return errorFlag; - } - - /** - * Processes a line of input and determines if an error occured. - */ - - private void processLine() - { - String s = line.toString(); - if( s.indexOf( "error" ) > -1 ) - { - errorFlag = true; - } - task.log( s ); - line = new StringBuffer(); - } -} - diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Jikes.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Jikes.java deleted file mode 100644 index 4e8700635..000000000 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Jikes.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.Random; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; - -/** - * Encapsulates a Jikes compiler, by directly executing an external process. - * - * @author skanthak@muehlheim.de - * @deprecated merged into the class Javac. - */ -public class Jikes -{ - protected String command; - protected JikesOutputParser jop; - protected Project project; - - /** - * Constructs a new Jikes obect. - * - * @param jop - Parser to send jike's output to - * @param command - name of jikes executeable - * @param project Description of Parameter - */ - protected Jikes( JikesOutputParser jop, String command, Project project ) - { - super(); - this.jop = jop; - this.command = command; - this.project = project; - } - - /** - * Do the compile with the specified arguments. - * - * @param args - arguments to pass to process on command line - */ - protected void compile( String[] args ) - { - String[] commandArray = null; - File tmpFile = null; - - try - { - String myos = System.getProperty( "os.name" ); - - // Windows has a 32k limit on total arg size, so - // create a temporary file to store all the arguments - - // There have been reports that 300 files could be compiled - // so 250 is a conservative approach - if( myos.toLowerCase().indexOf( "windows" ) >= 0 - && args.length > 250 ) - { - PrintWriter out = null; - try - { - tmpFile = new File( "jikes" + ( new Random( System.currentTimeMillis() ) ).nextLong() ); - out = new PrintWriter( new FileWriter( tmpFile ) ); - for( int i = 0; i < args.length; i++ ) - { - out.println( args[i] ); - } - out.flush(); - commandArray = new String[]{command, - "@" + tmpFile.getAbsolutePath()}; - } - catch( IOException e ) - { - throw new BuildException( "Error creating temporary file", e ); - } - finally - { - if( out != null ) - { - try - { - out.close(); - } - catch( Throwable t ) - {} - } - } - } - else - { - commandArray = new String[args.length + 1]; - commandArray[0] = command; - System.arraycopy( args, 0, commandArray, 1, args.length ); - } - - // We assume, that everything jikes writes goes to - // standard output, not to standard error. The option - // -Xstdout that is given to Jikes in Javac.doJikesCompile() - // should guarantee this. At least I hope so. :) - try - { - Execute exe = new Execute( jop ); - exe.setAntRun( project ); - exe.setWorkingDirectory( project.getBaseDir() ); - exe.setCommandline( commandArray ); - exe.execute(); - } - catch( IOException e ) - { - throw new BuildException( "Error running Jikes compiler", e ); - } - } - finally - { - if( tmpFile != null ) - { - tmpFile.delete(); - } - } - } -} diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/JikesOutputParser.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/JikesOutputParser.java deleted file mode 100644 index 3376ff97f..000000000 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/JikesOutputParser.java +++ /dev/null @@ -1,174 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.Task; - -/** - * Parses output from jikes and passes errors and warnings into the right - * logging channels of Project. TODO: Parsing could be much better - * - * @author skanthak@muehlheim.de - * @deprecated use Jikes' exit value to detect compilation failure. - */ -public class JikesOutputParser implements ExecuteStreamHandler -{ - protected boolean errorFlag = false; - protected boolean error = false; - - protected BufferedReader br; - protected boolean emacsMode;// no errors so far - protected int errors, warnings; - protected Task task; - - /** - * Construct a new Parser object - * - * @param task - task in whichs context we are called - * @param emacsMode Description of Parameter - */ - protected JikesOutputParser( Task task, boolean emacsMode ) - { - super(); - this.task = task; - this.emacsMode = emacsMode; - } - - /** - * Ignore. - * - * @param is The new ProcessErrorStream value - */ - public void setProcessErrorStream( InputStream is ) { } - - /** - * Ignore. - * - * @param os The new ProcessInputStream value - */ - public void setProcessInputStream( OutputStream os ) { } - - /** - * Set the inputstream - * - * @param is The new ProcessOutputStream value - * @exception IOException Description of Exception - */ - public void setProcessOutputStream( InputStream is ) - throws IOException - { - br = new BufferedReader( new InputStreamReader( is ) ); - } - - /** - * Invokes parseOutput. - * - * @exception IOException Description of Exception - */ - public void start() - throws IOException - { - parseOutput( br ); - } - - /** - * Ignore. - */ - public void stop() { } - - /** - * Indicate if there were errors during the compile - * - * @return if errors ocured - */ - protected boolean getErrorFlag() - { - return errorFlag; - } - - /** - * Parse the output of a jikes compiler - * - * @param reader - Reader used to read jikes's output - * @exception IOException Description of Exception - */ - protected void parseOutput( BufferedReader reader ) - throws IOException - { - if( emacsMode ) - parseEmacsOutput( reader ); - else - parseStandardOutput( reader ); - } - - private void setError( boolean err ) - { - error = err; - if( error ) - errorFlag = true; - } - - private void log( String line ) - { - if( !emacsMode ) - { - task.log( "", ( error ? Project.MSG_ERR : Project.MSG_WARN ) ); - } - task.log( line, ( error ? Project.MSG_ERR : Project.MSG_WARN ) ); - } - - private void parseEmacsOutput( BufferedReader reader ) - throws IOException - { - // This may change, if we add advanced parsing capabilities. - parseStandardOutput( reader ); - } - - private void parseStandardOutput( BufferedReader reader ) - throws IOException - { - String line; - String lower; - // We assume, that every output, jike does, stands for an error/warning - // XXX - // Is this correct? - - // TODO: - // A warning line, that shows code, which contains a variable - // error will cause some trouble. The parser should definitely - // be much better. - - while( ( line = reader.readLine() ) != null ) - { - lower = line.toLowerCase(); - if( line.trim().equals( "" ) ) - continue; - if( lower.indexOf( "error" ) != -1 ) - setError( true ); - else if( lower.indexOf( "warning" ) != -1 ) - setError( false ); - else - { - // If we don't know the type of the line - // and we are in emacs mode, it will be - // an error, because in this mode, jikes won't - // always print "error", but sometimes other - // keywords like "Syntax". We should look for - // all those keywords. - if( emacsMode ) - setError( true ); - } - log( line ); - } - } -} diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/KeySubst.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/KeySubst.java deleted file mode 100644 index 22fbf44f3..000000000 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/KeySubst.java +++ /dev/null @@ -1,202 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs; -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.util.Hashtable; -import java.util.StringTokenizer; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Task; - -/** - * Keyword substitution. Input file is written to output file. Do not make input - * file same as output file. Keywords in input files look like this: - * - * @author Jon S. Stevens jon@clearink.com - * @foo@. See the docs for the setKeys method to understand how to do the - * substitutions. - * @deprecated KeySubst is deprecated. Use Filter + CopyDir instead. - */ -public class KeySubst extends Task -{ - private File source = null; - private File dest = null; - private String sep = "*"; - private Hashtable replacements = new Hashtable(); - - - public static void main( String[] args ) - { - try - { - Hashtable hash = new Hashtable(); - hash.put( "VERSION", "1.0.3" ); - hash.put( "b", "ffff" ); - System.out.println( KeySubst.replace( "$f ${VERSION} f ${b} jj $", hash ) ); - } - catch( Exception e ) - { - e.printStackTrace(); - } - } - - /** - * Does replacement on text using the hashtable of keys. - * - * @param origString Description of Parameter - * @param keys Description of Parameter - * @return Description of the Returned Value - * @exception BuildException Description of Exception - * @returns the string with the replacements in it. - */ - public static String replace( String origString, Hashtable keys ) - throws BuildException - { - StringBuffer finalString = new StringBuffer(); - int index = 0; - int i = 0; - String key = null; - while( ( index = origString.indexOf( "${", i ) ) > -1 ) - { - key = origString.substring( index + 2, origString.indexOf( "}", index + 3 ) ); - finalString.append( origString.substring( i, index ) ); - if( keys.containsKey( key ) ) - { - finalString.append( keys.get( key ) ); - } - else - { - finalString.append( "${" ); - finalString.append( key ); - finalString.append( "}" ); - } - i = index + 3 + key.length(); - } - finalString.append( origString.substring( i ) ); - return finalString.toString(); - } - - /** - * Set the destination file. - * - * @param dest The new Dest value - */ - public void setDest( File dest ) - { - this.dest = dest; - } - - /** - * Format string is like this:

- * - * name=value*name2=value

- * - * Names are case sensitive.

- * - * Use the setSep() method to change the * to something else if you need to - * use * as a name or value. - * - * @param keys The new Keys value - */ - public void setKeys( String keys ) - { - if( keys != null && keys.length() > 0 ) - { - StringTokenizer tok = - new StringTokenizer( keys, this.sep, false ); - while( tok.hasMoreTokens() ) - { - String token = tok.nextToken().trim(); - StringTokenizer itok = - new StringTokenizer( token, "=", false ); - - String name = itok.nextToken(); - String value = itok.nextToken(); -// log ( "Name: " + name ); -// log ( "Value: " + value ); - replacements.put( name, value ); - } - } - } - - /** - * Sets the seperator between name=value arguments in setKeys(). By default - * it is "*". - * - * @param sep The new Sep value - */ - public void setSep( String sep ) - { - this.sep = sep; - } - - /** - * Set the source file. - * - * @param s The new Src value - */ - public void setSrc( File s ) - { - this.source = s; - } - - /** - * Do the execution. - * - * @exception BuildException Description of Exception - */ - public void execute() - throws BuildException - { - log( "!! KeySubst is deprecated. Use Filter + CopyDir instead. !!" ); - log( "Performing Substitions" ); - if( source == null || dest == null ) - { - log( "Source and destinations must not be null" ); - return; - } - BufferedReader br = null; - BufferedWriter bw = null; - try - { - br = new BufferedReader( new FileReader( source ) ); - dest.delete(); - bw = new BufferedWriter( new FileWriter( dest ) ); - - String line = null; - String newline = null; - int length; - line = br.readLine(); - while( line != null ) - { - if( line.length() == 0 ) - { - bw.newLine(); - } - else - { - newline = KeySubst.replace( line, replacements ); - bw.write( newline ); - bw.newLine(); - } - line = br.readLine(); - } - bw.flush(); - bw.close(); - br.close(); - } - catch( IOException ioe ) - { - ioe.printStackTrace(); - } - } -} diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Rename.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Rename.java deleted file mode 100644 index 7e1090049..000000000 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Rename.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs; -import java.io.File; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Task; - -/** - * Renames a file. - * - * @author haas@softwired.ch - * @deprecated The rename task is deprecated. Use move instead. - */ -public class Rename extends Task -{ - private boolean replace = true; - private File dest; - - private File src; - - /** - * Sets the new name of the file. - * - * @param dest the new name of the file. - */ - public void setDest( File dest ) - { - this.dest = dest; - } - - /** - * Sets wheter an existing file should be replaced. - * - * @param replace on, if an existing file should be replaced. - */ - public void setReplace( String replace ) - { - this.replace = project.toBoolean( replace ); - } - - - /** - * Sets the file to be renamed. - * - * @param src the file to rename - */ - public void setSrc( File src ) - { - this.src = src; - } - - - /** - * Renames the file src to dest - * - * @exception BuildException Description of Exception - */ - public void execute() - throws BuildException - { - log( "DEPRECATED - The rename task is deprecated. Use move instead." ); - - if( dest == null ) - { - throw new BuildException( "dest attribute is required", location ); - } - - if( src == null ) - { - throw new BuildException( "src attribute is required", location ); - } - - if( replace && dest.exists() ) - { - if( !dest.delete() ) - { - throw new BuildException( "Unable to remove existing file " + - dest ); - } - } - if( !src.renameTo( dest ) ) - { - throw new BuildException( "Unable to rename " + src + " to " + - dest ); - } - } -} diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/TaskOutputStream.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/TaskOutputStream.java deleted file mode 100644 index 5af5c9934..000000000 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/TaskOutputStream.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs; -import java.io.IOException; -import java.io.OutputStream; -import org.apache.tools.ant.Task; - -/** - * Redirects text written to a stream thru the standard ant logging mechanism. - * This class is useful for integrating with tools that write to System.out and - * System.err. For example, the following will cause all text written to - * System.out to be logged with "info" priority:

System.setOut(new PrintStream(new TaskOutputStream(project, Project.MSG_INFO)));
- * - * @author James Duncan Davidson (duncan@x180.com) - * @deprecated use LogOutputStream instead. - */ - -public class TaskOutputStream extends OutputStream -{ - private StringBuffer line; - private int msgOutputLevel; - - private Task task; - - /** - * Constructs a new JavacOutputStream with the given project as the output - * source for messages. - * - * @param task Description of Parameter - * @param msgOutputLevel Description of Parameter - */ - - TaskOutputStream( Task task, int msgOutputLevel ) - { - this.task = task; - this.msgOutputLevel = msgOutputLevel; - - line = new StringBuffer(); - } - - /** - * Write a character to the output stream. This method looks to make sure - * that there isn't an error being reported and will flush each line of - * input out to the project's log stream. - * - * @param c Description of Parameter - * @exception IOException Description of Exception - */ - - public void write( int c ) - throws IOException - { - char cc = ( char )c; - if( cc == '\r' || cc == '\n' ) - { - // line feed - if( line.length() > 0 ) - { - processLine(); - } - } - else - { - line.append( cc ); - } - } - - /** - * Processes a line of input and determines if an error occured. - */ - - private void processLine() - { - String s = line.toString(); - task.log( s, msgOutputLevel ); - line = new StringBuffer(); - } -} - diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/RenameExtensions.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/RenameExtensions.java deleted file mode 100644 index 1aa5ab674..000000000 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/RenameExtensions.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs.optional; -import java.io.File; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.taskdefs.MatchingTask; -import org.apache.tools.ant.taskdefs.Move; -import org.apache.tools.ant.types.Mapper; - -/** - * @author dIon Gillard - * dion@multitask.com.au - * @author Stefan Bodewig - * @version 1.2 - */ -public class RenameExtensions extends MatchingTask -{ - - private String fromExtension = ""; - private String toExtension = ""; - private boolean replace = false; - - private Mapper.MapperType globType; - private File srcDir; - - - /** - * Creates new RenameExtensions - */ - public RenameExtensions() - { - super(); - globType = new Mapper.MapperType(); - globType.setValue( "glob" ); - } - - /** - * store fromExtension * - * - * @param from The new FromExtension value - */ - public void setFromExtension( String from ) - { - fromExtension = from; - } - - /** - * store replace attribute - this determines whether the target file should - * be overwritten if present - * - * @param replace The new Replace value - */ - public void setReplace( boolean replace ) - { - this.replace = replace; - } - - /** - * Set the source dir to find the files to be renamed. - * - * @param srcDir The new SrcDir value - */ - public void setSrcDir( File srcDir ) - { - this.srcDir = srcDir; - } - - /** - * store toExtension * - * - * @param to The new ToExtension value - */ - public void setToExtension( String to ) - { - toExtension = to; - } - - /** - * Executes the task, i.e. does the actual compiler call - * - * @exception BuildException Description of Exception - */ - public void execute() - throws BuildException - { - - // first off, make sure that we've got a from and to extension - if( fromExtension == null || toExtension == null || srcDir == null ) - { - throw new BuildException( "srcDir, fromExtension and toExtension " + - "attributes must be set!" ); - } - - log( "DEPRECATED - The renameext task is deprecated. Use move instead.", - Project.MSG_WARN ); - log( "Replace this with:", Project.MSG_INFO ); - log( "", - Project.MSG_INFO ); - log( " ", Project.MSG_INFO ); - log( " ", Project.MSG_INFO ); - log( "", Project.MSG_INFO ); - log( "using the same patterns on as you\'ve used here", - Project.MSG_INFO ); - - Move move = ( Move )project.createTask( "move" ); - move.setOwningTarget( target ); - move.setTaskName( getTaskName() ); - move.setLocation( getLocation() ); - move.setTodir( srcDir ); - move.setOverwrite( replace ); - - fileset.setDir( srcDir ); - move.addFileset( fileset ); - - Mapper me = move.createMapper(); - me.setType( globType ); - me.setFrom( "*" + fromExtension ); - me.setTo( "*" + toExtension ); - - move.execute(); - } - -} diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/CompileTask.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/CompileTask.java deleted file mode 100644 index 787a43f73..000000000 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/CompileTask.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs; -import java.util.Enumeration; -import java.util.Vector; -import org.apache.tools.ant.types.PatternSet; - -/** - * This task will compile and load a new taskdef all in one step. At times, this - * is useful for eliminating ordering dependencies which otherwise would require - * multiple executions of Ant. - * - * @author Sam Ruby rubys@us.ibm.com - * @deprecated use <taskdef> elements nested into <target>s instead - */ - -public class CompileTask extends Javac -{ - - protected Vector taskList = new Vector(); - - /** - * add a new task entry on the task list - * - * @return Description of the Returned Value - */ - public Taskdef createTaskdef() - { - Taskdef task = new Taskdef(); - taskList.addElement( task ); - return task; - } - - /** - * have execute do nothing - */ - public void execute() { } - - /** - * do all the real work in init - */ - public void init() - { - log( "!! CompileTask is deprecated. !!" ); - log( "Use elements nested into s instead" ); - - // create all the include entries from the task defs - for( Enumeration e = taskList.elements(); e.hasMoreElements(); ) - { - Taskdef task = ( Taskdef )e.nextElement(); - String source = task.getClassname().replace( '.', '/' ) + ".java"; - PatternSet.NameEntry include = super.createInclude(); - include.setName( "**/" + source ); - } - - // execute Javac - super.init(); - super.execute(); - - // now define all the new tasks - for( Enumeration e = taskList.elements(); e.hasMoreElements(); ) - { - Taskdef task = ( Taskdef )e.nextElement(); - task.init(); - } - - } -} diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Copydir.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Copydir.java deleted file mode 100644 index f539fffe2..000000000 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Copydir.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs; -import java.io.File; -import java.io.IOException; -import java.util.Enumeration; -import java.util.Hashtable; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.DirectoryScanner; - -/** - * Copies a directory. - * - * @author James Davidson duncan@x180.com - * @deprecated The copydir task is deprecated. Use copy instead. - */ - -public class Copydir extends MatchingTask -{ - private boolean filtering = false; - private boolean flatten = false; - private boolean forceOverwrite = false; - private Hashtable filecopyList = new Hashtable(); - private File destDir; - - private File srcDir; - - public void setDest( File dest ) - { - destDir = dest; - } - - public void setFiltering( boolean filter ) - { - filtering = filter; - } - - public void setFlatten( boolean flatten ) - { - this.flatten = flatten; - } - - public void setForceoverwrite( boolean force ) - { - forceOverwrite = force; - } - - public void setSrc( File src ) - { - srcDir = src; - } - - public void execute() - throws BuildException - { - log( "DEPRECATED - The copydir task is deprecated. Use copy instead." ); - - if( srcDir == null ) - { - throw new BuildException( "src attribute must be set!", - location ); - } - - if( !srcDir.exists() ) - { - throw new BuildException( "srcdir " + srcDir.toString() - + " does not exist!", location ); - } - - if( destDir == null ) - { - throw new BuildException( "The dest attribute must be set.", location ); - } - - if( srcDir.equals( destDir ) ) - { - log( "Warning: src == dest" ); - } - - DirectoryScanner ds = super.getDirectoryScanner( srcDir ); - - String[] files = ds.getIncludedFiles(); - scanDir( srcDir, destDir, files ); - if( filecopyList.size() > 0 ) - { - log( "Copying " + filecopyList.size() + " file" - + ( filecopyList.size() == 1 ? "" : "s" ) - + " to " + destDir.getAbsolutePath() ); - Enumeration enum = filecopyList.keys(); - while( enum.hasMoreElements() ) - { - String fromFile = ( String )enum.nextElement(); - String toFile = ( String )filecopyList.get( fromFile ); - try - { - project.copyFile( fromFile, toFile, filtering, - forceOverwrite ); - } - catch( IOException ioe ) - { - String msg = "Failed to copy " + fromFile + " to " + toFile - + " due to " + ioe.getMessage(); - throw new BuildException( msg, ioe, location ); - } - } - } - } - - private void scanDir( File from, File to, String[] files ) - { - for( int i = 0; i < files.length; i++ ) - { - String filename = files[i]; - File srcFile = new File( from, filename ); - File destFile; - if( flatten ) - { - destFile = new File( to, new File( filename ).getName() ); - } - else - { - destFile = new File( to, filename ); - } - if( forceOverwrite || - ( srcFile.lastModified() > destFile.lastModified() ) ) - { - filecopyList.put( srcFile.getAbsolutePath(), - destFile.getAbsolutePath() ); - } - } - } -} diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Copyfile.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Copyfile.java deleted file mode 100644 index 8d3398975..000000000 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Copyfile.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs; -import java.io.File; -import java.io.IOException; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.Task; - -/** - * Copies a file. - * - * @author duncan@x180.com - * @deprecated The copyfile task is deprecated. Use copy instead. - */ - -public class Copyfile extends Task -{ - private boolean filtering = false; - private boolean forceOverwrite = false; - private File destFile; - - private File srcFile; - - public void setDest( File dest ) - { - destFile = dest; - } - - public void setFiltering( String filter ) - { - filtering = Project.toBoolean( filter ); - } - - public void setForceoverwrite( boolean force ) - { - forceOverwrite = force; - } - - public void setSrc( File src ) - { - srcFile = src; - } - - public void execute() - throws BuildException - { - log( "DEPRECATED - The copyfile task is deprecated. Use copy instead." ); - - if( srcFile == null ) - { - throw new BuildException( "The src attribute must be present.", location ); - } - - if( !srcFile.exists() ) - { - throw new BuildException( "src " + srcFile.toString() - + " does not exist.", location ); - } - - if( destFile == null ) - { - throw new BuildException( "The dest attribute must be present.", location ); - } - - if( srcFile.equals( destFile ) ) - { - log( "Warning: src == dest" ); - } - - if( forceOverwrite || srcFile.lastModified() > destFile.lastModified() ) - { - try - { - project.copyFile( srcFile, destFile, filtering, forceOverwrite ); - } - catch( IOException ioe ) - { - String msg = "Error copying file: " + srcFile.getAbsolutePath() - + " due to " + ioe.getMessage(); - throw new BuildException( msg ); - } - } - } -} diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Deltree.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Deltree.java deleted file mode 100644 index f6e746e7b..000000000 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Deltree.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs; -import java.io.File; -import java.io.IOException; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Task; - -/** - * @author duncan@x180.com - * @deprecated The deltree task is deprecated. Use delete instead. - */ - -public class Deltree extends Task -{ - - private File dir; - - public void setDir( File dir ) - { - this.dir = dir; - } - - public void execute() - throws BuildException - { - log( "DEPRECATED - The deltree task is deprecated. Use delete instead." ); - - if( dir == null ) - { - throw new BuildException( "dir attribute must be set!", location ); - } - - if( dir.exists() ) - { - if( !dir.isDirectory() ) - { - if( !dir.delete() ) - { - throw new BuildException( "Unable to delete directory " - + dir.getAbsolutePath(), - location ); - } - return; - // String msg = "Given dir: " + dir.getAbsolutePath() + - // " is not a dir"; - // throw new BuildException(msg); - } - - log( "Deleting: " + dir.getAbsolutePath() ); - - try - { - removeDir( dir ); - } - catch( IOException ioe ) - { - String msg = "Unable to delete " + dir.getAbsolutePath(); - throw new BuildException( msg, location ); - } - } - } - - private void removeDir( File dir ) - throws IOException - { - - // check to make sure that the given dir isn't a symlink - // the comparison of absolute path and canonical path - // catches this - - // if (dir.getCanonicalPath().equals(dir.getAbsolutePath())) { - // (costin) It will not work if /home/costin is symlink to /da0/home/costin ( taz - // for example ) - String[] list = dir.list(); - for( int i = 0; i < list.length; i++ ) - { - String s = list[i]; - File f = new File( dir, s ); - if( f.isDirectory() ) - { - removeDir( f ); - } - else - { - if( !f.delete() ) - { - throw new BuildException( "Unable to delete file " + f.getAbsolutePath() ); - } - } - } - if( !dir.delete() ) - { - throw new BuildException( "Unable to delete directory " + dir.getAbsolutePath() ); - } - } -} - diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Exec.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Exec.java deleted file mode 100644 index 076de6fde..000000000 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Exec.java +++ /dev/null @@ -1,252 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.PrintWriter; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.Task; - -/** - * Executes a given command if the os platform is appropriate. - * - * @author duncan@x180.com - * @author rubys@us.ibm.com - * @deprecated Instead of using this class, please extend ExecTask or delegate - * to Execute. - */ -public class Exec extends Task -{ - - private final static int BUFFER_SIZE = 512; - protected PrintWriter fos = null; - private boolean failOnError = false; - private String command; - private File dir; - private String os; - private String out; - - public void setCommand( String command ) - { - this.command = command; - } - - public void setDir( String d ) - { - this.dir = project.resolveFile( d ); - } - - public void setFailonerror( boolean fail ) - { - failOnError = fail; - } - - public void setOs( String os ) - { - this.os = os; - } - - public void setOutput( String out ) - { - this.out = out; - } - - public void execute() - throws BuildException - { - run( command ); - } - - protected void logFlush() - { - if( fos != null ) - fos.close(); - } - - protected void outputLog( String line, int messageLevel ) - { - if( fos == null ) - { - log( line, messageLevel ); - } - else - { - fos.println( line ); - } - } - - protected int run( String command ) - throws BuildException - { - - int err = -1;// assume the worst - - // test if os match - String myos = System.getProperty( "os.name" ); - log( "Myos = " + myos, Project.MSG_VERBOSE ); - if( ( os != null ) && ( os.indexOf( myos ) < 0 ) ) - { - // this command will be executed only on the specified OS - log( "Not found in " + os, Project.MSG_VERBOSE ); - return 0; - } - - // default directory to the project's base directory - if( dir == null ) - dir = project.getBaseDir(); - - if( myos.toLowerCase().indexOf( "windows" ) >= 0 ) - { - if( !dir.equals( project.resolveFile( "." ) ) ) - { - if( myos.toLowerCase().indexOf( "nt" ) >= 0 ) - { - command = "cmd /c cd " + dir + " && " + command; - } - else - { - String ant = project.getProperty( "ant.home" ); - if( ant == null ) - { - throw new BuildException( "Property 'ant.home' not found", location ); - } - - String antRun = project.resolveFile( ant + "/bin/antRun.bat" ).toString(); - command = antRun + " " + dir + " " + command; - } - } - } - else - { - String ant = project.getProperty( "ant.home" ); - if( ant == null ) - throw new BuildException( "Property 'ant.home' not found", location ); - String antRun = project.resolveFile( ant + "/bin/antRun" ).toString(); - - command = antRun + " " + dir + " " + command; - } - - try - { - // show the command - log( command, Project.MSG_VERBOSE ); - - // exec command on system runtime - Process proc = Runtime.getRuntime().exec( command ); - - if( out != null ) - { - fos = new PrintWriter( new FileWriter( out ) ); - log( "Output redirected to " + out, Project.MSG_VERBOSE ); - } - - // copy input and error to the output stream - StreamPumper inputPumper = - new StreamPumper( proc.getInputStream(), Project.MSG_INFO, this ); - StreamPumper errorPumper = - new StreamPumper( proc.getErrorStream(), Project.MSG_WARN, this ); - - // starts pumping away the generated output/error - inputPumper.start(); - errorPumper.start(); - - // Wait for everything to finish - proc.waitFor(); - inputPumper.join(); - errorPumper.join(); - proc.destroy(); - - // close the output file if required - logFlush(); - - // check its exit value - err = proc.exitValue(); - if( err != 0 ) - { - if( failOnError ) - { - throw new BuildException( "Exec returned: " + err, location ); - } - else - { - log( "Result: " + err, Project.MSG_ERR ); - } - } - } - catch( IOException ioe ) - { - throw new BuildException( "Error exec: " + command, ioe, location ); - } - catch( InterruptedException ex ) - {} - - return err; - } - - // Inner class for continually pumping the input stream during - // Process's runtime. - class StreamPumper extends Thread - { - private boolean endOfStream = false; - private int SLEEP_TIME = 5; - private BufferedReader din; - private int messageLevel; - private Exec parent; - - public StreamPumper( InputStream is, int messageLevel, Exec parent ) - { - this.din = new BufferedReader( new InputStreamReader( is ) ); - this.messageLevel = messageLevel; - this.parent = parent; - } - - public void pumpStream() - throws IOException - { - byte[] buf = new byte[BUFFER_SIZE]; - if( !endOfStream ) - { - String line = din.readLine(); - - if( line != null ) - { - outputLog( line, messageLevel ); - } - else - { - endOfStream = true; - } - } - } - - public void run() - { - try - { - try - { - while( !endOfStream ) - { - pumpStream(); - sleep( SLEEP_TIME ); - } - } - catch( InterruptedException ie ) - {} - din.close(); - } - catch( IOException ioe ) - {} - } - } -} diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/JavacOutputStream.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/JavacOutputStream.java deleted file mode 100644 index 4d959fbf8..000000000 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/JavacOutputStream.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs; -import java.io.IOException; -import java.io.OutputStream; -import org.apache.tools.ant.Task; - -/** - * Serves as an output stream to Javac. This let's us print messages out to the - * log and detect whether or not Javac had an error while compiling. - * - * @author James Duncan Davidson (duncan@x180.com) - * @deprecated use returnvalue of compile to detect compilation failure. - */ - -class JavacOutputStream extends OutputStream -{ - private boolean errorFlag = false; - private StringBuffer line; - - private Task task; - - /** - * Constructs a new JavacOutputStream with the given task as the output - * source for messages. - * - * @param task Description of Parameter - */ - - JavacOutputStream( Task task ) - { - this.task = task; - line = new StringBuffer(); - } - - /** - * Write a character to the output stream. This method looks to make sure - * that there isn't an error being reported and will flush each line of - * input out to the project's log stream. - * - * @param c Description of Parameter - * @exception IOException Description of Exception - */ - - public void write( int c ) - throws IOException - { - char cc = ( char )c; - if( cc == '\r' || cc == '\n' ) - { - // line feed - if( line.length() > 0 ) - { - processLine(); - } - } - else - { - line.append( cc ); - } - } - - /** - * Returns the error status of the compile. If no errors occured, this - * method will return false, else this method will return true. - * - * @return The ErrorFlag value - */ - - boolean getErrorFlag() - { - return errorFlag; - } - - /** - * Processes a line of input and determines if an error occured. - */ - - private void processLine() - { - String s = line.toString(); - if( s.indexOf( "error" ) > -1 ) - { - errorFlag = true; - } - task.log( s ); - line = new StringBuffer(); - } -} - diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Jikes.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Jikes.java deleted file mode 100644 index 4e8700635..000000000 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Jikes.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.Random; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; - -/** - * Encapsulates a Jikes compiler, by directly executing an external process. - * - * @author skanthak@muehlheim.de - * @deprecated merged into the class Javac. - */ -public class Jikes -{ - protected String command; - protected JikesOutputParser jop; - protected Project project; - - /** - * Constructs a new Jikes obect. - * - * @param jop - Parser to send jike's output to - * @param command - name of jikes executeable - * @param project Description of Parameter - */ - protected Jikes( JikesOutputParser jop, String command, Project project ) - { - super(); - this.jop = jop; - this.command = command; - this.project = project; - } - - /** - * Do the compile with the specified arguments. - * - * @param args - arguments to pass to process on command line - */ - protected void compile( String[] args ) - { - String[] commandArray = null; - File tmpFile = null; - - try - { - String myos = System.getProperty( "os.name" ); - - // Windows has a 32k limit on total arg size, so - // create a temporary file to store all the arguments - - // There have been reports that 300 files could be compiled - // so 250 is a conservative approach - if( myos.toLowerCase().indexOf( "windows" ) >= 0 - && args.length > 250 ) - { - PrintWriter out = null; - try - { - tmpFile = new File( "jikes" + ( new Random( System.currentTimeMillis() ) ).nextLong() ); - out = new PrintWriter( new FileWriter( tmpFile ) ); - for( int i = 0; i < args.length; i++ ) - { - out.println( args[i] ); - } - out.flush(); - commandArray = new String[]{command, - "@" + tmpFile.getAbsolutePath()}; - } - catch( IOException e ) - { - throw new BuildException( "Error creating temporary file", e ); - } - finally - { - if( out != null ) - { - try - { - out.close(); - } - catch( Throwable t ) - {} - } - } - } - else - { - commandArray = new String[args.length + 1]; - commandArray[0] = command; - System.arraycopy( args, 0, commandArray, 1, args.length ); - } - - // We assume, that everything jikes writes goes to - // standard output, not to standard error. The option - // -Xstdout that is given to Jikes in Javac.doJikesCompile() - // should guarantee this. At least I hope so. :) - try - { - Execute exe = new Execute( jop ); - exe.setAntRun( project ); - exe.setWorkingDirectory( project.getBaseDir() ); - exe.setCommandline( commandArray ); - exe.execute(); - } - catch( IOException e ) - { - throw new BuildException( "Error running Jikes compiler", e ); - } - } - finally - { - if( tmpFile != null ) - { - tmpFile.delete(); - } - } - } -} diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/JikesOutputParser.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/JikesOutputParser.java deleted file mode 100644 index 3376ff97f..000000000 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/JikesOutputParser.java +++ /dev/null @@ -1,174 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.Task; - -/** - * Parses output from jikes and passes errors and warnings into the right - * logging channels of Project. TODO: Parsing could be much better - * - * @author skanthak@muehlheim.de - * @deprecated use Jikes' exit value to detect compilation failure. - */ -public class JikesOutputParser implements ExecuteStreamHandler -{ - protected boolean errorFlag = false; - protected boolean error = false; - - protected BufferedReader br; - protected boolean emacsMode;// no errors so far - protected int errors, warnings; - protected Task task; - - /** - * Construct a new Parser object - * - * @param task - task in whichs context we are called - * @param emacsMode Description of Parameter - */ - protected JikesOutputParser( Task task, boolean emacsMode ) - { - super(); - this.task = task; - this.emacsMode = emacsMode; - } - - /** - * Ignore. - * - * @param is The new ProcessErrorStream value - */ - public void setProcessErrorStream( InputStream is ) { } - - /** - * Ignore. - * - * @param os The new ProcessInputStream value - */ - public void setProcessInputStream( OutputStream os ) { } - - /** - * Set the inputstream - * - * @param is The new ProcessOutputStream value - * @exception IOException Description of Exception - */ - public void setProcessOutputStream( InputStream is ) - throws IOException - { - br = new BufferedReader( new InputStreamReader( is ) ); - } - - /** - * Invokes parseOutput. - * - * @exception IOException Description of Exception - */ - public void start() - throws IOException - { - parseOutput( br ); - } - - /** - * Ignore. - */ - public void stop() { } - - /** - * Indicate if there were errors during the compile - * - * @return if errors ocured - */ - protected boolean getErrorFlag() - { - return errorFlag; - } - - /** - * Parse the output of a jikes compiler - * - * @param reader - Reader used to read jikes's output - * @exception IOException Description of Exception - */ - protected void parseOutput( BufferedReader reader ) - throws IOException - { - if( emacsMode ) - parseEmacsOutput( reader ); - else - parseStandardOutput( reader ); - } - - private void setError( boolean err ) - { - error = err; - if( error ) - errorFlag = true; - } - - private void log( String line ) - { - if( !emacsMode ) - { - task.log( "", ( error ? Project.MSG_ERR : Project.MSG_WARN ) ); - } - task.log( line, ( error ? Project.MSG_ERR : Project.MSG_WARN ) ); - } - - private void parseEmacsOutput( BufferedReader reader ) - throws IOException - { - // This may change, if we add advanced parsing capabilities. - parseStandardOutput( reader ); - } - - private void parseStandardOutput( BufferedReader reader ) - throws IOException - { - String line; - String lower; - // We assume, that every output, jike does, stands for an error/warning - // XXX - // Is this correct? - - // TODO: - // A warning line, that shows code, which contains a variable - // error will cause some trouble. The parser should definitely - // be much better. - - while( ( line = reader.readLine() ) != null ) - { - lower = line.toLowerCase(); - if( line.trim().equals( "" ) ) - continue; - if( lower.indexOf( "error" ) != -1 ) - setError( true ); - else if( lower.indexOf( "warning" ) != -1 ) - setError( false ); - else - { - // If we don't know the type of the line - // and we are in emacs mode, it will be - // an error, because in this mode, jikes won't - // always print "error", but sometimes other - // keywords like "Syntax". We should look for - // all those keywords. - if( emacsMode ) - setError( true ); - } - log( line ); - } - } -} diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/KeySubst.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/KeySubst.java deleted file mode 100644 index 22fbf44f3..000000000 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/KeySubst.java +++ /dev/null @@ -1,202 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs; -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.util.Hashtable; -import java.util.StringTokenizer; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Task; - -/** - * Keyword substitution. Input file is written to output file. Do not make input - * file same as output file. Keywords in input files look like this: - * - * @author Jon S. Stevens jon@clearink.com - * @foo@. See the docs for the setKeys method to understand how to do the - * substitutions. - * @deprecated KeySubst is deprecated. Use Filter + CopyDir instead. - */ -public class KeySubst extends Task -{ - private File source = null; - private File dest = null; - private String sep = "*"; - private Hashtable replacements = new Hashtable(); - - - public static void main( String[] args ) - { - try - { - Hashtable hash = new Hashtable(); - hash.put( "VERSION", "1.0.3" ); - hash.put( "b", "ffff" ); - System.out.println( KeySubst.replace( "$f ${VERSION} f ${b} jj $", hash ) ); - } - catch( Exception e ) - { - e.printStackTrace(); - } - } - - /** - * Does replacement on text using the hashtable of keys. - * - * @param origString Description of Parameter - * @param keys Description of Parameter - * @return Description of the Returned Value - * @exception BuildException Description of Exception - * @returns the string with the replacements in it. - */ - public static String replace( String origString, Hashtable keys ) - throws BuildException - { - StringBuffer finalString = new StringBuffer(); - int index = 0; - int i = 0; - String key = null; - while( ( index = origString.indexOf( "${", i ) ) > -1 ) - { - key = origString.substring( index + 2, origString.indexOf( "}", index + 3 ) ); - finalString.append( origString.substring( i, index ) ); - if( keys.containsKey( key ) ) - { - finalString.append( keys.get( key ) ); - } - else - { - finalString.append( "${" ); - finalString.append( key ); - finalString.append( "}" ); - } - i = index + 3 + key.length(); - } - finalString.append( origString.substring( i ) ); - return finalString.toString(); - } - - /** - * Set the destination file. - * - * @param dest The new Dest value - */ - public void setDest( File dest ) - { - this.dest = dest; - } - - /** - * Format string is like this:

- * - * name=value*name2=value

- * - * Names are case sensitive.

- * - * Use the setSep() method to change the * to something else if you need to - * use * as a name or value. - * - * @param keys The new Keys value - */ - public void setKeys( String keys ) - { - if( keys != null && keys.length() > 0 ) - { - StringTokenizer tok = - new StringTokenizer( keys, this.sep, false ); - while( tok.hasMoreTokens() ) - { - String token = tok.nextToken().trim(); - StringTokenizer itok = - new StringTokenizer( token, "=", false ); - - String name = itok.nextToken(); - String value = itok.nextToken(); -// log ( "Name: " + name ); -// log ( "Value: " + value ); - replacements.put( name, value ); - } - } - } - - /** - * Sets the seperator between name=value arguments in setKeys(). By default - * it is "*". - * - * @param sep The new Sep value - */ - public void setSep( String sep ) - { - this.sep = sep; - } - - /** - * Set the source file. - * - * @param s The new Src value - */ - public void setSrc( File s ) - { - this.source = s; - } - - /** - * Do the execution. - * - * @exception BuildException Description of Exception - */ - public void execute() - throws BuildException - { - log( "!! KeySubst is deprecated. Use Filter + CopyDir instead. !!" ); - log( "Performing Substitions" ); - if( source == null || dest == null ) - { - log( "Source and destinations must not be null" ); - return; - } - BufferedReader br = null; - BufferedWriter bw = null; - try - { - br = new BufferedReader( new FileReader( source ) ); - dest.delete(); - bw = new BufferedWriter( new FileWriter( dest ) ); - - String line = null; - String newline = null; - int length; - line = br.readLine(); - while( line != null ) - { - if( line.length() == 0 ) - { - bw.newLine(); - } - else - { - newline = KeySubst.replace( line, replacements ); - bw.write( newline ); - bw.newLine(); - } - line = br.readLine(); - } - bw.flush(); - bw.close(); - br.close(); - } - catch( IOException ioe ) - { - ioe.printStackTrace(); - } - } -} diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Rename.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Rename.java deleted file mode 100644 index 7e1090049..000000000 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Rename.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs; -import java.io.File; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Task; - -/** - * Renames a file. - * - * @author haas@softwired.ch - * @deprecated The rename task is deprecated. Use move instead. - */ -public class Rename extends Task -{ - private boolean replace = true; - private File dest; - - private File src; - - /** - * Sets the new name of the file. - * - * @param dest the new name of the file. - */ - public void setDest( File dest ) - { - this.dest = dest; - } - - /** - * Sets wheter an existing file should be replaced. - * - * @param replace on, if an existing file should be replaced. - */ - public void setReplace( String replace ) - { - this.replace = project.toBoolean( replace ); - } - - - /** - * Sets the file to be renamed. - * - * @param src the file to rename - */ - public void setSrc( File src ) - { - this.src = src; - } - - - /** - * Renames the file src to dest - * - * @exception BuildException Description of Exception - */ - public void execute() - throws BuildException - { - log( "DEPRECATED - The rename task is deprecated. Use move instead." ); - - if( dest == null ) - { - throw new BuildException( "dest attribute is required", location ); - } - - if( src == null ) - { - throw new BuildException( "src attribute is required", location ); - } - - if( replace && dest.exists() ) - { - if( !dest.delete() ) - { - throw new BuildException( "Unable to remove existing file " + - dest ); - } - } - if( !src.renameTo( dest ) ) - { - throw new BuildException( "Unable to rename " + src + " to " + - dest ); - } - } -} diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/TaskOutputStream.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/TaskOutputStream.java deleted file mode 100644 index 5af5c9934..000000000 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/TaskOutputStream.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs; -import java.io.IOException; -import java.io.OutputStream; -import org.apache.tools.ant.Task; - -/** - * Redirects text written to a stream thru the standard ant logging mechanism. - * This class is useful for integrating with tools that write to System.out and - * System.err. For example, the following will cause all text written to - * System.out to be logged with "info" priority:

System.setOut(new PrintStream(new TaskOutputStream(project, Project.MSG_INFO)));
- * - * @author James Duncan Davidson (duncan@x180.com) - * @deprecated use LogOutputStream instead. - */ - -public class TaskOutputStream extends OutputStream -{ - private StringBuffer line; - private int msgOutputLevel; - - private Task task; - - /** - * Constructs a new JavacOutputStream with the given project as the output - * source for messages. - * - * @param task Description of Parameter - * @param msgOutputLevel Description of Parameter - */ - - TaskOutputStream( Task task, int msgOutputLevel ) - { - this.task = task; - this.msgOutputLevel = msgOutputLevel; - - line = new StringBuffer(); - } - - /** - * Write a character to the output stream. This method looks to make sure - * that there isn't an error being reported and will flush each line of - * input out to the project's log stream. - * - * @param c Description of Parameter - * @exception IOException Description of Exception - */ - - public void write( int c ) - throws IOException - { - char cc = ( char )c; - if( cc == '\r' || cc == '\n' ) - { - // line feed - if( line.length() > 0 ) - { - processLine(); - } - } - else - { - line.append( cc ); - } - } - - /** - * Processes a line of input and determines if an error occured. - */ - - private void processLine() - { - String s = line.toString(); - task.log( s, msgOutputLevel ); - line = new StringBuffer(); - } -} - diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/RenameExtensions.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/RenameExtensions.java deleted file mode 100644 index 1aa5ab674..000000000 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/RenameExtensions.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * 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 file. - */ -package org.apache.tools.ant.taskdefs.optional; -import java.io.File; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.taskdefs.MatchingTask; -import org.apache.tools.ant.taskdefs.Move; -import org.apache.tools.ant.types.Mapper; - -/** - * @author dIon Gillard - * dion@multitask.com.au - * @author Stefan Bodewig - * @version 1.2 - */ -public class RenameExtensions extends MatchingTask -{ - - private String fromExtension = ""; - private String toExtension = ""; - private boolean replace = false; - - private Mapper.MapperType globType; - private File srcDir; - - - /** - * Creates new RenameExtensions - */ - public RenameExtensions() - { - super(); - globType = new Mapper.MapperType(); - globType.setValue( "glob" ); - } - - /** - * store fromExtension * - * - * @param from The new FromExtension value - */ - public void setFromExtension( String from ) - { - fromExtension = from; - } - - /** - * store replace attribute - this determines whether the target file should - * be overwritten if present - * - * @param replace The new Replace value - */ - public void setReplace( boolean replace ) - { - this.replace = replace; - } - - /** - * Set the source dir to find the files to be renamed. - * - * @param srcDir The new SrcDir value - */ - public void setSrcDir( File srcDir ) - { - this.srcDir = srcDir; - } - - /** - * store toExtension * - * - * @param to The new ToExtension value - */ - public void setToExtension( String to ) - { - toExtension = to; - } - - /** - * Executes the task, i.e. does the actual compiler call - * - * @exception BuildException Description of Exception - */ - public void execute() - throws BuildException - { - - // first off, make sure that we've got a from and to extension - if( fromExtension == null || toExtension == null || srcDir == null ) - { - throw new BuildException( "srcDir, fromExtension and toExtension " + - "attributes must be set!" ); - } - - log( "DEPRECATED - The renameext task is deprecated. Use move instead.", - Project.MSG_WARN ); - log( "Replace this with:", Project.MSG_INFO ); - log( "", - Project.MSG_INFO ); - log( " ", Project.MSG_INFO ); - log( " ", Project.MSG_INFO ); - log( "", Project.MSG_INFO ); - log( "using the same patterns on as you\'ve used here", - Project.MSG_INFO ); - - Move move = ( Move )project.createTask( "move" ); - move.setOwningTarget( target ); - move.setTaskName( getTaskName() ); - move.setLocation( getLocation() ); - move.setTodir( srcDir ); - move.setOverwrite( replace ); - - fileset.setDir( srcDir ); - move.addFileset( fileset ); - - Mapper me = move.createMapper(); - me.setType( globType ); - me.setFrom( "*" + fromExtension ); - me.setTo( "*" + toExtension ); - - move.execute(); - } - -}