/** * Creates a {@link FileSystem}. If you're looking at this method and wondering how to get a * FileSystemOptions object bearing the proxy host and credentials configuration through to this * method so it's used for resolving a {@link FileObject} in the FileSystem, then be sure to use * correct signature of the {@link FileSystemManager} resolveFile method. * * @see org.apache.commons.vfs2.impl.DefaultFileSystemManager#resolveFile(FileObject, String, * FileSystemOptions) */ @Override protected FileSystem doCreateFileSystem( final FileName name, final FileSystemOptions fileSystemOptions) throws FileSystemException { // Create the file system final GenericFileName rootName = (GenericFileName) name; FileSystemOptions fsOpts = fileSystemOptions == null ? new FileSystemOptions() : fileSystemOptions; UserAuthenticationData authData = null; HttpClient httpClient; try { authData = UserAuthenticatorUtils.authenticate(fsOpts, AUTHENTICATOR_TYPES); httpClient = HttpClientFactory.createConnection( WebdavFileSystemConfigBuilder.getInstance(), "http", rootName.getHostName(), rootName.getPort(), UserAuthenticatorUtils.toString( UserAuthenticatorUtils.getData( authData, UserAuthenticationData.USERNAME, UserAuthenticatorUtils.toChar(rootName.getUserName()))), UserAuthenticatorUtils.toString( UserAuthenticatorUtils.getData( authData, UserAuthenticationData.PASSWORD, UserAuthenticatorUtils.toChar(rootName.getPassword()))), fsOpts); } finally { UserAuthenticatorUtils.cleanup(authData); } return new WebdavFileSystem(rootName, httpClient, fsOpts); }
/** Tests parsing a URI into its parts. */ public void testParseUri() throws Exception { URLFileNameParser urlParser = new URLFileNameParser(21); // Simple name GenericFileName name = (GenericFileName) urlParser.parseUri(null, null, "ftp://hostname/file"); assertEquals("ftp", name.getScheme()); assertNull(name.getUserName()); assertNull(name.getPassword()); assertEquals("hostname", name.getHostName()); assertEquals(21, name.getPort()); assertEquals(name.getDefaultPort(), name.getPort()); assertEquals("/file", name.getPath()); assertEquals("ftp://hostname/", name.getRootURI()); assertEquals("ftp://hostname/file", name.getURI()); // Name with port name = (GenericFileName) urlParser.parseUri(null, null, "ftp://*****:*****@hostname/file"); assertEquals("ftp", name.getScheme()); assertEquals("user", name.getUserName()); assertNull(name.getPassword()); assertEquals("hostname", name.getHostName()); assertEquals(21, name.getPort()); assertEquals("/file", name.getPath()); assertEquals("ftp://user@hostname/", name.getRootURI()); assertEquals("ftp://user@hostname/file", name.getURI()); // Name with username and password name = (GenericFileName) urlParser.parseUri(null, null, "ftp://*****:*****@hostname/file"); assertEquals("ftp", name.getScheme()); assertEquals("user", name.getUserName()); assertEquals("password", name.getPassword()); assertEquals("hostname", name.getHostName()); assertEquals(21, name.getPort()); assertEquals("/file", name.getPath()); assertEquals("ftp://*****:*****@hostname/", name.getRootURI()); assertEquals("ftp://*****:*****@hostname/file", name.getURI()); // Encoded username and password name = (GenericFileName) urlParser.parseUri(null, null, "ftp://%75ser%3A:%40@hostname"); assertEquals("ftp", name.getScheme()); assertEquals("user:"******"@", name.getPassword()); assertEquals("hostname", name.getHostName()); assertEquals(21, name.getPort()); assertEquals("/", name.getPath()); assertEquals("ftp://user%3a:%40@hostname/", name.getRootURI()); assertEquals("ftp://user%3a:%40@hostname/", name.getURI()); }