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.lang3.StringUtils;
20 import org.apache.commons.vfs2.FileName;
21 import org.apache.commons.vfs2.FileType;
22
23
24
25
26
27 public class GenericFileName extends AbstractFileName {
28
29 private final String userName;
30 private final String hostName;
31 private final int defaultPort;
32 private final String password;
33 private final int port;
34
35
36
37
38
39
40
41
42
43
44
45
46
47 protected GenericFileName(final String scheme, final String hostName, final int port, final int defaultPort,
48 final String userName, final String password, final String path, final FileType type) {
49 super(scheme, path, type);
50 this.hostName = hostName;
51 this.defaultPort = defaultPort;
52 this.password = password;
53 this.userName = userName;
54 this.port = port > 0 ? port : defaultPort;
55 }
56
57
58
59
60
61
62
63
64
65
66 protected void appendCredentials(final StringBuilder buffer, final boolean addPassword) {
67 if (!StringUtils.isEmpty(userName)) {
68 UriParser.appendEncodedRfc2396(buffer, userName, RFC2396.USERINFO_UNESCAPED);
69 if (password != null && !password.isEmpty()) {
70 buffer.append(':');
71 if (addPassword) {
72 UriParser.appendEncodedRfc2396(buffer, password, RFC2396.USERINFO_UNESCAPED);
73 } else {
74 buffer.append("***");
75 }
76 }
77 buffer.append('@');
78 }
79 }
80
81
82
83
84 @Override
85 protected void appendRootUri(final StringBuilder buffer, final boolean addPassword) {
86 buffer.append(getScheme());
87 buffer.append("://");
88 appendCredentials(buffer, addPassword);
89 buffer.append(hostName);
90 if (port != getDefaultPort()) {
91 buffer.append(':');
92 buffer.append(port);
93 }
94 }
95
96
97
98
99
100
101
102
103 @Override
104 public FileName createName(final String absPath, final FileType type) {
105 return new GenericFileName(getScheme(), hostName, port, defaultPort, userName, password, absPath, type);
106 }
107
108
109
110
111
112
113 public int getDefaultPort() {
114 return defaultPort;
115 }
116
117
118
119
120
121
122 public String getHostName() {
123 return hostName;
124 }
125
126
127
128
129
130
131 public String getPassword() {
132 return password;
133 }
134
135
136
137
138
139
140 public int getPort() {
141 return port;
142 }
143
144
145
146
147
148
149 public String getUserName() {
150 return userName;
151 }
152 }