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:[EMAIL PROTECTED] 
> 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:[EMAIL PROTECTED]">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: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to