git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@277628 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -108,6 +108,8 @@ Other changes: | |||||
| * zip/jar/war/ear supports level attribute for deflate compression level. | * zip/jar/war/ear supports level attribute for deflate compression level. | ||||
| Bugzilla report 25513. | Bugzilla report 25513. | ||||
| * Added loginputstring attribute to the redirector type. | |||||
| Changes from Ant 1.6.2 to current Ant 1.6 CVS version | Changes from Ant 1.6.2 to current Ant 1.6 CVS version | ||||
| ===================================================== | ===================================================== | ||||
| @@ -107,10 +107,17 @@ source (input) and destination (output/error) files. <em>Since Ant 1.6.2</em> | |||||
| <tr> | <tr> | ||||
| <td valign="top">alwayslog</td> | <td valign="top">alwayslog</td> | ||||
| <td valign="top">Always send to the log in addition to | <td valign="top">Always send to the log in addition to | ||||
| any other destination. Default <code>false</code>. | |||||
| <i>Since Ant 1.6.3</i>. | |||||
| any other destination. <i>Since Ant 1.6.3</i>. | |||||
| </td> | </td> | ||||
| <td align="center" valign="top">No</td> | |||||
| <td align="center" valign="top">No, default is <code>false</code></td> | |||||
| </tr> | |||||
| <tr> | |||||
| <td valign="top">loginputstring</td> | |||||
| <td valign="top">Controls the display of <i>inputstring</i>'s value in | |||||
| log messages. Set to <code>false</code> when sending sensitive data | |||||
| (e.g. passwords) to external processes. <i>Since Ant 1.6.3</i>. | |||||
| </td> | |||||
| <td align="center" valign="top">No, default is <code>true</code></td> | |||||
| </tr> | </tr> | ||||
| </table> | </table> | ||||
| <h3>Parameters specified as nested elements</h3> | <h3>Parameters specified as nested elements</h3> | ||||
| @@ -153,7 +160,7 @@ Tasks known to support I/O redirection: | |||||
| dependent on the supporting task. Any possible points of confusion | dependent on the supporting task. Any possible points of confusion | ||||
| should be noted at the task level.</p> | should be noted at the task level.</p> | ||||
| <hr /> | <hr /> | ||||
| <p align="center">Copyright © 2004 The Apache Software Foundation. All rights | |||||
| <p align="center">Copyright © 2004-2005 The Apache Software Foundation. All rights | |||||
| Reserved.</p> | Reserved.</p> | ||||
| </body> | </body> | ||||
| @@ -21,4 +21,21 @@ | |||||
| </redirector> | </redirector> | ||||
| </target> | </target> | ||||
| <target name="testLogInputString" depends="cat-check" if="can-cat"> | |||||
| <exec executable="cat"> | |||||
| <redirector inputstring="foo" loginputstring="false" /> | |||||
| </exec> | |||||
| </target> | |||||
| <target name="cat-check"> | |||||
| <property environment="env" /> | |||||
| <condition property="can-cat"> | |||||
| <or> | |||||
| <available file="cat" filepath="${env.PATH}" property="can-cat" /> | |||||
| <available file="cat.exe" filepath="${env.PATH}" property="can-cat" /> | |||||
| <available file="cat.exe" filepath="${env.Path}" property="can-cat" /> | |||||
| </or> | |||||
| </condition> | |||||
| </target> | |||||
| </project> | </project> | ||||
| @@ -167,6 +167,9 @@ public class Redirector { | |||||
| /** The thread group used for starting <code>StreamPumper</code> threads */ | /** The thread group used for starting <code>StreamPumper</code> threads */ | ||||
| private ThreadGroup threadGroup = new ThreadGroup("redirector"); | private ThreadGroup threadGroup = new ThreadGroup("redirector"); | ||||
| /** whether to log the inputstring */ | |||||
| private boolean logInputString = true; | |||||
| /** | /** | ||||
| * Create a redirector instance for the given task | * Create a redirector instance for the given task | ||||
| * | * | ||||
| @@ -214,6 +217,16 @@ public class Redirector { | |||||
| this.inputString = inputString; | 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) { | |||||
| this.logInputString = logInputString; | |||||
| } | |||||
| /** | /** | ||||
| * Set a stream to use as input. | * Set a stream to use as input. | ||||
| * | * | ||||
| @@ -577,8 +590,13 @@ public class Redirector { | |||||
| } | } | ||||
| ((ConcatFileInputStream) inputStream).setManagingComponent(managingTask); | ((ConcatFileInputStream) inputStream).setManagingComponent(managingTask); | ||||
| } else if (inputString != null) { | } else if (inputString != null) { | ||||
| managingTask.log("Using input \"" + inputString + "\"", | |||||
| Project.MSG_VERBOSE); | |||||
| StringBuffer buf = new StringBuffer("Using input "); | |||||
| if (logInputString) { | |||||
| buf.append('"').append(inputString).append('"'); | |||||
| } else { | |||||
| buf.append("string"); | |||||
| } | |||||
| managingTask.log(buf.toString(), Project.MSG_VERBOSE); | |||||
| inputStream = new ByteArrayInputStream(inputString.getBytes()); | inputStream = new ByteArrayInputStream(inputString.getBytes()); | ||||
| } | } | ||||
| @@ -1,5 +1,5 @@ | |||||
| /* | /* | ||||
| * Copyright 2004 The Apache Software Foundation. | |||||
| * Copyright 2004-2005 The Apache Software Foundation. | |||||
| * | * | ||||
| * Licensed under the Apache License, Version 2.0 (the "License"); | * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| * you may not use this file except in compliance with the License. | * you may not use this file except in compliance with the License. | ||||
| @@ -98,6 +98,9 @@ public class RedirectorElement extends DataType { | |||||
| /** The input encoding */ | /** The input encoding */ | ||||
| private String inputEncoding; | private String inputEncoding; | ||||
| /** whether to log the inputstring */ | |||||
| private Boolean logInputString; | |||||
| /** | /** | ||||
| * Add the input file mapper. | * Add the input file mapper. | ||||
| * @param inputMapper <CODE>Mapper</CODE>. | * @param inputMapper <CODE>Mapper</CODE>. | ||||
| @@ -210,6 +213,18 @@ public class RedirectorElement extends DataType { | |||||
| this.inputString = inputString; | 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 | * File the output of the process is redirected to. If error is not | ||||
| @@ -439,6 +454,9 @@ public class RedirectorElement extends DataType { | |||||
| if (inputString != null) { | if (inputString != null) { | ||||
| redirector.setInputString(inputString); | redirector.setInputString(inputString); | ||||
| } | } | ||||
| if (logInputString != null) { | |||||
| redirector.setLogInputString(logInputString.booleanValue()); | |||||
| } | |||||
| if (inputMapper != null) { | if (inputMapper != null) { | ||||
| String[] inputTargets = null; | String[] inputTargets = null; | ||||
| try { | try { | ||||
| @@ -1,5 +1,5 @@ | |||||
| /* | /* | ||||
| * Copyright 2004 The Apache Software Foundation. | |||||
| * Copyright 2004-2005 The Apache Software Foundation. | |||||
| * | * | ||||
| * Licensed under the Apache License, Version 2.0 (the "License"); | * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| * you may not use this file except in compliance with the License. | * you may not use this file except in compliance with the License. | ||||
| @@ -16,6 +16,7 @@ | |||||
| */ | */ | ||||
| package org.apache.tools.ant.types; | package org.apache.tools.ant.types; | ||||
| import org.apache.tools.ant.Project; | |||||
| import org.apache.tools.ant.BuildFileTest; | import org.apache.tools.ant.BuildFileTest; | ||||
| public class RedirectorElementTest extends BuildFileTest { | public class RedirectorElementTest extends BuildFileTest { | ||||
| @@ -25,7 +26,7 @@ public class RedirectorElementTest extends BuildFileTest { | |||||
| } | } | ||||
| public void setUp() { | public void setUp() { | ||||
| configureProject("src/etc/testcases/types/redirector.xml"); | |||||
| configureProject("src/etc/testcases/types/redirector.xml", Project.MSG_VERBOSE); | |||||
| } | } | ||||
| public void test1() { | public void test1() { | ||||
| @@ -48,4 +49,8 @@ public class RedirectorElementTest extends BuildFileTest { | |||||
| executeTarget("test4"); | executeTarget("test4"); | ||||
| } | } | ||||
| public void testLogInputString() { | |||||
| executeTarget("testLogInputString"); | |||||
| assertDebuglogContaining("Using input string"); | |||||
| } | |||||
| } | } | ||||