1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.vfs.provider;
18
19 import org.apache.commons.vfs.FileName;
20 import org.apache.commons.vfs.FileSystemException;
21 import org.apache.commons.vfs.FileType;
22
23 /***
24 * Implementation for any url based filesystem.<br />
25 * Parses the url into user/password/host/port/path/queryString<br />
26 *
27 * @author imario@apache.org
28 * @version $Revision: 480428 $ $Date: 2006-11-29 07:15:24 +0100 (Mi, 29 Nov 2006) $
29 */
30 public class URLFileNameParser extends HostFileNameParser
31 {
32 public URLFileNameParser(final int defaultPort)
33 {
34 super(defaultPort);
35 }
36
37 public boolean encodeCharacter(char ch)
38 {
39 return super.encodeCharacter(ch) || ch == '?';
40 }
41
42 public FileName parseUri(final VfsComponentContext context, FileName base, final String filename) throws FileSystemException
43 {
44
45 final StringBuffer name = new StringBuffer();
46
47
48 final Authority auth = extractToPath(filename, name);
49
50
51 String queryString = UriParser.extractQueryString(name);
52
53
54 UriParser.canonicalizePath(name, 0, name.length(), this);
55 UriParser.fixSeparators(name);
56 FileType fileType = UriParser.normalisePath(name);
57 final String path = name.toString();
58
59 return new URLFileName(
60 auth.scheme,
61 auth.hostName,
62 auth.port,
63 getDefaultPort(),
64 auth.userName,
65 auth.password,
66 path,
67 fileType,
68 queryString);
69 }
70 }