Authority.java revision 600c7a4bbc7348167293eac928192e695b4ad5ba
142a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek/* 242a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek* Conditions Of Use 342a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek* 442a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek* This software was developed by employees of the National Institute of 50bc735ffcfb223c0186419547abaa5c84482663eChris Lattner* Standards and Technology (NIST), an agency of the Federal Government. 60bc735ffcfb223c0186419547abaa5c84482663eChris Lattner* Pursuant to title 15 Untied States Code Section 105, works of NIST 742a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek* employees are not subject to copyright protection in the United States 842a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek* and are considered to be in the public domain. As a result, a formal 942a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek* license is not needed to use the software. 1042a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek* 1142a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek* This software is provided by NIST as a service and is expressly 1242a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek* provided "AS IS." NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED 1342a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek* OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF 1442a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT 1542a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek* AND DATA ACCURACY. NIST does not warrant or make any representations 1642a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek* regarding the use of the software or the results thereof, including but 179313aac61d425f14fa0b82c3dfe1eb2c3626d38cArgyrios Kyrtzidis* not limited to the correctness, accuracy, reliability or usefulness of 18d47d3b0cfeb7e8564ff77f48130fe63282b6d127Chris Lattner* the software. 197107d360db751aa974285ae2136aed76b6691b86Chandler Carruth* 2042a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek* Permission to use this software is contingent upon your acceptance 2142a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek* of the terms of this agreement 2242a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek* 23d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor* . 24e4f2142d00fa5fdb580c4e2413da91882d955381Chris Lattner* 25d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor*/ 2642a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek/******************************************************************************* 2742a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek* Product of NIST/ITL Advanced Networking Technologies Division (ANTD). * 2842a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek*******************************************************************************/ 29d47d3b0cfeb7e8564ff77f48130fe63282b6d127Chris Lattnerpackage gov.nist.javax.sip.address; 3042a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenekimport gov.nist.core.*; 3142a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek 32d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor/** 33d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor * Authority part of a URI structure. Section 3.2.2 RFC2396 34d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor * 35d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor * @version 1.2 $Revision: 1.10 $ $Date: 2009/12/16 14:48:33 $ 361eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump * 37e4f2142d00fa5fdb580c4e2413da91882d955381Chris Lattner * @author M. Ranganathan <br/> 380daaf32723ac78549c507c2a68a5300502703673Abramo Bagnara * 39ad762fcdc16b9e4705b12b09d92b8c026212b906Richard Smith * 4084139d6ef8967cfdb70d37378a7a65cc4827d44dDouglas Gregor * 4130c42404202d2e2512e51efc6066bd614cfdb5a4Douglas Gregor */ 4230c42404202d2e2512e51efc6066bd614cfdb5a4Douglas Gregorpublic class Authority extends NetObject { 43d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor 44d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor private static final long serialVersionUID = -3570349777347017894L; 45d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor 46d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor /** hostport field 47e4f2142d00fa5fdb580c4e2413da91882d955381Chris Lattner */ 489313aac61d425f14fa0b82c3dfe1eb2c3626d38cArgyrios Kyrtzidis protected HostPort hostPort; 49d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor 5042f42c0dd5cf71fbfc6fa282d03079a902f6e342Eli Friedman /** userInfo field 5142f42c0dd5cf71fbfc6fa282d03079a902f6e342Eli Friedman */ 52d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor protected UserInfo userInfo; 53d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor 54d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor /** 55d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor * Return the host name in encoded form. 56d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor * @return encoded string (does the same thing as toString) 57d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor */ 58d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor public String encode() { 59d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor return encode(new StringBuffer()).toString(); 6042f42c0dd5cf71fbfc6fa282d03079a902f6e342Eli Friedman } 61d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor 62d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor public StringBuffer encode(StringBuffer buffer) { 63d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor if (userInfo != null) { 6442f42c0dd5cf71fbfc6fa282d03079a902f6e342Eli Friedman userInfo.encode(buffer); 6542f42c0dd5cf71fbfc6fa282d03079a902f6e342Eli Friedman buffer.append(AT); 660daaf32723ac78549c507c2a68a5300502703673Abramo Bagnara hostPort.encode(buffer); 670daaf32723ac78549c507c2a68a5300502703673Abramo Bagnara } else { 680daaf32723ac78549c507c2a68a5300502703673Abramo Bagnara hostPort.encode(buffer); 690daaf32723ac78549c507c2a68a5300502703673Abramo Bagnara } 700daaf32723ac78549c507c2a68a5300502703673Abramo Bagnara return buffer; 710daaf32723ac78549c507c2a68a5300502703673Abramo Bagnara } 720daaf32723ac78549c507c2a68a5300502703673Abramo Bagnara 730daaf32723ac78549c507c2a68a5300502703673Abramo Bagnara /** retruns true if the two Objects are equals , false otherwise. 740daaf32723ac78549c507c2a68a5300502703673Abramo Bagnara * @param other Object to test. 750daaf32723ac78549c507c2a68a5300502703673Abramo Bagnara * @return boolean 7642f42c0dd5cf71fbfc6fa282d03079a902f6e342Eli Friedman */ 7742f42c0dd5cf71fbfc6fa282d03079a902f6e342Eli Friedman @Override 7842f42c0dd5cf71fbfc6fa282d03079a902f6e342Eli Friedman public boolean equals(Object other) { 7942f42c0dd5cf71fbfc6fa282d03079a902f6e342Eli Friedman if (other == null) return false; 8042f42c0dd5cf71fbfc6fa282d03079a902f6e342Eli Friedman if (other.getClass() != getClass()) { 8142f42c0dd5cf71fbfc6fa282d03079a902f6e342Eli Friedman return false; 8242f42c0dd5cf71fbfc6fa282d03079a902f6e342Eli Friedman } 8342f42c0dd5cf71fbfc6fa282d03079a902f6e342Eli Friedman Authority otherAuth = (Authority) other; 8442f42c0dd5cf71fbfc6fa282d03079a902f6e342Eli Friedman if (!this.hostPort.equals(otherAuth.hostPort)) { 85d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor return false; 862191b20bfb31fc0e22a158f6b4204cd0b7dbd0fdJohn McCall } 872191b20bfb31fc0e22a158f6b4204cd0b7dbd0fdJohn McCall if (this.userInfo != null && otherAuth.userInfo != null) { 882191b20bfb31fc0e22a158f6b4204cd0b7dbd0fdJohn McCall if (!this.userInfo.equals(otherAuth.userInfo)) { 89ad762fcdc16b9e4705b12b09d92b8c026212b906Richard Smith return false; 90ad762fcdc16b9e4705b12b09d92b8c026212b906Richard Smith } 91ad762fcdc16b9e4705b12b09d92b8c026212b906Richard Smith } 92ad762fcdc16b9e4705b12b09d92b8c026212b906Richard Smith return true; 93ad762fcdc16b9e4705b12b09d92b8c026212b906Richard Smith } 94ad762fcdc16b9e4705b12b09d92b8c026212b906Richard Smith 95ad762fcdc16b9e4705b12b09d92b8c026212b906Richard Smith /** 96ad762fcdc16b9e4705b12b09d92b8c026212b906Richard Smith * get the hostPort member. 97ad762fcdc16b9e4705b12b09d92b8c026212b906Richard Smith * @return HostPort 98ad762fcdc16b9e4705b12b09d92b8c026212b906Richard Smith */ 99ad762fcdc16b9e4705b12b09d92b8c026212b906Richard Smith public HostPort getHostPort() { 100ad762fcdc16b9e4705b12b09d92b8c026212b906Richard Smith return hostPort; 101ad762fcdc16b9e4705b12b09d92b8c026212b906Richard Smith } 1024fe0c8e9c76b96e7aff21696a40dacc09d0237bcDouglas Gregor 1034fe0c8e9c76b96e7aff21696a40dacc09d0237bcDouglas Gregor /** 1044fe0c8e9c76b96e7aff21696a40dacc09d0237bcDouglas Gregor * get the userInfo memnber. 1054fe0c8e9c76b96e7aff21696a40dacc09d0237bcDouglas Gregor * @return UserInfo 1064fe0c8e9c76b96e7aff21696a40dacc09d0237bcDouglas Gregor */ 1077e7eb3da052a6d80ddf2377cab0384c798f73f75Douglas Gregor public UserInfo getUserInfo() { 1087e7eb3da052a6d80ddf2377cab0384c798f73f75Douglas Gregor return userInfo; 1097e7eb3da052a6d80ddf2377cab0384c798f73f75Douglas Gregor } 1107e7eb3da052a6d80ddf2377cab0384c798f73f75Douglas Gregor 1117e7eb3da052a6d80ddf2377cab0384c798f73f75Douglas Gregor /** 1127e7eb3da052a6d80ddf2377cab0384c798f73f75Douglas Gregor * Get password from the user info. 1137e7eb3da052a6d80ddf2377cab0384c798f73f75Douglas Gregor * @return String 1147e7eb3da052a6d80ddf2377cab0384c798f73f75Douglas Gregor */ 1157e7eb3da052a6d80ddf2377cab0384c798f73f75Douglas Gregor public String getPassword() { 1167e7eb3da052a6d80ddf2377cab0384c798f73f75Douglas Gregor if (userInfo == null) 1177e7eb3da052a6d80ddf2377cab0384c798f73f75Douglas Gregor return null; 1187e7eb3da052a6d80ddf2377cab0384c798f73f75Douglas Gregor else 1197e7eb3da052a6d80ddf2377cab0384c798f73f75Douglas Gregor return userInfo.password; 1207e7eb3da052a6d80ddf2377cab0384c798f73f75Douglas Gregor } 1217e7eb3da052a6d80ddf2377cab0384c798f73f75Douglas Gregor 1227e7eb3da052a6d80ddf2377cab0384c798f73f75Douglas Gregor /** 1237e7eb3da052a6d80ddf2377cab0384c798f73f75Douglas Gregor * Get the user name if it exists. 1247e7eb3da052a6d80ddf2377cab0384c798f73f75Douglas Gregor * @return String user or null if not set. 12584139d6ef8967cfdb70d37378a7a65cc4827d44dDouglas Gregor */ 12684139d6ef8967cfdb70d37378a7a65cc4827d44dDouglas Gregor public String getUser() { 12784139d6ef8967cfdb70d37378a7a65cc4827d44dDouglas Gregor return userInfo != null ? userInfo.user : null; 12884139d6ef8967cfdb70d37378a7a65cc4827d44dDouglas Gregor } 12984139d6ef8967cfdb70d37378a7a65cc4827d44dDouglas Gregor 130f85e193739c953358c865005855253af4f68a497John McCall /** 131f85e193739c953358c865005855253af4f68a497John McCall * Get the host name. 132f85e193739c953358c865005855253af4f68a497John McCall * @return Host (null if not set) 133f85e193739c953358c865005855253af4f68a497John McCall */ 13430c42404202d2e2512e51efc6066bd614cfdb5a4Douglas Gregor public Host getHost() { 13530c42404202d2e2512e51efc6066bd614cfdb5a4Douglas Gregor if (hostPort == null) 13630c42404202d2e2512e51efc6066bd614cfdb5a4Douglas Gregor return null; 13730c42404202d2e2512e51efc6066bd614cfdb5a4Douglas Gregor else 138d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor return hostPort.getHost(); 139d249e1d1f1498b81314459ceda19d6ff25c278adDouglas Gregor } 14042a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek 14142a509f6a4f71bb805cc4abbb26722a34dffdddeTed Kremenek /** 1428467583c2704e7a9691ea56939a029015f0ade0aGabor Greif * Get the port. 143 * @return int port (-1) if port is not set. 144 */ 145 public int getPort() { 146 if (hostPort == null) 147 return -1; 148 else 149 return hostPort.getPort(); 150 } 151 152 /** remove the port. 153 */ 154 public void removePort() { 155 if (hostPort != null) 156 hostPort.removePort(); 157 } 158 159 /** 160 * set the password. 161 * @param passwd String to set 162 */ 163 public void setPassword(String passwd) { 164 if (userInfo == null) 165 userInfo = new UserInfo(); 166 userInfo.setPassword(passwd); 167 } 168 169 /** 170 * Set the user name of the userInfo member. 171 * @param user String to set 172 */ 173 public void setUser(String user) { 174 if (userInfo == null) 175 userInfo = new UserInfo(); 176 this.userInfo.setUser(user); 177 } 178 179 /** 180 * set the host. 181 * @param host Host to set 182 */ 183 public void setHost(Host host) { 184 if (hostPort == null) 185 hostPort = new HostPort(); 186 hostPort.setHost(host); 187 } 188 189 /** 190 * Set the port. 191 * @param port int to set 192 */ 193 public void setPort(int port) { 194 if (hostPort == null) 195 hostPort = new HostPort(); 196 hostPort.setPort(port); 197 } 198 199 /** 200 * Set the hostPort member 201 * @param h HostPort to set 202 */ 203 public void setHostPort(HostPort h) { 204 hostPort = h; 205 } 206 207 /** 208 * Set the userInfo member 209 * @param u UserInfo to set 210 */ 211 public void setUserInfo(UserInfo u) { 212 userInfo = u; 213 } 214 215 /** Remove the user Infor. 216 * 217 */ 218 public void removeUserInfo() { 219 this.userInfo = null; 220 } 221 222 public Object clone() { 223 Authority retval = (Authority) super.clone(); 224 if (this.hostPort != null) 225 retval.hostPort = (HostPort) this.hostPort.clone(); 226 if (this.userInfo != null) 227 retval.userInfo = (UserInfo) this.userInfo.clone(); 228 return retval; 229 } 230 231 @Override 232 public int hashCode() { 233 if ( this.hostPort == null ) throw new UnsupportedOperationException("Null hostPort cannot compute hashcode"); 234 return this.hostPort.encode().hashCode(); 235 } 236} 237