All Downloads are FREE. Search and download functionalities are using the official Maven repository.

sip.header.Header Maven / Gradle / Ivy

/**
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Unpublished - rights reserved under the Copyright Laws of the United States.
 * Copyright ? 2003 Sun Microsystems, Inc. All rights reserved.
 * Copyright ? 2005 BEA Systems, Inc. All rights reserved.
 *
 * Use is subject to license terms.
 *
 * This distribution may include materials developed by third parties. 
 *
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 *
 * Module Name   : JSIP Specification
 * File Name     : Header.java
 * Author        : Phelim O'Doherty
 *
 *  HISTORY
 *  Version   Date      Author              Comments
 *  1.1     08/10/2002  Phelim O'Doherty    
 *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 */
package javax.sip.header;

import java.io.Serializable;

/**
 * This interface is the super interface of all SIP headers supported explicitly
 * by this specification. Extension Headers can be supported by this specification as required 
 * by extending the {@link ExtensionHeader} assuming other endpoints understand 
 * the Header. This specification supports the following headers not defined in 
 * RFC3261 documented in 
 * the following standards track RFCs:
 * 
    *
  • RAckHeader - this header is specific to the reliability of provisional * Responses. This functionality is defined in RFC3262. *
  • RSeqHeader - this header is specific to the reliability of provisional * Responses. This functionality is defined in RFC3262. *
  • AllowEventsHeader - this header is specific to the event notification * framework. This functionality is defined in RFC3265. *
  • EventHeader - this header is specific to the event notification * framework. This functionality is defined in RFC3265. *
  • SubscriptionStateHeader - this header is specific to the event notification * framework. This functionality is defined in RFC3265. *
  • ReasonHeader - The Reason Header provides information on why a SIP * request was issued, often useful when creating services and used to * encapsulate a final status code in a provisional response. This functionality * is defined in RFC3326. *
* SIP header fields are similar to HTTP header fields in both syntax and * semantics. Some header fields only make sense in requests or responses. * These are called request header fields and response header fields, respectively. If a * header field appears in a message not matching its category (such as a * request header field in a response), it MUST be ignored. *

*Header Handling:
* Any SIP header whose grammar is of the form: *
*

header = "header-name" HCOLON header-value *(COMMA header-value) *
*
* allows for combining header fields of the same name into a comma-separated * list. In this specification each Header object has a single value or attribute pair. * For example a Header whose grammer is of the form: *
*
Allow: Invite, Bye;
*
* would be represented in a SIP message with two AllowHeader objects each * containing a single attribute, Invite and Bye respectively. Implementations * MUST be able to parse multiple header field rows with the same name in any * combination of the single-value-per-line or comma-separated value forms and * translate them into the relevent Header objects defined in this specification. *

* The relative order of header objects within messages is not significant. * However, it is RECOMMENDED that required header and headers which are needed * for proxy processing (Via, Route, Record-Route, Proxy-Require, Max-Forwards, * and Proxy-Authorization, for example) appear towards the top of the message * to facilitate rapid parsing. *

* The relative order of header objects with the same field name is important. * Multiple headers with the same name MAY be present in a message if and only if * the entire field-value for that header field can be defined as a * comma-separated list as defined by RFC 3261. The exceptions to this rule are * the WWW-Authenticate, Authorization, Proxy-Authenticate, and * Proxy-Authorization header fields. Multiple header objects with these * names MAY be present in a message, but since their grammar does not follow * the general form listed above, they MUST NOT be combined into a single * header field row when sent over the network. *

* Even though an arbitrary number of parameter pairs may be attached to a * header object, any given parameter-name MUST NOT appear more than once. * * @author BEA Systems, NIST * @version 1.2 */ public interface Header extends Cloneable, Serializable { /** * Gets the unique string name of this Header. A name constant is defined in * each individual Header identifying each Header. * * @return the name of this specific Header */ public String getName(); /** * Compare this SIP Header for equality with another. This method overrides * the equals method in java.lang.Object. This method is over-ridden further * for each required header (To, From, CSeq, Call-ID, Max-Forwards, and Via) * which object equality is outlined as specified by * RFC3261. All optional * headers are compared using object equality that is each field in the * header is used for comparision. When comparing header fields, field names * are always case-insensitive. Unless otherwise stated in the * definition of a particular header field, field values, parameter names, * and parameter values are case-insensitive. Tokens are always * case-insensitive. Unless specified otherwise, values expressed as quoted * strings are case-sensitive. * * @param obj the object to compare this Header with. * @return true if obj is an instance of this class * representing the same SIP Header as this, false otherwise. */ public boolean equals(Object obj); /** * Creates and returns a deep copy of the Header. This methods must ensure a * deep copy of the Header, so that when a message is cloned the Header can * be modified without effecting the original Header in the message. This * provides useful functionality for proxying Requests and Responses, for * example: *

    *
  • Recieve a message. *
  • Create a deep clone of the message and headers. *
  • Modify necessary headers. *
  • Proxy the message using the send methods on the SipProvider. *
* This method overrides the clone method in java.lang.Object. * * @return a deep copy of Header */ public Object clone(); /** * Gets a integer hashcode representation of the Header. This method * overrides the hashcode method in java.lang.Object. * * @return integer representation of Header hashcode * @since v1.2 */ public int hashCode(); /** * Gets a string representation of the Header. This method overrides the * toString method in java.lang.Object. * * @return string representation of Header */ public String toString(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy