• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 * Conditions Of Use
3 *
4 * This software was developed by employees of the National Institute of
5 * Standards and Technology (NIST), an agency of the Federal Government.
6 * Pursuant to title 15 Untied States Code Section 105, works of NIST
7 * employees are not subject to copyright protection in the United States
8 * and are considered to be in the public domain.  As a result, a formal
9 * license is not needed to use the software.
10 *
11 * This software is provided by NIST as a service and is expressly
12 * provided "AS IS."  NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED
13 * OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF
14 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT
15 * AND DATA ACCURACY.  NIST does not warrant or make any representations
16 * regarding the use of the software or the results thereof, including but
17 * not limited to the correctness, accuracy, reliability or usefulness of
18 * the software.
19 *
20 * Permission to use this software is contingent upon your acceptance
21 * of the terms of this agreement
22 *
23 * .
24 *
25 */
26 /*******************************************************************************
27 * Product of NIST/ITL Advanced Networking Technologies Division (ANTD).        *
28 *******************************************************************************/
29 package gov.nist.javax.sip.address;
30 import gov.nist.core.*;
31 
32 /**
33  * Authority part of a URI structure. Section 3.2.2 RFC2396
34  *
35  * @version 1.2 $Revision: 1.10 $ $Date: 2009/12/16 14:48:33 $
36  *
37  * @author M. Ranganathan   <br/>
38  *
39  *
40  *
41  */
42 public class Authority extends NetObject {
43 
44     private static final long serialVersionUID = -3570349777347017894L;
45 
46     /** hostport field
47      */
48     protected HostPort hostPort;
49 
50     /** userInfo field
51      */
52     protected UserInfo userInfo;
53 
54     /**
55      * Return the host name in encoded form.
56      * @return encoded string (does the same thing as toString)
57      */
encode()58     public String encode() {
59         return encode(new StringBuffer()).toString();
60     }
61 
encode(StringBuffer buffer)62     public StringBuffer encode(StringBuffer buffer) {
63         if (userInfo != null) {
64             userInfo.encode(buffer);
65             buffer.append(AT);
66             hostPort.encode(buffer);
67         } else {
68             hostPort.encode(buffer);
69         }
70         return buffer;
71     }
72 
73     /** retruns true if the two Objects are equals , false otherwise.
74      * @param other Object to test.
75      * @return boolean
76      */
77     @Override
equals(Object other)78     public boolean equals(Object other) {
79         if (other == null) return false;
80         if (other.getClass() != getClass()) {
81             return false;
82         }
83         Authority otherAuth = (Authority) other;
84         if (!this.hostPort.equals(otherAuth.hostPort)) {
85             return false;
86         }
87         if (this.userInfo != null && otherAuth.userInfo != null) {
88             if (!this.userInfo.equals(otherAuth.userInfo)) {
89                 return false;
90             }
91         }
92         return true;
93     }
94 
95     /**
96      * get the hostPort member.
97      * @return HostPort
98      */
getHostPort()99     public HostPort getHostPort() {
100         return hostPort;
101     }
102 
103     /**
104      * get the userInfo memnber.
105      * @return UserInfo
106      */
getUserInfo()107     public UserInfo getUserInfo() {
108         return userInfo;
109     }
110 
111     /**
112          * Get password from the user info.
113          * @return String
114          */
getPassword()115     public String getPassword() {
116         if (userInfo == null)
117             return null;
118         else
119             return userInfo.password;
120     }
121 
122     /**
123      * Get the user name if it exists.
124      * @return String user or null if not set.
125      */
getUser()126     public String getUser() {
127         return userInfo != null ? userInfo.user : null;
128     }
129 
130     /**
131      * Get the host name.
132      * @return Host (null if not set)
133      */
getHost()134     public Host getHost() {
135         if (hostPort == null)
136             return null;
137         else
138             return hostPort.getHost();
139     }
140 
141     /**
142      * Get the port.
143      * @return int port (-1) if port is not set.
144      */
getPort()145     public int getPort() {
146         if (hostPort == null)
147             return -1;
148         else
149             return hostPort.getPort();
150     }
151 
152     /** remove the port.
153      */
removePort()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      */
setPassword(String passwd)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      */
setUser(String user)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      */
setHost(Host host)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      */
setPort(int port)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          */
setHostPort(HostPort h)203     public void setHostPort(HostPort h) {
204         hostPort = h;
205     }
206 
207     /**
208          * Set the userInfo member
209          * @param u UserInfo to set
210          */
setUserInfo(UserInfo u)211     public void setUserInfo(UserInfo u) {
212         userInfo = u;
213     }
214 
215     /** Remove the user Infor.
216     *
217     */
removeUserInfo()218     public void removeUserInfo() {
219         this.userInfo = null;
220     }
221 
clone()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
hashCode()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