1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.vfs.provider.ftp;
18
19 import org.apache.commons.vfs.Capability;
20 import org.apache.commons.vfs.FileName;
21 import org.apache.commons.vfs.FileSystem;
22 import org.apache.commons.vfs.FileSystemConfigBuilder;
23 import org.apache.commons.vfs.FileSystemException;
24 import org.apache.commons.vfs.FileSystemOptions;
25 import org.apache.commons.vfs.UserAuthenticationData;
26 import org.apache.commons.vfs.provider.AbstractOriginatingFileProvider;
27 import org.apache.commons.vfs.provider.GenericFileName;
28
29 import java.util.Arrays;
30 import java.util.Collection;
31 import java.util.Collections;
32
33 /***
34 * A provider for FTP file systems.
35 *
36 * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
37 * @version $Revision: 480428 $ $Date: 2006-11-29 07:15:24 +0100 (Mi, 29 Nov 2006) $
38 */
39 public class FtpFileProvider
40 extends AbstractOriginatingFileProvider
41 {
42 public final static String ATTR_FILE_ENTRY_PARSER = "FEP";
43
44 final static Collection capabilities = Collections.unmodifiableCollection(Arrays.asList(new Capability[]
45 {
46 Capability.CREATE,
47 Capability.DELETE,
48 Capability.RENAME,
49 Capability.GET_TYPE,
50 Capability.LIST_CHILDREN,
51 Capability.READ_CONTENT,
52 Capability.GET_LAST_MODIFIED,
53 Capability.URI,
54 Capability.WRITE_CONTENT,
55 Capability.APPEND_CONTENT,
56 Capability.RANDOM_ACCESS_READ,
57 }));
58
59 public final static UserAuthenticationData.Type[] AUTHENTICATOR_TYPES = new UserAuthenticationData.Type[]
60 {
61 UserAuthenticationData.USERNAME, UserAuthenticationData.PASSWORD
62 };
63
64 public FtpFileProvider()
65 {
66 super();
67 setFileNameParser(FtpFileNameParser.getInstance());
68 }
69
70 /***
71 * Creates the filesystem.
72 */
73 protected FileSystem doCreateFileSystem(final FileName name, final FileSystemOptions fileSystemOptions)
74 throws FileSystemException
75 {
76
77 final GenericFileName rootName = (GenericFileName) name;
78
79 FTPClientWrapper ftpClient = new FTPClientWrapper(rootName, fileSystemOptions);
80
81
82
83
84
85
86
87
88
89 return new FtpFileSystem(rootName, ftpClient, fileSystemOptions);
90 }
91
92 public FileSystemConfigBuilder getConfigBuilder()
93 {
94 return FtpFileSystemConfigBuilder.getInstance();
95 }
96
97 public Collection getCapabilities()
98 {
99 return capabilities;
100 }
101 }