You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ivy-dev@incubator.apache.org by Xavier Hanin <xa...@gmail.com> on 2007/05/16 08:03:05 UTC

Re: FW: svn commit: r538245 [2/2] - in /incubator/ivy/core/trunk: ./ src/java/org/apache/ivy/ src/java/org/apache/ivy/ant/ src/java/org/apache/ivy/core/ src/java/org/apache/ivy/core/deliver/ src/java/org/apache/ivy/core/event/ src/java/org/apache/ivy

On 5/16/07, Gilles Scokart <gs...@gmail.com> wrote:
>
> Did you note the strange diff for the file Scp.java.  The others are
> correct.  Maybe a problem of CR/LF ?


No, I didn't notice it before, but it's only a problem of CR/LF. If you
compare with the revision before in eclipse ignoring whitespace, you'll see
only the author tags have changed.

To avoid this kind of troubles if we do not use all the same OS (this class
was contributed by someone and I didn't fix the CRLF before, in other cases
the CRLF used is windows, except for documentation pages generated by
xooki), we should use svn:eol-style=native property.

To add this property to all our added files we should each update our svn
config with the apache recommendations:
http://www.apache.org/dev/svn-eol-style.txt

If all committers are using windows this kind of thing shouldn't happen too
often though.

Xavier


Gilles
>
> -----Original Message-----
> From: xavier@apache.org [mailto:xavier@apache.org]
> Sent: mardi 15 mai 2007 18:30
> To: ivy-commits@incubator.apache.org
> Subject: svn commit: r538245 [2/2] - in /incubator/ivy/core/trunk: ./
> src/java/org/apache/ivy/ src/java/org/apache/ivy/ant/
> src/java/org/apache/ivy/core/ src/java/org/apache/ivy/core/deliver/
> src/java/org/apache/ivy/core/event/ src/java/org/apache/ivy/core/modu...
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/ssh/Scp.
> java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
> y/plugins/repository/ssh/Scp.java?view=diff&rev=538245&r1=538244&r2=538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/ssh/Scp.
> java (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/ssh/Scp.
> java Tue May 15 09:29:33 2007
> @@ -1,620 +1,618 @@
> -/*
> - *  Licensed to the Apache Software Foundation (ASF) under one or more
> - *  contributor license agreements.  See the NOTICE file distributed with
> - *  this work for additional information regarding copyright ownership.
> - *  The ASF licenses this file to You under the Apache License, Version
> 2.0
> - *  (the "License"); you may not use this file except in compliance with
> - *  the License.  You may obtain a copy of the License at
> - *
> - *      http://www.apache.org/licenses/LICENSE-2.0
> - *
> - *  Unless required by applicable law or agreed to in writing, software
> - *  distributed under the License is distributed on an "AS IS" BASIS,
> - *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> - *  See the License for the specific language governing permissions and
> - *  limitations under the License.
> - *
> - */
> -package org.apache.ivy.plugins.repository.ssh;
> -
> -import java.io.BufferedInputStream;
> -import java.io.BufferedOutputStream;
> -import java.io.File;
> -import java.io.FileInputStream;
> -import java.io.FileOutputStream;
> -import java.io.IOException;
> -import java.io.InputStream;
> -import java.io.OutputStream;
> -
> -import com.jcraft.jsch.Channel;
> -import com.jcraft.jsch.ChannelExec;
> -import com.jcraft.jsch.JSchException;
> -import com.jcraft.jsch.Session;
> -
> -/**
> - * This class is using the scp client to transfer data and information
> for
> the
> - * repository. It is based on the SCPClient from the ganymed ssh library
> from
> - * Christian Plattner. To minimize the dependency to the ssh library and
> because
> - * I needed some additional functionality, I decided to copy'n'paste the
> single
> - * class rather than to inherit or delegate it somehow. Nevertheless
> credit
> - * should go to the original author.
> - *
> - * @author Andreas Sahlbach
> - * @author Christian Plattner, plattner@inf.ethz.ch
> - */
> -
> -public class Scp {
> -    Session session;
> -
> -    public class FileInfo {
> -        private String filename;
> -        private long length;
> -        private long lastModified;
> -        /**
> -         * @param filename The filename to set.
> -         */
> -        public void setFilename(String filename) {
> -            this.filename = filename;
> -        }
> -        /**
> -         * @return Returns the filename.
> -         */
> -        public String getFilename() {
> -            return filename;
> -        }
> -        /**
> -         * @param length The length to set.
> -         */
> -        public void setLength(long length) {
> -            this.length = length;
> -        }
> -        /**
> -         * @return Returns the length.
> -         */
> -        public long getLength() {
> -            return length;
> -        }
> -        /**
> -         * @param lastModified The lastModified to set.
> -         */
> -        public void setLastModified(long lastModified) {
> -            this.lastModified = lastModified;
> -        }
> -        /**
> -         * @return Returns the lastModified.
> -         */
> -        public long getLastModified() {
> -            return lastModified;
> -        }
> -    }
> -
> -    public Scp(Session session) {
> -        if (session == null)
> -            throw new IllegalArgumentException("Cannot accept null
> argument!");
> -        this.session = session;
> -    }
> -
> -    private void readResponse(InputStream is) throws IOException,
> RemoteScpException {
> -        int c = is.read();
> -
> -        if (c == 0)
> -            return;
> -
> -        if (c == -1)
> -            throw new RemoteScpException("Remote scp terminated
> unexpectedly.");
> -
> -        if ((c != 1) && (c != 2))
> -            throw new RemoteScpException("Remote scp sent illegal error
> code.");
> -
> -        if (c == 2)
> -            throw new RemoteScpException("Remote scp terminated with
> error.");
> -
> -        String err = receiveLine(is);
> -        throw new RemoteScpException("Remote scp terminated with error ("
> +
> err + ").");
> -    }
> -
> -    private String receiveLine(InputStream is) throws
> IOException,RemoteScpException {
> -        StringBuffer sb = new StringBuffer(30);
> -
> -        while (true) {
> -            /*
> -             * This is a random limit - if your path names are longer,
> then
> -             * adjust it
> -             */
> -
> -            if (sb.length() > 8192)
> -                throw new RemoteScpException("Remote scp sent a too long
> line");
> -
> -            int c = is.read();
> -
> -            if (c < 0)
> -                throw new RemoteScpException("Remote scp terminated
> unexpectedly.");
> -
> -            if (c == '\n')
> -                break;
> -
> -            sb.append((char) c);
> -
> -        }
> -        return sb.toString();
> -    }
> -
> -    private void parseCLine(String line, FileInfo fileInfo) throws
> RemoteScpException {
> -        /* Minimum line: "xxxx y z" ---> 8 chars */
> -
> -        long len;
> -
> -        if (line.length() < 8)
> -            throw new RemoteScpException(
> -                    "Malformed C line sent by remote SCP binary, line too
> short.");
> -
> -        if ((line.charAt(4) != ' ') || (line.charAt(5) == ' '))
> -            throw new RemoteScpException("Malformed C line sent by remote
> SCP binary.");
> -
> -        int length_name_sep = line.indexOf(' ', 5);
> -
> -        if (length_name_sep == -1)
> -            throw new RemoteScpException("Malformed C line sent by remote
> SCP binary.");
> -
> -        String length_substring = line.substring(5, length_name_sep);
> -        String name_substring = line.substring(length_name_sep + 1);
> -
> -        if ((length_substring.length() <= 0) || (name_substring.length()
> <=
> 0))
> -            throw new RemoteScpException("Malformed C line sent by remote
> SCP binary.");
> -
> -        if ((6 + length_substring.length() + name_substring.length()) !=
> line
> -                .length())
> -            throw new RemoteScpException("Malformed C line sent by remote
> SCP binary.");
> -
> -        try {
> -            len = Long.parseLong(length_substring);
> -        } catch (NumberFormatException e) {
> -            throw new RemoteScpException(
> -                    "Malformed C line sent by remote SCP binary, cannot
> parse file length.");
> -        }
> -
> -        if (len < 0)
> -            throw new RemoteScpException(
> -                    "Malformed C line sent by remote SCP binary, illegal
> file length.");
> -
> -        fileInfo.setLength(len);
> -        fileInfo.setFilename(name_substring);
> -    }
> -
> -    private void parseTLine(String line, FileInfo fileInfo) throws
> RemoteScpException {
> -        /* Minimum line: "0 0 0 0" ---> 8 chars */
> -
> -        long modtime;
> -        long first_msec;
> -        long atime;
> -        long second_msec;
> -
> -        if (line.length() < 8)
> -            throw new RemoteScpException(
> -                    "Malformed T line sent by remote SCP binary, line too
> short.");
> -
> -        int first_msec_begin = line.indexOf(" ")+1;
> -        if(first_msec_begin == 0 || first_msec_begin >= line.length())
> -            throw new RemoteScpException(
> -            "Malformed T line sent by remote SCP binary, line not enough
> data.");
> -
> -        int atime_begin = line.indexOf(" ",first_msec_begin+1)+1;
> -        if(atime_begin == 0 || atime_begin >= line.length())
> -            throw new RemoteScpException(
> -            "Malformed T line sent by remote SCP binary, line not enough
> data.");
> -
> -        int second_msec_begin = line.indexOf(" ",atime_begin+1)+1;
> -        if(second_msec_begin == 0 || second_msec_begin >= line.length())
> -            throw new RemoteScpException(
> -            "Malformed T line sent by remote SCP binary, line not enough
> data.");
> -
> -        try {
> -            modtime = Long.parseLong(line.substring
> (0,first_msec_begin-1));
> -            first_msec =
> Long.parseLong(line.substring(first_msec_begin,atime_begin-1));
> -            atime =
> Long.parseLong(line.substring(atime_begin,second_msec_begin-1));
> -            second_msec =
> Long.parseLong(line.substring(second_msec_begin));
> -        } catch (NumberFormatException e) {
> -            throw new RemoteScpException(
> -                    "Malformed C line sent by remote SCP binary, cannot
> parse file length.");
> -        }
> -
> -        if (modtime < 0 || first_msec < 0 || atime < 0 || second_msec <
> 0)
> -            throw new RemoteScpException(
> -                    "Malformed C line sent by remote SCP binary, illegal
> file length.");
> -
> -        fileInfo.setLastModified(modtime);
> -    }
> -
> -    private void sendBytes(Channel channel, byte[] data, String fileName,
> -            String mode) throws IOException,RemoteScpException {
> -        OutputStream os = channel.getOutputStream();
> -        InputStream is = new BufferedInputStream(channel.getInputStream
> (),
> 512);
> -
> -        try {
> -            if(channel.isConnected())
> -                channel.start();
> -            else
> -                channel.connect();
> -        } catch (JSchException e1) {
> -            throw (IOException) new IOException("Channel connection
> problems").initCause(e1);
> -        }
> -
> -        readResponse(is);
> -
> -        String cline = "C" + mode + " " + data.length + " " + fileName +
> "\n";
> -
> -        os.write(cline.getBytes());
> -        os.flush();
> -
> -        readResponse(is);
> -
> -        os.write(data, 0, data.length);
> -        os.write(0);
> -        os.flush();
> -
> -        readResponse(is);
> -
> -        os.write("E\n".getBytes());
> -        os.flush();
> -    }
> -
> -    private void sendFile(Channel channel, String localFile, String
> remoteName, String mode)
> -            throws IOException, RemoteScpException {
> -        byte[] buffer = new byte[8192];
> -
> -        OutputStream os = new
> BufferedOutputStream(channel.getOutputStream(), 40000);
> -        InputStream is = new BufferedInputStream(channel.getInputStream
> (),
> 512);
> -
> -        try {
> -            if(channel.isConnected())
> -                channel.start();
> -            else
> -                channel.connect();
> -        } catch (JSchException e1) {
> -            throw (IOException) new IOException("Channel connection
> problems").initCause(e1);
> -        }
> -
> -        readResponse(is);
> -
> -        File f = new File(localFile);
> -        long remain = f.length();
> -
> -        String cline = "C" + mode + " " + remain + " " + remoteName +
> "\n";
> -
> -        os.write(cline.getBytes());
> -        os.flush();
> -
> -        readResponse(is);
> -
> -        FileInputStream fis = null;
> -
> -        try {
> -            fis = new FileInputStream(f);
> -
> -            while (remain > 0) {
> -                int trans;
> -                if (remain > buffer.length)
> -                    trans = buffer.length;
> -                else
> -                    trans = (int) remain;
> -
> -                if (fis.read(buffer, 0, trans) != trans)
> -                    throw new IOException(
> -                            "Cannot read enough from local file "
> -                                    + localFile);
> -
> -                os.write(buffer, 0, trans);
> -
> -                remain -= trans;
> -            }
> -
> -            fis.close();
> -        } catch (IOException e) {
> -            if (fis != null) {
> -                fis.close();
> -            }
> -            throw (e);
> -        }
> -
> -        os.write(0);
> -        os.flush();
> -
> -        readResponse(is);
> -
> -        os.write("E\n".getBytes());
> -        os.flush();
> -    }
> -
> -    /**
> -     * Receive a file via scp and store it in a stream
> -     * @param channel ssh channel to use
> -     * @param file to receive from remote
> -     * @param target to store file into (if null, get only file info)
> -     * @return file information of the file we received
> -     * @throws IOException in case of network or protocol trouble
> -     * @throws RemoteScpException in case of problems on the target
> system
> (connection is fine)
> -     */
> -    private FileInfo receiveStream(Channel channel, String file,
> OutputStream targetStream)
> -      throws IOException,RemoteScpException {
> -        byte[] buffer = new byte[8192];
> -
> -        OutputStream os = channel.getOutputStream();
> -        InputStream is = channel.getInputStream();
> -        try {
> -            if(channel.isConnected())
> -                channel.start();
> -            else
> -                channel.connect();
> -        } catch (JSchException e1) {
> -            throw (IOException) new IOException("Channel connection
> problems").initCause(e1);
> -        }
> -        os.write(0x0);
> -        os.flush();
> -
> -        FileInfo fileInfo = new FileInfo();
> -
> -        while (true) {
> -            int c = is.read();
> -            if (c < 0)
> -                throw new RemoteScpException("Remote scp terminated
> unexpectedly.");
> -
> -            String line = receiveLine(is);
> -
> -            if (c == 'T') {
> -                parseTLine(line,fileInfo);
> -                os.write(0x0);
> -                os.flush();
> -                continue;
> -            }
> -            if ((c == 1) || (c == 2))
> -                throw new RemoteScpException("Remote SCP error: " +
> line);
> -
> -            if (c == 'C') {
> -                parseCLine(line,fileInfo);
> -                break;
> -            }
> -            throw new RemoteScpException("Remote SCP error: " + ((char)
> c)
> + line);
> -        }
> -        if(targetStream != null) {
> -
> -            os.write(0x0);
> -            os.flush();
> -
> -            try {
> -                long remain = fileInfo.getLength();
> -
> -                while (remain > 0) {
> -                    int trans;
> -                    if (remain > buffer.length)
> -                        trans = buffer.length;
> -                    else
> -                        trans = (int) remain;
> -
> -                    int this_time_received = is.read(buffer, 0, trans);
> -
> -                    if (this_time_received < 0) {
> -                        throw new IOException(
> -                                "Remote scp terminated connection
> unexpectedly");
> -                    }
> -
> -                    targetStream.write(buffer, 0, this_time_received);
> -
> -                    remain -= this_time_received;
> -                }
> -
> -                targetStream.close();
> -            } catch (IOException e) {
> -                if (targetStream != null)
> -                    targetStream.close();
> -
> -                throw (e);
> -            }
> -
> -            readResponse(is);
> -
> -            os.write(0x0);
> -            os.flush();
> -        }
> -        return fileInfo;
> -    }
> -
> -    /**
> -     * Copy a local file to a remote directory, uses mode 0600 when
> creating the
> -     * file on the remote side.
> -     *
> -     * @param localFile Path and name of local file.
> -     * @param remoteTargetDirectory Remote target directory where the
> file
> has to end up (optional)
> -     * @param remoteName target filename to use
> -     * @throws IOException in case of network problems
> -     * @throws RemoteScpException in case of problems on the target
> system
> (connection ok)
> -     */
> -    public void put(String localFile, String remoteTargetDirectory,
> String
> remoteName)
> -    throws IOException, RemoteScpException {
> -        put(localFile, remoteTargetDirectory, remoteName, "0600");
> -    }
> -
> -    /**
> -     * Create a remote file and copy the contents of the passed byte
> array
> into
> -     * it. Uses mode 0600 for creating the remote file.
> -     *
> -     * @param data the data to be copied into the remote file.
> -     * @param remoteFileName The name of the file which will be created
> in
> the remote target directory.
> -     * @param remoteTargetDirectory Remote target directory where the
> file
> has to end up (optional)
> -     * @throws IOException in case of network problems
> -     * @throws RemoteScpException in case of problems on the target
> system
> (connection ok)
> -     */
> -
> -    public void put(byte[] data, String remoteFileName, String
> remoteTargetDirectory)
> -    throws IOException,RemoteScpException {
> -        put(data, remoteFileName, remoteTargetDirectory, "0600");
> -    }
> -
> -    /**
> -     * Create a remote file and copy the contents of the passed byte
> array
> into
> -     * it. The method use the specified mode when creating the file on
> the
> -     * remote side.
> -     *
> -     * @param data the data to be copied into the remote file.
> -     * @param remoteFileName The name of the file which will be created
> in
> the remote target directory.
> -     * @param remoteTargetDirectory Remote target directory where the
> file
> has to end up (optional)
> -     * @param mode a four digit string (e.g., 0644, see "man chmod", "man
> open")
> -     * @throws IOException in case of network problems
> -     * @throws RemoteScpException in case of problems on the target
> system
> (connection ok)
> -     */
> -    public void put(byte[] data, String remoteFileName, String
> remoteTargetDirectory, String mode)
> -    throws IOException,RemoteScpException {
> -        ChannelExec channel = null;
> -
> -        if ((remoteFileName == null) || (mode == null))
> -            throw new IllegalArgumentException("Null argument.");
> -
> -        if (mode.length() != 4)
> -            throw new IllegalArgumentException("Invalid mode.");
> -
> -        for (int i = 0; i < mode.length(); i++)
> -            if (Character.isDigit(mode.charAt(i)) == false)
> -                throw new IllegalArgumentException("Invalid mode.");
> -
> -        String cmd = "scp -t ";
> -        if(remoteTargetDirectory != null && remoteTargetDirectory.length
> ()
> > 0) {
> -            cmd = cmd + "-d " + remoteTargetDirectory;
> -        }
> -
> -        try {
> -            channel = getExecChannel();
> -            channel.setCommand(cmd);
> -            sendBytes(channel, data, remoteFileName, mode);
> -            //channel.disconnect();
> -        } catch (JSchException e) {
> -            if (channel != null)
> -                channel.disconnect();
> -            throw (IOException) new IOException("Error during SCP
> transfer."+e.getMessage())
> -                    .initCause(e);
> -        }
> -    }
> -
> -    /**
> -     * @return
> -     * @throws JSchException
> -     */
> -    private ChannelExec getExecChannel() throws JSchException {
> -        ChannelExec channel;
> -        channel = (ChannelExec)session.openChannel("exec");
> -        return channel;
> -    }
> -
> -    /**
> -     * Copy a local file to a remote site, uses the specified mode when
> -     * creating the file on the remote side.
> -     *
> -     * @param localFile Path and name of local file.
> -     * @param remoteTargetDir Remote target directory where the file has
> to
> end up (optional)
> -     * @param remoteTargetName file name to use on the target system
> -     * @param mode a four digit string (e.g., 0644, see "man chmod", "man
> open")
> -     * @throws IOException in case of network problems
> -     * @throws RemoteScpException in case of problems on the target
> system
> (connection ok)
> -     */
> -    public void put(String localFile, String remoteTargetDir, String
> remoteTargetName, String mode)
> -    throws IOException,RemoteScpException {
> -        ChannelExec channel = null;
> -
> -        if ((localFile == null) || (remoteTargetName == null) || (mode ==
> null))
> -            throw new IllegalArgumentException("Null argument.");
> -
> -        if (mode.length() != 4)
> -            throw new IllegalArgumentException("Invalid mode.");
> -
> -        for (int i = 0; i < mode.length(); i++)
> -            if (Character.isDigit(mode.charAt(i)) == false)
> -                throw new IllegalArgumentException("Invalid mode.");
> -
> -        String cmd = "scp -t ";
> -        if(remoteTargetDir != null && remoteTargetDir.length() > 0) {
> -            cmd = cmd + "-d " + remoteTargetDir;
> -        }
> -
> -        try {
> -            channel = getExecChannel();
> -            channel.setCommand(cmd);
> -            sendFile(channel, localFile, remoteTargetName, mode);
> -            channel.disconnect();
> -        } catch (JSchException e) {
> -            if (channel != null)
> -                channel.disconnect();
> -            throw (IOException) new IOException("Error during SCP
> transfer."+e.getMessage())
> -                    .initCause(e);
> -        }
> -    }
> -
> -    /**
> -     * Download a file from the remote server to a local file.
> -     * @param remoteFile Path and name of the remote file.
> -     * @param localTarget Local file where to store the data.
> -     * @throws IOException in case of network problems
> -     * @throws RemoteScpException in case of problems on the target
> system
> (connection ok)
> -     */
> -    public void get(String remoteFile, String localTarget) throws
> IOException,RemoteScpException {
> -        File f = new File(localTarget);
> -        FileOutputStream fop = new FileOutputStream(f);
> -        get(remoteFile,fop);
> -    }
> -
> -    /**
> -     * Download a file from the remote server into an OutputStream
> -     * @param remoteFile Path and name of the remote file.
> -     * @param localTarget OutputStream to store the data.
> -     * @throws IOException in case of network problems
> -     * @throws RemoteScpException in case of problems on the target
> system
> (connection ok)
> -     */
> -    public void get(String remoteFile, OutputStream localTarget) throws
> IOException,RemoteScpException {
> -        ChannelExec channel = null;
> -
> -        if ((remoteFile == null) || (localTarget == null))
> -            throw new IllegalArgumentException("Null argument.");
> -
> -        String cmd = "scp -p -f "+ remoteFile;
> -
> -        try {
> -            channel = getExecChannel();
> -            channel.setCommand(cmd);
> -            receiveStream(channel, remoteFile, localTarget);
> -            channel.disconnect();
> -        } catch (JSchException e) {
> -            if (channel != null)
> -                channel.disconnect();
> -            throw (IOException) new IOException("Error during SCP
> transfer."+e.getMessage())
> -                    .initCause(e);
> -        }
> -    }
> -
> -    /**
> -     * Initiates an SCP sequence but stops after getting fileinformation
> header
> -     * @param remoteFile to get information for
> -     * @return the file information got
> -     * @throws IOException in case of network problems
> -     * @throws RemoteScpException in case of problems on the target
> system
> (connection ok)
> -     */
> -    public FileInfo getFileinfo(String remoteFile) throws
> IOException,RemoteScpException {
> -        ChannelExec channel = null;
> -        FileInfo fileInfo = null;
> -
> -        if (remoteFile == null)
> -            throw new IllegalArgumentException("Null argument.");
> -
> -        String cmd = "scp -p -f \""+remoteFile+"\"";
> -
> -        try {
> -            channel = getExecChannel();
> -            channel.setCommand(cmd);
> -            fileInfo = receiveStream(channel, remoteFile, null);
> -            channel.disconnect();
> -        } catch (JSchException e) {
> -            throw (IOException) new IOException("Error during SCP
> transfer."+e.getMessage())
> -            .initCause(e);
> -        } finally {
> -            if (channel != null)
> -              channel.disconnect();
> -        }
> -        return fileInfo;
> -    }
> -}
> +/*
> + *  Licensed to the Apache Software Foundation (ASF) under one or more
> + *  contributor license agreements.  See the NOTICE file distributed with
> + *  this work for additional information regarding copyright ownership.
> + *  The ASF licenses this file to You under the Apache License, Version
> 2.0
> + *  (the "License"); you may not use this file except in compliance with
> + *  the License.  You may obtain a copy of the License at
> + *
> + *      http://www.apache.org/licenses/LICENSE-2.0
> + *
> + *  Unless required by applicable law or agreed to in writing, software
> + *  distributed under the License is distributed on an "AS IS" BASIS,
> + *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> + *  See the License for the specific language governing permissions and
> + *  limitations under the License.
> + *
> + */
> +package org.apache.ivy.plugins.repository.ssh;
> +
> +import java.io.BufferedInputStream;
> +import java.io.BufferedOutputStream;
> +import java.io.File;
> +import java.io.FileInputStream;
> +import java.io.FileOutputStream;
> +import java.io.IOException;
> +import java.io.InputStream;
> +import java.io.OutputStream;
> +
> +import com.jcraft.jsch.Channel;
> +import com.jcraft.jsch.ChannelExec;
> +import com.jcraft.jsch.JSchException;
> +import com.jcraft.jsch.Session;
> +
> +/**
> + * This class is using the scp client to transfer data and information
> for
> the
> + * repository. It is based on the SCPClient from the ganymed ssh library
> from
> + * Christian Plattner. To minimize the dependency to the ssh library and
> because
> + * I needed some additional functionality, I decided to copy'n'paste the
> single
> + * class rather than to inherit or delegate it somehow. Nevertheless
> credit
> + * should go to the original author.
> + *
> + */
> +
> +public class Scp {
> +    Session session;
> +
> +    public class FileInfo {
> +        private String filename;
> +        private long length;
> +        private long lastModified;
> +        /**
> +         * @param filename The filename to set.
> +         */
> +        public void setFilename(String filename) {
> +            this.filename = filename;
> +        }
> +        /**
> +         * @return Returns the filename.
> +         */
> +        public String getFilename() {
> +            return filename;
> +        }
> +        /**
> +         * @param length The length to set.
> +         */
> +        public void setLength(long length) {
> +            this.length = length;
> +        }
> +        /**
> +         * @return Returns the length.
> +         */
> +        public long getLength() {
> +            return length;
> +        }
> +        /**
> +         * @param lastModified The lastModified to set.
> +         */
> +        public void setLastModified(long lastModified) {
> +            this.lastModified = lastModified;
> +        }
> +        /**
> +         * @return Returns the lastModified.
> +         */
> +        public long getLastModified() {
> +            return lastModified;
> +        }
> +    }
> +
> +    public Scp(Session session) {
> +        if (session == null)
> +            throw new IllegalArgumentException("Cannot accept null
> argument!");
> +        this.session = session;
> +    }
> +
> +    private void readResponse(InputStream is) throws IOException,
> RemoteScpException {
> +        int c = is.read();
> +
> +        if (c == 0)
> +            return;
> +
> +        if (c == -1)
> +            throw new RemoteScpException("Remote scp terminated
> unexpectedly.");
> +
> +        if ((c != 1) && (c != 2))
> +            throw new RemoteScpException("Remote scp sent illegal error
> code.");
> +
> +        if (c == 2)
> +            throw new RemoteScpException("Remote scp terminated with
> error.");
> +
> +        String err = receiveLine(is);
> +        throw new RemoteScpException("Remote scp terminated with error ("
> +
> err + ").");
> +    }
> +
> +    private String receiveLine(InputStream is) throws
> IOException,RemoteScpException {
> +        StringBuffer sb = new StringBuffer(30);
> +
> +        while (true) {
> +            /*
> +             * This is a random limit - if your path names are longer,
> then
> +             * adjust it
> +             */
> +
> +            if (sb.length() > 8192)
> +                throw new RemoteScpException("Remote scp sent a too long
> line");
> +
> +            int c = is.read();
> +
> +            if (c < 0)
> +                throw new RemoteScpException("Remote scp terminated
> unexpectedly.");
> +
> +            if (c == '\n')
> +                break;
> +
> +            sb.append((char) c);
> +
> +        }
> +        return sb.toString();
> +    }
> +
> +    private void parseCLine(String line, FileInfo fileInfo) throws
> RemoteScpException {
> +        /* Minimum line: "xxxx y z" ---> 8 chars */
> +
> +        long len;
> +
> +        if (line.length() < 8)
> +            throw new RemoteScpException(
> +                    "Malformed C line sent by remote SCP binary, line too
> short.");
> +
> +        if ((line.charAt(4) != ' ') || (line.charAt(5) == ' '))
> +            throw new RemoteScpException("Malformed C line sent by remote
> SCP binary.");
> +
> +        int length_name_sep = line.indexOf(' ', 5);
> +
> +        if (length_name_sep == -1)
> +            throw new RemoteScpException("Malformed C line sent by remote
> SCP binary.");
> +
> +        String length_substring = line.substring(5, length_name_sep);
> +        String name_substring = line.substring(length_name_sep + 1);
> +
> +        if ((length_substring.length() <= 0) || (name_substring.length()
> <=
> 0))
> +            throw new RemoteScpException("Malformed C line sent by remote
> SCP binary.");
> +
> +        if ((6 + length_substring.length() + name_substring.length()) !=
> line
> +                .length())
> +            throw new RemoteScpException("Malformed C line sent by remote
> SCP binary.");
> +
> +        try {
> +            len = Long.parseLong(length_substring);
> +        } catch (NumberFormatException e) {
> +            throw new RemoteScpException(
> +                    "Malformed C line sent by remote SCP binary, cannot
> parse file length.");
> +        }
> +
> +        if (len < 0)
> +            throw new RemoteScpException(
> +                    "Malformed C line sent by remote SCP binary, illegal
> file length.");
> +
> +        fileInfo.setLength(len);
> +        fileInfo.setFilename(name_substring);
> +    }
> +
> +    private void parseTLine(String line, FileInfo fileInfo) throws
> RemoteScpException {
> +        /* Minimum line: "0 0 0 0" ---> 8 chars */
> +
> +        long modtime;
> +        long first_msec;
> +        long atime;
> +        long second_msec;
> +
> +        if (line.length() < 8)
> +            throw new RemoteScpException(
> +                    "Malformed T line sent by remote SCP binary, line too
> short.");
> +
> +        int first_msec_begin = line.indexOf(" ")+1;
> +        if(first_msec_begin == 0 || first_msec_begin >= line.length())
> +            throw new RemoteScpException(
> +            "Malformed T line sent by remote SCP binary, line not enough
> data.");
> +
> +        int atime_begin = line.indexOf(" ",first_msec_begin+1)+1;
> +        if(atime_begin == 0 || atime_begin >= line.length())
> +            throw new RemoteScpException(
> +            "Malformed T line sent by remote SCP binary, line not enough
> data.");
> +
> +        int second_msec_begin = line.indexOf(" ",atime_begin+1)+1;
> +        if(second_msec_begin == 0 || second_msec_begin >= line.length())
> +            throw new RemoteScpException(
> +            "Malformed T line sent by remote SCP binary, line not enough
> data.");
> +
> +        try {
> +            modtime = Long.parseLong(line.substring
> (0,first_msec_begin-1));
> +            first_msec =
> Long.parseLong(line.substring(first_msec_begin,atime_begin-1));
> +            atime =
> Long.parseLong(line.substring(atime_begin,second_msec_begin-1));
> +            second_msec =
> Long.parseLong(line.substring(second_msec_begin));
> +        } catch (NumberFormatException e) {
> +            throw new RemoteScpException(
> +                    "Malformed C line sent by remote SCP binary, cannot
> parse file length.");
> +        }
> +
> +        if (modtime < 0 || first_msec < 0 || atime < 0 || second_msec <
> 0)
> +            throw new RemoteScpException(
> +                    "Malformed C line sent by remote SCP binary, illegal
> file length.");
> +
> +        fileInfo.setLastModified(modtime);
> +    }
> +
> +    private void sendBytes(Channel channel, byte[] data, String fileName,
> +            String mode) throws IOException,RemoteScpException {
> +        OutputStream os = channel.getOutputStream();
> +        InputStream is = new BufferedInputStream(channel.getInputStream
> (),
> 512);
> +
> +        try {
> +            if(channel.isConnected())
> +                channel.start();
> +            else
> +                channel.connect();
> +        } catch (JSchException e1) {
> +            throw (IOException) new IOException("Channel connection
> problems").initCause(e1);
> +        }
> +
> +        readResponse(is);
> +
> +        String cline = "C" + mode + " " + data.length + " " + fileName +
> "\n";
> +
> +        os.write(cline.getBytes());
> +        os.flush();
> +
> +        readResponse(is);
> +
> +        os.write(data, 0, data.length);
> +        os.write(0);
> +        os.flush();
> +
> +        readResponse(is);
> +
> +        os.write("E\n".getBytes());
> +        os.flush();
> +    }
> +
> +    private void sendFile(Channel channel, String localFile, String
> remoteName, String mode)
> +            throws IOException, RemoteScpException {
> +        byte[] buffer = new byte[8192];
> +
> +        OutputStream os = new
> BufferedOutputStream(channel.getOutputStream(), 40000);
> +        InputStream is = new BufferedInputStream(channel.getInputStream
> (),
> 512);
> +
> +        try {
> +            if(channel.isConnected())
> +                channel.start();
> +            else
> +                channel.connect();
> +        } catch (JSchException e1) {
> +            throw (IOException) new IOException("Channel connection
> problems").initCause(e1);
> +        }
> +
> +        readResponse(is);
> +
> +        File f = new File(localFile);
> +        long remain = f.length();
> +
> +        String cline = "C" + mode + " " + remain + " " + remoteName +
> "\n";
> +
> +        os.write(cline.getBytes());
> +        os.flush();
> +
> +        readResponse(is);
> +
> +        FileInputStream fis = null;
> +
> +        try {
> +            fis = new FileInputStream(f);
> +
> +            while (remain > 0) {
> +                int trans;
> +                if (remain > buffer.length)
> +                    trans = buffer.length;
> +                else
> +                    trans = (int) remain;
> +
> +                if (fis.read(buffer, 0, trans) != trans)
> +                    throw new IOException(
> +                            "Cannot read enough from local file "
> +                                    + localFile);
> +
> +                os.write(buffer, 0, trans);
> +
> +                remain -= trans;
> +            }
> +
> +            fis.close();
> +        } catch (IOException e) {
> +            if (fis != null) {
> +                fis.close();
> +            }
> +            throw (e);
> +        }
> +
> +        os.write(0);
> +        os.flush();
> +
> +        readResponse(is);
> +
> +        os.write("E\n".getBytes());
> +        os.flush();
> +    }
> +
> +    /**
> +     * Receive a file via scp and store it in a stream
> +     * @param channel ssh channel to use
> +     * @param file to receive from remote
> +     * @param target to store file into (if null, get only file info)
> +     * @return file information of the file we received
> +     * @throws IOException in case of network or protocol trouble
> +     * @throws RemoteScpException in case of problems on the target
> system
> (connection is fine)
> +     */
> +    private FileInfo receiveStream(Channel channel, String file,
> OutputStream targetStream)
> +      throws IOException,RemoteScpException {
> +        byte[] buffer = new byte[8192];
> +
> +        OutputStream os = channel.getOutputStream();
> +        InputStream is = channel.getInputStream();
> +        try {
> +            if(channel.isConnected())
> +                channel.start();
> +            else
> +                channel.connect();
> +        } catch (JSchException e1) {
> +            throw (IOException) new IOException("Channel connection
> problems").initCause(e1);
> +        }
> +        os.write(0x0);
> +        os.flush();
> +
> +        FileInfo fileInfo = new FileInfo();
> +
> +        while (true) {
> +            int c = is.read();
> +            if (c < 0)
> +                throw new RemoteScpException("Remote scp terminated
> unexpectedly.");
> +
> +            String line = receiveLine(is);
> +
> +            if (c == 'T') {
> +                parseTLine(line,fileInfo);
> +                os.write(0x0);
> +                os.flush();
> +                continue;
> +            }
> +            if ((c == 1) || (c == 2))
> +                throw new RemoteScpException("Remote SCP error: " +
> line);
> +
> +            if (c == 'C') {
> +                parseCLine(line,fileInfo);
> +                break;
> +            }
> +            throw new RemoteScpException("Remote SCP error: " + ((char)
> c)
> + line);
> +        }
> +        if(targetStream != null) {
> +
> +            os.write(0x0);
> +            os.flush();
> +
> +            try {
> +                long remain = fileInfo.getLength();
> +
> +                while (remain > 0) {
> +                    int trans;
> +                    if (remain > buffer.length)
> +                        trans = buffer.length;
> +                    else
> +                        trans = (int) remain;
> +
> +                    int this_time_received = is.read(buffer, 0, trans);
> +
> +                    if (this_time_received < 0) {
> +                        throw new IOException(
> +                                "Remote scp terminated connection
> unexpectedly");
> +                    }
> +
> +                    targetStream.write(buffer, 0, this_time_received);
> +
> +                    remain -= this_time_received;
> +                }
> +
> +                targetStream.close();
> +            } catch (IOException e) {
> +                if (targetStream != null)
> +                    targetStream.close();
> +
> +                throw (e);
> +            }
> +
> +            readResponse(is);
> +
> +            os.write(0x0);
> +            os.flush();
> +        }
> +        return fileInfo;
> +    }
> +
> +    /**
> +     * Copy a local file to a remote directory, uses mode 0600 when
> creating the
> +     * file on the remote side.
> +     *
> +     * @param localFile Path and name of local file.
> +     * @param remoteTargetDirectory Remote target directory where the
> file
> has to end up (optional)
> +     * @param remoteName target filename to use
> +     * @throws IOException in case of network problems
> +     * @throws RemoteScpException in case of problems on the target
> system
> (connection ok)
> +     */
> +    public void put(String localFile, String remoteTargetDirectory,
> String
> remoteName)
> +    throws IOException, RemoteScpException {
> +        put(localFile, remoteTargetDirectory, remoteName, "0600");
> +    }
> +
> +    /**
> +     * Create a remote file and copy the contents of the passed byte
> array
> into
> +     * it. Uses mode 0600 for creating the remote file.
> +     *
> +     * @param data the data to be copied into the remote file.
> +     * @param remoteFileName The name of the file which will be created
> in
> the remote target directory.
> +     * @param remoteTargetDirectory Remote target directory where the
> file
> has to end up (optional)
> +     * @throws IOException in case of network problems
> +     * @throws RemoteScpException in case of problems on the target
> system
> (connection ok)
> +     */
> +
> +    public void put(byte[] data, String remoteFileName, String
> remoteTargetDirectory)
> +    throws IOException,RemoteScpException {
> +        put(data, remoteFileName, remoteTargetDirectory, "0600");
> +    }
> +
> +    /**
> +     * Create a remote file and copy the contents of the passed byte
> array
> into
> +     * it. The method use the specified mode when creating the file on
> the
> +     * remote side.
> +     *
> +     * @param data the data to be copied into the remote file.
> +     * @param remoteFileName The name of the file which will be created
> in
> the remote target directory.
> +     * @param remoteTargetDirectory Remote target directory where the
> file
> has to end up (optional)
> +     * @param mode a four digit string (e.g., 0644, see "man chmod", "man
> open")
> +     * @throws IOException in case of network problems
> +     * @throws RemoteScpException in case of problems on the target
> system
> (connection ok)
> +     */
> +    public void put(byte[] data, String remoteFileName, String
> remoteTargetDirectory, String mode)
> +    throws IOException,RemoteScpException {
> +        ChannelExec channel = null;
> +
> +        if ((remoteFileName == null) || (mode == null))
> +            throw new IllegalArgumentException("Null argument.");
> +
> +        if (mode.length() != 4)
> +            throw new IllegalArgumentException("Invalid mode.");
> +
> +        for (int i = 0; i < mode.length(); i++)
> +            if (Character.isDigit(mode.charAt(i)) == false)
> +                throw new IllegalArgumentException("Invalid mode.");
> +
> +        String cmd = "scp -t ";
> +        if(remoteTargetDirectory != null && remoteTargetDirectory.length
> ()
> > 0) {
> +            cmd = cmd + "-d " + remoteTargetDirectory;
> +        }
> +
> +        try {
> +            channel = getExecChannel();
> +            channel.setCommand(cmd);
> +            sendBytes(channel, data, remoteFileName, mode);
> +            //channel.disconnect();
> +        } catch (JSchException e) {
> +            if (channel != null)
> +                channel.disconnect();
> +            throw (IOException) new IOException("Error during SCP
> transfer."+e.getMessage())
> +                    .initCause(e);
> +        }
> +    }
> +
> +    /**
> +     * @return
> +     * @throws JSchException
> +     */
> +    private ChannelExec getExecChannel() throws JSchException {
> +        ChannelExec channel;
> +        channel = (ChannelExec)session.openChannel("exec");
> +        return channel;
> +    }
> +
> +    /**
> +     * Copy a local file to a remote site, uses the specified mode when
> +     * creating the file on the remote side.
> +     *
> +     * @param localFile Path and name of local file.
> +     * @param remoteTargetDir Remote target directory where the file has
> to
> end up (optional)
> +     * @param remoteTargetName file name to use on the target system
> +     * @param mode a four digit string (e.g., 0644, see "man chmod", "man
> open")
> +     * @throws IOException in case of network problems
> +     * @throws RemoteScpException in case of problems on the target
> system
> (connection ok)
> +     */
> +    public void put(String localFile, String remoteTargetDir, String
> remoteTargetName, String mode)
> +    throws IOException,RemoteScpException {
> +        ChannelExec channel = null;
> +
> +        if ((localFile == null) || (remoteTargetName == null) || (mode ==
> null))
> +            throw new IllegalArgumentException("Null argument.");
> +
> +        if (mode.length() != 4)
> +            throw new IllegalArgumentException("Invalid mode.");
> +
> +        for (int i = 0; i < mode.length(); i++)
> +            if (Character.isDigit(mode.charAt(i)) == false)
> +                throw new IllegalArgumentException("Invalid mode.");
> +
> +        String cmd = "scp -t ";
> +        if(remoteTargetDir != null && remoteTargetDir.length() > 0) {
> +            cmd = cmd + "-d " + remoteTargetDir;
> +        }
> +
> +        try {
> +            channel = getExecChannel();
> +            channel.setCommand(cmd);
> +            sendFile(channel, localFile, remoteTargetName, mode);
> +            channel.disconnect();
> +        } catch (JSchException e) {
> +            if (channel != null)
> +                channel.disconnect();
> +            throw (IOException) new IOException("Error during SCP
> transfer."+e.getMessage())
> +                    .initCause(e);
> +        }
> +    }
> +
> +    /**
> +     * Download a file from the remote server to a local file.
> +     * @param remoteFile Path and name of the remote file.
> +     * @param localTarget Local file where to store the data.
> +     * @throws IOException in case of network problems
> +     * @throws RemoteScpException in case of problems on the target
> system
> (connection ok)
> +     */
> +    public void get(String remoteFile, String localTarget) throws
> IOException,RemoteScpException {
> +        File f = new File(localTarget);
> +        FileOutputStream fop = new FileOutputStream(f);
> +        get(remoteFile,fop);
> +    }
> +
> +    /**
> +     * Download a file from the remote server into an OutputStream
> +     * @param remoteFile Path and name of the remote file.
> +     * @param localTarget OutputStream to store the data.
> +     * @throws IOException in case of network problems
> +     * @throws RemoteScpException in case of problems on the target
> system
> (connection ok)
> +     */
> +    public void get(String remoteFile, OutputStream localTarget) throws
> IOException,RemoteScpException {
> +        ChannelExec channel = null;
> +
> +        if ((remoteFile == null) || (localTarget == null))
> +            throw new IllegalArgumentException("Null argument.");
> +
> +        String cmd = "scp -p -f "+ remoteFile;
> +
> +        try {
> +            channel = getExecChannel();
> +            channel.setCommand(cmd);
> +            receiveStream(channel, remoteFile, localTarget);
> +            channel.disconnect();
> +        } catch (JSchException e) {
> +            if (channel != null)
> +                channel.disconnect();
> +            throw (IOException) new IOException("Error during SCP
> transfer."+e.getMessage())
> +                    .initCause(e);
> +        }
> +    }
> +
> +    /**
> +     * Initiates an SCP sequence but stops after getting fileinformation
> header
> +     * @param remoteFile to get information for
> +     * @return the file information got
> +     * @throws IOException in case of network problems
> +     * @throws RemoteScpException in case of problems on the target
> system
> (connection ok)
> +     */
> +    public FileInfo getFileinfo(String remoteFile) throws
> IOException,RemoteScpException {
> +        ChannelExec channel = null;
> +        FileInfo fileInfo = null;
> +
> +        if (remoteFile == null)
> +            throw new IllegalArgumentException("Null argument.");
> +
> +        String cmd = "scp -p -f \""+remoteFile+"\"";
> +
> +        try {
> +            channel = getExecChannel();
> +            channel.setCommand(cmd);
> +            fileInfo = receiveStream(channel, remoteFile, null);
> +            channel.disconnect();
> +        } catch (JSchException e) {
> +            throw (IOException) new IOException("Error during SCP
> transfer."+e.getMessage())
> +            .initCause(e);
> +        } finally {
> +            if (channel != null)
> +              channel.disconnect();
> +        }
> +        return fileInfo;
> +    }
> +}
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/vfs/IvyW
> ebdavClientFactory.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
>
> y/plugins/repository/vfs/IvyWebdavClientFactory.java?view=diff&rev=538245&r1
> =538244&r2=538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/vfs/IvyW
> ebdavClientFactory.java (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/vfs/IvyW
> ebdavClientFactory.java Tue May 15 09:29:33 2007
> @@ -35,9 +35,6 @@
>   *
>   * Create a HttpClient instance
>   *
> - * @author <a href="mailto:imario@apache.org">Mario Ivankovits</a>
> - * @author Maarten Coene
> - * @version $Revision: 330479 $ $Date: 2005-11-03 07:19:24 +0100 (Do, 03
> Nov 2005) $
>   */
> class IvyWebdavClientFactory {
>
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/vfs/IvyW
> ebdavConnectionManager.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
>
> y/plugins/repository/vfs/IvyWebdavConnectionManager.java?view=diff&rev=53824
> 5&r1=538244&r2=538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/vfs/IvyW
> ebdavConnectionManager.java (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/vfs/IvyW
> ebdavConnectionManager.java Tue May 15 09:29:33 2007
> @@ -36,13 +36,6 @@
>   * <p/>
>   * imario@apache.org: Keep connection in ThreadLocal.
>   *
> - * @author <a href="mailto:imario@apache.org">Mario Ivankovits</a>
> - * @author <a href="mailto:becke@u.washington.edu">Michael Becke</a>
> - * @author Eric Johnson
> - * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
> - * @author <a href="mailto:oleg@ural.ru">Oleg Kalnichevski</a>
> - * @author Laura Werner
> - * @author Maarten Coene
>   */
> class IvyWebdavConnectionManager implements HttpConnectionManager {
>
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/vfs/IvyW
> ebdavFileProvider.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
>
> y/plugins/repository/vfs/IvyWebdavFileProvider.java?view=diff&rev=538245&r1=
> 538244&r2=538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/vfs/IvyW
> ebdavFileProvider.java (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/vfs/IvyW
> ebdavFileProvider.java Tue May 15 09:29:33 2007
> @@ -31,9 +31,6 @@
>   *
>   * A provider for WebDAV.
>   *
> - * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
> - * @author Maarten Coene
> - * @version $Revision: 417178 $ $Date: 2006-06-26 05:31:41 -0700 (Mon, 26
> Jun 2006) $
>   */
> public class IvyWebdavFileProvider extends WebdavFileProvider {
>
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/vfs/IvyW
> ebdavFileSystem.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
>
> y/plugins/repository/vfs/IvyWebdavFileSystem.java?view=diff&rev=538245&r1=53
> 8244&r2=538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/vfs/IvyW
> ebdavFileSystem.java (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/vfs/IvyW
> ebdavFileSystem.java Tue May 15 09:29:33 2007
> @@ -26,7 +26,6 @@
> /**
>   * This class extends from WebDavFileSystem because it doesn't provide an
> accessible constructor.
>   *
> - * @author Maarten Coene
>   */
> class IvyWebdavFileSystem extends WebDavFileSystem {
>
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/vfs/VfsR
> epository.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
>
> y/plugins/repository/vfs/VfsRepository.java?view=diff&rev=538245&r1=538244&r
> 2=538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/vfs/VfsR
> epository.java (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/vfs/VfsR
> epository.java Tue May 15 09:29:33 2007
> @@ -44,10 +44,6 @@
> /**
>   * Implementation of a VFS repository
>   *
> - * @author glen
> - * @author Matt Inger
> - * @author Stephen Nesbitt
> - *
>   */
> public class VfsRepository extends AbstractRepository {
>         /**
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/vfs/VfsR
> esource.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
>
> y/plugins/repository/vfs/VfsResource.java?view=diff&rev=538245&r1=538244&r2=
> 538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/vfs/VfsR
> esource.java (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/vfs/VfsR
> esource.java Tue May 15 09:29:33 2007
> @@ -35,10 +35,6 @@
> /**
>   * VFS implementation of the Resource interface
>   *
> - * @author glen
> - * @author Matt Inger
> - * @author Stephen Nesbitt
> - *
>   */
> public class VfsResource implements Resource {
>         private String _vfsURI;
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/vsftp/Vs
> ftpRepository.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
>
> y/plugins/repository/vsftp/VsftpRepository.java?view=diff&rev=538245&r1=5382
> 44&r2=538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/vsftp/Vs
> ftpRepository.java (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/vsftp/Vs
> ftpRepository.java Tue May 15 09:29:33 2007
> @@ -52,7 +52,6 @@
>   *
>   * Tested with SecureCRT 5.0.5
>   *
> - * @author Xavier Hanin
>   *
>   */
> public class VsftpRepository extends AbstractRepository {
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/AbstractRe
> sourceResolver.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
>
> y/plugins/resolver/AbstractResourceResolver.java?view=diff&rev=538245&r1=538
> 244&r2=538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/AbstractRe
> sourceResolver.java (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/AbstractRe
> sourceResolver.java Tue May 15 09:29:33 2007
> @@ -45,7 +45,6 @@
>
>
> /**
> - * @author Xavier Hanin
>   *
>   */
> public abstract class AbstractResourceResolver extends BasicResolver {
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/BasicResol
> ver.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
>
> y/plugins/resolver/BasicResolver.java?view=diff&rev=538245&r1=538244&r2=5382
> 45
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/BasicResol
> ver.java (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/BasicResol
> ver.java Tue May 15 09:29:33 2007
> @@ -76,7 +76,6 @@
>
>
> /**
> - * @author Xavier Hanin
>   *
>   */
> public abstract class BasicResolver extends AbstractResolver {
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/ChainResol
> ver.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
>
> y/plugins/resolver/ChainResolver.java?view=diff&rev=538245&r1=538244&r2=5382
> 45
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/ChainResol
> ver.java (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/ChainResol
> ver.java Tue May 15 09:29:33 2007
> @@ -42,7 +42,6 @@
>
>
> /**
> - * @author Hanin
>   *
>   */
> public class ChainResolver extends AbstractResolver {
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/Dependency
> Resolver.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
>
> y/plugins/resolver/DependencyResolver.java?view=diff&rev=538245&r1=538244&r2
> =538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/Dependency
> Resolver.java (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/Dependency
> Resolver.java Tue May 15 09:29:33 2007
> @@ -34,7 +34,6 @@
>
>
> /**
> - * @author x.hanin
>   *
>   */
> public interface DependencyResolver {
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/FileSystem
> Resolver.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
>
> y/plugins/resolver/FileSystemResolver.java?view=diff&rev=538245&r1=538244&r2
> =538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/FileSystem
> Resolver.java (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/FileSystem
> Resolver.java Tue May 15 09:29:33 2007
> @@ -20,7 +20,6 @@
> import org.apache.ivy.plugins.repository.file.FileRepository;
>
> /**
> - * @author Xavier Hanin
>   */
> public class FileSystemResolver extends RepositoryResolver {
>      public FileSystemResolver() {
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/Repository
> Resolver.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
>
> y/plugins/resolver/RepositoryResolver.java?view=diff&rev=538245&r1=538244&r2
> =538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/Repository
> Resolver.java (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/Repository
> Resolver.java Tue May 15 09:29:33 2007
> @@ -51,7 +51,6 @@
>
>
> /**
> - * @author Xavier Hanin
>   *
>   */
> public class RepositoryResolver extends AbstractResourceResolver {
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/VfsResolve
> r.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
>
> y/plugins/resolver/VfsResolver.java?view=diff&rev=538245&r1=538244&r2=538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/VfsResolve
> r.java (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/VfsResolve
> r.java Tue May 15 09:29:33 2007
> @@ -24,7 +24,6 @@
> import org.apache.ivy.plugins.repository.vfs.VfsRepository;
>
> /**
> - * @author S. Nesbitt
>   *
>   */
> public class VfsResolver extends RepositoryResolver {
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/trigger/AbstractTri
> gger.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
>
> y/plugins/trigger/AbstractTrigger.java?view=diff&rev=538245&r1=538244&r2=538
> 245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/trigger/AbstractTri
> gger.java (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/trigger/AbstractTri
> gger.java Tue May 15 09:29:33 2007
> @@ -34,7 +34,6 @@
>   *
>   *
>   * @since 1.4
> - * @author Xavier Hanin
>   *
>   */
> public abstract class AbstractTrigger implements Trigger {
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/version/Match.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
> y/plugins/version/Match.java?view=diff&rev=538245&r1=538244&r2=538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/version/Match.java
> (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/version/Match.java
> Tue May 15 09:29:33 2007
> @@ -33,7 +33,6 @@
>
> /**
>   *
> - * @author Maarten Coene
>   */
> public class Match {
>         private String _revision;
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/version/PatternVers
> ionMatcher.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
>
> y/plugins/version/PatternVersionMatcher.java?view=diff&rev=538245&r1=538244&
> r2=538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/version/PatternVers
> ionMatcher.java (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/version/PatternVers
> ionMatcher.java Tue May 15 09:29:33 2007
> @@ -29,7 +29,6 @@
>
> /**
>   *
> - * @author Maarten Coene
>   */
> public class PatternVersionMatcher extends AbstractVersionMatcher {
>
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/version/VersionMatc
> her.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
>
> y/plugins/version/VersionMatcher.java?view=diff&rev=538245&r1=538244&r2=5382
> 45
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/version/VersionMatc
> her.java (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/version/VersionMatc
> her.java Tue May 15 09:29:33 2007
> @@ -38,7 +38,6 @@
>   * Therefore if a version matcher uses only module descriptors to accept
> a
> revision or not it should always return true
>   * to needModuleDescriptor(ModuleRevisionId askedMrid, ModuleRevisionId
> foundMrid) and accept(ModuleRevisionId askedMrid, ModuleRevisionId
> foundMrid).
>   *
> - * @author Xavier Hanin
>   */
> public interface VersionMatcher {
>      /**
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/version/VersionRang
> eMatcher.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
>
> y/plugins/version/VersionRangeMatcher.java?view=diff&rev=538245&r1=538244&r2
> =538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/version/VersionRang
> eMatcher.java (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/version/VersionRang
> eMatcher.java Tue May 15 09:29:33 2007
> @@ -45,7 +45,6 @@
>   * Note that it can't work with latest time strategy, cause no time is
> known for the limits of the range.
>   * Therefore only purely revision based LatestStrategy can be used.
>   *
> - * @author xavier hanin
>   *
>   */
> public class VersionRangeMatcher   extends AbstractVersionMatcher {
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/ConfigurationUtils.jav
> a
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
> y/util/ConfigurationUtils.java?view=diff&rev=538245&r1=538244&r2=538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/ConfigurationUtils.jav
> a (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/ConfigurationUtils.jav
> a Tue May 15 09:29:33 2007
> @@ -28,7 +28,6 @@
> /**
>   * Class containing several utility methods for working with
> configurations.
>   *
> - * @author Maarten Coene
>   *
>   */
> public class ConfigurationUtils {
>
> Modified:
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/Configurator.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
> y/util/Configurator.java?view=diff&rev=538245&r1=538244&r2=538245
>
> ============================================================================
> ==
> ---
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/Configurator.java
> (original)
> +++
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/Configurator.java
> Tue May 15 09:29:33 2007
> @@ -52,7 +52,6 @@
>   * conf.endCreateChild(); // xinterface
>   * conf.endCreateChild(); // buildpath
>   *
> - * @author x.hanin
>   *
>   */
> public class Configurator {
>
> Modified:
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/Credentials.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
> y/util/Credentials.java?view=diff&rev=538245&r1=538244&r2=538245
>
> ============================================================================
> ==
> --- incubator/ivy/core/trunk/src/java/org/apache/ivy/util/Credentials.java
> (original)
> +++ incubator/ivy/core/trunk/src/java/org/apache/ivy/util/Credentials.java
> Tue May 15 09:29:33 2007
> @@ -19,8 +19,6 @@
>
> /**
>   *
> - * @author Christian Riege
> - * @author Xavier Hanin
>   */
> public class Credentials {
>         private String _realm;
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/EncrytedProperties.jav
> a
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
> y/util/EncrytedProperties.java?view=diff&rev=538245&r1=538244&r2=538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/EncrytedProperties.jav
> a (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/EncrytedProperties.jav
> a Tue May 15 09:29:33 2007
> @@ -33,7 +33,6 @@
>   *
>   * It this thus recommended to void using them, use setProperty and
> getProperty instead.
>   *
> - * @author Xavier Hanin
>   *
>   */
> public class EncrytedProperties extends Properties {
>
> Modified:
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/FileUtil.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
> y/util/FileUtil.java?view=diff&rev=538245&r1=538244&r2=538245
>
> ============================================================================
> ==
> --- incubator/ivy/core/trunk/src/java/org/apache/ivy/util/FileUtil.java
> (original)
> +++ incubator/ivy/core/trunk/src/java/org/apache/ivy/util/FileUtil.java
> Tue
> May 15 09:29:33 2007
> @@ -38,7 +38,6 @@
>
>
> /**
> - * @author x.hanin
>   *
>   */
> public class FileUtil {
>
> Modified:
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/Message.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
> y/util/Message.java?view=diff&rev=538245&r1=538244&r2=538245
>
> ============================================================================
> ==
> --- incubator/ivy/core/trunk/src/java/org/apache/ivy/util/Message.java
> (original)
> +++ incubator/ivy/core/trunk/src/java/org/apache/ivy/util/Message.java Tue
> May 15 09:29:33 2007
> @@ -30,8 +30,6 @@
>
> /**
>   *
> - * @author Xavier Hanin
> - * @author Gilles Scokart
>   */
> public class Message {
>      // messages level copied from ant project, to avoid dependency on ant
>
> Modified:
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/StringUtils.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
> y/util/StringUtils.java?view=diff&rev=538245&r1=538244&r2=538245
>
> ============================================================================
> ==
> --- incubator/ivy/core/trunk/src/java/org/apache/ivy/util/StringUtils.java
> (original)
> +++ incubator/ivy/core/trunk/src/java/org/apache/ivy/util/StringUtils.java
> Tue May 15 09:29:33 2007
> @@ -23,7 +23,6 @@
>   * Usually use commons lang but here we do not want to have such
>   * a dependency for only one feature
>   *
> - * @author X. Hanin
>   *
>   */
> public class StringUtils {
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/ApacheURLLister.ja
> va
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
> y/util/url/ApacheURLLister.java?view=diff&rev=538245&r1=538244&r2=538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/ApacheURLLister.ja
> va (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/ApacheURLLister.ja
> va Tue May 15 09:29:33 2007
> @@ -36,9 +36,6 @@
>   * tested with Apache 1.3.33 server listing, as the one used at ibiblio,
> and
>   * with Apache 2.0.53 server listing, as the one on mirrors.sunsite.dk.
>   *
> - * @author Glen Marchesani
> - * @author Xavier Hanin
> - * @author <a href="mailto:johnmshields@yahoo.com">John M. Shields</a>
>   */
> public class ApacheURLLister {
>      //~ Static variables/initializers
> ------------------------------------------
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/BasicURLHandler.ja
> va
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
> y/util/url/BasicURLHandler.java?view=diff&rev=538245&r1=538244&r2=538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/BasicURLHandler.ja
> va (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/BasicURLHandler.ja
> va Tue May 15 09:29:33 2007
> @@ -33,8 +33,6 @@
>
>
> /**
> - * @author Xavier Hanin
> - * @author Christian Riege
>   *
>   */
> public class BasicURLHandler extends AbstractURLHandler {
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/CredentialsStore.j
> ava
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
> y/util/url/CredentialsStore.java?view=diff&rev=538245&r1=538244&r2=538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/CredentialsStore.j
> ava (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/CredentialsStore.j
> ava Tue May 15 09:29:33 2007
> @@ -26,8 +26,6 @@
>
> /**
>   *
> - * @author Christian Riege
> - * @author Xavier Hanin
>   */
> public class CredentialsStore {
>      /**
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/HttpClientHandler.
> java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
> y/util/url/HttpClientHandler.java?view=diff&rev=538245&r1=538244&r2=538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/HttpClientHandler.
> java (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/HttpClientHandler.
> java Tue May 15 09:29:33 2007
> @@ -44,7 +44,6 @@
>
>
> /**
> - * @author Xavier Hanin
>   *
>   */
> public class HttpClientHandler extends AbstractURLHandler {
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/IvyAuthenticator.j
> ava
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
> y/util/url/IvyAuthenticator.java?view=diff&rev=538245&r1=538244&r2=538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/IvyAuthenticator.j
> ava (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/IvyAuthenticator.j
> ava Tue May 15 09:29:33 2007
> @@ -1,60 +1,58 @@
> -/*
> - *  Licensed to the Apache Software Foundation (ASF) under one or more
> - *  contributor license agreements.  See the NOTICE file distributed with
> - *  this work for additional information regarding copyright ownership.
> - *  The ASF licenses this file to You under the Apache License, Version
> 2.0
> - *  (the "License"); you may not use this file except in compliance with
> - *  the License.  You may obtain a copy of the License at
> - *
> - *      http://www.apache.org/licenses/LICENSE-2.0
> - *
> - *  Unless required by applicable law or agreed to in writing, software
> - *  distributed under the License is distributed on an "AS IS" BASIS,
> - *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> - *  See the License for the specific language governing permissions and
> - *  limitations under the License.
> - *
> - */
> -package org.apache.ivy.util.url;
> -
> -import java.net.Authenticator;
> -import java.net.PasswordAuthentication;
> -
> -import org.apache.ivy.util.Credentials;
> -import org.apache.ivy.util.Message;
> -
> -
> -/**
> - *
> - * @author Christian Riege
> - * @author Xavier Hanin
> - */
> -public final class IvyAuthenticator extends Authenticator {
> -
> -
> -    /**
> -     * The sole instance.
> -     */
> -    public final static IvyAuthenticator INSTANCE = new
> IvyAuthenticator();
> -
> -    /**
> -     * Private c'tor to prevent instantiation. Also installs this as the
> default
> -     * Authenticator to use by the JVM.
> -     */
> -    private IvyAuthenticator() {
> -        // Install this as the default Authenticator object.
> -        Authenticator.setDefault(this);
> -    }
> -
> -    // API
> ******************************************************************
> -
> -    // Overriding Authenticator
> *********************************************
> -
> -    protected PasswordAuthentication getPasswordAuthentication() {
> -       Credentials c =
> CredentialsStore.INSTANCE.getCredentials(getRequestingPrompt(),
> getRequestingHost());
> -        Message.debug("authentication:
> k='"+Credentials.buildKey(getRequestingPrompt(), getRequestingHost())+"'
> c='" + c + "'");
> -        return c != null ? new PasswordAuthentication(c.getUserName(),
> c.getPasswd().toCharArray()) : null;
> -    }
> -
> -
> -}
> +/*
> + *  Licensed to the Apache Software Foundation (ASF) under one or more
> + *  contributor license agreements.  See the NOTICE file distributed with
> + *  this work for additional information regarding copyright ownership.
> + *  The ASF licenses this file to You under the Apache License, Version
> 2.0
> + *  (the "License"); you may not use this file except in compliance with
> + *  the License.  You may obtain a copy of the License at
> + *
> + *      http://www.apache.org/licenses/LICENSE-2.0
> + *
> + *  Unless required by applicable law or agreed to in writing, software
> + *  distributed under the License is distributed on an "AS IS" BASIS,
> + *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> + *  See the License for the specific language governing permissions and
> + *  limitations under the License.
> + *
> + */
> +package org.apache.ivy.util.url;
> +
> +import java.net.Authenticator;
> +import java.net.PasswordAuthentication;
> +
> +import org.apache.ivy.util.Credentials;
> +import org.apache.ivy.util.Message;
> +
> +
> +/**
> + *
> + */
> +public final class IvyAuthenticator extends Authenticator {
> +
> +
> +    /**
> +     * The sole instance.
> +     */
> +    public final static IvyAuthenticator INSTANCE = new
> IvyAuthenticator();
> +
> +    /**
> +     * Private c'tor to prevent instantiation. Also installs this as the
> default
> +     * Authenticator to use by the JVM.
> +     */
> +    private IvyAuthenticator() {
> +        // Install this as the default Authenticator object.
> +        Authenticator.setDefault(this);
> +    }
> +
> +    // API
> ******************************************************************
> +
> +    // Overriding Authenticator
> *********************************************
> +
> +    protected PasswordAuthentication getPasswordAuthentication() {
> +       Credentials c =
> CredentialsStore.INSTANCE.getCredentials(getRequestingPrompt(),
> getRequestingHost());
> +        Message.debug("authentication:
> k='"+Credentials.buildKey(getRequestingPrompt(), getRequestingHost())+"'
> c='" + c + "'");
> +        return c != null ? new PasswordAuthentication(c.getUserName(),
> c.getPasswd().toCharArray()) : null;
> +    }
> +
> +
> +}
>
> Modified:
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/URLHandler.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
> y/util/url/URLHandler.java?view=diff&rev=538245&r1=538244&r2=538245
>
> ============================================================================
> ==
> ---
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/URLHandler.java
> (original)
> +++
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/URLHandler.java
> Tue May 15 09:29:33 2007
> @@ -29,7 +29,6 @@
>   * This interface is responsible for handling some URL manipulation
>   * (stream opening, downloading, check reachability, ...).
>   *
> - * @author Xavier Hanin
>   *
>   */
> public interface URLHandler {
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/URLHandlerDispatch
> er.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
>
> y/util/url/URLHandlerDispatcher.java?view=diff&rev=538245&r1=538244&r2=53824
> 5
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/URLHandlerDispatch
> er.java (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/URLHandlerDispatch
> er.java Tue May 15 09:29:33 2007
> @@ -30,7 +30,6 @@
> /**
>   * This class is used to dispatch downloading requests
>   *
> - * @author Xavier Hanin
>   *
>   */
> public class URLHandlerDispatcher implements URLHandler {
>
> Modified:
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/URLHandlerRegistry
> .java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/iv
>
> y/util/url/URLHandlerRegistry.java?view=diff&rev=538245&r1=538244&r2=538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/URLHandlerRegistry
> .java (original)
> +++
>
> incubator/ivy/core/trunk/src/java/org/apache/ivy/util/url/URLHandlerRegistry
> .java Tue May 15 09:29:33 2007
> @@ -20,7 +20,6 @@
> import org.apache.ivy.util.Message;
>
> /**
> - * @author Xavier Hanin
>   *
>   */
> public class URLHandlerRegistry {
>
> Modified:
>
> incubator/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.j
> ava
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/i
> vy/core/resolve/ResolveTest.java?view=diff&rev=538245&r1=538244&r2=538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.j
> ava (original)
> +++
>
> incubator/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.j
> ava Tue May 15 09:29:33 2007
> @@ -60,7 +60,6 @@
>
>
> /**
> - * @author Xavier Hanin
>   *
>   */
> public class ResolveTest extends TestCase {
>
> Modified:
> incubator/ivy/core/trunk/test/java/org/apache/ivy/core/sort/SortTest.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/i
> vy/core/sort/SortTest.java?view=diff&rev=538245&r1=538244&r2=538245
>
> ============================================================================
> ==
> ---
> incubator/ivy/core/trunk/test/java/org/apache/ivy/core/sort/SortTest.java
> (original)
> +++
> incubator/ivy/core/trunk/test/java/org/apache/ivy/core/sort/SortTest.java
> Tue May 15 09:29:33 2007
> @@ -30,8 +30,6 @@
> import org.apache.ivy.core.module.id.ModuleRevisionId;
>
> /**
> - * @author Xavier Hanin
> - * @author baumkar
>   */
> public class SortTest extends TestCase {
>
>
> Modified:
>
> incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/conflict/RegexpCon
> flictManagerTest.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/i
>
> vy/plugins/conflict/RegexpConflictManagerTest.java?view=diff&rev=538245&r1=5
> 38244&r2=538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/conflict/RegexpCon
> flictManagerTest.java (original)
> +++
>
> incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/conflict/RegexpCon
> flictManagerTest.java Tue May 15 09:29:33 2007
> @@ -17,10 +17,6 @@
>   */
> package org.apache.ivy.plugins.conflict;
>
> -/**
> - * @author Anders janmyr
> - */
> -
> import java.io.File;
>
> import junit.framework.TestCase;
>
> Modified:
>
> incubator/ivy/core/trunk/test/java/org/apache/ivy/util/ConfiguratorTest.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/i
> vy/util/ConfiguratorTest.java?view=diff&rev=538245&r1=538244&r2=538245
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/test/java/org/apache/ivy/util/ConfiguratorTest.java
> (original)
> +++
>
> incubator/ivy/core/trunk/test/java/org/apache/ivy/util/ConfiguratorTest.java
> Tue May 15 09:29:33 2007
> @@ -23,7 +23,6 @@
> import junit.framework.TestCase;
>
> /**
> - * @author x.hanin
>   *
>   */
> public class ConfiguratorTest extends TestCase {
>
> Modified:
>
> incubator/ivy/core/trunk/test/java/org/apache/ivy/util/url/ApacheURLListerTe
> st.java
> URL:
>
> http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/i
>
> vy/util/url/ApacheURLListerTest.java?view=diff&rev=538245&r1=538244&r2=53824
> 5
>
> ============================================================================
> ==
> ---
>
> incubator/ivy/core/trunk/test/java/org/apache/ivy/util/url/ApacheURLListerTe
> st.java (original)
> +++
>
> incubator/ivy/core/trunk/test/java/org/apache/ivy/util/url/ApacheURLListerTe
> st.java Tue May 15 09:29:33 2007
> @@ -27,8 +27,6 @@
> /**
>   * Tests {@link ApacheURLLister}.
>   *
> - * @author Xavier Hanin
> - * @author <a href="johnmshields@yahoo.com">John M. Shields</a>
>   */
> public class ApacheURLListerTest extends TestCase {
>
>
>
>


-- 
Xavier Hanin - Independent Java Consultant
Manage your dependencies with Ivy!
http://incubator.apache.org/ivy/