antoine 2003/09/13 05:37:04 Modified: src/testcases/org/apache/tools/ant/util UnPackageNameMapperTest.java src/main/org/apache/tools/ant/taskdefs/optional/net RExecTask.java src/main/org/apache/tools/ant/taskdefs/optional/javacc JJDoc.java docs/manual/CoreTypes zipfileset.html docs/manual/OptionalTasks jjdoc.html rexec.html Log: Removed hard coded \n from files. Thanks to a remark of Larry Shatzer (Larry dot Shatzer at Spirent dot com). Revision Changes Path 1.2 +76 -76 ant/src/testcases/org/apache/tools/ant/util/UnPackageNameMapperTest.java Index: UnPackageNameMapperTest.java =================================================================== RCS file: /home/cvs/ant/src/testcases/org/apache/tools/ant/util/UnPackageNameMapperTest.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- UnPackageNameMapperTest.java 16 Jun 2003 09:28:29 -0000 1.1 +++ UnPackageNameMapperTest.java 13 Sep 2003 12:37:04 -0000 1.2 @@ -1,76 +1,76 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2003 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. - * - * 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. - * - * 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. - * - * 4. The names "Ant" 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 [EMAIL PROTECTED] - * - * 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. - * - * 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 - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * 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 - * <http://www.apache.org/>. - */ -package org.apache.tools.ant.util; - -import java.io.File; -import junit.framework.TestCase; - -public class UnPackageNameMapperTest extends TestCase { - public UnPackageNameMapperTest(String name) { super(name); } - - public void testMapping() { - UnPackageNameMapper mapper = new UnPackageNameMapper(); - mapper.setFrom("TEST-*.xml"); - mapper.setTo("*.java"); - String file ="TEST-org.apache.tools.ant.util.UnPackageNameMapperTest.xml"; - String result = mapper.mapFileName(file)[0]; - String expected = fixupPath("org/apache/tools/ant/util/UnPackageNameMapperTest.java"); - - assertEquals(expected, result); - } - - private String fixupPath(String file) { - return file.replace('/', File.separatorChar); - } -} +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2003 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. + * + * 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. + * + * 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. + * + * 4. The names "Ant" 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 [EMAIL PROTECTED] + * + * 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. + * + * 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 + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * 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 + * <http://www.apache.org/>. + */ +package org.apache.tools.ant.util; + +import java.io.File; +import junit.framework.TestCase; + +public class UnPackageNameMapperTest extends TestCase { + public UnPackageNameMapperTest(String name) { super(name); } + + public void testMapping() { + UnPackageNameMapper mapper = new UnPackageNameMapper(); + mapper.setFrom("TEST-*.xml"); + mapper.setTo("*.java"); + String file ="TEST-org.apache.tools.ant.util.UnPackageNameMapperTest.xml"; + String result = mapper.mapFileName(file)[0]; + String expected = fixupPath("org/apache/tools/ant/util/UnPackageNameMapperTest.java"); + + assertEquals(expected, result); + } + + private String fixupPath(String file) { + return file.replace('/', File.separatorChar); + } +} 1.4 +433 -433 ant/src/main/org/apache/tools/ant/taskdefs/optional/net/RExecTask.java Index: RExecTask.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/net/RExecTask.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- RExecTask.java 19 Jul 2003 11:20:20 -0000 1.3 +++ RExecTask.java 13 Sep 2003 12:37:04 -0000 1.4 @@ -1,433 +1,433 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2003 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. - * - * 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. - * - * 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. - * - * 4. The names "Ant" 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 [EMAIL PROTECTED] - * - * 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. - * - * 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 - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * 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 - * <http://www.apache.org/>. - */ - -package org.apache.tools.ant.taskdefs.optional.net; - -import org.apache.commons.net.bsd.RExecClient; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Calendar; -import java.util.Enumeration; -import java.util.Vector; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.Task; - -/** - * Automates the rexec protocol. - * - * @since Ant 1.6 - */ - -public class RExecTask extends Task { - /** - * The userid to login with, if automated login is used - */ - private String userid = null; - - /** - * The password to login with, if automated login is used - */ - private String password = null; - - /** - * The command to execute - */ - private String command = null; - - /** - * The server to connect to. - */ - private String server = null; - - /** - * The tcp port to connect to. - */ - private int port = RExecClient.DEFAULT_PORT; - - /** - * The Object which handles the rexec session. - */ - private AntRExecClient rexec = null; - - /** - * The list of read/write commands for this session - */ - private Vector rexecTasks = new Vector(); - - /** - * If true, adds a CR to beginning of login script - */ - private boolean addCarriageReturn = false; - - /** - * Default time allowed for waiting for a valid response - * for all child reads. A value of 0 means no limit. - */ - private Integer defaultTimeout = null; - - /** - * This class is the parent of the Read and Write tasks. - * It handles the common attributes for both. - */ - public class RExecSubTask { - protected String taskString = ""; - public void execute(AntRExecClient rexec) - throws BuildException { - throw new BuildException("Shouldn't be able instantiate a SubTask directly"); - } - - /** - * the message as nested text - */ - public void addText(String s) { - setString(getProject().replaceProperties(s)); - } - - /** - * the message as an attribute - */ - public void setString(String s) { - taskString += s; - } - } - - /** - * Sends text to the connected server - */ - public class RExecWrite extends RExecSubTask { - private boolean echoString = true; - public void execute(AntRExecClient rexec) - throws BuildException { - rexec.sendString(taskString, echoString); - } - - /** - * Whether or not the message should be echoed to the log. - * Defaults to <code>true</code>. - */ - public void setEcho(boolean b) { - echoString = b; - } - } - - /** - * Reads the output from the connected server - * until the required string is found or we time out. - */ - public class RExecRead extends RExecSubTask { - private Integer timeout = null; - public void execute(AntRExecClient rexec) - throws BuildException { - rexec.waitForString(taskString, timeout); - } - /** - * a timeout value that overrides any task wide timeout. - */ - public void setTimeout(Integer i) { - this.timeout = i; - } - - /** - * Sets the default timeout if none has been set already - * @ant.attribute ignore="true" - */ - public void setDefaultTimeout(Integer defaultTimeout) { - if (timeout == null) { - timeout = defaultTimeout; - } - } - } - - /** - * This class handles the abstraction of the rexec protocol. - * Currently it is a wrapper around <a - * href="http://jakarta.apache.org/commons/net/index.html">Jakarta - * Commons Net</a>. - */ - public class AntRExecClient extends RExecClient { - /** - * Read from the rexec session until the string we are - * waiting for is found - * @param s The string to wait on - */ - public void waitForString(String s) { - waitForString(s, null); - } - - /** - * Read from the rexec session until the string we are - * waiting for is found or the timeout has been reached - * @param s The string to wait on - * @param timeout The maximum number of seconds to wait - */ - public void waitForString(String s, Integer timeout) { - InputStream is = this.getInputStream(); - try { - StringBuffer sb = new StringBuffer(); - if (timeout == null || timeout.intValue() == 0) { - while (sb.toString().indexOf(s) == -1) { - sb.append((char) is.read()); - } - } else { - Calendar endTime = Calendar.getInstance(); - endTime.add(Calendar.SECOND, timeout.intValue()); - while (sb.toString().indexOf(s) == -1) { - while (Calendar.getInstance().before(endTime) - && is.available() == 0) { - Thread.sleep(250); - } - if (is.available() == 0) { - throw new BuildException( - "Response timed-out waiting for \"" + s + '\"', - getLocation()); - } - sb.append((char) is.read()); - } - } - log(sb.toString(), Project.MSG_INFO); - } catch (BuildException be) { - throw be; - } catch (Exception e) { - throw new BuildException(e, getLocation()); - } - } - - /** - * Write this string to the rexec session. - * @param echoString Logs string sent - */ - public void sendString(String s, boolean echoString) { - OutputStream os = this.getOutputStream(); - try { - os.write((s + "\n").getBytes()); - if (echoString) { - log(s, Project.MSG_INFO); - } - os.flush(); - } catch (Exception e) { - throw new BuildException(e, getLocation()); - } - } - /** - * Read from the rexec session until the EOF is found or - * the timeout has been reached - * @param timeout The maximum number of seconds to wait - */ - public void waitForEOF(Integer timeout) { - InputStream is = this.getInputStream(); - try { - StringBuffer sb = new StringBuffer(); - if (timeout == null || timeout.intValue() == 0) { - int read; - while ((read = is.read()) != -1) { - char c = (char) read; - sb.append(c); - if (c == '\n') { - log(sb.toString(), Project.MSG_INFO); - sb.delete(0, sb.length()); - } - } - } else { - Calendar endTime = Calendar.getInstance(); - endTime.add(Calendar.SECOND, timeout.intValue()); - int read = 0; - while (read != -1) { - while (Calendar.getInstance().before(endTime) && is.available() == 0) { - Thread.sleep(250); - } - if (is.available() == 0) { - log(sb.toString(), Project.MSG_INFO); - throw new BuildException( - "Response timed-out waiting for EOF", - getLocation()); - } - read = is.read(); - if (read != -1) { - char c = (char) read; - sb.append(c); - if (c == '\n') { - log(sb.toString(), Project.MSG_INFO); - sb.delete(0, sb.length()); - } - } - } - } - if (sb.length() > 0) { - log(sb.toString(), Project.MSG_INFO); - } - } catch (BuildException be) { - throw be; - } catch (Exception e) { - throw new BuildException(e, getLocation()); - } - } - - } - /** - * A string to wait for from the server. - * A subTask <read> tag was found. Create the object, - * Save it in our list, and return it. - */ - - public RExecSubTask createRead() { - RExecSubTask task = (RExecSubTask) new RExecRead(); - rexecTasks.addElement(task); - return task; - } - /** - * Add text to send to the server - * A subTask <write> tag was found. Create the object, - * Save it in our list, and return it. - */ - public RExecSubTask createWrite() { - RExecSubTask task = (RExecSubTask) new RExecWrite(); - rexecTasks.addElement(task); - return task; - } - /** - * Verify that all parameters are included. - * Connect and possibly login - * Iterate through the list of Reads and writes - */ - public void execute() throws BuildException { - /** A server name is required to continue */ - if (server == null) { - throw new BuildException("No Server Specified"); - } - /** A userid and password must appear together - * if they appear. They are not required. - */ - if (userid == null && password != null) { - throw new BuildException("No Userid Specified"); - } - if (password == null && userid != null) { - throw new BuildException("No Password Specified"); - } - - /** Create the telnet client object */ - rexec = new AntRExecClient(); - try { - rexec.connect(server, port); - } catch (IOException e) { - throw new BuildException("Can't connect to " + server); - } - /** Login if userid and password were specified */ - if (userid != null && password != null) { - login(); - } - /** Process each sub command */ - Enumeration tasksToRun = rexecTasks.elements(); - while (tasksToRun != null && tasksToRun.hasMoreElements()) { - RExecSubTask task = (RExecSubTask) tasksToRun.nextElement(); - if (task instanceof RExecRead && defaultTimeout != null) { - ((RExecRead) task).setDefaultTimeout(defaultTimeout); - } - task.execute(rexec); - } - - /** Keep reading input stream until end of it or time-out */ - rexec.waitForEOF(defaultTimeout); - } - /** - * Process a 'typical' login. If it differs, use the read - * and write tasks explicitely - */ - private void login() { - if (addCarriageReturn) { - rexec.sendString("\n", true); - } - rexec.waitForString("ogin:"); - rexec.sendString(userid, true); - rexec.waitForString("assword:"); - rexec.sendString(password, false); - } - /** - * Set the the comand to execute on the server; - */ - public void setCommand(String c) { this.command = c; } - /** - * send a carriage return after connecting; optional, defaults to false. - */ - public void setInitialCR(boolean b) { - this.addCarriageReturn = b; - } - /** - * Set the the login password to use - * required if <tt>userid</tt> is set. - */ - public void setPassword(String p) { this.password = p; } - /** - * Set the tcp port to connect to; default is 23. - */ - public void setPort(int p) { this.port = p; } - /** - * Set the hostname or address of the remote server. - */ - public void setServer(String m) { this.server = m; } - /** - * set a default timeout in seconds to wait for a response, - * zero means forever (the default) - */ - public void setTimeout(Integer i) { - this.defaultTimeout = i; - } - /** - * Set the the login id to use on the server; - * required if <tt>password</tt> is set. - */ - public void setUserid(String u) { this.userid = u; } -} +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2003 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. + * + * 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. + * + * 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. + * + * 4. The names "Ant" 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 [EMAIL PROTECTED] + * + * 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. + * + * 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 + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * 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 + * <http://www.apache.org/>. + */ + +package org.apache.tools.ant.taskdefs.optional.net; + +import org.apache.commons.net.bsd.RExecClient; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.Calendar; +import java.util.Enumeration; +import java.util.Vector; +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.Task; + +/** + * Automates the rexec protocol. + * + * @since Ant 1.6 + */ + +public class RExecTask extends Task { + /** + * The userid to login with, if automated login is used + */ + private String userid = null; + + /** + * The password to login with, if automated login is used + */ + private String password = null; + + /** + * The command to execute + */ + private String command = null; + + /** + * The server to connect to. + */ + private String server = null; + + /** + * The tcp port to connect to. + */ + private int port = RExecClient.DEFAULT_PORT; + + /** + * The Object which handles the rexec session. + */ + private AntRExecClient rexec = null; + + /** + * The list of read/write commands for this session + */ + private Vector rexecTasks = new Vector(); + + /** + * If true, adds a CR to beginning of login script + */ + private boolean addCarriageReturn = false; + + /** + * Default time allowed for waiting for a valid response + * for all child reads. A value of 0 means no limit. + */ + private Integer defaultTimeout = null; + + /** + * This class is the parent of the Read and Write tasks. + * It handles the common attributes for both. + */ + public class RExecSubTask { + protected String taskString = ""; + public void execute(AntRExecClient rexec) + throws BuildException { + throw new BuildException("Shouldn't be able instantiate a SubTask directly"); + } + + /** + * the message as nested text + */ + public void addText(String s) { + setString(getProject().replaceProperties(s)); + } + + /** + * the message as an attribute + */ + public void setString(String s) { + taskString += s; + } + } + + /** + * Sends text to the connected server + */ + public class RExecWrite extends RExecSubTask { + private boolean echoString = true; + public void execute(AntRExecClient rexec) + throws BuildException { + rexec.sendString(taskString, echoString); + } + + /** + * Whether or not the message should be echoed to the log. + * Defaults to <code>true</code>. + */ + public void setEcho(boolean b) { + echoString = b; + } + } + + /** + * Reads the output from the connected server + * until the required string is found or we time out. + */ + public class RExecRead extends RExecSubTask { + private Integer timeout = null; + public void execute(AntRExecClient rexec) + throws BuildException { + rexec.waitForString(taskString, timeout); + } + /** + * a timeout value that overrides any task wide timeout. + */ + public void setTimeout(Integer i) { + this.timeout = i; + } + + /** + * Sets the default timeout if none has been set already + * @ant.attribute ignore="true" + */ + public void setDefaultTimeout(Integer defaultTimeout) { + if (timeout == null) { + timeout = defaultTimeout; + } + } + } + + /** + * This class handles the abstraction of the rexec protocol. + * Currently it is a wrapper around <a + * href="http://jakarta.apache.org/commons/net/index.html">Jakarta + * Commons Net</a>. + */ + public class AntRExecClient extends RExecClient { + /** + * Read from the rexec session until the string we are + * waiting for is found + * @param s The string to wait on + */ + public void waitForString(String s) { + waitForString(s, null); + } + + /** + * Read from the rexec session until the string we are + * waiting for is found or the timeout has been reached + * @param s The string to wait on + * @param timeout The maximum number of seconds to wait + */ + public void waitForString(String s, Integer timeout) { + InputStream is = this.getInputStream(); + try { + StringBuffer sb = new StringBuffer(); + if (timeout == null || timeout.intValue() == 0) { + while (sb.toString().indexOf(s) == -1) { + sb.append((char) is.read()); + } + } else { + Calendar endTime = Calendar.getInstance(); + endTime.add(Calendar.SECOND, timeout.intValue()); + while (sb.toString().indexOf(s) == -1) { + while (Calendar.getInstance().before(endTime) + && is.available() == 0) { + Thread.sleep(250); + } + if (is.available() == 0) { + throw new BuildException( + "Response timed-out waiting for \"" + s + '\"', + getLocation()); + } + sb.append((char) is.read()); + } + } + log(sb.toString(), Project.MSG_INFO); + } catch (BuildException be) { + throw be; + } catch (Exception e) { + throw new BuildException(e, getLocation()); + } + } + + /** + * Write this string to the rexec session. + * @param echoString Logs string sent + */ + public void sendString(String s, boolean echoString) { + OutputStream os = this.getOutputStream(); + try { + os.write((s + "\n").getBytes()); + if (echoString) { + log(s, Project.MSG_INFO); + } + os.flush(); + } catch (Exception e) { + throw new BuildException(e, getLocation()); + } + } + /** + * Read from the rexec session until the EOF is found or + * the timeout has been reached + * @param timeout The maximum number of seconds to wait + */ + public void waitForEOF(Integer timeout) { + InputStream is = this.getInputStream(); + try { + StringBuffer sb = new StringBuffer(); + if (timeout == null || timeout.intValue() == 0) { + int read; + while ((read = is.read()) != -1) { + char c = (char) read; + sb.append(c); + if (c == '\n') { + log(sb.toString(), Project.MSG_INFO); + sb.delete(0, sb.length()); + } + } + } else { + Calendar endTime = Calendar.getInstance(); + endTime.add(Calendar.SECOND, timeout.intValue()); + int read = 0; + while (read != -1) { + while (Calendar.getInstance().before(endTime) && is.available() == 0) { + Thread.sleep(250); + } + if (is.available() == 0) { + log(sb.toString(), Project.MSG_INFO); + throw new BuildException( + "Response timed-out waiting for EOF", + getLocation()); + } + read = is.read(); + if (read != -1) { + char c = (char) read; + sb.append(c); + if (c == '\n') { + log(sb.toString(), Project.MSG_INFO); + sb.delete(0, sb.length()); + } + } + } + } + if (sb.length() > 0) { + log(sb.toString(), Project.MSG_INFO); + } + } catch (BuildException be) { + throw be; + } catch (Exception e) { + throw new BuildException(e, getLocation()); + } + } + + } + /** + * A string to wait for from the server. + * A subTask <read> tag was found. Create the object, + * Save it in our list, and return it. + */ + + public RExecSubTask createRead() { + RExecSubTask task = (RExecSubTask) new RExecRead(); + rexecTasks.addElement(task); + return task; + } + /** + * Add text to send to the server + * A subTask <write> tag was found. Create the object, + * Save it in our list, and return it. + */ + public RExecSubTask createWrite() { + RExecSubTask task = (RExecSubTask) new RExecWrite(); + rexecTasks.addElement(task); + return task; + } + /** + * Verify that all parameters are included. + * Connect and possibly login + * Iterate through the list of Reads and writes + */ + public void execute() throws BuildException { + /** A server name is required to continue */ + if (server == null) { + throw new BuildException("No Server Specified"); + } + /** A userid and password must appear together + * if they appear. They are not required. + */ + if (userid == null && password != null) { + throw new BuildException("No Userid Specified"); + } + if (password == null && userid != null) { + throw new BuildException("No Password Specified"); + } + + /** Create the telnet client object */ + rexec = new AntRExecClient(); + try { + rexec.connect(server, port); + } catch (IOException e) { + throw new BuildException("Can't connect to " + server); + } + /** Login if userid and password were specified */ + if (userid != null && password != null) { + login(); + } + /** Process each sub command */ + Enumeration tasksToRun = rexecTasks.elements(); + while (tasksToRun != null && tasksToRun.hasMoreElements()) { + RExecSubTask task = (RExecSubTask) tasksToRun.nextElement(); + if (task instanceof RExecRead && defaultTimeout != null) { + ((RExecRead) task).setDefaultTimeout(defaultTimeout); + } + task.execute(rexec); + } + + /** Keep reading input stream until end of it or time-out */ + rexec.waitForEOF(defaultTimeout); + } + /** + * Process a 'typical' login. If it differs, use the read + * and write tasks explicitely + */ + private void login() { + if (addCarriageReturn) { + rexec.sendString("\n", true); + } + rexec.waitForString("ogin:"); + rexec.sendString(userid, true); + rexec.waitForString("assword:"); + rexec.sendString(password, false); + } + /** + * Set the the comand to execute on the server; + */ + public void setCommand(String c) { this.command = c; } + /** + * send a carriage return after connecting; optional, defaults to false. + */ + public void setInitialCR(boolean b) { + this.addCarriageReturn = b; + } + /** + * Set the the login password to use + * required if <tt>userid</tt> is set. + */ + public void setPassword(String p) { this.password = p; } + /** + * Set the tcp port to connect to; default is 23. + */ + public void setPort(int p) { this.port = p; } + /** + * Set the hostname or address of the remote server. + */ + public void setServer(String m) { this.server = m; } + /** + * set a default timeout in seconds to wait for a response, + * zero means forever (the default) + */ + public void setTimeout(Integer i) { + this.defaultTimeout = i; + } + /** + * Set the the login id to use on the server; + * required if <tt>password</tt> is set. + */ + public void setUserid(String u) { this.userid = u; } +} 1.4 +242 -242 ant/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJDoc.java Index: JJDoc.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJDoc.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- JJDoc.java 1 Aug 2003 10:08:12 -0000 1.3 +++ JJDoc.java 13 Sep 2003 12:37:04 -0000 1.4 @@ -1,242 +1,242 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2003 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. - * - * 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. - * - * 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. - * - * 4. The names "Ant" 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 [EMAIL PROTECTED] - * - * 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. - * - * 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 - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * 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 - * <http://www.apache.org/>. - */ - -package org.apache.tools.ant.taskdefs.optional.javacc; - -import java.io.File; -import java.io.IOException; -import java.util.Enumeration; -import java.util.Hashtable; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.Task; -import org.apache.tools.ant.taskdefs.Execute; -import org.apache.tools.ant.taskdefs.LogStreamHandler; -import org.apache.tools.ant.types.Commandline; -import org.apache.tools.ant.types.CommandlineJava; -import org.apache.tools.ant.types.Path; -import org.apache.tools.ant.util.JavaEnvUtils; - -/** - * Runs the JJDoc compiler compiler. - * - * @author Jene Jasper <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> - * @author [EMAIL PROTECTED] - * @author Michael Saunders - * <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> - */ -public class JJDoc extends Task { - - // keys to optional attributes - private static final String OUTPUT_FILE = "OUTPUT_FILE"; - private static final String TEXT = "TEXT"; - private static final String ONE_TABLE = "ONE_TABLE"; - - private final Hashtable optionalAttrs = new Hashtable(); - - private String outputFile = null; - private boolean plainText = false; - - private static final String DEFAULT_SUFFIX_HTML = ".html"; - private static final String DEFAULT_SUFFIX_TEXT = ".txt"; - - // required attributes - private File target = null; - private File javaccHome = null; - - private CommandlineJava cmdl = new CommandlineJava(); - - - /** - * Sets the TEXT BNF documentation option. - */ - public void setText(boolean plainText) { - optionalAttrs.put(TEXT, new Boolean(plainText)); - this.plainText = plainText; - } - - /** - * Sets the ONE_TABLE documentation option. - */ - public void setOnetable(boolean oneTable) { - optionalAttrs.put(ONE_TABLE, new Boolean(oneTable)); - } - - /** - * The outputfile to write the generated BNF documentation file to. - * If not set, the file is written with the same name as - * the JavaCC grammar file with a suffix .html or .txt. - */ - public void setOutputfile(String outputFile) { - this.outputFile = outputFile; - } - - /** - * The javacc grammar file to process. - */ - public void setTarget(File target) { - this.target = target; - } - - /** - * The directory containing the JavaCC distribution. - */ - public void setJavacchome(File javaccHome) { - this.javaccHome = javaccHome; - } - - public JJDoc() { - cmdl.setVm(JavaEnvUtils.getJreExecutable("java")); - } - - public void execute() throws BuildException { - - // load command line with optional attributes - Enumeration iter = optionalAttrs.keys(); - while (iter.hasMoreElements()) { - String name = (String) iter.nextElement(); - Object value = optionalAttrs.get(name); - cmdl.createArgument() - .setValue("-" + name + ":" + value.toString()); - } - - if (target == null || !target.isFile()) { - throw new BuildException("Invalid target: " + target); - } - - if (outputFile != null) { - cmdl.createArgument() .setValue("-" + OUTPUT_FILE + ":" - + outputFile.replace('\\', '/')); - } - - // use the directory containing the target as the output directory - File javaFile = new File(createOutputFileName(target, outputFile, - plainText)); - - if (javaFile.exists() - && target.lastModified() < javaFile.lastModified()) { - log("Target is already built - skipping (" + target + ")", - Project.MSG_VERBOSE); - return; - } - - cmdl.createArgument().setValue(target.getAbsolutePath()); - - cmdl.setClassname(JavaCC.getMainClass(javaccHome, - JavaCC.TASKDEF_TYPE_JJDOC)); - - final Path classpath = cmdl.createClasspath(getProject()); - final File javaccJar = JavaCC.getArchiveFile(javaccHome); - classpath.createPathElement().setPath(javaccJar.getAbsolutePath()); - classpath.addJavaRuntime(); - - final Commandline.Argument arg = cmdl.createVmArgument(); - arg.setValue("-mx140M"); - arg.setValue("-Dinstall.root=" + javaccHome.getAbsolutePath()); - - final Execute process = - new Execute(new LogStreamHandler(this, - Project.MSG_INFO, - Project.MSG_INFO), - null); - log(cmdl.describeCommand(), Project.MSG_VERBOSE); - process.setCommandline(cmdl.getCommandline()); - - try { - if (process.execute() != 0) { - throw new BuildException("JJDoc failed."); - } - } catch (IOException e) { - throw new BuildException("Failed to launch JJDoc", e); - } - } - - private String createOutputFileName(File target, String optionalOutputFile, - boolean plainText) { - String suffix = DEFAULT_SUFFIX_HTML; - String javaccFile = target.getAbsolutePath().replace('\\','/'); - - if (plainText) { - suffix = DEFAULT_SUFFIX_TEXT; - } - - if ((optionalOutputFile == null) || optionalOutputFile.equals("")) { - int filePos = javaccFile.lastIndexOf("/"); - - if (filePos >= 0) { - javaccFile = javaccFile.substring(filePos + 1); - } - - int suffixPos = javaccFile.lastIndexOf('.'); - - if (suffixPos == -1) { - optionalOutputFile = javaccFile + suffix; - } else { - String currentSuffix = javaccFile.substring(suffixPos); - - if (currentSuffix.equals(suffix)) { - optionalOutputFile = javaccFile + suffix; - } else { - optionalOutputFile = javaccFile.substring(0, suffixPos) - + suffix; - } - } - } else { - optionalOutputFile = optionalOutputFile.replace('\\','/'); - } - - return (getProject().getBaseDir() + "/" + optionalOutputFile) - .replace('\\', '/'); - } -} +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2003 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. + * + * 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. + * + * 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. + * + * 4. The names "Ant" 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 [EMAIL PROTECTED] + * + * 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. + * + * 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 + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * 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 + * <http://www.apache.org/>. + */ + +package org.apache.tools.ant.taskdefs.optional.javacc; + +import java.io.File; +import java.io.IOException; +import java.util.Enumeration; +import java.util.Hashtable; +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.Task; +import org.apache.tools.ant.taskdefs.Execute; +import org.apache.tools.ant.taskdefs.LogStreamHandler; +import org.apache.tools.ant.types.Commandline; +import org.apache.tools.ant.types.CommandlineJava; +import org.apache.tools.ant.types.Path; +import org.apache.tools.ant.util.JavaEnvUtils; + +/** + * Runs the JJDoc compiler compiler. + * + * @author Jene Jasper <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> + * @author [EMAIL PROTECTED] + * @author Michael Saunders + * <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> + */ +public class JJDoc extends Task { + + // keys to optional attributes + private static final String OUTPUT_FILE = "OUTPUT_FILE"; + private static final String TEXT = "TEXT"; + private static final String ONE_TABLE = "ONE_TABLE"; + + private final Hashtable optionalAttrs = new Hashtable(); + + private String outputFile = null; + private boolean plainText = false; + + private static final String DEFAULT_SUFFIX_HTML = ".html"; + private static final String DEFAULT_SUFFIX_TEXT = ".txt"; + + // required attributes + private File target = null; + private File javaccHome = null; + + private CommandlineJava cmdl = new CommandlineJava(); + + + /** + * Sets the TEXT BNF documentation option. + */ + public void setText(boolean plainText) { + optionalAttrs.put(TEXT, new Boolean(plainText)); + this.plainText = plainText; + } + + /** + * Sets the ONE_TABLE documentation option. + */ + public void setOnetable(boolean oneTable) { + optionalAttrs.put(ONE_TABLE, new Boolean(oneTable)); + } + + /** + * The outputfile to write the generated BNF documentation file to. + * If not set, the file is written with the same name as + * the JavaCC grammar file with a suffix .html or .txt. + */ + public void setOutputfile(String outputFile) { + this.outputFile = outputFile; + } + + /** + * The javacc grammar file to process. + */ + public void setTarget(File target) { + this.target = target; + } + + /** + * The directory containing the JavaCC distribution. + */ + public void setJavacchome(File javaccHome) { + this.javaccHome = javaccHome; + } + + public JJDoc() { + cmdl.setVm(JavaEnvUtils.getJreExecutable("java")); + } + + public void execute() throws BuildException { + + // load command line with optional attributes + Enumeration iter = optionalAttrs.keys(); + while (iter.hasMoreElements()) { + String name = (String) iter.nextElement(); + Object value = optionalAttrs.get(name); + cmdl.createArgument() + .setValue("-" + name + ":" + value.toString()); + } + + if (target == null || !target.isFile()) { + throw new BuildException("Invalid target: " + target); + } + + if (outputFile != null) { + cmdl.createArgument() .setValue("-" + OUTPUT_FILE + ":" + + outputFile.replace('\\', '/')); + } + + // use the directory containing the target as the output directory + File javaFile = new File(createOutputFileName(target, outputFile, + plainText)); + + if (javaFile.exists() + && target.lastModified() < javaFile.lastModified()) { + log("Target is already built - skipping (" + target + ")", + Project.MSG_VERBOSE); + return; + } + + cmdl.createArgument().setValue(target.getAbsolutePath()); + + cmdl.setClassname(JavaCC.getMainClass(javaccHome, + JavaCC.TASKDEF_TYPE_JJDOC)); + + final Path classpath = cmdl.createClasspath(getProject()); + final File javaccJar = JavaCC.getArchiveFile(javaccHome); + classpath.createPathElement().setPath(javaccJar.getAbsolutePath()); + classpath.addJavaRuntime(); + + final Commandline.Argument arg = cmdl.createVmArgument(); + arg.setValue("-mx140M"); + arg.setValue("-Dinstall.root=" + javaccHome.getAbsolutePath()); + + final Execute process = + new Execute(new LogStreamHandler(this, + Project.MSG_INFO, + Project.MSG_INFO), + null); + log(cmdl.describeCommand(), Project.MSG_VERBOSE); + process.setCommandline(cmdl.getCommandline()); + + try { + if (process.execute() != 0) { + throw new BuildException("JJDoc failed."); + } + } catch (IOException e) { + throw new BuildException("Failed to launch JJDoc", e); + } + } + + private String createOutputFileName(File target, String optionalOutputFile, + boolean plainText) { + String suffix = DEFAULT_SUFFIX_HTML; + String javaccFile = target.getAbsolutePath().replace('\\','/'); + + if (plainText) { + suffix = DEFAULT_SUFFIX_TEXT; + } + + if ((optionalOutputFile == null) || optionalOutputFile.equals("")) { + int filePos = javaccFile.lastIndexOf("/"); + + if (filePos >= 0) { + javaccFile = javaccFile.substring(filePos + 1); + } + + int suffixPos = javaccFile.lastIndexOf('.'); + + if (suffixPos == -1) { + optionalOutputFile = javaccFile + suffix; + } else { + String currentSuffix = javaccFile.substring(suffixPos); + + if (currentSuffix.equals(suffix)) { + optionalOutputFile = javaccFile + suffix; + } else { + optionalOutputFile = javaccFile.substring(0, suffixPos) + + suffix; + } + } + } else { + optionalOutputFile = optionalOutputFile.replace('\\','/'); + } + + return (getProject().getBaseDir() + "/" + optionalOutputFile) + .replace('\\', '/'); + } +} 1.2 +96 -96 ant/docs/manual/CoreTypes/zipfileset.html Index: zipfileset.html =================================================================== RCS file: /home/cvs/ant/docs/manual/CoreTypes/zipfileset.html,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- zipfileset.html 18 Apr 2003 22:02:58 -0000 1.1 +++ zipfileset.html 13 Sep 2003 12:37:04 -0000 1.2 @@ -1,96 +1,96 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <meta http-equiv="Content-Language" content="en-us"> - <title>ZipFileSet Type</title> -</head> -<body> -<h2><a name="fileset">ZipFileSet</a></h2> -<p>A <code><zipfileset></code> is a special form of a <code><<a - href="fileset.html">fileset</a>></code> which can behave in 2 -different ways : <br> -</p> -<ul> - <li>When the <span style="font-style: italic;">src</span> attribute -is used, the zipfileset is populated with zip entries found in the file <span - style="font-style: italic;">src</span>.<br> - </li> - <li>When the <span style="font-style: italic;">dir</span> attribute -is used, the zipfileset is populated with filesystem files found under <span - style="font-style: italic;">dir</span>.<br> - </li> -</ul> -<p><code><zipfileset></code> supports all attributes of <code><<a - href="file:///C:/dev/gnu/ant/docs/manual/CoreTypes/fileset.html">fileset</a>></code> -in addition to those listed below.<br> -</p> -<p>Since Ant 1.6, a zipfileset can be defined with the <span - style="font-style: italic;">id </span>attribute and referred to with -the <span style="font-style: italic;">refid</span> attribute.<br> -</p> -<h3>Parameters</h3> -<table border="1" cellpadding="2" cellspacing="0"> - <tbody> - <tr> - <td valign="top"><b>Attribute</b></td> - <td valign="top"><b>Description</b></td> - <td valign="top" align="center"><b>Required</b></td> - </tr> - <tr> - <td valign="top">prefix</td> - <td valign="top">all files in the fileset are prefixed with that -path in the archive.</td> - <td align="center" valign="top">No</td> - </tr> - <tr> - <td valign="top">fullpath</td> - <td valign="top">the file described by the fileset is placed at -that exact location in the archive.</td> - <td align="center" valign="top">No</td> - </tr> - <tr> - <td valign="top">src</td> - <td valign="top">may be used in place of the <i>dir</i> attribute - to specify a zip file whose contents will be extracted and included -in the archive.</td> - <td align="center" valign="top">No</td> - </tr> - <tr> - <td valign="top">filemode</td> - <td valign="top">A 3 digit octal string, specify the user, group -and other modes in the standard Unix fashion. Only applies to -plain files. Default is 644. <em>since Ant 1.5.2</em>.</td> - <td align="center" valign="top">No</td> - </tr> - <tr> - <td valign="top">dirmode</td> - <td valign="top">A 3 digit octal string, specify the user, group -and other modes in the standard Unix fashion. Only applies to -directories. Default is 755. <em>since Ant 1.5.2</em>.</td> - <td align="center" valign="top">No</td> - </tr> - </tbody> -</table> -<p>The <i>fullpath</i> attribute can only be set for filesets that -represent a single file. The <i>prefix</i> and <i>fullpath</i> -attributes cannot both be set on the same fileset.</p> -<p>When using the <i>src</i> attribute, include and exclude patterns -may be used to specify a subset of the zip file for inclusion in the -archive as with the <i>dir</i> attribute.</p> -<h4>Examples</h4> -<blockquote> - <pre> <zip destfile="${dist}/manual.zip"><br> <zipfileset dir="htdocs/manual" prefix="docs/user-guide"/><br> <zipfileset dir="." includes="ChangeLog27.txt" fullpath="docs/ChangeLog.txt"/><br> <zipfileset src="examples.zip" includes="**/*.html" prefix="docs/examples"/><br> </zip><br></pre> - <p>zips all files in the <code>htdocs/manual</code> directory into -the <code>docs/user-guide</code> directory in the archive, adds the -file <code>ChangeLog27.txt</code> in the current directory as <code>docs/ChangeLog.txt</code>, -and includes all the html files in <code>examples.zip</code> under <code>docs/examples</code>. -The archive might end up containing the files:</p> - <code> docs/user-guide/html/index.html<br> -docs/ChangeLog.txt<br> -docs/examples/index.html<br> - </code></blockquote> -<hr> -<p align="center">Copyright © 2003 Apache Software Foundation. All -rights Reserved.</p> -</body> -</html> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> + <meta http-equiv="Content-Language" content="en-us"> + <title>ZipFileSet Type</title> +</head> +<body> +<h2><a name="fileset">ZipFileSet</a></h2> +<p>A <code><zipfileset></code> is a special form of a <code><<a + href="fileset.html">fileset</a>></code> which can behave in 2 +different ways : <br> +</p> +<ul> + <li>When the <span style="font-style: italic;">src</span> attribute +is used, the zipfileset is populated with zip entries found in the file <span + style="font-style: italic;">src</span>.<br> + </li> + <li>When the <span style="font-style: italic;">dir</span> attribute +is used, the zipfileset is populated with filesystem files found under <span + style="font-style: italic;">dir</span>.<br> + </li> +</ul> +<p><code><zipfileset></code> supports all attributes of <code><<a + href="file:///C:/dev/gnu/ant/docs/manual/CoreTypes/fileset.html">fileset</a>></code> +in addition to those listed below.<br> +</p> +<p>Since Ant 1.6, a zipfileset can be defined with the <span + style="font-style: italic;">id </span>attribute and referred to with +the <span style="font-style: italic;">refid</span> attribute.<br> +</p> +<h3>Parameters</h3> +<table border="1" cellpadding="2" cellspacing="0"> + <tbody> + <tr> + <td valign="top"><b>Attribute</b></td> + <td valign="top"><b>Description</b></td> + <td valign="top" align="center"><b>Required</b></td> + </tr> + <tr> + <td valign="top">prefix</td> + <td valign="top">all files in the fileset are prefixed with that +path in the archive.</td> + <td align="center" valign="top">No</td> + </tr> + <tr> + <td valign="top">fullpath</td> + <td valign="top">the file described by the fileset is placed at +that exact location in the archive.</td> + <td align="center" valign="top">No</td> + </tr> + <tr> + <td valign="top">src</td> + <td valign="top">may be used in place of the <i>dir</i> attribute + to specify a zip file whose contents will be extracted and included +in the archive.</td> + <td align="center" valign="top">No</td> + </tr> + <tr> + <td valign="top">filemode</td> + <td valign="top">A 3 digit octal string, specify the user, group +and other modes in the standard Unix fashion. Only applies to +plain files. Default is 644. <em>since Ant 1.5.2</em>.</td> + <td align="center" valign="top">No</td> + </tr> + <tr> + <td valign="top">dirmode</td> + <td valign="top">A 3 digit octal string, specify the user, group +and other modes in the standard Unix fashion. Only applies to +directories. Default is 755. <em>since Ant 1.5.2</em>.</td> + <td align="center" valign="top">No</td> + </tr> + </tbody> +</table> +<p>The <i>fullpath</i> attribute can only be set for filesets that +represent a single file. The <i>prefix</i> and <i>fullpath</i> +attributes cannot both be set on the same fileset.</p> +<p>When using the <i>src</i> attribute, include and exclude patterns +may be used to specify a subset of the zip file for inclusion in the +archive as with the <i>dir</i> attribute.</p> +<h4>Examples</h4> +<blockquote> + <pre> <zip destfile="${dist}/manual.zip"><br> <zipfileset dir="htdocs/manual" prefix="docs/user-guide"/><br> <zipfileset dir="." includes="ChangeLog27.txt" fullpath="docs/ChangeLog.txt"/><br> <zipfileset src="examples.zip" includes="**/*.html" prefix="docs/examples"/><br> </zip><br></pre> + <p>zips all files in the <code>htdocs/manual</code> directory into +the <code>docs/user-guide</code> directory in the archive, adds the +file <code>ChangeLog27.txt</code> in the current directory as <code>docs/ChangeLog.txt</code>, +and includes all the html files in <code>examples.zip</code> under <code>docs/examples</code>. +The archive might end up containing the files:</p> + <code> docs/user-guide/html/index.html<br> +docs/ChangeLog.txt<br> +docs/examples/index.html<br> + </code></blockquote> +<hr> +<p align="center">Copyright © 2003 Apache Software Foundation. All +rights Reserved.</p> +</body> +</html> 1.2 +101 -101 ant/docs/manual/OptionalTasks/jjdoc.html Index: jjdoc.html =================================================================== RCS file: /home/cvs/ant/docs/manual/OptionalTasks/jjdoc.html,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- jjdoc.html 23 Jul 2003 14:12:11 -0000 1.1 +++ jjdoc.html 13 Sep 2003 12:37:04 -0000 1.2 @@ -1,101 +1,101 @@ -<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> -<html> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <meta http-equiv="Content-Language" content="en-us"> - <title>JJDoc Task</title> -</head> -<body> - -<h2> -<a NAME="jjtree"></a>JJDoc</h2> -<p><em>Since Ant 1.6</em></p> -<h3>Description</h3> - -<p>Invokes the <a href="http://javacc.dev.java.net/">JJDoc</a> preprocessor -for the JavaCC compiler compiler. It takes a JavaCC parser specification -and produces documentation for the BNF grammar. -It can operate in three modes, determined by command line options. -<p>To use the jjdoc task, set the <i>target</i> attribute to the name -of the JavaCC grammar file to process. You also need to specify the directory -containing the JavaCC installation using the <i>javacchome</i> attribute, -so that ant can find the JavaCC classes. Optionally, you can also set the -<i>outputfile</i> to write the generated BNF documentation file to a specific (directory and) file. -Otherwise jjdoc writes the generated BNF documentation file as the JavaCC -grammar file with a suffix .txt or .html.</p> -<p>This task only invokes JJDoc if the grammar file is newer than the -generated BNF documentation file.</p> - -<h3>Parameters</h3> - -<table BORDER CELLSPACING=0 CELLPADDING=2 > -<tr> -<td VALIGN=TOP><b>Attribute</b></td> - -<td VALIGN=TOP><b>Description</b></td> - -<td ALIGN=CENTER VALIGN=TOP><b>Required</b></td> -</tr> - -<tr> -<td VALIGN=TOP>target</td> - -<td VALIGN=TOP>The javacc grammar file to process.</td> - -<td ALIGN=CENTER VALIGN=TOP>Yes</td> -</tr> - -<tr> -<td VALIGN=TOP>javacchome</td> - -<td VALIGN=TOP>The directory containing the JavaCC distribution.</td> - -<td ALIGN=CENTER VALIGN=TOP>Yes</td> -</tr> - -<tr> -<td VALIGN=TOP>outputfile</td> - -<td VALIGN=TOP>The file to write the generated BNF documentation file to. If not set, -the file is written with the same name as the JavaCC grammar file but with a the suffix .html or .txt. </td> - -<td ALIGN=CENTER VALIGN=TOP>No</td> -</tr> - -<tr> -<td VALIGN=TOP>text</td> - -<td VALIGN=TOP>Sets the TEXT BNF documentation option. This is a boolean -option.</td> - -<td ALIGN=CENTER VALIGN=TOP>No</td> -</tr> - -<tr> -<td VALIGN=TOP>onetable</td> - -<td VALIGN=TOP>Sets the ONE_TABLE BNF documentation option. This is a boolean option.</td> - -<td ALIGN=CENTER VALIGN=TOP>No</td> -</tr> -</table> - -<h3> -Example</h3> - -<blockquote> -<pre><jjdoc - target="src/Parser.jj" - outputfile="doc/ParserBNF.html" - javacchome="c:/program files/JavaCC" -/></pre> -</blockquote> -This invokes JJDoc on grammar file src/Parser.jj, writing the generated -BNF documentation file, ParserBNF.html, file to doc. -<br> -<hr> -<p align="center">Copyright © 2003 Apache Software Foundation. All rights -Reserved.</p> -</body> -</html> - +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta http-equiv="Content-Language" content="en-us"> + <title>JJDoc Task</title> +</head> +<body> + +<h2> +<a NAME="jjtree"></a>JJDoc</h2> +<p><em>Since Ant 1.6</em></p> +<h3>Description</h3> + +<p>Invokes the <a href="http://javacc.dev.java.net/">JJDoc</a> preprocessor +for the JavaCC compiler compiler. It takes a JavaCC parser specification +and produces documentation for the BNF grammar. +It can operate in three modes, determined by command line options. +<p>To use the jjdoc task, set the <i>target</i> attribute to the name +of the JavaCC grammar file to process. You also need to specify the directory +containing the JavaCC installation using the <i>javacchome</i> attribute, +so that ant can find the JavaCC classes. Optionally, you can also set the +<i>outputfile</i> to write the generated BNF documentation file to a specific (directory and) file. +Otherwise jjdoc writes the generated BNF documentation file as the JavaCC +grammar file with a suffix .txt or .html.</p> +<p>This task only invokes JJDoc if the grammar file is newer than the +generated BNF documentation file.</p> + +<h3>Parameters</h3> + +<table BORDER CELLSPACING=0 CELLPADDING=2 > +<tr> +<td VALIGN=TOP><b>Attribute</b></td> + +<td VALIGN=TOP><b>Description</b></td> + +<td ALIGN=CENTER VALIGN=TOP><b>Required</b></td> +</tr> + +<tr> +<td VALIGN=TOP>target</td> + +<td VALIGN=TOP>The javacc grammar file to process.</td> + +<td ALIGN=CENTER VALIGN=TOP>Yes</td> +</tr> + +<tr> +<td VALIGN=TOP>javacchome</td> + +<td VALIGN=TOP>The directory containing the JavaCC distribution.</td> + +<td ALIGN=CENTER VALIGN=TOP>Yes</td> +</tr> + +<tr> +<td VALIGN=TOP>outputfile</td> + +<td VALIGN=TOP>The file to write the generated BNF documentation file to. If not set, +the file is written with the same name as the JavaCC grammar file but with a the suffix .html or .txt. </td> + +<td ALIGN=CENTER VALIGN=TOP>No</td> +</tr> + +<tr> +<td VALIGN=TOP>text</td> + +<td VALIGN=TOP>Sets the TEXT BNF documentation option. This is a boolean +option.</td> + +<td ALIGN=CENTER VALIGN=TOP>No</td> +</tr> + +<tr> +<td VALIGN=TOP>onetable</td> + +<td VALIGN=TOP>Sets the ONE_TABLE BNF documentation option. This is a boolean option.</td> + +<td ALIGN=CENTER VALIGN=TOP>No</td> +</tr> +</table> + +<h3> +Example</h3> + +<blockquote> +<pre><jjdoc + target="src/Parser.jj" + outputfile="doc/ParserBNF.html" + javacchome="c:/program files/JavaCC" +/></pre> +</blockquote> +This invokes JJDoc on grammar file src/Parser.jj, writing the generated +BNF documentation file, ParserBNF.html, file to doc. +<br> +<hr> +<p align="center">Copyright © 2003 Apache Software Foundation. All rights +Reserved.</p> +</body> +</html> + 1.2 +96 -96 ant/docs/manual/OptionalTasks/rexec.html Index: rexec.html =================================================================== RCS file: /home/cvs/ant/docs/manual/OptionalTasks/rexec.html,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- rexec.html 13 May 2003 14:37:02 -0000 1.1 +++ rexec.html 13 Sep 2003 12:37:04 -0000 1.2 @@ -1,96 +1,96 @@ -<html> - -<head> -<meta http-equiv="Content-Language" content="en-us"> -<title>RExec Task</title> -</head> - -<body> - -<h2><a name="rexec">RExec</a></h2> -<h3>Description</h3> -Task to automate a remote rexec session. Just like the Telnet task, -it uses nested <tt><read></tt> to indicate strings to wait for, and -<tt><write></tt> tags to specify text to send to the remote process. - -<p><b>Note:</b> This task depends on external libraries not included in the Ant distribution. -See <a href="../install.html#librarydependencies">Library Dependencies</a> for more information.</p> - -<h3>Parameters</h3> -<table border="1" cellpadding="2" cellspacing="0"> - <tr> - <th>Attribute</th> - <th>Values</th> - <th>Required</th> - </tr> - <tr> - <td>userid</td> - <td>the login id to use on the remote server.</td> - <td>Yes</td> - </tr> - <tr> - <td>password</td> - <td>the login password to use on the remote server.</td> - <td>Yes</td> - </tr> - <tr> - <td>server</td> - <td>the address of the remote rexec server.</td> - <td>Yes</td> - </tr> - <tr> - <td>command</td> - <td>the command to execute on the remote server.</td> - <td>Yes</td> - </tr> - <tr> - <td>port</td> - <td>the port number of the remote rexec server. Defaults to port 512 in BSD Unix systems.</td> - <td>No</td> - </tr> - <tr> - <td>timeout</td> - <td>set a default timeout to wait for a response. Specified in seconds. Default is no timeout.</td> - <td>No</td> - </tr> -</table> -<h3><a name="nested">Nested Elements</a></h3> -The input to send to the server, and responses to wait for, are -described as nested elements. - -<h4>read</h4> - -<p>declare (as a text child of this element) a string to wait for. -The element supports the timeout attribute, which overrides any -timeout specified for the task as a whole. It also has a <tt>string</tt> -attribute, which is an alternative to specifying the string as -a text element. -</p> -<i>It is not necessary to declare a closing <read> element like for the Telnet task. The connection is not broken until the command has completed and -the input stream (output of the command) is terminated. -</i> -<h4>write</h4> - -<p>describes the text to send to the server. The <tt>echo</tt> boolean -attribute controls whether the string is echoed to the local log; -this is "true" by default -</p> -<h3>Example</h3> -A simple example of connecting to a server and running a command. - -<blockquote><pre> -<rexec userid="bob" password="badpass" server="localhost" command="ls"/> -</pre></blockquote> - -The task can be used with other ports as well: -<blockquote><pre> -<rexec port="80" userid="bob" password="badpass" server="localhost" command="ls"/> -</pre></blockquote> - -<hr> -<p align="center">Copyright © 2003 Apache Software Foundation. All rights -Reserved.</p> - -</body> -</html> - +<html> + +<head> +<meta http-equiv="Content-Language" content="en-us"> +<title>RExec Task</title> +</head> + +<body> + +<h2><a name="rexec">RExec</a></h2> +<h3>Description</h3> +Task to automate a remote rexec session. Just like the Telnet task, +it uses nested <tt><read></tt> to indicate strings to wait for, and +<tt><write></tt> tags to specify text to send to the remote process. + +<p><b>Note:</b> This task depends on external libraries not included in the Ant distribution. +See <a href="../install.html#librarydependencies">Library Dependencies</a> for more information.</p> + +<h3>Parameters</h3> +<table border="1" cellpadding="2" cellspacing="0"> + <tr> + <th>Attribute</th> + <th>Values</th> + <th>Required</th> + </tr> + <tr> + <td>userid</td> + <td>the login id to use on the remote server.</td> + <td>Yes</td> + </tr> + <tr> + <td>password</td> + <td>the login password to use on the remote server.</td> + <td>Yes</td> + </tr> + <tr> + <td>server</td> + <td>the address of the remote rexec server.</td> + <td>Yes</td> + </tr> + <tr> + <td>command</td> + <td>the command to execute on the remote server.</td> + <td>Yes</td> + </tr> + <tr> + <td>port</td> + <td>the port number of the remote rexec server. Defaults to port 512 in BSD Unix systems.</td> + <td>No</td> + </tr> + <tr> + <td>timeout</td> + <td>set a default timeout to wait for a response. Specified in seconds. Default is no timeout.</td> + <td>No</td> + </tr> +</table> +<h3><a name="nested">Nested Elements</a></h3> +The input to send to the server, and responses to wait for, are +described as nested elements. + +<h4>read</h4> + +<p>declare (as a text child of this element) a string to wait for. +The element supports the timeout attribute, which overrides any +timeout specified for the task as a whole. It also has a <tt>string</tt> +attribute, which is an alternative to specifying the string as +a text element. +</p> +<i>It is not necessary to declare a closing <read> element like for the Telnet task. The connection is not broken until the command has completed and +the input stream (output of the command) is terminated. +</i> +<h4>write</h4> + +<p>describes the text to send to the server. The <tt>echo</tt> boolean +attribute controls whether the string is echoed to the local log; +this is "true" by default +</p> +<h3>Example</h3> +A simple example of connecting to a server and running a command. + +<blockquote><pre> +<rexec userid="bob" password="badpass" server="localhost" command="ls"/> +</pre></blockquote> + +The task can be used with other ports as well: +<blockquote><pre> +<rexec port="80" userid="bob" password="badpass" server="localhost" command="ls"/> +</pre></blockquote> + +<hr> +<p align="center">Copyright © 2003 Apache Software Foundation. All rights +Reserved.</p> + +</body> +</html> +
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]