• 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.header;
30 
31 /**
32  * The call identifer that goes into a callID header and a in-reply-to header.
33  *
34  * @author M. Ranganathan   <br/>
35  * @version 1.2 $Revision: 1.7 $ $Date: 2009/12/16 02:38:35 $
36  * @see CallID
37  * @see InReplyTo
38  * @since 1.1
39  */
40 public final class CallIdentifier extends SIPObject {
41 
42     /**
43      * Comment for <code>serialVersionUID</code>
44      */
45     private static final long serialVersionUID = 7314773655675451377L;
46 
47     /**
48      * localId field
49      */
50     protected String localId;
51 
52     /**
53      * host field
54      */
55     protected String host;
56 
57     /**
58      * Default constructor
59      */
CallIdentifier()60     public CallIdentifier() {
61     }
62 
63     /**
64      * Constructor
65      * @param localId id is the local id.
66      * @param host is the host.
67      */
CallIdentifier(String localId, String host)68     public CallIdentifier(String localId, String host) {
69         this.localId = localId;
70         this.host = host;
71     }
72 
73     /**
74      * constructor
75      * @param cid String to set
76      * @throws IllegalArgumentException if cid is null or is not a token,
77      * or token@token
78      */
CallIdentifier(String cid)79     public CallIdentifier(String cid) throws IllegalArgumentException {
80         setCallID(cid);
81     }
82 
83     /**
84      * Get the encoded version of this id.
85      * @return String to set
86      */
encode()87     public String encode() {
88         return encode(new StringBuffer()).toString();
89     }
90 
encode(StringBuffer buffer)91     public StringBuffer encode(StringBuffer buffer) {
92         buffer.append(localId);
93         if (host != null) {
94             buffer.append(AT).append(host);
95         }
96         return buffer;
97     }
98 
99     /**
100      * Compare two call identifiers for equality.
101      * @param other Object to set
102      * @return true if the two call identifiers are equals, false
103      * otherwise
104      */
equals(Object other)105     public boolean equals(Object other) {
106         if (other == null ) return false;
107         if (!other.getClass().equals(this.getClass())) {
108             return false;
109         }
110         CallIdentifier that = (CallIdentifier) other;
111         if (this.localId.compareTo(that.localId) != 0) {
112             return false;
113         }
114         if (this.host == that.host)
115             return true;
116         if ((this.host == null && that.host != null)
117             || (this.host != null && that.host == null))
118             return false;
119         if (host.compareToIgnoreCase(that.host) != 0) {
120             return false;
121         }
122         return true;
123     }
124 
125     @Override
hashCode()126     public int hashCode() {
127         if (this.localId  == null ) {
128              throw new UnsupportedOperationException("Hash code called before id is set");
129         }
130         return this.localId.hashCode();
131     }
132 
133     /** get the LocalId field
134      * @return String
135      */
getLocalId()136     public String getLocalId() {
137         return localId;
138     }
139 
140     /** get the host field
141      * @return host member String
142      */
getHost()143     public String getHost() {
144         return host;
145     }
146 
147     /**
148      * Set the localId member
149      * @param localId String to set
150      */
setLocalId(String localId)151     public void setLocalId(String localId) {
152         this.localId = localId;
153     }
154 
155     /** set the callId field
156      * @param cid Strimg to set
157      * @throws IllegalArgumentException if cid is null or is not a token or
158      * token@token
159      */
setCallID(String cid)160     public void setCallID(String cid) throws IllegalArgumentException {
161         if (cid == null)
162             throw new IllegalArgumentException("NULL!");
163         int index = cid.indexOf('@');
164         if (index == -1) {
165             localId = cid;
166             host = null;
167         } else {
168             localId = cid.substring(0, index);
169             host = cid.substring(index + 1, cid.length());
170             if (localId == null || host == null) {
171                 throw new IllegalArgumentException("CallID  must be token@token or token");
172             }
173         }
174     }
175 
176     /**
177      * Set the host member
178      * @param host String to set
179      */
setHost(String host)180     public void setHost(String host) {
181         this.host = host;
182     }
183 }
184