1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 package org.apache.commons.httpclient;
32
33 import org.apache.commons.httpclient.util.LangUtils;
34
35 /***
36 * <p>Username and password {@link Credentials}.</p>
37 *
38 * @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
39 * @author Sean C. Sullivan
40 * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
41 * @author <a href="mailto:oleg@ural.ru">Oleg Kalnichevski</a>
42 *
43 * @version $Revision$ $Date$
44 *
45 */
46 public class UsernamePasswordCredentials implements Credentials {
47
48
49
50 /***
51 * Default constructor.
52 *
53 * @deprecated Do not use. Null user name no longer allowed
54 */
55 public UsernamePasswordCredentials() {
56 super();
57 }
58
59
60 /***
61 * The constructor with the username and password combined string argument.
62 *
63 * @param usernamePassword the username:password formed string
64 * @see #toString
65 */
66 public UsernamePasswordCredentials(String usernamePassword) {
67 super();
68 if (usernamePassword == null) {
69 throw new IllegalArgumentException("Username:password string may not be null");
70 }
71 int atColon = usernamePassword.indexOf(':');
72 if (atColon >= 0) {
73 this.userName = usernamePassword.substring(0, atColon);
74 this.password = usernamePassword.substring(atColon + 1);
75 } else {
76 this.userName = usernamePassword;
77 }
78 }
79
80
81 /***
82 * The constructor with the username and password arguments.
83 *
84 * @param userName the user name
85 * @param password the password
86 */
87 public UsernamePasswordCredentials(String userName, String password) {
88 super();
89 if (userName == null) {
90 throw new IllegalArgumentException("Username may not be null");
91 }
92 this.userName = userName;
93 this.password = password;
94 }
95
96
97
98 /***
99 * User name.
100 */
101 private String userName;
102
103
104 /***
105 * Password.
106 */
107 private String password;
108
109
110
111
112
113 /***
114 * User name property setter. User name may not be null.
115 *
116 * @param userName
117 * @see #getUserName()
118 *
119 * @deprecated Do not use. The UsernamePasswordCredentials objects should be immutable
120 */
121 public void setUserName(String userName) {
122 if (userName == null) {
123 throw new IllegalArgumentException("Username may not be null");
124 }
125 this.userName = userName;
126 }
127
128
129 /***
130 * User name property getter.
131 *
132 * @return the userName
133 * @see #setUserName(String)
134 */
135 public String getUserName() {
136 return userName;
137 }
138
139
140 /***
141 * Password property setter.
142 *
143 * @param password
144 * @see #getPassword()
145 *
146 * @deprecated Do not use. The UsernamePasswordCredentials objects should be immutable
147 */
148 public void setPassword(String password) {
149 this.password = password;
150 }
151
152
153 /***
154 * Password property getter.
155 *
156 * @return the password
157 * @see #setPassword(String)
158 */
159 public String getPassword() {
160 return password;
161 }
162
163
164 /***
165 * Get this object string.
166 *
167 * @return the username:password formed string
168 */
169 public String toString() {
170 StringBuffer result = new StringBuffer();
171 result.append(this.userName);
172 result.append(":");
173 result.append((this.password == null) ? "null" : this.password);
174 return result.toString();
175 }
176
177 /***
178 * Does a hash of both user name and password.
179 *
180 * @return The hash code including user name and password.
181 */
182 public int hashCode() {
183 int hash = LangUtils.HASH_SEED;
184 hash = LangUtils.hashCode(hash, this.userName);
185 hash = LangUtils.hashCode(hash, this.password);
186 return hash;
187 }
188
189 /***
190 * These credentials are assumed equal if the username and password are the
191 * same.
192 *
193 * @param o The other object to compare with.
194 *
195 * @return <code>true</code> if the object is equivalent.
196 */
197 public boolean equals(Object o) {
198 if (o == null) return false;
199 if (this == o) return true;
200
201
202 if (this.getClass().equals(o.getClass())) {
203 UsernamePasswordCredentials that = (UsernamePasswordCredentials) o;
204
205 if (LangUtils.equals(this.userName, that.userName)
206 && LangUtils.equals(this.password, that.password) ) {
207 return true;
208 }
209 }
210 return false;
211 }
212
213 }
214