You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by Carlos Sonderegger <ca...@gmx.net> on 2008/06/22 11:17:04 UTC

VFS SMB and Ant Updates

I noticed you updates on VFS Trunk for SmbFileObject.java 

* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> 
* @version $Revision: 659785 $ $Date: 2008-05-24 12:32:41 +0200 (Sat, 24 May 2008) $ 

The problematic code change is 
   protected InputStream doGetInputStream() throws Exception 
    { 
        try 
        { 
            return new SmbFileInputStream(file); 
        } 
        catch (SmbException e) 
        { 
            if (e.getErrorCode() == SmbException.ERRbadfile) 
            { 
                throw new FileNotFoundException(getName()); 
            } 
            else if (file.isDirectory()) 
            { 
                throw new FileTypeHasNoContentException(getName()); 
            } 

            throw e; 
        } 
    } 

where in all CIFS Releases I checked, 1.1.16 - 1.1.21c, I cannot find a Method getErrorCode and SmbException.ERRbadfile.

Against which CIFS Library do you develop ? 



I made some changes in the Ant Task, which allows propagation of FileSystemOptions (Identities and StrictHostKeyChecking) to the
sftp provider, for src and dest. Also a File Pattern Matcher, using Ant RegExp Implementation, to select specific Files in the move
command.

If you are interested in those changes, I appended them at the and of the mail. They are against a copy of trunk for about one year,
also the changed sources are equal to the actual trunk version.

Regards
Carlos



Index: U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons/vfs/impl/DefaultFileSystemManager.java 
=================================================================== 
--- U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons/vfs/impl/DefaultFileSystemManager.java (revision 565695)

+++ U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons/vfs/impl/DefaultFileSystemManager.java (working copy)

@@ -594,6 +594,17 @@ 
        } 
  
        /** 
+        * Locates a file by URI. RHU 
+        */ 
+       public FileObject resolveFile(final File baseFile, final String uri, final FileSystemOptions fileSystemOptions) 
+                       throws FileSystemException 
+       { 
+               final FileObject baseFileObj = getLocalFileProvider().findLocalFile( 
+                               baseFile); 
+               return resolveFile(baseFileObj, uri, fileSystemOptions); 
+       } 
+ 
+       /** 
         * Resolves a URI, relative to a base file. 
         */ 
        public FileObject resolveFile(final FileObject baseFile, final String uri) 
Index: U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons/vfs/provider/http/ThreadLocalHttpConnectionManager.java

=================================================================== 
--- U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons/vfs/provider/http/ThreadLocalHttpConnectionManager.java
(revision 565695)

+++ U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons/vfs/provider/http/ThreadLocalHttpConnectionManager.java
(working copy)

@@ -3,6 +3,7 @@ 
 import org.apache.commons.httpclient.HostConfiguration; 
 import org.apache.commons.httpclient.HttpConnection; 
 import org.apache.commons.httpclient.HttpConnectionManager; 
+import org.apache.commons.httpclient.params.HttpConnectionManagerParams; 
  
 import java.io.IOException; 
 import java.io.InputStream; 
@@ -251,4 +252,10 @@ 
             getLocalHttpConnection().close(); 
         } 
     } 
+    
+    // RHU 
+    public HttpConnectionManagerParams getParams() { 
+               return null; 
+       } 
+    public void setParams(HttpConnectionManagerParams params) {} 
 } 
Index: U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons/vfs/tasks/AbstractSyncTask.java 
=================================================================== 
--- U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons/vfs/tasks/AbstractSyncTask.java        (revision 565695)

+++ U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons/vfs/tasks/AbstractSyncTask.java        (working copy)

@@ -24,6 +24,7 @@ 
 import org.apache.commons.vfs.util.Messages; 
 import org.apache.tools.ant.BuildException; 
 import org.apache.tools.ant.Project; 
+import org.apache.tools.ant.util.regexp.Regexp; 
  
 import java.util.ArrayList; 
 import java.util.HashSet; 
@@ -62,7 +63,9 @@ 
     private boolean failonerror = true; 
     private String filesList; 
  
-    /** 
+       private Regexp reg = null; 
+ 
+       /** 
      * Sets the destination file. 
      */ 
     public void setDestFile(final String destFile) 
@@ -233,7 +236,7 @@ 
     private void handleFiles() throws Exception 
     { 
         // Locate the destination folder, and make sure it exists 
-        final FileObject destFolder = resolveFile(destDirUrl); 
+        final FileObject destFolder = resolveFile(destDirUrl, destFileSystemOptions); 
         destFolder.createFolder(); 
  
         // Locate the source files, and make sure they exist 
@@ -240,7 +243,7 @@ 
         FileName srcDirName = null; 
         if (srcDirUrl !=null ) 
         { 
-            srcDirName = resolveFile(srcDirUrl).getName(); 
+            srcDirName = resolveFile(srcDirUrl, srcFileSystemOptions).getName(); 
         } 
         final ArrayList srcs = new ArrayList(); 
         for (int i = 0; i < srcFiles.size(); i++) 
@@ -247,7 +250,7 @@ 
         { 
             // Locate the source file, and make sure it exists 
             final SourceInfo src = (SourceInfo) srcFiles.get(i); 
-            final FileObject srcFile = resolveFile(src.file); 
+            final FileObject srcFile = resolveFile(src.file, srcFileSystemOptions); 
             if (!srcFile.exists()) 
             { 
                 final String message = 
@@ -369,7 +372,7 @@ 
             return; 
         } 
         final SourceInfo src = (SourceInfo) srcFiles.get(0); 
-        final FileObject srcFile = resolveFile(src.file); 
+        final FileObject srcFile = resolveFile(src.file, srcFileSystemOptions); 
         if (srcFile.getType() != FileType.FILE) 
         { 
             final String message = 
@@ -379,7 +382,7 @@ 
         } 
  
         // Locate the destination file 
-        final FileObject destFile = resolveFile(destFileUrl); 
+        final FileObject destFile = resolveFile(destFileUrl, destFileSystemOptions); 
  
         // Do the copy 
         handleFile(srcFile, destFile); 
@@ -392,7 +395,15 @@ 
                             final FileObject destFile) 
         throws Exception 
     { 
-        if (!destFile.exists() 
+       if (reg != null) 
+       { 
+               if (!reg.matches(srcFile.getName().getPath())) 
+               { 
+                       return; 
+               } 
+       } 
+ 
+       if (!destFile.exists() 
             || srcFile.getContent().getLastModifiedTime() > destFile.getContent().getLastModifiedTime()) 
         { 
             // Destination file is out-of-date 
Index: U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons/vfs/tasks/DeleteTask.java 
=================================================================== 
--- U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons/vfs/tasks/DeleteTask.java      (revision 565695)

+++ U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons/vfs/tasks/DeleteTask.java      (working copy) 
@@ -87,7 +87,7 @@ 
                 while (tok.hasMoreTokens()) 
                 { 
                     String nextFile = tok.nextToken(); 
-                    final FileObject srcFile = resolveFile(srcDirUrl + nextFile); 
+                    final FileObject srcFile = resolveFile(srcDirUrl + nextFile, srcFileSystemOptions); 
                     srcFile.delete(Selectors.SELECT_ALL); 
                 } 
             } 
@@ -93,7 +93,7 @@ 
             } 
             else 
             { 
-                final FileObject srcFile = resolveFile(file); 
+                final FileObject srcFile = resolveFile(file, srcFileSystemOptions); 
                 log("Deleting " + srcFile); 
                 srcFile.delete(Selectors.SELECT_ALL); 
             } 
Index: U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons/vfs/tasks/MkdirTask.java 
=================================================================== 
--- U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons/vfs/tasks/MkdirTask.java       (revision 565695)

+++ U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons/vfs/tasks/MkdirTask.java       (working copy) 
@@ -55,7 +55,7 @@ 
  
         try 
         { 
-            final FileObject dir = resolveFile(dirName); 
+            final FileObject dir = resolveFile(dirName, srcFileSystemOptions); 
             final String message = Messages.getString("vfs.tasks/mkdir.create-folder.info", dir); 
             log(message); 
             dir.createFolder(); 
Index: U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons/vfs/tasks/ShowFileTask.java 
=================================================================== 
--- U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons/vfs/tasks/ShowFileTask.java    (revision 565695)

+++ U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons/vfs/tasks/ShowFileTask.java    (working copy) 
@@ -71,7 +71,7 @@ 
     { 
         try 
         { 
-            final FileObject file = resolveFile(url); 
+            final FileObject file = resolveFile(url, srcFileSystemOptions); 
             log("Details of " + file.getName().getURI()); 
             showFile(file, INDENT); 
         } 
Index: U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons/vfs/tasks/VfsTask.java 
=================================================================== 
--- U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons/vfs/tasks/VfsTask.java (revision 565695) 
+++ U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons/vfs/tasks/VfsTask.java (working copy) 
@@ -16,11 +16,16 @@ 
  */ 
 package org.apache.commons.vfs.tasks; 
  
+import java.io.File; 
+ 
 import org.apache.commons.logging.Log; 
 import org.apache.commons.vfs.FileObject; 
 import org.apache.commons.vfs.FileSystemException; 
+import org.apache.commons.vfs.FileSystemOptions; 
 import org.apache.commons.vfs.impl.StandardFileSystemManager; 
+import org.apache.commons.vfs.provider.sftp.SftpFileSystemConfigBuilder; 
 import org.apache.tools.ant.BuildEvent; 
+import org.apache.tools.ant.BuildException; 
 import org.apache.tools.ant.Project; 
 import org.apache.tools.ant.SubBuildListener; 
 import org.apache.tools.ant.Task; 
@@ -38,6 +43,10 @@ 
 { 
     private static StandardFileSystemManager manager; 
  
+       protected static FileSystemOptions srcFileSystemOptions = new FileSystemOptions(); 
+ 
+       protected static FileSystemOptions destFileSystemOptions = new FileSystemOptions(); 
+ 
     /** 
      * Resolves a URI to a file, relative to the project's base directory. 
      * 
@@ -43,7 +52,8 @@ 
      * 
      * @param uri The URI to resolve. 
      */ 
-    protected FileObject resolveFile(final String uri) 
+    protected FileObject resolveFile(final String uri, 
+                       FileSystemOptions fileSystemOptions) 
         throws FileSystemException 
     { 
         if (manager == null) 
@@ -53,7 +63,8 @@ 
             manager.init(); 
             getProject().addBuildListener(new CloseListener()); 
         } 
-        return manager.resolveFile(getProject().getBaseDir(), uri); 
+        return manager.resolveFile(getProject().getBaseDir(), uri, 
+                               fileSystemOptions); 
     } 
  
     /** 
@@ -68,7 +79,73 @@ 
         } 
     } 
  
-    /** 
+       File[] addToArray(File[] array, File s) { 
+               int len = (array == null) ? 0 : array.length; 
+ 
+               File[] ans = new File[len + 1]; 
+               if (len > 0) { 
+                       System.arraycopy(array, 0, ans, 0, len); 
+               } 
+               ans[len] = s; 
+               return ans; 
+       } 
+ 
+       private void setSftpStrictHostKeyChecking(FileSystemOptions fileSystemOptions, final String option) { 
+               try { 
+                       SftpFileSystemConfigBuilder.getInstance().setStrictHostKeyChecking( 
+                                       fileSystemOptions, option); 
+               } catch (FileSystemException e) { 
+                       throw new BuildException(e); 
+               } 
+               
+       } 
+ 
+       /** 
+        * Sets the src Sftp StrictHostKeyChecking. 
+        */ 
+       public void setSrcSftpStrictHostKeyChecking(final String option) { 
+               
+               setSftpStrictHostKeyChecking(srcFileSystemOptions, option); 
+       } 
+ 
+       /** 
+        * Sets the dest Sftp StrictHostKeyChecking. 
+        */ 
+       public void setDestSftpStrictHostKeyChecking(final String option) { 
+               
+               setSftpStrictHostKeyChecking(destFileSystemOptions, option); 
+       } 
+ 
+       
+       /** 
+        * Sets the src Sftp StrictHostKeyChecking. 
+        */ 
+       private void setSftpIdentities(FileSystemOptions fileSystemOptions, final String identityFilename) { 
+               try { 
+                       File identity = new File(identityFilename); 
+ 
+                       File[] identities = SftpFileSystemConfigBuilder.getInstance() 
+                                       .getIdentities(fileSystemOptions); 
+ 
+                       identities = addToArray(identities, identity); 
+ 
+                       SftpFileSystemConfigBuilder.getInstance().setIdentities( 
+                                       fileSystemOptions, identities); 
+ 
+               } catch (FileSystemException e) { 
+                       throw new BuildException(e); 
+               } 
+       } 
+ 
+       public void setSrcSftpIdentities(final String identityFilename) { 
+               setSftpIdentities(srcFileSystemOptions, identityFilename); 
+       } 
+ 
+       public void setDestSftpIdentities(final String identityFilename) { 
+               setSftpIdentities(destFileSystemOptions, identityFilename); 
+       } 
+ 
+       /** 
      * Closes the VFS manager when the project finishes. 
      */ 
     private class CloseListener 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


RE: VFS SMB and Ant Updates

Posted by Carlos Sonderegger <ca...@gmx.net>.
Hello

Adam, you told me to use the mailinglist, so I did.

Could you or anybody else, concerning VFS, answer my mail.

Carlos

> -----Original Message-----
> From: Carlos Sonderegger [mailto:carlos.sonderegger@gmx.net] 
> Sent: Sonntag, 22. Juni 2008 11:17
> To: dev@commons.apache.org
> Subject: VFS SMB and Ant Updates
> 
> I noticed you updates on VFS Trunk for SmbFileObject.java 
> 
> * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
> * @version $Revision: 659785 $ $Date: 2008-05-24 12:32:41 
> +0200 (Sat, 24 May 2008) $ 
> 
> The problematic code change is 
>    protected InputStream doGetInputStream() throws Exception 
>     { 
>         try 
>         { 
>             return new SmbFileInputStream(file); 
>         } 
>         catch (SmbException e) 
>         { 
>             if (e.getErrorCode() == SmbException.ERRbadfile) 
>             { 
>                 throw new FileNotFoundException(getName()); 
>             } 
>             else if (file.isDirectory()) 
>             { 
>                 throw new FileTypeHasNoContentException(getName()); 
>             } 
> 
>             throw e; 
>         } 
>     } 
> 
> where in all CIFS Releases I checked, 1.1.16 - 1.1.21c, I 
> cannot find a Method getErrorCode and SmbException.ERRbadfile.
> 
> Against which CIFS Library do you develop ? 
> 
> 
> 
> I made some changes in the Ant Task, which allows propagation 
> of FileSystemOptions (Identities and StrictHostKeyChecking) 
> to the sftp provider, for src and dest. Also a File Pattern 
> Matcher, using Ant RegExp Implementation, to select specific 
> Files in the move command.
> 
> If you are interested in those changes, I appended them at 
> the and of the mail. They are against a copy of trunk for 
> about one year, also the changed sources are equal to the 
> actual trunk version.
> 
> Regards
> Carlos
> 
> 
> 
> Index: 
> U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/c
> ommons/vfs/impl/DefaultFileSystemManager.java
> ===================================================================
> --- 
> U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/c
> ommons/vfs/impl/DefaultFileSystemManager.java (revision 565695)
> 
> +++ 
> U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons
> +++ /vfs/impl/DefaultFileSystemManager.java (working copy)
> 
> @@ -594,6 +594,17 @@ 
>         } 
>   
>         /** 
> +        * Locates a file by URI. RHU 
> +        */ 
> +       public FileObject resolveFile(final File baseFile, 
> final String uri, final FileSystemOptions fileSystemOptions) 
> +                       throws FileSystemException 
> +       { 
> +               final FileObject baseFileObj = 
> getLocalFileProvider().findLocalFile( 
> +                               baseFile); 
> +               return resolveFile(baseFileObj, uri, 
> fileSystemOptions); 
> +       }
> + 
> +       /**
>          * Resolves a URI, relative to a base file. 
>          */ 
>         public FileObject resolveFile(final FileObject 
> baseFile, final String uri)
> Index: 
> U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/c
ommons/vfs/provider/http/ThreadLocalHttpConnectionManager.java
> 
> ===================================================================
> --- 
> U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/c
ommons/vfs/provider/http/ThreadLocalHttpConnectionManager.java
> (revision 565695)
> 
> +++ 
> U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/commons
> +++ /vfs/provider/http/ThreadLocalHttpConnectionManager.java
> (working copy)
> 
> @@ -3,6 +3,7 @@
>  import org.apache.commons.httpclient.HostConfiguration;
>  import org.apache.commons.httpclient.HttpConnection;
>  import org.apache.commons.httpclient.HttpConnectionManager; 
> +import 
> +org.apache.commons.httpclient.params.HttpConnectionManagerParams;
>   
>  import java.io.IOException; 
>  import java.io.InputStream; 
> @@ -251,4 +252,10 @@ 
>              getLocalHttpConnection().close(); 
>          } 
>      } 
> +    
> +    // RHU 
> +    public HttpConnectionManagerParams getParams() { 
> +               return null; 
> +       } 
> +    public void setParams(HttpConnectionManagerParams params) {} 
>  } 
> Index: 
> U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/c
> ommons/vfs/tasks/AbstractSyncTask.java 
> =================================================================== 
> --- 
> U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/c
> ommons/vfs/tasks/AbstractSyncTask.java        (revision 565695)
> 
> +++ 
> U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/c
> ommons/vfs/tasks/AbstractSyncTask.java        (working copy)
> 
> @@ -24,6 +24,7 @@ 
>  import org.apache.commons.vfs.util.Messages; 
>  import org.apache.tools.ant.BuildException; 
>  import org.apache.tools.ant.Project; 
> +import org.apache.tools.ant.util.regexp.Regexp; 
>   
>  import java.util.ArrayList; 
>  import java.util.HashSet; 
> @@ -62,7 +63,9 @@ 
>      private boolean failonerror = true; 
>      private String filesList; 
>   
> -    /** 
> +       private Regexp reg = null; 
> + 
> +       /** 
>       * Sets the destination file. 
>       */ 
>      public void setDestFile(final String destFile) 
> @@ -233,7 +236,7 @@ 
>      private void handleFiles() throws Exception 
>      { 
>          // Locate the destination folder, and make sure it exists 
> -        final FileObject destFolder = resolveFile(destDirUrl); 
> +        final FileObject destFolder = 
> resolveFile(destDirUrl, destFileSystemOptions); 
>          destFolder.createFolder(); 
>   
>          // Locate the source files, and make sure they exist 
> @@ -240,7 +243,7 @@ 
>          FileName srcDirName = null; 
>          if (srcDirUrl !=null ) 
>          { 
> -            srcDirName = resolveFile(srcDirUrl).getName(); 
> +            srcDirName = resolveFile(srcDirUrl, 
> srcFileSystemOptions).getName(); 
>          } 
>          final ArrayList srcs = new ArrayList(); 
>          for (int i = 0; i < srcFiles.size(); i++) 
> @@ -247,7 +250,7 @@ 
>          { 
>              // Locate the source file, and make sure it exists 
>              final SourceInfo src = (SourceInfo) srcFiles.get(i); 
> -            final FileObject srcFile = resolveFile(src.file); 
> +            final FileObject srcFile = resolveFile(src.file, 
> srcFileSystemOptions); 
>              if (!srcFile.exists()) 
>              { 
>                  final String message = 
> @@ -369,7 +372,7 @@ 
>              return; 
>          } 
>          final SourceInfo src = (SourceInfo) srcFiles.get(0); 
> -        final FileObject srcFile = resolveFile(src.file); 
> +        final FileObject srcFile = resolveFile(src.file, 
> srcFileSystemOptions); 
>          if (srcFile.getType() != FileType.FILE) 
>          { 
>              final String message = 
> @@ -379,7 +382,7 @@ 
>          } 
>   
>          // Locate the destination file 
> -        final FileObject destFile = resolveFile(destFileUrl); 
> +        final FileObject destFile = resolveFile(destFileUrl, 
> destFileSystemOptions); 
>   
>          // Do the copy 
>          handleFile(srcFile, destFile); 
> @@ -392,7 +395,15 @@ 
>                              final FileObject destFile) 
>          throws Exception 
>      { 
> -        if (!destFile.exists() 
> +       if (reg != null) 
> +       { 
> +               if (!reg.matches(srcFile.getName().getPath())) 
> +               { 
> +                       return; 
> +               } 
> +       } 
> + 
> +       if (!destFile.exists() 
>              || srcFile.getContent().getLastModifiedTime() > 
> destFile.getContent().getLastModifiedTime()) 
>          { 
>              // Destination file is out-of-date 
> Index: 
> U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/c
> ommons/vfs/tasks/DeleteTask.java 
> =================================================================== 
> --- 
> U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/c
> ommons/vfs/tasks/DeleteTask.java      (revision 565695)
> 
> +++ 
> U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/c
> ommons/vfs/tasks/DeleteTask.java      (working copy) 
> @@ -87,7 +87,7 @@ 
>                  while (tok.hasMoreTokens()) 
>                  { 
>                      String nextFile = tok.nextToken(); 
> -                    final FileObject srcFile = 
> resolveFile(srcDirUrl + nextFile); 
> +                    final FileObject srcFile = 
> resolveFile(srcDirUrl + nextFile, srcFileSystemOptions); 
>                      srcFile.delete(Selectors.SELECT_ALL); 
>                  } 
>              } 
> @@ -93,7 +93,7 @@ 
>              } 
>              else 
>              { 
> -                final FileObject srcFile = resolveFile(file); 
> +                final FileObject srcFile = resolveFile(file, 
> srcFileSystemOptions); 
>                  log("Deleting " + srcFile); 
>                  srcFile.delete(Selectors.SELECT_ALL); 
>              } 
> Index: 
> U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/c
> ommons/vfs/tasks/MkdirTask.java 
> =================================================================== 
> --- 
> U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/c
> ommons/vfs/tasks/MkdirTask.java       (revision 565695)
> 
> +++ 
> U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/c
> ommons/vfs/tasks/MkdirTask.java       (working copy) 
> @@ -55,7 +55,7 @@ 
>   
>          try 
>          { 
> -            final FileObject dir = resolveFile(dirName); 
> +            final FileObject dir = resolveFile(dirName, 
> srcFileSystemOptions); 
>              final String message = 
> Messages.getString("vfs.tasks/mkdir.create-folder.info", dir); 
>              log(message); 
>              dir.createFolder(); 
> Index: 
> U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/c
> ommons/vfs/tasks/ShowFileTask.java 
> =================================================================== 
> --- 
> U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/c
> ommons/vfs/tasks/ShowFileTask.java    (revision 565695)
> 
> +++ 
> U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/c
> ommons/vfs/tasks/ShowFileTask.java    (working copy) 
> @@ -71,7 +71,7 @@ 
>      { 
>          try 
>          { 
> -            final FileObject file = resolveFile(url); 
> +            final FileObject file = resolveFile(url, 
> srcFileSystemOptions); 
>              log("Details of " + file.getName().getURI()); 
>              showFile(file, INDENT); 
>          } 
> Index: 
> U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/c
> ommons/vfs/tasks/VfsTask.java 
> =================================================================== 
> --- 
> U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/c
> ommons/vfs/tasks/VfsTask.java (revision 565695) 
> +++ 
> U:/dev/java/app/vfs-trunk_used/core/src/main/java/org/apache/c
> ommons/vfs/tasks/VfsTask.java (working copy) 
> @@ -16,11 +16,16 @@ 
>   */ 
>  package org.apache.commons.vfs.tasks; 
>   
> +import java.io.File; 
> + 
>  import org.apache.commons.logging.Log; 
>  import org.apache.commons.vfs.FileObject; 
>  import org.apache.commons.vfs.FileSystemException; 
> +import org.apache.commons.vfs.FileSystemOptions; 
>  import org.apache.commons.vfs.impl.StandardFileSystemManager; 
> +import 
> org.apache.commons.vfs.provider.sftp.SftpFileSystemConfigBuilder; 
>  import org.apache.tools.ant.BuildEvent; 
> +import org.apache.tools.ant.BuildException; 
>  import org.apache.tools.ant.Project; 
>  import org.apache.tools.ant.SubBuildListener; 
>  import org.apache.tools.ant.Task; 
> @@ -38,6 +43,10 @@ 
>  { 
>      private static StandardFileSystemManager manager; 
>   
> +       protected static FileSystemOptions 
> srcFileSystemOptions = new FileSystemOptions(); 
> + 
> +       protected static FileSystemOptions 
> destFileSystemOptions = new FileSystemOptions(); 
> + 
>      /** 
>       * Resolves a URI to a file, relative to the project's 
> base directory. 
>       * 
> @@ -43,7 +52,8 @@ 
>       * 
>       * @param uri The URI to resolve. 
>       */ 
> -    protected FileObject resolveFile(final String uri) 
> +    protected FileObject resolveFile(final String uri, 
> +                       FileSystemOptions fileSystemOptions) 
>          throws FileSystemException 
>      { 
>          if (manager == null) 
> @@ -53,7 +63,8 @@ 
>              manager.init(); 
>              getProject().addBuildListener(new CloseListener()); 
>          } 
> -        return manager.resolveFile(getProject().getBaseDir(), uri); 
> +        return manager.resolveFile(getProject().getBaseDir(), uri, 
> +                               fileSystemOptions); 
>      } 
>   
>      /** 
> @@ -68,7 +79,73 @@ 
>          } 
>      } 
>   
> -    /** 
> +       File[] addToArray(File[] array, File s) { 
> +               int len = (array == null) ? 0 : array.length; 
> + 
> +               File[] ans = new File[len + 1]; 
> +               if (len > 0) { 
> +                       System.arraycopy(array, 0, ans, 0, len); 
> +               } 
> +               ans[len] = s; 
> +               return ans; 
> +       } 
> + 
> +       private void 
> setSftpStrictHostKeyChecking(FileSystemOptions 
> fileSystemOptions, final String option) { 
> +               try { 
> +                       
> SftpFileSystemConfigBuilder.getInstance().setStrictHostKeyChecking( 
> +                                       fileSystemOptions, option); 
> +               } catch (FileSystemException e) { 
> +                       throw new BuildException(e); 
> +               } 
> +               
> +       } 
> + 
> +       /** 
> +        * Sets the src Sftp StrictHostKeyChecking. 
> +        */ 
> +       public void setSrcSftpStrictHostKeyChecking(final 
> String option) { 
> +               
> +               
> setSftpStrictHostKeyChecking(srcFileSystemOptions, option); 
> +       } 
> + 
> +       /** 
> +        * Sets the dest Sftp StrictHostKeyChecking. 
> +        */ 
> +       public void setDestSftpStrictHostKeyChecking(final 
> String option) { 
> +               
> +               
> setSftpStrictHostKeyChecking(destFileSystemOptions, option); 
> +       } 
> + 
> +       
> +       /** 
> +        * Sets the src Sftp StrictHostKeyChecking. 
> +        */ 
> +       private void setSftpIdentities(FileSystemOptions 
> fileSystemOptions, final String identityFilename) { 
> +               try { 
> +                       File identity = new File(identityFilename); 
> + 
> +                       File[] identities = 
> SftpFileSystemConfigBuilder.getInstance() 
> +                                       
> .getIdentities(fileSystemOptions); 
> + 
> +                       identities = addToArray(identities, 
> identity); 
> + 
> +                       
> SftpFileSystemConfigBuilder.getInstance().setIdentities( 
> +                                       fileSystemOptions, 
> identities); 
> + 
> +               } catch (FileSystemException e) { 
> +                       throw new BuildException(e); 
> +               } 
> +       } 
> + 
> +       public void setSrcSftpIdentities(final String 
> identityFilename) { 
> +               setSftpIdentities(srcFileSystemOptions, 
> identityFilename); 
> +       } 
> + 
> +       public void setDestSftpIdentities(final String 
> identityFilename) { 
> +               setSftpIdentities(destFileSystemOptions, 
> identityFilename); 
> +       } 
> + 
> +       /** 
>       * Closes the VFS manager when the project finishes. 
>       */ 
>      private class CloseListener 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org