Home | History | Annotate | Download | only in header
      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 import javax.sip.header.CallIdHeader;
     31 import java.text.ParseException;
     32 
     33 /**
     34  * Call ID SIPHeader.
     35  *
     36  * @author M. Ranganathan   <br/>
     37  * @version 1.2 $Revision: 1.7 $ $Date: 2009/07/17 18:57:27 $
     38  * @since 1.1
     39  */
     40 public class CallID
     41     extends SIPHeader
     42     implements javax.sip.header.CallIdHeader {
     43 
     44     /**
     45      * Comment for <code>serialVersionUID</code>
     46      */
     47     private static final long serialVersionUID = -6463630258703731156L;
     48     /**
     49      * callIdentifier field
     50      */
     51     protected CallIdentifier callIdentifier;
     52 
     53     /**
     54      * Default constructor
     55      */
     56     public CallID() {
     57         super(NAME);
     58     }
     59 
     60     /* (non-Javadoc)
     61      * @see java.lang.Object#equals(java.lang.Object)
     62      *
     63      * CallIDs are compared case-insensitively
     64      */
     65     public boolean equals( Object other ) {
     66 
     67         if (this==other) return true;
     68 
     69         if (other instanceof CallIdHeader) {
     70             final CallIdHeader o = (CallIdHeader) other;
     71             return this.getCallId().equalsIgnoreCase( o.getCallId() );
     72         }
     73         return false;
     74     }
     75 
     76 
     77     /**
     78      * Encode the body part of this header (i.e. leave out the hdrName).
     79      *@return String encoded body part of the header.
     80      */
     81     public String encodeBody() {
     82         return encodeBody(new StringBuffer()).toString();
     83     }
     84 
     85     protected StringBuffer encodeBody(StringBuffer buffer) {
     86         if (callIdentifier != null)
     87             callIdentifier.encode(buffer);
     88 
     89         return buffer;
     90     }
     91 
     92     /**
     93      * get the CallId field. This does the same thing as
     94      * encodeBody
     95      * @return String the encoded body part of the
     96      */
     97     public String getCallId() {
     98         return encodeBody();
     99     }
    100 
    101     /**
    102      * get the call Identifer member.
    103      * @return CallIdentifier
    104      */
    105     public CallIdentifier getCallIdentifer() {
    106         return callIdentifier;
    107     }
    108 
    109     /**
    110      * set the CallId field
    111      * @param cid String to set. This is the body part of the Call-Id
    112      *  header. It must have the form localId@host or localId.
    113      * @throws IllegalArgumentException if cid is null, not a token, or is
    114      * not a token@token.
    115      */
    116     public void setCallId(String cid) throws ParseException {
    117         try {
    118             callIdentifier = new CallIdentifier(cid);
    119         } catch (IllegalArgumentException ex) {
    120             throw new ParseException(cid, 0);
    121         }
    122     }
    123 
    124     /**
    125      * Set the callIdentifier member.
    126      * @param cid CallIdentifier to set (localId@host).
    127      */
    128     public void setCallIdentifier(CallIdentifier cid) {
    129         callIdentifier = cid;
    130     }
    131 
    132     /** Constructor given the call Identifier.
    133      *@param callId string call identifier (should be localid@host)
    134      *@throws IllegalArgumentException if call identifier is bad.
    135      */
    136     public CallID(String callId) throws IllegalArgumentException {
    137         super(NAME);
    138         this.callIdentifier = new CallIdentifier(callId);
    139     }
    140 
    141     public Object clone() {
    142         CallID retval = (CallID) super.clone();
    143         if (this.callIdentifier != null)
    144             retval.callIdentifier = (CallIdentifier) this.callIdentifier.clone();
    145         return retval;
    146     }
    147 }
    148