This patch removes the concept of currentTarget and currentTask from the BuildEvents code. To facilitate this I have moved logging to the task level which now passes a task pointer to the project's log method. Task level logging may also allow for more fine grained control of logging in the future. I have left the Project's log methods public to allow people's custom tasks to continue to work. In the future these can become private. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@267740 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -61,29 +61,52 @@ public class BuildEvent extends EventObject { | |||
| private Target target; | |||
| private Task task; | |||
| private String message; | |||
| private int priority; | |||
| private int priority = Project.MSG_VERBOSE; | |||
| private Throwable exception; | |||
| /** | |||
| * Constructs a new build event. Fields that are not relevant | |||
| * can be set to null, except for the project field which is | |||
| * required. | |||
| * Construct a BuildEvent for a project level event | |||
| * | |||
| * @param project the project that emitted the event. | |||
| */ | |||
| public BuildEvent( | |||
| Project project, | |||
| Target target, | |||
| Task task, | |||
| String message, | |||
| int priority, | |||
| Throwable exception) { | |||
| super(getSource(project, target, task)); | |||
| public BuildEvent(Project project) { | |||
| super(project); | |||
| this.project = project; | |||
| this.target = null; | |||
| this.task = null; | |||
| } | |||
| /** | |||
| * Construct a BuildEvent for a target level event | |||
| * | |||
| * @param target the target that emitted the event. | |||
| */ | |||
| public BuildEvent(Target target) { | |||
| super(target); | |||
| this.project = target.getProject(); | |||
| this.target = target; | |||
| this.task = null; | |||
| } | |||
| /** | |||
| * Construct a BuildEvent for a task level event | |||
| * | |||
| * @param task the task that emitted the event. | |||
| */ | |||
| public BuildEvent(Task task) { | |||
| super(task); | |||
| this.project = task.getProject(); | |||
| this.target = task.getTarget(); | |||
| this.task = task; | |||
| } | |||
| public void setMessage(String message, int priority) { | |||
| this.message = message; | |||
| this.priority = priority; | |||
| } | |||
| public void setException(Throwable exception) { | |||
| this.exception = exception; | |||
| } | |||
| @@ -98,6 +121,7 @@ public class BuildEvent extends EventObject { | |||
| * Returns the target that fired this event. | |||
| */ | |||
| public Target getTarget() { | |||
| return target; | |||
| } | |||
| @@ -139,15 +163,4 @@ public class BuildEvent extends EventObject { | |||
| public Throwable getException() { | |||
| return exception; | |||
| } | |||
| /** | |||
| * Returns the object that fired this event. | |||
| */ | |||
| private static Object getSource(Project project, Target target, Task task) { | |||
| if (task != null) return task; | |||
| if (target != null) return target; | |||
| if (project != null) return project; | |||
| throw new IllegalArgumentException("Project field cannot be null"); | |||
| } | |||
| } | |||
| @@ -104,8 +104,6 @@ public class Project { | |||
| private File baseDir; | |||
| private Vector listeners = new Vector(); | |||
| protected Target currentTarget = null; | |||
| protected Task currentTask = null; | |||
| public Project() { | |||
| } | |||
| @@ -170,11 +168,15 @@ public class Project { | |||
| } | |||
| public void log(String msg, int msgLevel) { | |||
| fireMessageLogged(msg, msgLevel); | |||
| fireMessageLogged(this, msg, msgLevel); | |||
| } | |||
| public void log(String msg, String tag, int msgLevel) { | |||
| fireMessageLogged(msg, msgLevel); | |||
| public void log(Task task, String msg, int msgLevel) { | |||
| fireMessageLogged(task, msg, msgLevel); | |||
| } | |||
| public void log(Target target, String msg, int msgLevel) { | |||
| fireMessageLogged(target, msg, msgLevel); | |||
| } | |||
| public void setProperty(String name, String value) { | |||
| @@ -708,20 +710,15 @@ public class Project { | |||
| public void runTarget(Target target) | |||
| throws BuildException { | |||
| currentTarget = target; | |||
| try { | |||
| fireTargetStarted(); | |||
| currentTarget.execute(); | |||
| fireTargetFinished(null); | |||
| fireTargetStarted(target); | |||
| target.execute(); | |||
| fireTargetFinished(target, null); | |||
| } | |||
| catch(RuntimeException exc) { | |||
| fireTargetFinished(exc); | |||
| fireTargetFinished(target, exc); | |||
| throw exc; | |||
| } | |||
| finally { | |||
| currentTarget = null; | |||
| } | |||
| } | |||
| /** | |||
| @@ -849,7 +846,7 @@ public class Project { | |||
| } | |||
| protected void fireBuildStarted() { | |||
| BuildEvent event = createBuildEvent(); | |||
| BuildEvent event = new BuildEvent(this); | |||
| for (int i = 0; i < listeners.size(); i++) { | |||
| BuildListener listener = (BuildListener) listeners.elementAt(i); | |||
| listener.buildStarted(event); | |||
| @@ -857,62 +854,67 @@ public class Project { | |||
| } | |||
| protected void fireBuildFinished(Throwable exception) { | |||
| BuildEvent event = createBuildEvent(exception); | |||
| BuildEvent event = new BuildEvent(this); | |||
| event.setException(exception); | |||
| for (int i = 0; i < listeners.size(); i++) { | |||
| BuildListener listener = (BuildListener) listeners.elementAt(i); | |||
| listener.buildFinished(event); | |||
| } | |||
| } | |||
| protected void fireTargetStarted() { | |||
| BuildEvent event = createBuildEvent(); | |||
| protected void fireTargetStarted(Target target) { | |||
| BuildEvent event = new BuildEvent(target); | |||
| for (int i = 0; i < listeners.size(); i++) { | |||
| BuildListener listener = (BuildListener) listeners.elementAt(i); | |||
| listener.targetStarted(event); | |||
| } | |||
| } | |||
| protected void fireTargetFinished(Throwable exception) { | |||
| BuildEvent event = createBuildEvent(exception); | |||
| protected void fireTargetFinished(Target target, Throwable exception) { | |||
| BuildEvent event = new BuildEvent(target); | |||
| event.setException(exception); | |||
| for (int i = 0; i < listeners.size(); i++) { | |||
| BuildListener listener = (BuildListener) listeners.elementAt(i); | |||
| listener.targetFinished(event); | |||
| } | |||
| } | |||
| protected void fireTaskStarted() { | |||
| BuildEvent event = createBuildEvent(); | |||
| protected void fireTaskStarted(Task task) { | |||
| BuildEvent event = new BuildEvent(task); | |||
| for (int i = 0; i < listeners.size(); i++) { | |||
| BuildListener listener = (BuildListener) listeners.elementAt(i); | |||
| listener.taskStarted(event); | |||
| } | |||
| } | |||
| protected void fireTaskFinished(Throwable exception) { | |||
| BuildEvent event = createBuildEvent(exception); | |||
| protected void fireTaskFinished(Task task, Throwable exception) { | |||
| BuildEvent event = new BuildEvent(task); | |||
| for (int i = 0; i < listeners.size(); i++) { | |||
| BuildListener listener = (BuildListener) listeners.elementAt(i); | |||
| listener.taskFinished(event); | |||
| } | |||
| } | |||
| protected void fireMessageLogged(String message, int priority) { | |||
| BuildEvent event = createBuildEvent(message, priority); | |||
| private void fireMessageLoggedEvent(BuildEvent event, String message, int priority) { | |||
| event.setMessage(message, priority); | |||
| for (int i = 0; i < listeners.size(); i++) { | |||
| BuildListener listener = (BuildListener) listeners.elementAt(i); | |||
| listener.messageLogged(event); | |||
| } | |||
| } | |||
| public BuildEvent createBuildEvent() { | |||
| return new BuildEvent(this, currentTarget, currentTask, null, MSG_VERBOSE, null); | |||
| protected void fireMessageLogged(Project project, String message, int priority) { | |||
| BuildEvent event = new BuildEvent(project); | |||
| fireMessageLoggedEvent(event, message, priority); | |||
| } | |||
| public BuildEvent createBuildEvent(String msg, int priority) { | |||
| return new BuildEvent(this, currentTarget, currentTask, msg, priority, null); | |||
| protected void fireMessageLogged(Target target, String message, int priority) { | |||
| BuildEvent event = new BuildEvent(target); | |||
| fireMessageLoggedEvent(event, message, priority); | |||
| } | |||
| public BuildEvent createBuildEvent(Throwable exception) { | |||
| return new BuildEvent(this, currentTarget, currentTask, null, MSG_VERBOSE, exception); | |||
| protected void fireMessageLogged(Task task, String message, int priority) { | |||
| BuildEvent event = new BuildEvent(task); | |||
| fireMessageLoggedEvent(event, message, priority); | |||
| } | |||
| } | |||
| @@ -327,11 +327,9 @@ public class ProjectHelper { | |||
| public void init(String tag, AttributeList attrs) throws SAXParseException { | |||
| task = project.createTask(tag); | |||
| project.currentTask = task; | |||
| configure(task, attrs); | |||
| task.setLocation(new Location(buildFile.toString(), locator.getLineNumber(), locator.getColumnNumber())); | |||
| task.init(); | |||
| project.currentTask = null; | |||
| // Top level tasks don't have associated targets | |||
| if (target != null) { | |||
| @@ -123,24 +123,20 @@ public class Target { | |||
| Task task = (Task) enum.nextElement(); | |||
| try { | |||
| project.currentTask = task; | |||
| project.fireTaskStarted(); | |||
| project.fireTaskStarted(task); | |||
| task.execute(); | |||
| project.fireTaskFinished(null); | |||
| project.fireTaskFinished(task, null); | |||
| } | |||
| catch(RuntimeException exc) { | |||
| if (exc instanceof BuildException) { | |||
| ((BuildException)exc).setLocation(task.getLocation()); | |||
| } | |||
| project.fireTaskFinished(exc); | |||
| project.fireTaskFinished(task, exc); | |||
| throw exc; | |||
| } | |||
| finally { | |||
| project.currentTask = null; | |||
| } | |||
| } | |||
| } else { | |||
| project.log("Skipped because property '" + this.condition + "' not set.", this.name, Project.MSG_VERBOSE); | |||
| project.log(this, "Skipped because property '" + this.condition + "' not set.", Project.MSG_VERBOSE); | |||
| } | |||
| } | |||
| } | |||
| @@ -77,6 +77,15 @@ public abstract class Task { | |||
| this.project = project; | |||
| } | |||
| /** | |||
| * Get the Project to which this task belongs | |||
| * | |||
| * @param the task's project. | |||
| */ | |||
| public Project getProject() { | |||
| return project; | |||
| } | |||
| /** | |||
| * Sets the target object of this task. | |||
| * | |||
| @@ -86,6 +95,35 @@ public abstract class Task { | |||
| this.target = target; | |||
| } | |||
| /** | |||
| * Get the Target to which this task belongs | |||
| * | |||
| * @param the task's target. | |||
| */ | |||
| public Target getTarget() { | |||
| return target; | |||
| } | |||
| /** | |||
| * Log a message with the default (INFO) priority. | |||
| * | |||
| * @param the message to be logged. | |||
| */ | |||
| public void log(String msg) { | |||
| log(msg, Project.MSG_INFO); | |||
| } | |||
| /** | |||
| * Log a mesage with the give priority. | |||
| * | |||
| * @param the message to be logged. | |||
| * @param msgLevel the message priority at which this message is to be logged. | |||
| */ | |||
| public void log(String msg, int msgLevel) { | |||
| project.log(this, msg, msgLevel); | |||
| } | |||
| /** Sets a description of the current action. It will be usefull in commenting | |||
| * what we are doing. | |||
| */ | |||
| @@ -76,13 +76,13 @@ public class TaskAdapter extends Task { | |||
| Class c=proxy.getClass(); | |||
| executeM=c.getMethod( "execute", new Class[0] ); | |||
| if( executeM == null ) { | |||
| project.log("No execute in " + proxy.getClass(), "TaskAdapter", project.MSG_ERR); | |||
| log("No execute in " + proxy.getClass(), Project.MSG_ERR); | |||
| throw new BuildException("No execute in " + proxy.getClass()); | |||
| } | |||
| executeM.invoke(proxy, null); | |||
| return; | |||
| } catch( Exception ex ) { | |||
| project.log("Error in " + proxy.getClass(), "TaskAdapter", project.MSG_ERR); | |||
| log("Error in " + proxy.getClass(), Project.MSG_ERR); | |||
| throw new BuildException( ex ); | |||
| } | |||
| @@ -100,7 +100,7 @@ public class Ant extends Task { | |||
| p1.addBuildListener(new DefaultLogger(out, Project.MSG_INFO)); | |||
| } | |||
| catch( IOException ex ) { | |||
| project.log( "Ant: Can't set output to " + output ); | |||
| log( "Ant: Can't set output to " + output ); | |||
| } | |||
| } | |||
| @@ -76,9 +76,9 @@ public class Available extends Task { | |||
| } | |||
| public void setClass(String classname) { | |||
| project.log("The class attribute is deprecated. " + | |||
| "Please use the classname attribute.", | |||
| Project.MSG_WARN); | |||
| log("The class attribute is deprecated. " + | |||
| "Please use the classname attribute.", | |||
| Project.MSG_WARN); | |||
| this.classname = classname; | |||
| } | |||
| @@ -107,7 +107,7 @@ public class Available extends Task { | |||
| File f = new File(file); | |||
| return f.exists(); | |||
| } catch (Exception e) { | |||
| project.log(e.toString(), "available", Project.MSG_VERBOSE); | |||
| log(e.toString(), Project.MSG_VERBOSE); | |||
| return false; | |||
| } | |||
| } | |||
| @@ -121,7 +121,7 @@ public class Available extends Task { | |||
| Class.forName(classname); | |||
| return true; | |||
| } catch (Throwable t) { | |||
| project.log(t.toString(), "available", Project.MSG_VERBOSE); | |||
| log(t.toString(), Project.MSG_VERBOSE); | |||
| return false; | |||
| } | |||
| } | |||
| @@ -81,9 +81,9 @@ public class Chmod extends MatchingTask { | |||
| } | |||
| public void setSrc(String src) { | |||
| project.log("The src attribute is deprecated. " + | |||
| "Please use the file attribute.", | |||
| Project.MSG_WARN); | |||
| log("The src attribute is deprecated. " + | |||
| "Please use the file attribute.", | |||
| Project.MSG_WARN); | |||
| setFile(src); | |||
| } | |||
| @@ -100,7 +100,7 @@ public class Chmod extends MatchingTask { | |||
| if (srcFile != null && srcDir == null) { | |||
| chmod(srcFile.toString()); | |||
| } else if(srcFile == null && srcDir == null) { | |||
| project.log("The attribute 'file' or 'dir' needs to be set.", Project.MSG_WARN); | |||
| log("The attribute 'file' or 'dir' needs to be set.", Project.MSG_WARN); | |||
| throw new BuildException("Required attribute not set in Chmod", location); | |||
| } else if(srcFile == null && srcDir != null) { | |||
| @@ -114,7 +114,7 @@ public class Chmod extends MatchingTask { | |||
| } | |||
| } catch (IOException ioe) { | |||
| // ignore, but warn | |||
| project.log("Error in Chmod " + ioe.toString() , Project.MSG_WARN); | |||
| log("Error in Chmod " + ioe.toString() , Project.MSG_WARN); | |||
| } | |||
| } | |||
| @@ -105,8 +105,8 @@ public class Copydir extends MatchingTask { | |||
| String[] files = ds.getIncludedFiles(); | |||
| scanDir(srcDir, destDir, files); | |||
| if (filecopyList.size() > 0) { | |||
| project.log("Copying " + filecopyList.size() + " files to " | |||
| + destDir.getAbsolutePath()); | |||
| log("Copying " + filecopyList.size() + " files to " | |||
| + destDir.getAbsolutePath()); | |||
| Enumeration enum = filecopyList.keys(); | |||
| while (enum.hasMoreElements()) { | |||
| String fromFile = (String) enum.nextElement(); | |||
| @@ -1,37 +1,37 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * | |||
| * Copyright (c) 1999 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| @@ -45,7 +45,7 @@ | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| @@ -54,105 +54,103 @@ | |||
| package org.apache.tools.ant.taskdefs; | |||
| import org.apache.tools.ant.*; | |||
| import java.io.*; | |||
| /** | |||
| * Deletes a single file or a set of files defined by a pattern. | |||
| * | |||
| * | |||
| * @author stefano@apache.org | |||
| * @author Tom Dimock <a href="mailto:tad1@cornell.edu">tad1@cornell.edu</a> | |||
| */ | |||
| public class Delete extends MatchingTask { | |||
| private File delDir = null; | |||
| private int verbosity = Project.MSG_VERBOSE; | |||
| private File f = null; | |||
| /** | |||
| * Set the name of a single file to be removed. | |||
| * | |||
| * @param file the file to be deleted | |||
| */ | |||
| public void setFile(String file) { | |||
| f = project.resolveFile(file); | |||
| } | |||
| /** | |||
| * Set the directory from which files are to be deleted | |||
| * | |||
| * @param dir the directory path. | |||
| */ | |||
| public void setDir(String dir) { | |||
| delDir = project.resolveFile(dir); | |||
| } | |||
| /** | |||
| * Used to force listing of all names of deleted files. | |||
| * | |||
| * @param verbose "true" or "on" | |||
| */ | |||
| public void setVerbose(String verbose) { | |||
| if ("true".equalsIgnoreCase(verbose.trim()) || "on".equalsIgnoreCase(verbose.trim())) { | |||
| this.verbosity = Project.MSG_INFO; | |||
| } else { | |||
| this.verbosity = Project.MSG_VERBOSE; | |||
| } | |||
| } | |||
| /** | |||
| * Make it so. Delete the file(s). | |||
| * | |||
| * @throws BuildException | |||
| */ | |||
| public void execute() throws BuildException { | |||
| if (f == null && delDir == null) { | |||
| throw new BuildException("<file> or <dir> attribute must be set!"); | |||
| } | |||
| // old <delete> functionality must still work | |||
| if (f != null) { | |||
| if (f.exists()) { | |||
| if (f.isDirectory()) { | |||
| log("Directory: " + f.getAbsolutePath() + " cannot be removed with delete. Use Deltree instead."); | |||
| } else { | |||
| log("Deleting: " + f.getAbsolutePath()); | |||
| if (!f.delete()) { | |||
| throw new BuildException("Unable to delete file " + f.getAbsolutePath()); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| // now we'll do the fancy pattern-driven deletes | |||
| if (delDir == null) { | |||
| return; | |||
| } | |||
| if (!delDir.exists()) { | |||
| throw new BuildException("dir does not exist!"); | |||
| } | |||
| DirectoryScanner ds = super.getDirectoryScanner(delDir); | |||
| String[] files = ds.getIncludedFiles(); | |||
| if (files.length > 0) { | |||
| log("Deleting " + files.length + " files from " + delDir.getAbsolutePath()); | |||
| for (int i = 0; i < files.length; i++) { | |||
| File f = new File(delDir, files[i]); | |||
| if (f.exists()) { | |||
| log("Deleting: " + f.getAbsolutePath(), verbosity); | |||
| if (!f.delete()) { | |||
| throw new BuildException("Unable to delete " + f.getAbsolutePath()); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| private File delDir = null; | |||
| private int verbosity = project.MSG_VERBOSE; | |||
| private File f = null; | |||
| /** | |||
| * Set the name of a single file to be removed. | |||
| * | |||
| * @param file the file to be deleted | |||
| */ | |||
| public void setFile(String file) { | |||
| f = project.resolveFile(file); | |||
| } | |||
| /** | |||
| * Set the directory from which files are to be deleted | |||
| * | |||
| * @param dir the directory path. | |||
| */ | |||
| public void setDir(String dir) { | |||
| delDir = project.resolveFile(dir); | |||
| } | |||
| /** | |||
| * Used to force listing of all names of deleted files. | |||
| * | |||
| * @param verbose "true" or "on" | |||
| */ | |||
| public void setVerbose(String verbose) { | |||
| if ("true".equalsIgnoreCase(verbose.trim()) || "on".equalsIgnoreCase(verbose.trim())) { | |||
| this.verbosity = project.MSG_INFO; | |||
| } | |||
| else { | |||
| this.verbosity = project.MSG_VERBOSE; | |||
| } | |||
| } | |||
| /** | |||
| * Make it so. Delete the file(s). | |||
| * | |||
| * @throws BuildException | |||
| */ | |||
| public void execute() throws BuildException { | |||
| if (f == null && delDir == null) { | |||
| throw new BuildException("<file> or <dir> attribute must be set!"); | |||
| } | |||
| // old <delete> functionality must still work | |||
| if (f != null) { | |||
| if (f.exists()) { | |||
| if (f.isDirectory()) { | |||
| project | |||
| .log("Directory: " + f.getAbsolutePath() | |||
| + " cannot be removed with delete. Use Deltree instead."); | |||
| } | |||
| else { | |||
| project.log("Deleting: " + f.getAbsolutePath()); | |||
| if (!f.delete()) { | |||
| throw new BuildException("Unable to delete file " + f.getAbsolutePath()); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| // now we'll do the fancy pattern-driven deletes | |||
| if (delDir == null) { | |||
| return; | |||
| } | |||
| if (!delDir.exists()) { | |||
| throw new BuildException("dir does not exist!"); | |||
| } | |||
| DirectoryScanner ds = super.getDirectoryScanner(delDir); | |||
| String[] files = ds.getIncludedFiles(); | |||
| if (files.length > 0) { | |||
| project.log("Deleting " + files.length + " files from " + delDir.getAbsolutePath()); | |||
| for (int i = 0; i < files.length; i++) { | |||
| File f = new File(delDir, files[i]); | |||
| if (f.exists()) { | |||
| project.log("Deleting: " + f.getAbsolutePath(), verbosity); | |||
| if (!f.delete()) { | |||
| throw new BuildException("Unable to delete " + f.getAbsolutePath()); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -72,7 +72,7 @@ public class Deltree extends Task { | |||
| } | |||
| public void execute() throws BuildException { | |||
| project.log("Deleting: " + dir.getAbsolutePath()); | |||
| log("Deleting: " + dir.getAbsolutePath()); | |||
| if (dir.exists()) { | |||
| if (!dir.isDirectory()) { | |||
| @@ -83,10 +83,10 @@ public class Exec extends Task { | |||
| // test if os match | |||
| String myos = System.getProperty("os.name"); | |||
| project.log("Myos = " + myos, Project.MSG_VERBOSE); | |||
| log("Myos = " + myos, Project.MSG_VERBOSE); | |||
| if ((os != null) && (os.indexOf(myos) < 0)){ | |||
| // this command will be executed only on the specified OS | |||
| project.log("Not found in " + os, Project.MSG_VERBOSE); | |||
| log("Not found in " + os, Project.MSG_VERBOSE); | |||
| return 0; | |||
| } | |||
| @@ -106,14 +106,14 @@ public class Exec extends Task { | |||
| try { | |||
| // show the command | |||
| project.log(command, "exec", Project.MSG_VERBOSE); | |||
| 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 ) ); | |||
| project.log("Output redirected to " + out, Project.MSG_VERBOSE); | |||
| log("Output redirected to " + out, Project.MSG_VERBOSE); | |||
| } | |||
| // copy input and error to the output stream | |||
| @@ -138,7 +138,7 @@ public class Exec extends Task { | |||
| // check its exit value | |||
| err = proc.exitValue(); | |||
| if (err != 0) { | |||
| project.log("Result: " + err, "exec", Project.MSG_ERR); | |||
| log("Result: " + err, Project.MSG_ERR); | |||
| } | |||
| } catch (IOException ioe) { | |||
| throw new BuildException("Error exec: " + command, ioe, location); | |||
| @@ -165,7 +165,7 @@ public class Exec extends Task { | |||
| protected void outputLog(String line, int messageLevel) { | |||
| if (fos == null) { | |||
| project.log(line, messageLevel); | |||
| log(line, messageLevel); | |||
| } else { | |||
| fos.println(line); | |||
| } | |||
| @@ -81,7 +81,7 @@ public class Expand extends Task { | |||
| File srcF=project.resolveFile(source); | |||
| File dir=project.resolveFile(dest); | |||
| project.log("Expanding: " + srcF + " into " + dir, Project.MSG_INFO); | |||
| log("Expanding: " + srcF + " into " + dir, Project.MSG_INFO); | |||
| // code from WarExpand | |||
| ZipInputStream zis = new ZipInputStream(new FileInputStream(srcF)); | |||
| ZipEntry ze = null; | |||
| @@ -89,7 +89,7 @@ public class Expand extends Task { | |||
| while ((ze = zis.getNextEntry()) != null) { | |||
| try { | |||
| File f = new File(dir, project.translatePath(ze.getName())); | |||
| project.log("expand-file " + ze.getName() , "expand", Project.MSG_VERBOSE ); | |||
| log("expand-file " + ze.getName() , Project.MSG_VERBOSE ); | |||
| // create intermediary directories - sometimes zip don't add them | |||
| File dirF=new File(f.getParent()); | |||
| dirF.mkdirs(); | |||
| @@ -118,7 +118,7 @@ public class Expand extends Task { | |||
| System.out.println("FileNotFoundException: " + ze.getName() ); | |||
| } | |||
| } | |||
| project.log("</log:expand>", Project.MSG_VERBOSE ); | |||
| log("</log:expand>", Project.MSG_VERBOSE ); | |||
| } catch (IOException ioe) { | |||
| ioe.printStackTrace(); | |||
| } | |||
| @@ -223,11 +223,11 @@ public class FixCRLF extends MatchingTask { | |||
| } | |||
| // log options used | |||
| project.log("options:" + | |||
| log("options:" + | |||
| " cr=" + (addcr==-1 ? "add" : addcr==0 ? "asis" : "remove") + | |||
| " tab=" + (addtab==-1 ? "add" : addtab==0 ? "asis" : "remove") + | |||
| " eof=" + (ctrlz==-1 ? "add" : ctrlz==0 ? "asis" : "remove"), | |||
| "fixcrlf", project.MSG_VERBOSE); | |||
| Project.MSG_VERBOSE); | |||
| DirectoryScanner ds = super.getDirectoryScanner(srcDir); | |||
| String[] files = ds.getIncludedFiles(); | |||
| @@ -262,9 +262,9 @@ public class FixCRLF extends MatchingTask { | |||
| boolean eof = ((count>0) && (indata[count-1] == 0x1A)); | |||
| // log stats (before fixes) | |||
| project.log(srcFile + ": size=" + count + " cr=" + cr + | |||
| log(srcFile + ": size=" + count + " cr=" + cr + | |||
| " lf=" + lf + " tab=" + tab + " eof=" + eof, | |||
| "fixcrlf", project.MSG_VERBOSE); | |||
| Project.MSG_VERBOSE); | |||
| // determine the output buffer size (slightly pessimisticly) | |||
| int outsize = count; | |||
| @@ -109,7 +109,7 @@ public class GUnzip extends Task { | |||
| } | |||
| if (source.lastModified() > dest.lastModified()) { | |||
| project.log("Expanding "+ source.getAbsolutePath() + " to " | |||
| log("Expanding "+ source.getAbsolutePath() + " to " | |||
| + dest.getAbsolutePath()); | |||
| try { | |||
| @@ -81,13 +81,13 @@ public class GZip extends Task { | |||
| } | |||
| public void execute() throws BuildException { | |||
| project.log("Building gzip: " + zipFile.getAbsolutePath()); | |||
| log("Building gzip: " + zipFile.getAbsolutePath()); | |||
| try { | |||
| GZIPOutputStream zOut = new GZIPOutputStream(new FileOutputStream(zipFile)); | |||
| if (source.isDirectory()) { | |||
| project.log ("Cannot Gzip a directory!"); | |||
| log ("Cannot Gzip a directory!"); | |||
| } else { | |||
| zipFile(source, zOut); | |||
| } | |||
| @@ -82,7 +82,7 @@ public class Get extends Task { | |||
| throw new BuildException(e.toString()); | |||
| } | |||
| project.log("Getting: " + source); | |||
| log("Getting: " + source); | |||
| File destF=new File(dest); | |||
| FileOutputStream fos = new FileOutputStream(destF); | |||
| @@ -93,11 +93,11 @@ public class Get extends Task { | |||
| is = url.openStream(); | |||
| break; | |||
| } catch( IOException ex ) { | |||
| project.log( "Error opening connection " + ex ); | |||
| log( "Error opening connection " + ex ); | |||
| } | |||
| } | |||
| if( is==null ) { | |||
| project.log( "Can't get " + source + " to " + dest); | |||
| log( "Can't get " + source + " to " + dest); | |||
| if( ignoreErrors != null ) return; | |||
| throw new BuildException( "Can't get " + source + " to " + dest); | |||
| } | |||
| @@ -113,7 +113,7 @@ public class Get extends Task { | |||
| fos.close(); | |||
| is.close(); | |||
| } catch (IOException ioe) { | |||
| project.log("Error getting " + source + " to " + dest ); | |||
| log("Error getting " + source + " to " + dest ); | |||
| if( ignoreErrors != null ) return; | |||
| throw new BuildException(ioe.toString()); | |||
| } | |||
| @@ -86,7 +86,7 @@ public class Java extends Exec { | |||
| * a separate VM (fork = "yes"). | |||
| */ | |||
| public int executeJava() throws BuildException { | |||
| project.log("Calling " + classname, "java", project.MSG_VERBOSE); | |||
| log("Calling " + classname, Project.MSG_VERBOSE); | |||
| if (classname == null) { | |||
| throw new BuildException("Classname must not be null."); | |||
| @@ -113,8 +113,11 @@ public class Java extends Exec { | |||
| return run(b.toString()); | |||
| } else { | |||
| Vector argList = tokenize(args); | |||
| if (jvmargs != null) project.log("JVM args and classpath ignored when same JVM is used.", "java", project.MSG_VERBOSE); | |||
| project.log("Java args: " + argList.toString(), "java", project.MSG_VERBOSE); | |||
| if (jvmargs != null) { | |||
| log("JVM args and classpath ignored when same JVM is used.", Project.MSG_VERBOSE); | |||
| } | |||
| log("Java args: " + argList.toString(), Project.MSG_VERBOSE); | |||
| run(classname, argList); | |||
| return 0; | |||
| } | |||
| @@ -131,9 +134,9 @@ public class Java extends Exec { | |||
| * Set the source file (deprecated). | |||
| */ | |||
| public void setClass(String s) { | |||
| project.log("The class attribute is deprecated. " + | |||
| "Please use the classname attribute.", | |||
| Project.MSG_WARN); | |||
| log("The class attribute is deprecated. " + | |||
| "Please use the classname attribute.", | |||
| Project.MSG_WARN); | |||
| this.classname = s; | |||
| } | |||
| @@ -284,8 +284,8 @@ public class Javac extends MatchingTask { | |||
| } | |||
| if (compileList.size() > 0) { | |||
| project.log("Compiling " + compileList.size() + | |||
| " source files to " + destDir); | |||
| log("Compiling " + compileList.size() + | |||
| " source files to " + destDir); | |||
| if (compiler.equalsIgnoreCase("classic")) { | |||
| doClassicCompile(); | |||
| @@ -302,12 +302,12 @@ public class Javac extends MatchingTask { | |||
| // copy the support files | |||
| if (filecopyList.size() > 0) { | |||
| project.log("The implicit copying of support files by javac has been deprecated. " + | |||
| "Use the copydir task to copy support files explicitly.", | |||
| Project.MSG_WARN); | |||
| log("The implicit copying of support files by javac has been deprecated. " + | |||
| "Use the copydir task to copy support files explicitly.", | |||
| Project.MSG_WARN); | |||
| project.log("Copying " + filecopyList.size() + | |||
| " support files to " + destDir.getAbsolutePath()); | |||
| log("Copying " + filecopyList.size() + | |||
| " support files to " + destDir.getAbsolutePath()); | |||
| Enumeration enum = filecopyList.keys(); | |||
| while (enum.hasMoreElements()) { | |||
| String fromFile = (String) enum.nextElement(); | |||
| @@ -348,8 +348,8 @@ public class Javac extends MatchingTask { | |||
| files[i].indexOf(".java")) + ".class"); | |||
| if (srcFile.lastModified() > now) { | |||
| project.log("Warning: file modified in the future: " + | |||
| files[i], project.MSG_WARN); | |||
| log("Warning: file modified in the future: " + | |||
| files[i], Project.MSG_WARN); | |||
| } | |||
| if (srcFile.lastModified() > classFile.lastModified()) { | |||
| @@ -435,8 +435,8 @@ public class Javac extends MatchingTask { | |||
| target.append(File.pathSeparator); | |||
| target.append(f.getAbsolutePath()); | |||
| } else { | |||
| project.log("Dropping from classpath: "+ | |||
| f.getAbsolutePath(),project.MSG_VERBOSE); | |||
| log("Dropping from classpath: "+ | |||
| f.getAbsolutePath(), Project.MSG_VERBOSE); | |||
| } | |||
| } | |||
| @@ -467,7 +467,7 @@ public class Javac extends MatchingTask { | |||
| */ | |||
| private void doClassicCompile() throws BuildException { | |||
| project.log("Using classic compiler", project.MSG_VERBOSE); | |||
| log("Using classic compiler", Project.MSG_VERBOSE); | |||
| String classpath = getCompileClasspath(false); | |||
| Vector argList = new Vector(); | |||
| @@ -505,8 +505,8 @@ public class Javac extends MatchingTask { | |||
| argList.addElement(extdirs); | |||
| } | |||
| project.log("Compilation args: " + argList.toString(), | |||
| project.MSG_VERBOSE); | |||
| log("Compilation args: " + argList.toString(), | |||
| Project.MSG_VERBOSE); | |||
| String[] args = new String[argList.size() + compileList.size()]; | |||
| int counter = 0; | |||
| @@ -529,14 +529,14 @@ public class Javac extends MatchingTask { | |||
| counter++; | |||
| } | |||
| project.log(niceSourceList.toString(), project.MSG_VERBOSE); | |||
| log(niceSourceList.toString(), Project.MSG_VERBOSE); | |||
| // XXX | |||
| // provide the compiler a different message sink - namely our own | |||
| ByteArrayOutputStream out = new ByteArrayOutputStream(); | |||
| sun.tools.javac.Main compiler = | |||
| new sun.tools.javac.Main(new TaskOutputStream(project, Project.MSG_WARN), "javac"); | |||
| new sun.tools.javac.Main(new TaskOutputStream(this, Project.MSG_WARN), "javac"); | |||
| if (!compiler.compile(args)) { | |||
| throw new BuildException("Compile failed"); | |||
| @@ -548,7 +548,7 @@ public class Javac extends MatchingTask { | |||
| */ | |||
| private void doModernCompile() throws BuildException { | |||
| project.log("Using modern compiler", project.MSG_VERBOSE); | |||
| log("Using modern compiler", Project.MSG_VERBOSE); | |||
| String classpath = getCompileClasspath(false); | |||
| Vector argList = new Vector(); | |||
| @@ -580,8 +580,8 @@ public class Javac extends MatchingTask { | |||
| argList.addElement(extdirs); | |||
| } | |||
| project.log("Compilation args: " + argList.toString(), | |||
| project.MSG_VERBOSE); | |||
| log("Compilation args: " + argList.toString(), | |||
| Project.MSG_VERBOSE); | |||
| String[] args = new String[argList.size() + compileList.size()]; | |||
| int counter = 0; | |||
| @@ -604,7 +604,7 @@ public class Javac extends MatchingTask { | |||
| counter++; | |||
| } | |||
| project.log(niceSourceList.toString(), project.MSG_VERBOSE); | |||
| log(niceSourceList.toString(), Project.MSG_VERBOSE); | |||
| // This won't build under JDK1.2.2 because the new compiler | |||
| // doesn't exist there. | |||
| @@ -643,7 +643,7 @@ public class Javac extends MatchingTask { | |||
| */ | |||
| private void doJikesCompile() throws BuildException { | |||
| project.log("Using jikes compiler",project.MSG_VERBOSE); | |||
| log("Using jikes compiler", Project.MSG_VERBOSE); | |||
| StringBuffer classpath = new StringBuffer(); | |||
| classpath.append(getCompileClasspath(true)); | |||
| @@ -721,8 +721,8 @@ public class Javac extends MatchingTask { | |||
| if (!warnings) | |||
| argList.addElement("-nowarn"); | |||
| project.log("Compilation args: " + argList.toString(), | |||
| project.MSG_VERBOSE); | |||
| log("Compilation args: " + argList.toString(), | |||
| Project.MSG_VERBOSE); | |||
| String[] args = new String[argList.size() + compileList.size()]; | |||
| int counter = 0; | |||
| @@ -745,12 +745,12 @@ public class Javac extends MatchingTask { | |||
| counter++; | |||
| } | |||
| project.log(niceSourceList.toString(), project.MSG_VERBOSE); | |||
| log(niceSourceList.toString(), Project.MSG_VERBOSE); | |||
| // XXX | |||
| // provide the compiler a different message sink - namely our own | |||
| JikesOutputParser jop = new JikesOutputParser(project,emacsMode); | |||
| JikesOutputParser jop = new JikesOutputParser(this, emacsMode); | |||
| Jikes compiler = new Jikes(jop,"jikes"); | |||
| compiler.compile(args); | |||
| @@ -60,7 +60,7 @@ import java.io.*; | |||
| /** | |||
| * Serves as an output stream to Javac. This let's us print messages | |||
| * out to the project and detect whether or not Javac had an error | |||
| * out to the log and detect whether or not Javac had an error | |||
| * while compiling. | |||
| * | |||
| * @author James Duncan Davidson (duncan@x180.com) | |||
| @@ -68,17 +68,17 @@ import java.io.*; | |||
| class JavacOutputStream extends OutputStream { | |||
| private Project project; | |||
| private Task task; | |||
| private StringBuffer line; | |||
| private boolean errorFlag = false; | |||
| /** | |||
| * Constructs a new JavacOutputStream with the given project | |||
| * Constructs a new JavacOutputStream with the given task | |||
| * as the output source for messages. | |||
| */ | |||
| JavacOutputStream(Project project) { | |||
| this.project = project; | |||
| JavacOutputStream(Task task) { | |||
| this.task = task; | |||
| line = new StringBuffer(); | |||
| } | |||
| @@ -109,7 +109,7 @@ class JavacOutputStream extends OutputStream { | |||
| if (s.indexOf("error") > -1) { | |||
| errorFlag = true; | |||
| } | |||
| project.log(s); | |||
| task.log(s); | |||
| line = new StringBuffer(); | |||
| } | |||
| @@ -329,7 +329,7 @@ public class Javadoc extends Exec { | |||
| boolean javadoc1 = (Project.getJavaVersion() == Project.JAVA_1_1); | |||
| project.log("Generating Javadoc", project.MSG_INFO); | |||
| log("Generating Javadoc", Project.MSG_INFO); | |||
| Vector argList = new Vector(); | |||
| @@ -577,9 +577,9 @@ public class Javadoc extends Exec { | |||
| if (packageList != null) { | |||
| argList.addElement("@" + packageList); | |||
| } | |||
| project.log("Javadoc args: " + argList.toString(), "javadoc", project.MSG_VERBOSE); | |||
| log("Javadoc args: " + argList.toString(), Project.MSG_VERBOSE); | |||
| project.log("Javadoc execution", project.MSG_INFO); | |||
| log("Javadoc execution", Project.MSG_INFO); | |||
| StringBuffer b = new StringBuffer(); | |||
| b.append("javadoc "); | |||
| @@ -606,9 +606,9 @@ public class Javadoc extends Exec { | |||
| * patterns. | |||
| */ | |||
| private void evaluatePackages(String sourcePath, Vector packages, Vector argList) { | |||
| project.log("Parsing source files for packages", project.MSG_INFO); | |||
| project.log("Source path = " + sourcePath, project.MSG_VERBOSE); | |||
| project.log("Packages = " + packages, project.MSG_VERBOSE); | |||
| log("Parsing source files for packages", Project.MSG_INFO); | |||
| log("Source path = " + sourcePath, Project.MSG_VERBOSE); | |||
| log("Packages = " + packages, Project.MSG_VERBOSE); | |||
| Vector addedPackages = new Vector(); | |||
| PathTokenizer tokenizer = new PathTokenizer(sourcePath); | |||
| @@ -687,7 +687,7 @@ public class Javadoc extends Exec { | |||
| } | |||
| } | |||
| if (count > 0) { | |||
| project.log("found " + count + " source files in " + path, "javadoc", project.MSG_VERBOSE); | |||
| log("found " + count + " source files in " + path, Project.MSG_VERBOSE); | |||
| } | |||
| } else { | |||
| throw new BuildException("Error occurred during " + path + " evaluation."); | |||
| @@ -708,7 +708,7 @@ public class Javadoc extends Exec { | |||
| while (true) { | |||
| line = reader.readLine(); | |||
| if (line == null) { | |||
| project.log("Could not evaluate package for " + file, "javadoc", project.MSG_WARN); | |||
| log("Could not evaluate package for " + file, Project.MSG_WARN); | |||
| return null; | |||
| } | |||
| if (line.trim().startsWith("package ")) { | |||
| @@ -718,11 +718,11 @@ public class Javadoc extends Exec { | |||
| } | |||
| reader.close(); | |||
| } catch (Exception e) { | |||
| project.log("Exception " + e + " parsing " + file, "javadoc", project.MSG_WARN); | |||
| log("Exception " + e + " parsing " + file, Project.MSG_WARN); | |||
| return null; | |||
| } | |||
| project.log(file + " --> " + name, "javadoc", project.MSG_VERBOSE); | |||
| log(file + " --> " + name, Project.MSG_VERBOSE); | |||
| return name; | |||
| } | |||
| @@ -736,15 +736,15 @@ public class Javadoc extends Exec { | |||
| protected void outputLog(String line, int messageLevel) { | |||
| if (messageLevel==project.MSG_INFO && line.startsWith("Generating ")) { | |||
| if (queuedLine != null) { | |||
| super.outputLog(queuedLine, project.MSG_VERBOSE); | |||
| super.outputLog(queuedLine, Project.MSG_VERBOSE); | |||
| } | |||
| queuedLine = line; | |||
| } else { | |||
| if (queuedLine != null) { | |||
| if (line.startsWith("Building ")) | |||
| super.outputLog(queuedLine, project.MSG_VERBOSE); | |||
| super.outputLog(queuedLine, Project.MSG_VERBOSE); | |||
| else | |||
| super.outputLog(queuedLine, project.MSG_INFO); | |||
| super.outputLog(queuedLine, Project.MSG_INFO); | |||
| queuedLine = null; | |||
| } | |||
| super.outputLog(line, messageLevel); | |||
| @@ -753,7 +753,7 @@ public class Javadoc extends Exec { | |||
| protected void logFlush() { | |||
| if (queuedLine != null) { | |||
| super.outputLog(queuedLine, project.MSG_VERBOSE); | |||
| super.outputLog(queuedLine, Project.MSG_VERBOSE); | |||
| queuedLine = null; | |||
| } | |||
| super.logFlush(); | |||
| @@ -14,7 +14,7 @@ import java.io.*; | |||
| * @author skanthak@muehlheim.de | |||
| */ | |||
| public class JikesOutputParser { | |||
| protected Project project; | |||
| protected Task task; | |||
| protected boolean errorFlag = false; // no errors so far | |||
| protected int errors,warnings; | |||
| protected boolean error = false; | |||
| @@ -22,11 +22,11 @@ public class JikesOutputParser { | |||
| /** | |||
| * Construct a new Parser object | |||
| * @param project - project in whichs context we are called | |||
| * @param task - task in whichs context we are called | |||
| */ | |||
| protected JikesOutputParser(Project project, boolean emacsMode) { | |||
| protected JikesOutputParser(Task task, boolean emacsMode) { | |||
| super(); | |||
| this.project = project; | |||
| this.task = task; | |||
| this.emacsMode = emacsMode; | |||
| } | |||
| @@ -88,9 +88,9 @@ public class JikesOutputParser { | |||
| private void log(String line) { | |||
| if (!emacsMode) { | |||
| project.log("", (error ? Project.MSG_ERR : Project.MSG_WARN)); | |||
| task.log("", (error ? Project.MSG_ERR : Project.MSG_WARN)); | |||
| } | |||
| project.log(line, (error ? Project.MSG_ERR : Project.MSG_WARN)); | |||
| task.log(line, (error ? Project.MSG_ERR : Project.MSG_WARN)); | |||
| } | |||
| /** | |||
| @@ -76,10 +76,10 @@ public class KeySubst extends Task { | |||
| Do the execution. | |||
| */ | |||
| public void execute() throws BuildException { | |||
| project.log("!! KeySubst is deprecated. Use Filter + CopyDir instead. !!"); | |||
| project.log("Performing Substitions"); | |||
| log("!! KeySubst is deprecated. Use Filter + CopyDir instead. !!"); | |||
| log("Performing Substitions"); | |||
| if ( source == null || dest == null ) { | |||
| project.log("Source and destinations must not be null"); | |||
| log("Source and destinations must not be null"); | |||
| return; | |||
| } | |||
| BufferedReader br = null; | |||
| @@ -152,8 +152,8 @@ public class KeySubst extends Task { | |||
| String name = itok.nextToken(); | |||
| String value = itok.nextToken(); | |||
| // project.log ( "Name: " + name ); | |||
| // project.log ( "Value: " + value ); | |||
| // log ( "Name: " + name ); | |||
| // log ( "Value: " + value ); | |||
| replacements.put ( name, value ); | |||
| } | |||
| } | |||
| @@ -137,9 +137,9 @@ public abstract class MatchingTask extends Task { | |||
| * @param itemString the string containing the files to include. | |||
| */ | |||
| public void setItems(String itemString) { | |||
| project.log("The items attribute is deprecated. " + | |||
| "Please use the includes attribute.", | |||
| Project.MSG_WARN); | |||
| log("The items attribute is deprecated. " + | |||
| "Please use the includes attribute.", | |||
| Project.MSG_WARN); | |||
| if (itemString == null || itemString.equals("*") | |||
| || itemString.equals(".")) { | |||
| createInclude().setName("**"); | |||
| @@ -173,9 +173,9 @@ public abstract class MatchingTask extends Task { | |||
| * @param ignoreString the string containing the files to ignore. | |||
| */ | |||
| public void setIgnore(String ignoreString) { | |||
| project.log("The ignore attribute is deprecated." + | |||
| "Please use the excludes attribute.", | |||
| Project.MSG_WARN); | |||
| log("The ignore attribute is deprecated." + | |||
| "Please use the excludes attribute.", | |||
| Project.MSG_WARN); | |||
| if (ignoreString != null && ignoreString.length() > 0) { | |||
| Vector tmpExcludes = new Vector(); | |||
| StringTokenizer tok = new StringTokenizer(ignoreString, ", ", false); | |||
| @@ -266,8 +266,8 @@ public abstract class MatchingTask extends Task { | |||
| line = patternReader.readLine(); | |||
| } | |||
| } catch(IOException ioe) { | |||
| project.log("An error occured while reading from pattern file: " | |||
| + patternfile, Project.MSG_ERR); | |||
| log("An error occured while reading from pattern file: " | |||
| + patternfile, Project.MSG_ERR); | |||
| } | |||
| } | |||
| @@ -281,8 +281,8 @@ public abstract class MatchingTask extends Task { | |||
| if (includesfile != null && includesfile.length() > 0) { | |||
| File incl = project.resolveFile(includesfile); | |||
| if (!incl.exists()) { | |||
| project.log("Includesfile "+includesfile+" not found.", | |||
| Project.MSG_ERR); | |||
| log("Includesfile "+includesfile+" not found.", | |||
| Project.MSG_ERR); | |||
| } else { | |||
| readPatterns(incl, includeList); | |||
| } | |||
| @@ -299,8 +299,8 @@ public abstract class MatchingTask extends Task { | |||
| if (excludesfile != null && excludesfile.length() > 0) { | |||
| File excl = project.resolveFile(excludesfile); | |||
| if (!excl.exists()) { | |||
| project.log("Excludesfile "+excludesfile+" not found.", | |||
| Project.MSG_ERR); | |||
| log("Excludesfile "+excludesfile+" not found.", | |||
| Project.MSG_ERR); | |||
| } else { | |||
| readPatterns(excl, excludeList); | |||
| } | |||
| @@ -77,7 +77,7 @@ public class Mkdir extends Task { | |||
| "succesful for an unknown reason"; | |||
| throw new BuildException(msg); | |||
| } | |||
| project.log("Created dir: " + dir.getAbsolutePath()); | |||
| log("Created dir: " + dir.getAbsolutePath()); | |||
| } | |||
| } | |||
| @@ -105,15 +105,15 @@ public class Property extends Task { | |||
| if (project.getUserProperty(name) == null) { | |||
| project.setUserProperty(name, value); | |||
| } else { | |||
| project.log("Override ignored for " + name, | |||
| project.MSG_VERBOSE); | |||
| log("Override ignored for " + name, | |||
| Project.MSG_VERBOSE); | |||
| } | |||
| else | |||
| if (project.getProperty(name) == null) { | |||
| project.setProperty(name, value); | |||
| } else { | |||
| project.log("Override ignored for " + name, | |||
| project.MSG_VERBOSE); | |||
| log("Override ignored for " + name, | |||
| Project.MSG_VERBOSE); | |||
| } | |||
| } | |||
| @@ -128,7 +128,7 @@ public class Property extends Task { | |||
| private void loadFile (String name) { | |||
| Properties props = new Properties(); | |||
| project.log("Loading " + name, project.MSG_VERBOSE); | |||
| log("Loading " + name, Project.MSG_VERBOSE); | |||
| try { | |||
| if (new File(name).exists()) { | |||
| props.load(new FileInputStream(name)); | |||
| @@ -141,7 +141,7 @@ public class Property extends Task { | |||
| private void loadResource( String name ) { | |||
| Properties props = new Properties(); | |||
| project.log("Resource Loading " + name, project.MSG_VERBOSE); | |||
| log("Resource Loading " + name, Project.MSG_VERBOSE); | |||
| try { | |||
| InputStream is = this.getClass().getResourceAsStream(name); | |||
| if (is != null) { | |||
| @@ -163,15 +163,15 @@ public class Property extends Task { | |||
| if (project.getUserProperty(name) == null) { | |||
| project.setUserProperty(name, v); | |||
| } else { | |||
| project.log("Override ignored for " + name, | |||
| project.MSG_VERBOSE); | |||
| log("Override ignored for " + name, | |||
| Project.MSG_VERBOSE); | |||
| } | |||
| else | |||
| if (project.getProperty(name) == null) { | |||
| project.setProperty(name, v); | |||
| } else { | |||
| project.log("Override ignored for " + name, | |||
| project.MSG_VERBOSE); | |||
| log("Override ignored for " + name, | |||
| Project.MSG_VERBOSE); | |||
| } | |||
| } | |||
| } | |||
| @@ -85,7 +85,7 @@ public class Replace extends MatchingTask { | |||
| throw new BuildException("Either the file or the dir attribute must be specified"); | |||
| } | |||
| project.log("Replacing " + token + " --> " + value); | |||
| log("Replacing " + token + " --> " + value); | |||
| if (src != null) { | |||
| processFile(src); | |||
| @@ -98,9 +98,9 @@ public class Rmic extends MatchingTask { | |||
| } | |||
| public void setClass(String classname) { | |||
| project.log("The class attribute is deprecated. " + | |||
| "Please use the classname attribute.", | |||
| Project.MSG_WARN); | |||
| log("The class attribute is deprecated. " + | |||
| "Please use the classname attribute.", | |||
| Project.MSG_WARN); | |||
| this.classname = classname; | |||
| } | |||
| @@ -146,7 +146,7 @@ public class Rmic extends MatchingTask { | |||
| } | |||
| if (verify) { | |||
| project.log("Verify has been turned on.", Project.MSG_INFO); | |||
| log("Verify has been turned on.", Project.MSG_INFO); | |||
| } | |||
| File sourceBaseFile = null; | |||
| if (null != sourceBase) { | |||
| @@ -193,8 +193,8 @@ public class Rmic extends MatchingTask { | |||
| } | |||
| } else { | |||
| if (compileList.size() > 0) { | |||
| project.log("RMI Compiling " + compileList.size() + | |||
| " classes to " + baseDir, Project.MSG_INFO); | |||
| log("RMI Compiling " + compileList.size() + | |||
| " classes to " + baseDir, Project.MSG_INFO); | |||
| for (int j = 0; j < compileList.size(); j++) { | |||
| args[i++] = (String) compileList.elementAt(j); | |||
| @@ -272,16 +272,16 @@ public class Rmic extends MatchingTask { | |||
| shouldAdd = false; | |||
| } | |||
| } catch (ClassNotFoundException e) { | |||
| project.log("Unable to verify class " + classname + | |||
| log("Unable to verify class " + classname + | |||
| ". It could not be found.", Project.MSG_WARN); | |||
| } catch (NoClassDefFoundError e) { | |||
| project.log("Unable to verify class " + classname + | |||
| log("Unable to verify class " + classname + | |||
| ". It is not defined.", Project.MSG_WARN); | |||
| } | |||
| } | |||
| if (shouldAdd) { | |||
| project.log("Adding: " + classname + " to compile list", | |||
| Project.MSG_VERBOSE); | |||
| log("Adding: " + classname + " to compile list", | |||
| Project.MSG_VERBOSE); | |||
| compileList.addElement(classname); | |||
| } | |||
| } | |||
| @@ -329,8 +329,8 @@ public class Rmic extends MatchingTask { | |||
| classFile.getAbsolutePath().indexOf(".class")) + "_Skel.class"); | |||
| if (classFile.exists()) { | |||
| if (classFile.lastModified() > now) { | |||
| project.log("Warning: file modified in the future: " + | |||
| classFile, Project.MSG_WARN); | |||
| log("Warning: file modified in the future: " + | |||
| classFile, Project.MSG_WARN); | |||
| } | |||
| if (classFile.lastModified() > stubFile.lastModified()) { | |||
| @@ -399,8 +399,8 @@ public class Rmic extends MatchingTask { | |||
| target.append(File.pathSeparator); | |||
| target.append(f.getAbsolutePath()); | |||
| } else { | |||
| project.log("Dropping from classpath: "+ | |||
| f.getAbsolutePath(), Project.MSG_VERBOSE); | |||
| log("Dropping from classpath: "+ | |||
| f.getAbsolutePath(), Project.MSG_VERBOSE); | |||
| } | |||
| } | |||
| @@ -84,7 +84,7 @@ public class Tar extends MatchingTask { | |||
| } | |||
| public void execute() throws BuildException { | |||
| project.log("Building tar: "+ tarFile.getAbsolutePath()); | |||
| log("Building tar: "+ tarFile.getAbsolutePath()); | |||
| if (baseDir == null) { | |||
| throw new BuildException("basedir attribute must be set!"); | |||
| @@ -71,7 +71,7 @@ import java.io.*; | |||
| public class TaskOutputStream extends OutputStream { | |||
| private Project project; | |||
| private Task task; | |||
| private StringBuffer line; | |||
| private int msgOutputLevel; | |||
| @@ -80,8 +80,8 @@ public class TaskOutputStream extends OutputStream { | |||
| * as the output source for messages. | |||
| */ | |||
| TaskOutputStream(Project project, int msgOutputLevel) { | |||
| this.project = project; | |||
| TaskOutputStream(Task task, int msgOutputLevel) { | |||
| this.task = task; | |||
| this.msgOutputLevel = msgOutputLevel; | |||
| line = new StringBuffer(); | |||
| @@ -111,7 +111,7 @@ public class TaskOutputStream extends OutputStream { | |||
| private void processLine() { | |||
| String s = line.toString(); | |||
| project.log(s, msgOutputLevel); | |||
| task.log(s, msgOutputLevel); | |||
| line = new StringBuffer(); | |||
| } | |||
| } | |||
| @@ -95,9 +95,9 @@ public class Taskdef extends Task { | |||
| } | |||
| public void setClass(String v) { | |||
| project.log("The class attribute is deprecated. " + | |||
| "Please use the classname attribute.", | |||
| Project.MSG_WARN); | |||
| log("The class attribute is deprecated. " + | |||
| "Please use the classname attribute.", | |||
| Project.MSG_WARN); | |||
| value = v; | |||
| } | |||
| @@ -112,9 +112,9 @@ public class Touch extends Task { | |||
| */ | |||
| public void execute() throws BuildException { | |||
| if (file.exists() && project.getJavaVersion() == Project.JAVA_1_1) { | |||
| project.log("Cannot change the modification time of " | |||
| + file + " in JDK 1.1", | |||
| Project.MSG_WARN); | |||
| log("Cannot change the modification time of " | |||
| + file + " in JDK 1.1", | |||
| Project.MSG_WARN); | |||
| return; | |||
| } | |||
| @@ -130,9 +130,8 @@ public class Touch extends Task { | |||
| } | |||
| if (millis >= 0 && project.getJavaVersion() == Project.JAVA_1_1) { | |||
| project.log(file + | |||
| " will be created but its modification time cannot be set in JDK 1.1", | |||
| Project.MSG_WARN); | |||
| log(file + " will be created but its modification time cannot be set in JDK 1.1", | |||
| Project.MSG_WARN); | |||
| } | |||
| touch(); | |||
| @@ -143,7 +142,7 @@ public class Touch extends Task { | |||
| */ | |||
| void touch() throws BuildException { | |||
| if (!file.exists()) { | |||
| project.log("Creating "+file, Project.MSG_INFO); | |||
| log("Creating "+file, Project.MSG_INFO); | |||
| try { | |||
| FileOutputStream fos = new FileOutputStream(file); | |||
| fos.write(new byte[0]); | |||
| @@ -181,8 +180,8 @@ public class Touch extends Task { | |||
| } | |||
| try { | |||
| project.log("Setting modification time for "+file, | |||
| Project.MSG_VERBOSE); | |||
| log("Setting modification time for "+file, | |||
| Project.MSG_VERBOSE); | |||
| setLastModified.invoke(file, times); | |||
| } catch (InvocationTargetException ite) { | |||
| @@ -94,7 +94,7 @@ public class Untar extends Task { | |||
| } | |||
| File dir=project.resolveFile(dest); | |||
| project.log("Expanding: " + srcF + " into " + dir, Project.MSG_INFO); | |||
| log("Expanding: " + srcF + " into " + dir, Project.MSG_INFO); | |||
| // code from WarExpand | |||
| TarInputStream tis = new TarInputStream(new FileInputStream(srcF)); | |||
| TarEntry te = null; | |||
| @@ -102,8 +102,7 @@ public class Untar extends Task { | |||
| while ((te = tis.getNextEntry()) != null) { | |||
| try { | |||
| File f = new File(dir, project.translatePath(te.getName())); | |||
| project.log("expand-file " + te.getName() , "untar", | |||
| Project.MSG_VERBOSE ); | |||
| log("expand-file " + te.getName(), Project.MSG_VERBOSE ); | |||
| // create intermediary directories - sometimes tar don't add them | |||
| File dirF=new File(f.getParent()); | |||
| dirF.mkdirs(); | |||
| @@ -129,8 +128,8 @@ public class Untar extends Task { | |||
| } | |||
| } catch(FileNotFoundException ex) { | |||
| project.log("FileNotFoundException: " + te.getName(), | |||
| Project.MSG_WARN); | |||
| log("FileNotFoundException: " + te.getName(), | |||
| Project.MSG_WARN); | |||
| } | |||
| } | |||
| } catch (IOException ioe) { | |||
| @@ -120,7 +120,7 @@ public class XSLTProcess extends MatchingTask { | |||
| throw new BuildException(msg); | |||
| } | |||
| scanner = getDirectoryScanner(baseDir); | |||
| project.log("Transforming into "+destDir,project.MSG_INFO); | |||
| log("Transforming into "+destDir, Project.MSG_INFO); | |||
| // if processor wasn't specified, default it to xslp or xalan, | |||
| // depending on which is in the classpath | |||
| @@ -136,17 +136,17 @@ public class XSLTProcess extends MatchingTask { | |||
| } | |||
| } | |||
| project.log("Using "+liaison.getClass().toString(),project.MSG_VERBOSE); | |||
| log("Using "+liaison.getClass().toString(), Project.MSG_VERBOSE); | |||
| try { | |||
| // Create a new XSL processor with the specified stylesheet | |||
| if (xslFile != null) { | |||
| String file = new File(baseDir,xslFile.toString()).toString(); | |||
| project.log("Loading stylesheet " + file, project.MSG_INFO); | |||
| log("Loading stylesheet " + file, Project.MSG_INFO); | |||
| liaison.setStylesheet( file ); | |||
| } | |||
| } catch (Exception ex) { | |||
| project.log("Failed to read stylesheet " + xslFile,project.MSG_INFO); | |||
| log("Failed to read stylesheet " + xslFile, Project.MSG_INFO); | |||
| throw new BuildException(ex); | |||
| } | |||
| @@ -296,7 +296,7 @@ public class XSLTProcess extends MatchingTask { | |||
| outFile = new File(destDir,xmlFile.substring(0,xmlFile.lastIndexOf('.'))+fileExt); | |||
| if (inFile.lastModified() > outFile.lastModified()) { | |||
| //-- command line status | |||
| project.log("Processing " + xmlFile + " to " + outFile,project.MSG_VERBOSE); | |||
| log("Processing " + xmlFile + " to " + outFile, Project.MSG_VERBOSE); | |||
| liaison.transform(inFile.toString(), outFile.toString()); | |||
| } | |||
| @@ -304,7 +304,7 @@ public class XSLTProcess extends MatchingTask { | |||
| catch (Exception ex) { | |||
| // If failed to process document, must delete target document, | |||
| // or it will not attempt to process it the second time | |||
| project.log("Failed to process " + inFile,project.MSG_INFO); | |||
| log("Failed to process " + inFile, Project.MSG_INFO); | |||
| outFile.delete(); | |||
| throw new BuildException(ex); | |||
| } | |||
| @@ -120,7 +120,7 @@ public class Zip extends MatchingTask { | |||
| upToDate = false; | |||
| if (upToDate) return; | |||
| project.log("Building "+ archiveType +": "+ zipFile.getAbsolutePath()); | |||
| log("Building "+ archiveType +": "+ zipFile.getAbsolutePath()); | |||
| try { | |||
| ZipOutputStream zOut = new ZipOutputStream(new FileOutputStream(zipFile)); | |||
| @@ -442,7 +442,7 @@ public class NetRexxC extends MatchingTask { | |||
| // compile the source files | |||
| if (compileList.size() > 0) { | |||
| project.log("Compiling " + compileList.size() + " source files to " + destDir); | |||
| log("Compiling " + compileList.size() + " source files to " + destDir); | |||
| doNetRexxCompile(); | |||
| } | |||
| } | |||
| @@ -479,7 +479,7 @@ public class NetRexxC extends MatchingTask { | |||
| */ | |||
| private void copyFilesToDestination() { | |||
| if (filecopyList.size() > 0) { | |||
| project.log("Copying " + filecopyList.size() + " files to " + destDir.getAbsolutePath()); | |||
| log("Copying " + filecopyList.size() + " files to " + destDir.getAbsolutePath()); | |||
| Enumeration enum = filecopyList.keys(); | |||
| while (enum.hasMoreElements()) { | |||
| String fromFile = (String)enum.nextElement(); | |||
| @@ -499,7 +499,7 @@ public class NetRexxC extends MatchingTask { | |||
| * Peforms a copmile using the NetRexx 1.1.x compiler | |||
| */ | |||
| private void doNetRexxCompile() throws BuildException { | |||
| project.log("Using NetRexx compiler", project.MSG_VERBOSE); | |||
| log("Using NetRexx compiler", Project.MSG_VERBOSE); | |||
| String classpath = getCompileClasspath(); | |||
| StringBuffer compileOptions = new StringBuffer(); | |||
| StringBuffer fileList = new StringBuffer(); | |||
| @@ -529,7 +529,7 @@ public class NetRexxC extends MatchingTask { | |||
| compileOptions.append(compileOptionsArray[i]); | |||
| compileOptions.append(" "); | |||
| } | |||
| project.log(compileOptions.toString(), project.MSG_VERBOSE); | |||
| log(compileOptions.toString(), Project.MSG_VERBOSE); | |||
| String eol = System.getProperty("line.separator"); | |||
| StringBuffer niceSourceList = new StringBuffer("Files to be compiled:" + eol); | |||
| @@ -540,7 +540,7 @@ public class NetRexxC extends MatchingTask { | |||
| niceSourceList.append(eol); | |||
| } | |||
| project.log(niceSourceList.toString(), project.MSG_VERBOSE); | |||
| log(niceSourceList.toString(), Project.MSG_VERBOSE); | |||
| // need to set java.class.path property and restore it later | |||
| // since the NetRexx compiler has no option for the classpath | |||
| @@ -554,15 +554,15 @@ public class NetRexxC extends MatchingTask { | |||
| new Rexx(compileArgs), new PrintWriter(out)); | |||
| if (rc > 1) { // 1 is warnings from real NetRexxC | |||
| project.log(out.toString(), Project.MSG_ERR); | |||
| log(out.toString(), Project.MSG_ERR); | |||
| String msg = "Compile failed, messages should have been provided."; | |||
| throw new BuildException(msg); | |||
| } | |||
| else if (rc == 1) { | |||
| project.log(out.toString(), Project.MSG_WARN); | |||
| log(out.toString(), Project.MSG_WARN); | |||
| } | |||
| else { | |||
| project.log(out.toString(), Project.MSG_INFO); | |||
| log(out.toString(), Project.MSG_INFO); | |||
| } | |||
| } finally { | |||
| // need to reset java.class.path property | |||
| @@ -648,8 +648,8 @@ public class NetRexxC extends MatchingTask { | |||
| target.append(File.pathSeparator); | |||
| target.append(f.getAbsolutePath()); | |||
| } else { | |||
| project.log("Dropping from classpath: "+ | |||
| f.getAbsolutePath(),project.MSG_VERBOSE); | |||
| log("Dropping from classpath: "+ | |||
| f.getAbsolutePath(), Project.MSG_VERBOSE); | |||
| } | |||
| } | |||
| @@ -151,10 +151,10 @@ public class RenameExtensions extends MatchingTask { | |||
| if (replace || !destFile.exists()) { | |||
| list.put(srcFile, destFile); | |||
| } else { | |||
| project.log("Rejecting file: '" + srcFile + "' for rename as replace is false and file exists", Project.MSG_VERBOSE); | |||
| log("Rejecting file: '" + srcFile + "' for rename as replace is false and file exists", Project.MSG_VERBOSE); | |||
| } | |||
| } else { | |||
| project.log("File '"+ filename + "' doesn't match fromExtension: '" + fromExtension + "'", Project.MSG_VERBOSE); | |||
| log("File '"+ filename + "' doesn't match fromExtension: '" + fromExtension + "'", Project.MSG_VERBOSE); | |||
| } | |||
| } | |||
| return list; | |||