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 
     31 import gov.nist.core.HostPort;
     32 import gov.nist.javax.sip.address.AddressImpl;
     33 import gov.nist.javax.sip.parser.Parser;
     34 
     35 import javax.sip.header.FromHeader;
     36 import java.text.ParseException;
     37 
     38 /**
     39  * From SIP Header.
     40  *
     41  * @version 1.2 $Revision: 1.9 $ $Date: 2009/07/17 18:57:31 $
     42  * @since 1.1
     43  *
     44  * @author M. Ranganathan   <br/>
     45  *
     46  *
     47  */
     48 public final class From
     49     extends AddressParametersHeader
     50     implements javax.sip.header.FromHeader {
     51 
     52     /**
     53      * Comment for <code>serialVersionUID</code>
     54      */
     55     private static final long serialVersionUID = -6312727234330643892L;
     56 
     57     /** Default constructor
     58      */
     59     public From() {
     60         super(NAME);
     61     }
     62 
     63     /** Generate a FROM header from a TO header
     64      */
     65     public From(To to) {
     66         super(NAME);
     67         address = to.address;
     68         parameters = to.parameters;
     69     }
     70 
     71     /**
     72      * Encode the header content into a String.
     73      *
     74      * @return String
     75      */
     76     protected String encodeBody() {
     77         return encodeBody(new StringBuffer()).toString();
     78     }
     79 
     80     protected StringBuffer encodeBody(StringBuffer buffer) {
     81         if (address.getAddressType() == AddressImpl.ADDRESS_SPEC) {
     82             buffer.append(LESS_THAN);
     83         }
     84         address.encode(buffer);
     85         if (address.getAddressType() == AddressImpl.ADDRESS_SPEC) {
     86             buffer.append(GREATER_THAN);
     87         }
     88         if (!parameters.isEmpty()) {
     89             buffer.append(SEMICOLON);
     90             parameters.encode(buffer);
     91         }
     92         return buffer;
     93     }
     94 
     95     /**
     96      * Conveniance accessor function to get the hostPort field from the address.
     97      * Warning -- this assumes that the embedded URI is a SipURL.
     98      *
     99      * @return hostport field
    100      */
    101     public HostPort getHostPort() {
    102         return address.getHostPort();
    103     }
    104 
    105     /**
    106      * Get the display name from the address.
    107      * @return Display name
    108      */
    109     public String getDisplayName() {
    110         return address.getDisplayName();
    111     }
    112 
    113     /**
    114      * Get the tag parameter from the address parm list.
    115      * @return tag field
    116      */
    117     public String getTag() {
    118         if (parameters == null)
    119             return null;
    120         return getParameter(ParameterNames.TAG);
    121     }
    122 
    123     /** Boolean function
    124      * @return true if the Tag exist
    125      */
    126     public boolean hasTag() {
    127         return hasParameter(ParameterNames.TAG);
    128     }
    129 
    130     /** remove Tag member
    131      */
    132     public void removeTag() {
    133         parameters.delete(ParameterNames.TAG);
    134     }
    135 
    136     /**
    137      * Set the address member
    138      * @param address Address to set
    139      */
    140     public void setAddress(javax.sip.address.Address address) {
    141         this.address = (AddressImpl) address;
    142     }
    143 
    144     /**
    145      * Set the tag member
    146      * @param t tag to set. From tags are mandatory.
    147      */
    148     public void setTag(String t) throws ParseException {
    149         // JvB: check that it is a valid token
    150         Parser.checkToken(t);
    151         this.setParameter(ParameterNames.TAG, t);
    152     }
    153 
    154     /** Get the user@host port string.
    155      */
    156     public String getUserAtHostPort() {
    157         return address.getUserAtHostPort();
    158     }
    159 
    160     public boolean equals(Object other) {
    161         return (other instanceof FromHeader) && super.equals(other);
    162     }
    163 
    164 }
    165