aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/types/RedirectorElement.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/types/RedirectorElement.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/types/RedirectorElement.java630
1 files changed, 0 insertions, 630 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/types/RedirectorElement.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/types/RedirectorElement.java
deleted file mode 100644
index d27b199c..00000000
--- a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/types/RedirectorElement.java
+++ /dev/null
@@ -1,630 +0,0 @@
-/*
- * 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.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Stack;
-import java.util.Vector;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-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<FilterChain> inputFilterChains = new Vector<FilterChain>();
-
- /** output filter chains. */
- private Vector<FilterChain> outputFilterChains = new Vector<FilterChain>();
-
- /** error filter chains. */
- private Vector<FilterChain> errorFilterChains = new Vector<FilterChain>();
-
- /** 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;
-
- /** Is the output binary or can we safely split it into lines? */
- private boolean outputIsBinary = false;
-
- /**
- * 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>");
- }
- }
- setChecked(false);
- 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>");
- }
- }
- setChecked(false);
- 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>");
- }
- }
- setChecked(false);
- 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()) {
- throw tooManyAttributes();
- }
- if (error == null) {
- throw new IllegalArgumentException("error file specified as null");
- }
- usingError = true;
- errorMapper = createMergeMapper(error);
- }
-
- /**
- * Property name whose value should be set to the output of
- * the process.
- * @param outputProperty the name of the property to be set with the
- * task's output.
- */
- public void setOutputProperty(String outputProperty) {
- if (isReference()) {
- throw tooManyAttributes();
- }
- this.outputProperty = outputProperty;
- }
-
- /**
- * Whether output should be appended to or overwrite an existing file.
- * Defaults to false.
- * @param append if true output and error streams are appended to their
- * respective files, if specified.
- */
- public void setAppend(boolean append) {
- if (isReference()) {
- throw tooManyAttributes();
- }
- this.append = ((append) ? Boolean.TRUE : Boolean.FALSE);
- }
-
- /**
- * If true, (error and non-error) output will be "teed", redirected
- * as specified while being sent to Ant's logging mechanism as if no
- * redirection had taken place. Defaults to false.
- * @param alwaysLog <code>boolean</code>
- * @since Ant 1.6.3
- */
- public void setAlwaysLog(boolean alwaysLog) {
- if (isReference()) {
- throw tooManyAttributes();
- }
- this.alwaysLog = ((alwaysLog) ? Boolean.TRUE : Boolean.FALSE);
- }
-
- /**
- * Whether output and error files should be created even when empty.
- * Defaults to true.
- * @param createEmptyFiles <code>boolean</code>.
- */
- public void setCreateEmptyFiles(boolean createEmptyFiles) {
- if (isReference()) {
- throw tooManyAttributes();
- }
- this.createEmptyFiles = ((createEmptyFiles)
- ? Boolean.TRUE : Boolean.FALSE);
- }
-
- /**
- * Property name whose value should be set to the error of
- * the process.
- * @param errorProperty the name of the property to be set
- * with the error output.
- */
- public void setErrorProperty(String errorProperty) {
- if (isReference()) {
- throw tooManyAttributes();
- }
- this.errorProperty = errorProperty;
- }
-
- /**
- * Create a nested input <code>FilterChain</code>.
- * @return <code>FilterChain</code>.
- */
- public FilterChain createInputFilterChain() {
- if (isReference()) {
- throw noChildrenAllowed();
- }
- FilterChain result = new FilterChain();
- result.setProject(getProject());
- inputFilterChains.add(result);
- setChecked(false);
- return result;
- }
-
- /**
- * Create a nested output <code>FilterChain</code>.
- * @return <code>FilterChain</code>.
- */
- public FilterChain createOutputFilterChain() {
- if (isReference()) {
- throw noChildrenAllowed();
- }
- FilterChain result = new FilterChain();
- result.setProject(getProject());
- outputFilterChains.add(result);
- setChecked(false);
- return result;
- }
-
- /**
- * Create a nested error <code>FilterChain</code>.
- * @return <code>FilterChain</code>.
- */
- public FilterChain createErrorFilterChain() {
- if (isReference()) {
- throw noChildrenAllowed();
- }
- FilterChain result = new FilterChain();
- result.setProject(getProject());
- errorFilterChains.add(result);
- setChecked(false);
- return result;
- }
-
- /**
- * Whether to consider the output created by the process binary.
- *
- * <p>Binary output will not be split into lines which may make
- * error and normal output look mixed up when they get written to
- * the same stream.</p>
- * @since 1.9.4
- */
- public void setBinaryOutput(boolean b) {
- outputIsBinary = b;
- }
-
- /**
- * Configure the specified <code>Redirector</code>.
- * @param redirector <code>Redirector</code>.
- */
- public void configure(Redirector redirector) {
- configure(redirector, null);
- }
-
- /**
- * Configure the specified <code>Redirector</code>
- * for the specified sourcefile.
- * @param redirector <code>Redirector</code>.
- * @param sourcefile <code>String</code>.
- */
- public void configure(Redirector redirector, String sourcefile) {
- if (isReference()) {
- getRef().configure(redirector, sourcefile);
- return;
- }
- dieOnCircularReference();
- if (alwaysLog != null) {
- redirector.setAlwaysLog(alwaysLog.booleanValue());
- }
- if (logError != null) {
- redirector.setLogError(logError.booleanValue());
- }
- if (append != null) {
- redirector.setAppend(append.booleanValue());
- }
- if (createEmptyFiles != null) {
- redirector.setCreateEmptyFiles(createEmptyFiles.booleanValue());
- }
- if (outputProperty != null) {
- redirector.setOutputProperty(outputProperty);
- }
- if (errorProperty != null) {
- redirector.setErrorProperty(errorProperty);
- }
- if (inputString != null) {
- redirector.setInputString(inputString);
- }
- if (logInputString != null) {
- redirector.setLogInputString(logInputString.booleanValue());
- }
- if (inputMapper != null) {
- String[] inputTargets = null;
- try {
- inputTargets =
- inputMapper.getImplementation().mapFileName(sourcefile);
- } catch (NullPointerException enPeaEx) {
- if (sourcefile != null) {
- throw enPeaEx;
- }
- }
- if (inputTargets != null && inputTargets.length > 0) {
- redirector.setInput(toFileArray(inputTargets));
- }
- }
- if (outputMapper != null) {
- String[] outputTargets = null;
- try {
- outputTargets =
- outputMapper.getImplementation().mapFileName(sourcefile);
- } catch (NullPointerException enPeaEx) {
- if (sourcefile != null) {
- throw enPeaEx;
- }
- }
- if (outputTargets != null && outputTargets.length > 0) {
- redirector.setOutput(toFileArray(outputTargets));
- }
- }
- if (errorMapper != null) {
- String[] errorTargets = null;
- try {
- errorTargets =
- errorMapper.getImplementation().mapFileName(sourcefile);
- } catch (NullPointerException enPeaEx) {
- if (sourcefile != null) {
- throw enPeaEx;
- }
- }
- if (errorTargets != null && errorTargets.length > 0) {
- redirector.setError(toFileArray(errorTargets));
- }
- }
- if (inputFilterChains.size() > 0) {
- redirector.setInputFilterChains(inputFilterChains);
- }
- if (outputFilterChains.size() > 0) {
- redirector.setOutputFilterChains(outputFilterChains);
- }
- if (errorFilterChains.size() > 0) {
- redirector.setErrorFilterChains(errorFilterChains);
- }
- if (inputEncoding != null) {
- redirector.setInputEncoding(inputEncoding);
- }
- if (outputEncoding != null) {
- redirector.setOutputEncoding(outputEncoding);
- }
- if (errorEncoding != null) {
- redirector.setErrorEncoding(errorEncoding);
- }
- redirector.setBinaryOutput(outputIsBinary);
- }
-
- /**
- * Create a merge mapper pointing to the specified destination file.
- * @param destfile <code>File</code>
- * @return <code>Mapper</code>.
- */
- protected Mapper createMergeMapper(File destfile) {
- Mapper result = new Mapper(getProject());
- result.setClassname(
- org.apache.tools.ant.util.MergingMapper.class.getName());
- result.setTo(destfile.getAbsolutePath());
- return result;
- }
-
- /**
- * Return a <code>File[]</code> from the specified set of filenames.
- * @param name <code>String[]</code>
- * @return <code>File[]</code>.
- */
- protected File[] toFileArray(String[] name) {
- if (name == null) {
- return null;
- }
- //remove any null elements
- ArrayList<File> list = new ArrayList<File>(name.length);
- for (int i = 0; i < name.length; i++) {
- if (name[i] != null) {
- list.add(getProject().resolveFile(name[i]));
- }
- }
- return (File[]) (list.toArray(new File[list.size()]));
- }
-
- /**
- * Overrides the version of DataType to recurse on all DataType
- * child elements that may have been added.
- * @param stk the stack of data types to use (recursively).
- * @param p the project to use to dereference the references.
- * @throws BuildException on error.
- */
- protected void dieOnCircularReference(Stack<Object> stk, Project p)
- throws BuildException {
- if (isChecked()) {
- return;
- }
- if (isReference()) {
- super.dieOnCircularReference(stk, p);
- } else {
- Mapper[] m = new Mapper[] {inputMapper, outputMapper, errorMapper};
- for (int i = 0; i < m.length; i++) {
- if (m[i] != null) {
- stk.push(m[i]);
- m[i].dieOnCircularReference(stk, p);
- stk.pop();
- }
- }
- @SuppressWarnings("unchecked")
- final List<? extends List<FilterChain>> filterChainLists = Arrays
- .<List<FilterChain>> asList(inputFilterChains, outputFilterChains,
- errorFilterChains);
- for (List<FilterChain> filterChains : filterChainLists) {
- if (filterChains != null) {
- for (FilterChain fc : filterChains) {
- pushAndInvokeCircularReferenceCheck(fc, stk, p);
- }
- }
- }
- setChecked(true);
- }
- }
-
- /**
- * Perform the check for circular references, returning the
- * referenced RedirectorElement.
- * @return the referenced RedirectorElement.
- */
- private RedirectorElement getRef() {
- return (RedirectorElement) getCheckedRef();
- }
-
-}