This commit was manufactured by cvs2svn to create tag 'ANT_154'.

git-svn-id: https://svn.apache.org/repos/asf/ant/core/tags/ANT_154@275053 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/Directory.java b/src/main/org/apache/tools/ant/taskdefs/optional/ssh/Directory.java
deleted file mode 100644
index 988effd..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/Directory.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * 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 apache@apache.org.
- *
- * 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.ssh;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.StringTokenizer;
-import java.io.File;
-
-public class Directory {
-
-    private File directory;
-    private ArrayList childDirectories;
-    private ArrayList files;
-    private Directory parent;
-
-    public Directory(File directory) {
-        this(directory,  null);
-    }
-
-    public Directory(File directory , Directory parent) {
-        this.parent = parent;
-        this.childDirectories = new ArrayList();
-        this.files = new ArrayList();
-        this.directory = directory;
-    }
-
-    public void addDirectory(Directory directory) {
-        if (!childDirectories.contains(directory)) {
-            childDirectories.add(directory);
-        }
-    }
-
-    public void addFile(File file) {
-        files.add(file);
-    }
-
-    public Iterator directoryIterator() {
-        return childDirectories.iterator();
-    }
-
-    public Iterator filesIterator() {
-        return files.iterator();
-    }
-
-    public Directory getParent() {
-        return parent;
-    }
-
-    public boolean isRoot() {
-        return parent == null;
-    }
-
-    public File getDirectory() {
-        return directory;
-    }
-
-    public Directory getChild(File dir) {
-        for (int i = 0; i < childDirectories.size(); i++) {
-            Directory current = (Directory) childDirectories.get(i);
-            if (current.getDirectory().equals(dir)) {
-                return current;
-            }
-        }
-
-        return null;
-    }
-
-    public boolean equals(Object obj) {
-        if (obj == this) {
-            return true;
-        }
-
-        if (!(obj instanceof Directory)) {
-            return false;
-        }
-
-        Directory d = (Directory) obj;
-
-        return this.directory.equals(d.directory);
-    }
-
-    public int hashCode() {
-        return directory.hashCode();
-    }
-
-    public String[] getPath() {
-        return getPath(directory.getAbsolutePath());
-    }
-
-    public static String[] getPath(String thePath) {
-        StringTokenizer tokenizer = new StringTokenizer(thePath,
-                File.separator);
-        String[] path = new String[ tokenizer.countTokens() ];
-
-        int i = 0;
-        while (tokenizer.hasMoreTokens()) {
-            path[i] = tokenizer.nextToken();
-            i++;
-        }
-
-        return path;
-    }
-
-    public int fileSize() {
-        return files.size();
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/LogListener.java b/src/main/org/apache/tools/ant/taskdefs/optional/ssh/LogListener.java
deleted file mode 100644
index a74ee6d..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/LogListener.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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 apache@apache.org.
- *
- * 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.ssh;
-
-public interface LogListener {
-    void log(String message);
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpFromMessage.java b/src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpFromMessage.java
deleted file mode 100644
index 189ca6a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpFromMessage.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * 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 apache@apache.org.
- *
- * 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.ssh;
-
-import java.util.StringTokenizer;
-import java.io.File;
-import java.io.IOException;
-import java.io.EOFException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.FileOutputStream;
-import java.io.ByteArrayOutputStream;
-import com.jcraft.jsch.JSchException;
-import com.jcraft.jsch.Session;
-import com.jcraft.jsch.Channel;
-
-public class ScpFromMessage extends AbstractSshMessage {
-
-    private final byte LINE_FEED = 0x0a;
-    private final int BUFFER_SIZE = 1024;
-
-    private String remoteFile;
-    private File localFile;
-    private boolean isRecursive = false;
-
-    public ScpFromMessage(Session session,
-                           String aRemoteFile,
-                           File aLocalFile,
-                           boolean recursive) {
-        super(session);
-        this.remoteFile = aRemoteFile;
-        this.localFile = aLocalFile;
-        this.isRecursive = recursive;
-    }
-
-    public void execute() throws IOException, JSchException {
-        String command = "scp -f ";
-        if (isRecursive) {
-            command += "-r ";
-        }
-        command += remoteFile;
-        Channel channel = openExecChannel(command);
-        try {
-            // get I/O streams for remote scp
-            OutputStream out = channel.getOutputStream();
-            InputStream in = channel.getInputStream();
-
-            channel.connect();
-
-            sendAck(out);
-            startRemoteCpProtocol(in, out, localFile);
-        } finally {
-            if (channel != null) {
-                channel.disconnect();
-            }
-        }
-        log("done\n");
-    }
-
-    private void startRemoteCpProtocol(InputStream in,
-                                       OutputStream out,
-                                       File localFile) throws IOException {
-        File startFile = localFile;
-        while (true) {
-            // C0644 filesize filename - header for a regular file
-            // T time 0 time 0\n - present if perserve time.
-            // D directory - this is the header for a directory.
-            ByteArrayOutputStream stream = new ByteArrayOutputStream();
-            while (true) {
-                int read = in.read();
-                if (read < 0) {
-                    return;
-                }
-                if ((byte) read == LINE_FEED) {
-                    break;
-                }
-                stream.write(read);
-            }
-            String serverResponse = stream.toString("UTF-8");
-            if (serverResponse.charAt(0) == 'C') {
-                parseAndFetchFile(serverResponse, startFile, out, in);
-            } else if (serverResponse.charAt(0) == 'D') {
-                startFile = parseAndCreateDirectory(serverResponse,
-                        startFile);
-                sendAck(out);
-            } else if (serverResponse.charAt(0) == 'E') {
-                startFile = startFile.getParentFile();
-                sendAck(out);
-            } else if (serverResponse.charAt(0) == '\01'
-                    || serverResponse.charAt(0) == '\02') {
-                // this indicates an error.
-                throw new IOException(serverResponse.substring(1));
-            }
-        }
-    }
-
-    private File parseAndCreateDirectory(String serverResponse,
-                                         File localFile) {
-        StringTokenizer token = new StringTokenizer(serverResponse);
-        String command = token.nextToken();
-        token.nextToken();  // appears that this is not used and it's zero.
-        String directoryName = token.nextToken();
-        if (localFile.isDirectory()) {
-            File dir = new File(localFile, directoryName);
-            dir.mkdir();
-
-            return dir;
-        }
-        return null;
-    }
-
-    private void parseAndFetchFile(String serverResponse,
-                                   File localFile,
-                                   OutputStream out,
-                                   InputStream in) throws IOException {
-        StringTokenizer token = new StringTokenizer(serverResponse);
-        String command = token.nextToken();
-        int filesize = Integer.parseInt(token.nextToken());
-        String filename = token.nextToken();
-        log("Receiving: " + filename + " : " + filesize);
-        File transferFile = (localFile.isDirectory())
-                ? new File(localFile, filename)
-                : localFile;
-        fetchFile(transferFile, filesize, out, in);
-        waitForAck(in);
-        sendAck(out);
-    }
-
-    private void fetchFile(File localFile,
-                            int filesize,
-                            OutputStream out,
-                            InputStream in) throws IOException {
-        byte[] buf = new byte[BUFFER_SIZE];
-        sendAck(out);
-
-        // read a content of lfile
-        FileOutputStream fos = new FileOutputStream(localFile);
-        int length;
-        int totalLength = 0;
-        long startTime = System.currentTimeMillis();
-        try {
-            while (true) {
-                length = in.read(buf, 0,
-                        (buf.length < filesize) ? buf.length : filesize);
-                if (length < 0) {
-                    throw new EOFException("Unexpected end of stream.");
-                }
-                fos.write(buf, 0, length);
-                filesize -= length;
-                totalLength += length;
-                if (filesize == 0) {
-                    break;
-                }
-            }
-        } finally {
-            long endTime = System.currentTimeMillis();
-            logStats(startTime, endTime, totalLength);
-            fos.flush();
-            fos.close();
-        }
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/util/TeeOutputStream.java b/src/main/org/apache/tools/ant/util/TeeOutputStream.java
deleted file mode 100644
index 028064f..0000000
--- a/src/main/org/apache/tools/ant/util/TeeOutputStream.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * 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 apache@apache.org.
- *
- * 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.OutputStream;
-import java.io.IOException;
-
-/**
- * A simple T-piece to replicate an output stream into two separate streams
- *
- * @author Conor MacNeill
- */
-public class TeeOutputStream extends OutputStream {
-    private OutputStream left;
-    private OutputStream right;
-
-    public TeeOutputStream(OutputStream left, OutputStream right) {
-        this.left = left;
-        this.right = right;
-    }
-
-    public void close() throws IOException {
-        left.close();
-        right.close();
-    }
-
-    public void flush() throws IOException {
-        left.flush();
-        right.flush();
-    }
-
-    public void write(byte[] b) throws IOException {
-        left.write(b);
-        right.write(b);
-    }
-
-    public void write(byte[] b, int off, int len) throws IOException {
-        left.write(b, off, len);
-        right.write(b, off, len);
-    }
-
-    public void write(int b) throws IOException {
-        left.write(b);
-        right.write(b);
-    }
-}
-