You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wagon-commits@maven.apache.org by br...@apache.org on 2005/02/09 07:51:32 UTC
cvs commit: maven-wagon/wagon-providers/wagon-ftp/src/main/java/org/apache/maven/wagon/providers/ftp FtpWagon.java
brett 2005/02/08 22:51:32
Modified: wagon-providers/wagon-ftp/src/main/java/org/apache/maven/wagon/providers/ftp
FtpWagon.java
Log:
add mode handling and backport bugfixes from m1's artifact plugin
Revision Changes Path
1.5 +58 -9 maven-wagon/wagon-providers/wagon-ftp/src/main/java/org/apache/maven/wagon/providers/ftp/FtpWagon.java
Index: FtpWagon.java
===================================================================
RCS file: /home/cvs/maven-wagon/wagon-providers/wagon-ftp/src/main/java/org/apache/maven/wagon/providers/ftp/FtpWagon.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- FtpWagon.java 14 Dec 2004 20:10:39 -0000 1.4
+++ FtpWagon.java 9 Feb 2005 06:51:31 -0000 1.5
@@ -20,18 +20,25 @@
import org.apache.commons.net.ProtocolCommandListener;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
-import org.apache.commons.net.ftp.FTPReply;
import org.apache.commons.net.ftp.FTPFile;
-import org.apache.maven.wagon.*;
-import org.apache.maven.wagon.resource.Resource;
-import org.apache.maven.wagon.events.TransferListener;
+import org.apache.commons.net.ftp.FTPReply;
+import org.apache.maven.wagon.ConnectionException;
+import org.apache.maven.wagon.InputData;
+import org.apache.maven.wagon.OutputData;
+import org.apache.maven.wagon.PathUtils;
+import org.apache.maven.wagon.ResourceDoesNotExistException;
+import org.apache.maven.wagon.StreamWagon;
+import org.apache.maven.wagon.TransferFailedException;
+import org.apache.maven.wagon.WagonConstants;
import org.apache.maven.wagon.authentication.AuthenticationException;
import org.apache.maven.wagon.authentication.AuthenticationInfo;
+import org.apache.maven.wagon.repository.RepositoryPermissions;
+import org.apache.maven.wagon.resource.Resource;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.io.File;
public class FtpWagon
extends StreamWagon
@@ -146,10 +153,26 @@
{
try
{
+ // TODO [BP]: verify the order is correct
ftp.completePendingCommand();
+
+ RepositoryPermissions permissions = repository.getPermissions();
+
+ if ( permissions != null && permissions.getGroup() != null )
+ {
+ // ignore failures
+ ftp.sendSiteCommand( "CHGRP " + permissions.getGroup() );
+ }
+
+ if ( permissions != null && permissions.getFileMode() != null )
+ {
+ // ignore failures
+ ftp.sendSiteCommand( "CHMOD " + permissions.getFileMode() );
+ }
}
catch ( IOException e )
{
+ // TODO: handle
// michal I am not sure what error means in that context
// I think that we will be able to recover or simply we will fail later on
}
@@ -199,18 +222,41 @@
Resource resource = outputData.getResource();
+ RepositoryPermissions permissions = repository.getPermissions();
+
try
{
String[] dirs = PathUtils.dirnames( resource.getName() );
for ( int i = 0; i < dirs.length; i++ )
{
- ftp.makeDirectory( dirs[i] );
-
boolean dirChanged = ftp.changeWorkingDirectory( dirs[i] );
if ( !dirChanged )
{
+ // first, try to create it
+ boolean success = ftp.makeDirectory( dirs[i] );
+
+ if ( success )
+ {
+ if ( permissions != null && permissions.getGroup() != null )
+ {
+ // ignore failures
+ ftp.sendSiteCommand( "CHGRP " + permissions.getGroup() );
+ }
+
+ if ( permissions != null && permissions.getDirectoryMode() != null )
+ {
+ // ignore failures
+ ftp.sendSiteCommand( "CHMOD " + permissions.getDirectoryMode() );
+ }
+
+ dirChanged = ftp.changeWorkingDirectory( dirs[i] );
+ }
+ }
+
+ if ( !dirChanged )
+ {
String msg = " Resource " + resource + " not found. Directory " + dirs[i] + " does not exist";
throw new ResourceDoesNotExistException( msg );
@@ -221,13 +267,16 @@
// FTP wagon is ready for next requests
for ( int i = 0; i < dirs.length; i++ )
{
- ftp.changeWorkingDirectory( ".." );
+ if ( !ftp.changeWorkingDirectory( ".." ) )
+ {
+ throw new TransferFailedException( "Unable to return to the base directory" );
+ }
}
os = ftp.storeFileStream( resource.getName() );
- if ( os == null)
+ if ( os == null )
{
String msg = "Cannot transfer resource: '" +
resource + "' Output stream is null. FTP Server response: " +
---------------------------------------------------------------------
To unsubscribe, e-mail: wagon-cvs-unsubscribe@maven.apache.org
For additional commands, e-mail: wagon-cvs-help@maven.apache.org