Author: bodewig Date: Wed Jul 16 02:32:52 2008 New Revision: 677211 URL: http://svn.apache.org/viewvc?rev=677211&view=rev Log: Create remoteDir if needed, More meaningful error when exception occurs. PR 42781. Submitted by Eduard Wirch.
Modified: ant/core/trunk/CONTRIBUTORS ant/core/trunk/WHATSNEW ant/core/trunk/contributors.xml ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpToMessageBySftp.java Modified: ant/core/trunk/CONTRIBUTORS URL: http://svn.apache.org/viewvc/ant/core/trunk/CONTRIBUTORS?rev=677211&r1=677210&r2=677211&view=diff ============================================================================== Binary files - no diff available. Modified: ant/core/trunk/WHATSNEW URL: http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=677211&r1=677210&r2=677211&view=diff ============================================================================== --- ant/core/trunk/WHATSNEW (original) +++ ant/core/trunk/WHATSNEW Wed Jul 16 02:32:52 2008 @@ -104,6 +104,9 @@ * XmlLogger could lose messages if <parallel> is used. Bugzilla Report 25734. + * <scp> creates remoteToDir if it doesn't exist. + Bugzilla Report 42781 + Other changes: -------------- Modified: ant/core/trunk/contributors.xml URL: http://svn.apache.org/viewvc/ant/core/trunk/contributors.xml?rev=677211&r1=677210&r2=677211&view=diff ============================================================================== --- ant/core/trunk/contributors.xml (original) +++ ant/core/trunk/contributors.xml Wed Jul 16 02:32:52 2008 @@ -320,6 +320,10 @@ <last>Sudell</last> </name> <name> + <first>Eduard</first> + <last>Wirch</last> + </name> + <name> <first>Edwin</first> <last>Woudt</last> </name> Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpToMessageBySftp.java URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpToMessageBySftp.java?rev=677211&r1=677210&r2=677211&view=diff ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpToMessageBySftp.java (original) +++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpToMessageBySftp.java Wed Jul 16 02:32:52 2008 @@ -153,24 +153,37 @@ channel.connect(); try { + try { + channel.stat(remotePath); + } catch (SftpException e) { + if (e.id == ChannelSftp.SSH_FX_NO_SUCH_FILE) { + // dir does not exist. + channel.mkdir(remotePath); + } else { + throw new JSchException("failed to access remote dir '" + + remotePath + "'", e); + } + } channel.cd(remotePath); } catch (SftpException e) { - JSchException schException = new JSchException("Could not CD to '" + remotePath + "' - " + e.toString()); - schException.initCause(e); - throw schException; + throw new JSchException("Could not CD to '" + remotePath + + "' - " + e.toString(), e); } + Directory current = null; try { for (Iterator i = directoryList.iterator(); i.hasNext();) { - Directory current = (Directory) i.next(); - if(getVerbose()) { + current = (Directory) i.next(); + if (getVerbose()) { log("Sending directory " + current); } sendDirectory(channel, current); } } catch (SftpException e) { - JSchException schException = new JSchException(e.toString()); - schException.initCause(e); - throw schException; + String msg = "Error sending directory"; + if (current != null && current.getDirectory() != null) { + msg += " '" + current.getDirectory().getName() + "'"; + } + throw new JSchException(msg, e); } } finally { if (channel != null) {