1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.vfs2.provider;
18
19 import org.apache.commons.vfs2.FileName;
20 import org.apache.commons.vfs2.FileSystemException;
21 import org.apache.commons.vfs2.FileType;
22
23
24
25
26
27
28
29 public class GenericURLFileNameParser extends HostFileNameParser {
30
31 public GenericURLFileNameParser(final int defaultPort) {
32 super(defaultPort);
33 }
34
35 @Override
36 public boolean encodeCharacter(final char ch) {
37 return super.encodeCharacter(ch) || ch == '?';
38 }
39
40 @Override
41 public FileName parseUri(FileNameal VfsComponentContext context, final FileName base, final String fileName)
42 throws FileSystemException {
43
44 final StringBuilder name = new StringBuilder();
45
46
47 final Authority auth = extractToPath(context, fileName, name);
48
49
50 final String queryString = UriParser.extractQueryString(name);
51
52
53 UriParser.canonicalizePath(name, 0, name.length(), this);
54 UriParser.fixSeparators(name);
55 final FileType fileType = UriParser.normalisePath(name);
56 final String path = name.toString();
57
58 return new GenericURLFileName(auth.getScheme(), auth.getHostName(), auth.getPort(), getDefaultPort(),
59 auth.getUserName(), auth.getPassword(), path, fileType, queryString);
60 }
61 }