📄 redirectorelement.java
字号:
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */package org.apache.tools.ant.types;import java.io.File;import java.util.Stack;import java.util.Vector;import java.util.Iterator;import java.util.ArrayList;import org.apache.tools.ant.Project;import org.apache.tools.ant.BuildException;import org.apache.tools.ant.taskdefs.Redirector;/** * Element representation of a <code>Redirector</code>. * @since Ant 1.6.2 */public class RedirectorElement extends DataType { /** * Whether the input mapper was set via <code>setOutput</code>. */ private boolean usingInput = false; /** * Whether the output mapper was set via <code>setOutput</code>. */ private boolean usingOutput = false; /** * Whether the error mapper was set via <code>setError</code>. */ private boolean usingError = false; /** * Indicates if standard error should be logged to Ant's log system * rather than the output. This has no effect if standard error is * redirected to a file or property. */ private Boolean logError; /** The name of the property into which output is to be stored */ private String outputProperty; /** The name of the property into which error output is to be stored */ private String errorProperty; /** String from which input is taken */ private String inputString; /** Flag which indicates if error and output files are to be appended. */ private Boolean append; /** Flag which indicates that output should be always sent to the log */ private Boolean alwaysLog; /** Flag which indicates whether files should be created even if empty. */ private Boolean createEmptyFiles; /** Input file mapper. */ private Mapper inputMapper; /** Output file mapper. */ private Mapper outputMapper; /** Error file mapper. */ private Mapper errorMapper; /** input filter chains. */ private Vector inputFilterChains = new Vector(); /** output filter chains. */ private Vector outputFilterChains = new Vector(); /** error filter chains. */ private Vector errorFilterChains = new Vector(); /** The output encoding */ private String outputEncoding; /** The error encoding */ private String errorEncoding; /** The input encoding */ private String inputEncoding; /** whether to log the inputstring */ private Boolean logInputString; /** * Add the input file mapper. * @param inputMapper <code>Mapper</code>. */ public void addConfiguredInputMapper(Mapper inputMapper) { if (isReference()) { throw noChildrenAllowed(); } if (this.inputMapper != null) { if (usingInput) { throw new BuildException("attribute \"input\"" + " cannot coexist with a nested <inputmapper>"); } else { throw new BuildException("Cannot have > 1 <inputmapper>"); } } this.inputMapper = inputMapper; } /** * Add the output file mapper. * @param outputMapper <code>Mapper</code>. */ public void addConfiguredOutputMapper(Mapper outputMapper) { if (isReference()) { throw noChildrenAllowed(); } if (this.outputMapper != null) { if (usingOutput) { throw new BuildException("attribute \"output\"" + " cannot coexist with a nested <outputmapper>"); } else { throw new BuildException("Cannot have > 1 <outputmapper>"); } } this.outputMapper = outputMapper; } /** * Add the error file mapper. * @param errorMapper <code>Mapper</code>. */ public void addConfiguredErrorMapper(Mapper errorMapper) { if (isReference()) { throw noChildrenAllowed(); } if (this.errorMapper != null) { if (usingError) { throw new BuildException("attribute \"error\"" + " cannot coexist with a nested <errormapper>"); } else { throw new BuildException("Cannot have > 1 <errormapper>"); } } this.errorMapper = errorMapper; } /** * Make this instance in effect a reference to another instance. * * <p>You must not set another attribute or nest elements inside * this element if you make it a reference.</p> * @param r the reference to use. * @throws BuildException on error. */ public void setRefid(Reference r) throws BuildException { if (usingInput || usingOutput || usingError || inputString != null || logError != null || append != null || createEmptyFiles != null || inputEncoding != null || outputEncoding != null || errorEncoding != null || outputProperty != null || errorProperty != null || logInputString != null) { throw tooManyAttributes(); } super.setRefid(r); } /** * Set the input to use for the task. * @param input the file from which input is read. */ public void setInput(File input) { if (isReference()) { throw tooManyAttributes(); } if (inputString != null) { throw new BuildException("The \"input\" and \"inputstring\" " + "attributes cannot both be specified"); } usingInput = true; inputMapper = createMergeMapper(input); } /** * Set the string to use as input * @param inputString the string which is used as the input source */ public void setInputString(String inputString) { if (isReference()) { throw tooManyAttributes(); } if (usingInput) { throw new BuildException("The \"input\" and \"inputstring\" " + "attributes cannot both be specified"); } this.inputString = inputString; } /** * Set whether to include the value of the input string in log messages. * Defaults to true. * @param logInputString true or false. * @since Ant 1.7 */ public void setLogInputString(boolean logInputString) { if (isReference()) { throw tooManyAttributes(); } this.logInputString = logInputString ? Boolean.TRUE : Boolean.FALSE; } /** * File the output of the process is redirected to. If error is not * redirected, it too will appear in the output. * * @param out the file to which output stream is written. */ public void setOutput(File out) { if (isReference()) { throw tooManyAttributes(); } if (out == null) { throw new IllegalArgumentException("output file specified as null"); } usingOutput = true; outputMapper = createMergeMapper(out); } /** * Set the output encoding. * @param outputEncoding <code>String</code>. */ public void setOutputEncoding(String outputEncoding) { if (isReference()) { throw tooManyAttributes(); } this.outputEncoding = outputEncoding; } /** * Set the error encoding. * * @param errorEncoding <code>String</code>. */ public void setErrorEncoding(String errorEncoding) { if (isReference()) { throw tooManyAttributes(); } this.errorEncoding = errorEncoding; } /** * Set the input encoding. * @param inputEncoding <code>String</code>. */ public void setInputEncoding(String inputEncoding) { if (isReference()) { throw tooManyAttributes(); } this.inputEncoding = inputEncoding; } /** * Controls whether error output of exec 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. */ public void setLogError(boolean logError) { if (isReference()) { throw tooManyAttributes(); } this.logError = ((logError) ? Boolean.TRUE : Boolean.FALSE); } /** * Set the file to which standard error is to be redirected. * @param error the file to which error is to be written. */ public void setError(File error) { if (isReference()) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -