FileDocCategorySizeDatePackage
BaseRedirectorHelperTask.javaAPI DocApache Tomcat 6.0.1412194Fri Jul 20 04:20:32 BST 2007org.apache.catalina.ant

BaseRedirectorHelperTask

public abstract class BaseRedirectorHelperTask extends org.apache.tools.ant.Task
Abstract base class to add output redirection support for Catalina Ant tasks. These tasks require Ant 1.5 or later.
WARNING: due to depends chain, Ant could call a Task more than once and this can affect the output redirection when configured. If you are collecting the output in a property, it will collect the output of only the first run, since Ant properties are immutable and once created they cannot be changed.
If you are collecting output in a file the file will be overwritten with the output of the last run, unless you set append="true", in which case each run will append it's output to the file.
author
Gabriele Garuglieri
version
$Revision: 467222 $ $Date: 2006-10-24 05:17:11 +0200 (mar., 24 oct. 2006) $
since
5.5

Fields Summary
protected org.apache.tools.ant.taskdefs.Redirector
redirector
Redirector helper
protected org.apache.tools.ant.types.RedirectorElement
redirectorElement
Redirector element for this task
protected OutputStream
redirectOutStream
The stream for info output
protected OutputStream
redirectErrStream
The stream for error output
PrintStream
redirectOutPrintStream
The print stream for info output
PrintStream
redirectErrPrintStream
The print stream for error output
protected boolean
failOnError
Whether to fail (with a BuildException) if ManagerServlet returns an error. The default behavior is to do so. This flag does not control parameters checking. If the task is called with wrong or invalid parameters, it will throw BuildException independently from the setting of this flag.
protected boolean
redirectOutput
true true when output redirection is requested for this task . Default is to log on Ant log.
protected boolean
redirectorConfigured
will be set to true when the configuration of the Redirector is complete.
protected boolean
alwaysLog
Flag which indicates that, if redirected, output should also be always sent to the log. Default is that otput is sent only to redirected streams.
Constructors Summary
Methods Summary
public voidaddConfiguredRedirector(org.apache.tools.ant.types.RedirectorElement redirectorElement)
Add a RedirectorElement to this task.

param
redirectorElement RedirectorElement.

        if (this.redirectorElement != null) {
            throw new BuildException("Cannot have > 1 nested <redirector>s");
        } else {
            this.redirectorElement = redirectorElement;
        }
    
protected voidcloseRedirector()
Ask redirector to close all the streams. It is necessary to call this method before leaving the Task to have the Streams flush their contents. If you are collecting output in a property, it will be created only if this method is called, otherwise you'll find it unset.

        try {
            if (redirectOutput) {
                redirector.complete();
            }
        } catch (IOException ioe) {
            log("Error closing redirector: "
                + ioe.getMessage(), Project.MSG_ERR);
        }
        /*
         * Due to depends chain, Ant could call the Task more than once,
         * this is to prevent that we attempt to reuse the previuosly 
         * closed Streams.
         */
        redirectOutStream = null;
        redirectOutPrintStream = null;
        redirectErrStream = null;
        redirectErrPrintStream = null;
    
private voidconfigureRedirector()
Set up properties on the Redirector from RedirectorElement if present.

        if (redirectorElement != null) {
            redirectorElement.configure(redirector);
            redirectOutput = true;
        }
        /*
         * Due to depends chain, Ant could call the Task more than once,
         * this is to prevent that we attempt to configure uselessly
         * more than once the Redirector.
         */
        redirectorConfigured = true;
    
protected voidhandleErrorFlush(java.lang.String output)
Handles error output with the ERR priority and flushes the stream.

param
output The error output to log. Should not be null.

        handleErrorOutput(output);
        redirectErrPrintStream.flush();
    
protected voidhandleErrorOutput(java.lang.String output)
Handles error output with the ERR priority.

param
output The error output to log. Should not be null.

        if (redirectOutput) {
            if (redirectErrPrintStream == null) {
                openRedirector();
            }
            redirectErrPrintStream.println(output);
            if (alwaysLog) {
                log(output, Project.MSG_ERR);
            }
        } else { 
            log(output, Project.MSG_ERR);
        }
    
protected voidhandleFlush(java.lang.String output)
Handles output with the INFO priority and flushes the stream.

param
output The output to log. Should not be null.

        handleOutput(output);
        redirectOutPrintStream.flush();
    
protected voidhandleFlush(java.lang.String output, int priority)
Handles output with ERR priority to error stream and all other pritorities to output stream, then flushes the stream.

param
output The output to log. Should not be null.

        if (priority == Project.MSG_ERR) {
            handleErrorFlush(output);
        } else {
            handleFlush(output);
        }
    
protected voidhandleOutput(java.lang.String output)
Handles output with the INFO priority.

param
output The output to log. Should not be null.

        if (redirectOutput) {
            if (redirectOutPrintStream == null) {
                openRedirector();
            }
            redirectOutPrintStream.println(output);
            if (alwaysLog) {
                log(output, Project.MSG_INFO);
            }
        } else { 
            log(output, Project.MSG_INFO);
        }
    
protected voidhandleOutput(java.lang.String output, int priority)
Handles output with ERR priority to error stream and all other pritorities to output stream.

param
output The output to log. Should not be null.

        if (priority == Project.MSG_ERR) {
            handleErrorOutput(output);
        } else {
            handleOutput(output);
        }
    
public booleanisFailOnError()
Returns the value of the failOnError property.

      return failOnError;
    
protected voidopenRedirector()
Set up properties on the Redirector and create output streams.

        if (! redirectorConfigured) {
            configureRedirector();
        }
        if (redirectOutput) {
            redirector.createStreams();
            redirectOutStream = redirector.getOutputStream();
            redirectOutPrintStream = new PrintStream(redirectOutStream);
            redirectErrStream = redirector.getErrorStream();
            redirectErrPrintStream = new PrintStream(redirectErrStream);
        }
   
public voidsetAlwaysLog(boolean alwaysLog)
If true, (error and non-error) output will be redirected as specified while being sent to Ant's logging mechanism as if no redirection had taken place. Defaults to false.
Actually handled internally, with Ant 1.6.3 it will be handled by the Redirector itself.

param
alwaysLog boolean

        this.alwaysLog = alwaysLog;
        //redirector.setAlwaysLog(alwaysLog);
        redirectOutput = true;
    
public voidsetAppend(boolean append)
If true, append output to existing file.

param
append if true, append output to existing file

        redirector.setAppend(append);
        redirectOutput = true;
    
public voidsetCreateEmptyFiles(boolean createEmptyFiles)
Whether output and error files should be created even when empty. Defaults to true.

param
createEmptyFiles boolean.

        redirector.setCreateEmptyFiles(createEmptyFiles);
        redirectOutput = true;
    
public voidsetError(java.io.File error)
File the error output of the task is redirected to.

param
error name of the error file

        redirector.setError(error);
        redirectOutput = true;
    
public voidsetErrorProperty(java.lang.String errorProperty)
Property name whose value should be set to the error of the task..

param
errorProperty property name

        redirector.setErrorProperty(errorProperty);
        redirectOutput = true;
    
public voidsetFailonerror(boolean fail)
Whether to fail (with a BuildException) if ManagerServlet returns an error. The default behavior is to do so.


                            
        
        failOnError = fail;
    
public voidsetLogError(boolean logError)
Controls whether error output is logged. This is only useful when output is being redirected and error output is desired in the Ant log

param
logError if true the standard error is sent to the Ant log system and not sent to output stream.

        redirector.setLogError(logError);
        redirectOutput = true;
    
public voidsetOutput(java.io.File out)
File the output of the task is redirected to.

param
out name of the output file

        redirector.setOutput(out);
        redirectOutput = true;
    
public voidsetOutputproperty(java.lang.String outputProperty)
Property name whose value should be set to the output of the task.

param
outputProperty property name

        redirector.setOutputProperty(outputProperty);
        redirectOutput = true;