You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by jv...@apache.org on 2003/01/05 03:10:23 UTC
cvs commit: jakarta-turbine-maven/src/plugins-build/deploy/src/java/org/apache/maven/deploy FtpDeployer.java
jvanzyl 2003/01/04 18:10:22
Added: src/plugins-build/deploy/src/java/org/apache/maven/deploy
FtpDeployer.java
Log:
o Here's the FTP deployer ...
o there are enough methods here to see where the interface has to change
to accommodate just ssh, http, and ftp. tomorrow ...
Revision Changes Path
1.1 jakarta-turbine-maven/src/plugins-build/deploy/src/java/org/apache/maven/deploy/FtpDeployer.java
Index: FtpDeployer.java
===================================================================
package org.apache.maven.deploy;
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001 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 acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache MavenSession" 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",
* "Apache MavenSession", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* 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/>.
*
* ====================================================================
*/
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ProtocolCommandEvent;
import org.apache.commons.net.ProtocolCommandListener;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPConnectionClosedException;
import org.apache.commons.net.ftp.FTPReply;
/**
* An FTP deployer based on the FTPClient in the Commons Net package.
*
* @author <a href="mailto:jason@zenplex.com">Jason van Zyl</a>
*
* @version $Id: FtpDeployer.java,v 1.1 2003/01/05 02:10:22 jvanzyl Exp $
*
* @todo account for username and password.
*/
public class FtpDeployer
extends AbstractDeployer
{
/**
* Description of the Method
*/
public void deploy(String host, String localPath, String remotePath)
{
String username = null;
String password = null;
//server = args[base++];
//username = args[base++];
//password = args[base++];
FTPClient ftp = new FTPClient();
ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
try
{
int reply;
ftp.connect(host);
System.out.println("Connected to " + host + ".");
// After connection attempt, you should check the reply code to verify
// success.
reply = ftp.getReplyCode();
if (FTPReply.isPositiveCompletion(reply) == false)
{
ftp.disconnect();
System.err.println("FTP server refused connection.");
System.exit(1);
}
}
catch (IOException e)
{
if (ftp.isConnected())
{
try
{
ftp.disconnect();
}
catch (IOException f)
{
// do nothing
}
}
System.err.println("Could not connect to server.");
e.printStackTrace();
System.exit(1);
}
__main :
try
{
if ( ftp.login(username, password) == false )
{
ftp.logout();
break __main;
}
System.out.println("Remote system is " + ftp.getSystemName());
// Set to binary mode.
ftp.setFileType(FTP.BINARY_FILE_TYPE);
// Use passive mode as default because most of us are
// behind firewalls these days.
ftp.enterLocalPassiveMode();
ftp.storeFile(remotePath, new FileInputStream( localPath) );
ftp.logout();
}
catch (FTPConnectionClosedException e)
{
System.err.println("Server closed connection.");
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
if (ftp.isConnected())
{
try
{
ftp.disconnect();
}
catch (IOException f)
{
// do nothing
}
}
}
}
/**
* Description of the Class
*/
public class PrintCommandListener
implements ProtocolCommandListener
{
private PrintWriter writer;
/**
* Constructor for the PrintCommandListener object
*
* @param writer
*/
public PrintCommandListener(PrintWriter writer)
{
this.writer = writer;
}
/**
* Description of the Method
*/
public void protocolCommandSent(ProtocolCommandEvent event)
{
writer.print(event.getMessage());
writer.flush();
}
/**
* Description of the Method
*/
public void protocolReplyReceived(ProtocolCommandEvent event)
{
writer.print(event.getMessage());
writer.flush();
}
}
}