1600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang/* 2600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* Conditions Of Use 3600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* 4600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* This software was developed by employees of the National Institute of 5600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* Standards and Technology (NIST), an agency of the Federal Government. 6600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* Pursuant to title 15 Untied States Code Section 105, works of NIST 7600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* employees are not subject to copyright protection in the United States 8600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* and are considered to be in the public domain. As a result, a formal 9600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* license is not needed to use the software. 10600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* 11600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* This software is provided by NIST as a service and is expressly 12600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* provided "AS IS." NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED 13600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF 14600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT 15600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* AND DATA ACCURACY. NIST does not warrant or make any representations 16600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* regarding the use of the software or the results thereof, including but 17600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* not limited to the correctness, accuracy, reliability or usefulness of 18600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* the software. 19600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* 20600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* Permission to use this software is contingent upon your acceptance 21600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* of the terms of this agreement 22600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* 23600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* . 24600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* 25600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang*/ 26600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang/******************************************************************************* 27600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* Product of NIST/ITL Advanced Networking Technologies Division (ANTD). * 28600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang*******************************************************************************/ 29600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangpackage gov.nist.javax.sip.header; 30600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 31600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport gov.nist.javax.sip.address.*; 32600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport javax.sip.header.*; 33600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport javax.sip.address.*; 34600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport java.text.ParseException; 35600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 36600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang/** 37600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * ErrorInfo SIP Header. 38600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 39600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @version 1.2 $Revision: 1.6 $ $Date: 2009/07/17 18:57:30 $ 40600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @since 1.1 41600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 42600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @author M. Ranganathan <br/> 43600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @author Olivier Deruelle <br/> 44600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 45600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 46600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangpublic final class ErrorInfo 47600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang extends ParametersHeader 48600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang implements ErrorInfoHeader { 49600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 50600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 51600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Comment for <code>serialVersionUID</code> 52600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 53600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang private static final long serialVersionUID = -6347702901964436362L; 54600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 55600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang protected GenericURI errorInfo; 56600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 57600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 58600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Default constructor. 59600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 60600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public ErrorInfo() { 61600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang super(NAME); 62600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 63600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 64600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 65600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Constructor given the error info 66600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @param errorInfo -- the error information to set. 67600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 68600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public ErrorInfo(GenericURI errorInfo) { 69600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang this(); 70600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang this.errorInfo = errorInfo; 71600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 72600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 73600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 74600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Encode into canonical form. 75600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @return String 76600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 77600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public String encodeBody() { 78600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang StringBuffer retval = 79600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang new StringBuffer(LESS_THAN).append(errorInfo.toString()).append( 80600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang GREATER_THAN); 81600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if (!parameters.isEmpty()) { 82600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang retval.append(SEMICOLON).append(parameters.encode()); 83600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 84600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return retval.toString(); 85600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 86600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 87600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 88600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Sets the ErrorInfo of the ErrorInfoHeader to the <var>errorInfo</var> 89600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * parameter value. 90600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 91600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @param errorInfo the new ErrorInfo of this ErrorInfoHeader. 92600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 93600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public void setErrorInfo(javax.sip.address.URI errorInfo) { 94600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang this.errorInfo = (GenericURI) errorInfo; 95600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 96600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 97600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 98600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 99600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Returns the ErrorInfo value of this ErrorInfoHeader. This message 100600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * may return null if a String message identifies the ErrorInfo. 101600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 102600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @return the URI representing the ErrorInfo. 103600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 104600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public URI getErrorInfo() { 105600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return errorInfo; 106600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 107600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 108600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 109600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Sets the Error information message to the new <var>message</var> value 110600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * supplied to this method. 111600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 112600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @param message - the new string value that represents the error message. 113600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @throws ParseException which signals that an error has been reached 114600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * unexpectedly while parsing the error message. 115600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 116600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public void setErrorMessage(String message) throws ParseException { 117600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if (message == null) 118600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang throw new NullPointerException( 119600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang "JAIN-SIP Exception " 120600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang + ", ErrorInfoHeader, setErrorMessage(), the message parameter is null"); 121600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang setParameter("message", message); 122600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 123600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 124600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 125600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Get the Error information message of this ErrorInfoHeader. 126600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 127600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @return the stringified version of the ErrorInfo header. 128600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 129600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public String getErrorMessage() { 130600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return getParameter("message"); 131600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 132600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 133600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public Object clone() { 134600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang ErrorInfo retval = (ErrorInfo) super.clone(); 135600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if (this.errorInfo != null) 136600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang retval.errorInfo = (GenericURI) this.errorInfo.clone(); 137600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return retval; 138600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 139600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang} 140600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 141