| /* |
| * Conditions Of Use |
| * |
| * This software was developed by employees of the National Institute of |
| * Standards and Technology (NIST), an agency of the Federal Government. |
| * Pursuant to title 15 Untied States Code Section 105, works of NIST |
| * employees are not subject to copyright protection in the United States |
| * and are considered to be in the public domain. As a result, a formal |
| * license is not needed to use the software. |
| * |
| * This software is provided by NIST as a service and is expressly |
| * provided "AS IS." NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED |
| * OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF |
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT |
| * AND DATA ACCURACY. NIST does not warrant or make any representations |
| * regarding the use of the software or the results thereof, including but |
| * not limited to the correctness, accuracy, reliability or usefulness of |
| * the software. |
| * |
| * Permission to use this software is contingent upon your acceptance |
| * of the terms of this agreement |
| * |
| * . |
| * |
| */ |
| /******************************************************************************* |
| * Product of NIST/ITL Advanced Networking Technologies Division (ANTD). * |
| *******************************************************************************/ |
| package gov.nist.javax.sip.header; |
| |
| /** |
| * The call identifer that goes into a callID header and a in-reply-to header. |
| * |
| * @author M. Ranganathan <br/> |
| * @version 1.2 $Revision: 1.7 $ $Date: 2009/12/16 02:38:35 $ |
| * @see CallID |
| * @see InReplyTo |
| * @since 1.1 |
| */ |
| public final class CallIdentifier extends SIPObject { |
| |
| /** |
| * Comment for <code>serialVersionUID</code> |
| */ |
| private static final long serialVersionUID = 7314773655675451377L; |
| |
| /** |
| * localId field |
| */ |
| protected String localId; |
| |
| /** |
| * host field |
| */ |
| protected String host; |
| |
| /** |
| * Default constructor |
| */ |
| public CallIdentifier() { |
| } |
| |
| /** |
| * Constructor |
| * @param localId id is the local id. |
| * @param host is the host. |
| */ |
| public CallIdentifier(String localId, String host) { |
| this.localId = localId; |
| this.host = host; |
| } |
| |
| /** |
| * constructor |
| * @param cid String to set |
| * @throws IllegalArgumentException if cid is null or is not a token, |
| * or token@token |
| */ |
| public CallIdentifier(String cid) throws IllegalArgumentException { |
| setCallID(cid); |
| } |
| |
| /** |
| * Get the encoded version of this id. |
| * @return String to set |
| */ |
| public String encode() { |
| return encode(new StringBuffer()).toString(); |
| } |
| |
| public StringBuffer encode(StringBuffer buffer) { |
| buffer.append(localId); |
| if (host != null) { |
| buffer.append(AT).append(host); |
| } |
| return buffer; |
| } |
| |
| /** |
| * Compare two call identifiers for equality. |
| * @param other Object to set |
| * @return true if the two call identifiers are equals, false |
| * otherwise |
| */ |
| public boolean equals(Object other) { |
| if (other == null ) return false; |
| if (!other.getClass().equals(this.getClass())) { |
| return false; |
| } |
| CallIdentifier that = (CallIdentifier) other; |
| if (this.localId.compareTo(that.localId) != 0) { |
| return false; |
| } |
| if (this.host == that.host) |
| return true; |
| if ((this.host == null && that.host != null) |
| || (this.host != null && that.host == null)) |
| return false; |
| if (host.compareToIgnoreCase(that.host) != 0) { |
| return false; |
| } |
| return true; |
| } |
| |
| @Override |
| public int hashCode() { |
| if (this.localId == null ) { |
| throw new UnsupportedOperationException("Hash code called before id is set"); |
| } |
| return this.localId.hashCode(); |
| } |
| |
| /** get the LocalId field |
| * @return String |
| */ |
| public String getLocalId() { |
| return localId; |
| } |
| |
| /** get the host field |
| * @return host member String |
| */ |
| public String getHost() { |
| return host; |
| } |
| |
| /** |
| * Set the localId member |
| * @param localId String to set |
| */ |
| public void setLocalId(String localId) { |
| this.localId = localId; |
| } |
| |
| /** set the callId field |
| * @param cid Strimg to set |
| * @throws IllegalArgumentException if cid is null or is not a token or |
| * token@token |
| */ |
| public void setCallID(String cid) throws IllegalArgumentException { |
| if (cid == null) |
| throw new IllegalArgumentException("NULL!"); |
| int index = cid.indexOf('@'); |
| if (index == -1) { |
| localId = cid; |
| host = null; |
| } else { |
| localId = cid.substring(0, index); |
| host = cid.substring(index + 1, cid.length()); |
| if (localId == null || host == null) { |
| throw new IllegalArgumentException("CallID must be token@token or token"); |
| } |
| } |
| } |
| |
| /** |
| * Set the host member |
| * @param host String to set |
| */ |
| public void setHost(String host) { |
| this.host = host; |
| } |
| } |