blob: c220c78d24db4187befd97f8208de41b57973a39 [file] [log] [blame]
/*
* Conditions Of Use
*
* This software was developed by employees of the National Institute of
* Standards and Technology (NIST), an agency of the Federal Government,
* and others.
* 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 PT INOVACAO - EST DEPARTMENT and Aveiro University - Portugal) *
*****************************************************************************/
package gov.nist.javax.sip.header.ims;
import java.text.ParseException;
import javax.sip.header.ContactHeader;
import javax.sip.header.ExtensionHeader;
import gov.nist.javax.sip.header.ParametersHeader;
/**
* <p>P-Access-Network-Info SIP Private Header</p>
*
* @author Miguel Freitas (IT) PT-Inovacao
*
* @since 1.2
*/
public class PAccessNetworkInfo
extends ParametersHeader
implements PAccessNetworkInfoHeader, ExtensionHeader {
// TODO: serialVersionUID
private String accessType;
private Object extendAccessInfo;
/**
* Public constructor.
*/
public PAccessNetworkInfo() {
super(PAccessNetworkInfoHeader.NAME);
parameters.setSeparator(SEMICOLON);
}
/**
* Constructor.
*/
public PAccessNetworkInfo(String accessTypeVal) {
this();
setAccessType(accessTypeVal);
}
/**
* Set the accessTpe
*
* @param accessTypeVal - access type
* @throws NullPointerException
*/
public void setAccessType(String accessTypeVal) {
if (accessTypeVal == null)
throw new NullPointerException(
"JAIN-SIP Exception, "
+ "P-Access-Network-Info, setAccessType(), the accessType parameter is null.");
this.accessType = accessTypeVal;
}
/**
* @return String access type
*/
public String getAccessType() {
return accessType;
}
/**
*
* @param cgi -- String CGI value
* @throws NullPointerException -- if null argument passed in
* @throws ParseException -- if bad argument passed in.
*/
public void setCGI3GPP(String cgi) throws ParseException {
if (cgi == null)
throw new NullPointerException(
"JAIN-SIP Exception, "
+ "P-Access-Network-Info, setCGI3GPP(), the cgi parameter is null.");
setParameter(ParameterNamesIms.CGI_3GPP, cgi);
}
/**
*
* @return String CGI value
*/
public String getCGI3GPP() {
return getParameter(ParameterNamesIms.CGI_3GPP);
}
/**
* Set the UtranCellID field.
*
* @param utranCellID -- String UTRAN Cell ID value
* @throws NullPointerException
* @throws ParseException
*/
public void setUtranCellID3GPP(String utranCellID) throws ParseException {
if (utranCellID == null)
throw new NullPointerException(
"JAIN-SIP Exception, "
+ "P-Access-Network-Info, setUtranCellID3GPP(), the utranCellID parameter is null.");
setParameter(ParameterNamesIms.UTRAN_CELL_ID_3GPP, utranCellID);
}
/**
*
* @return String UTRAN Cell ID value
*/
public String getUtranCellID3GPP() {
return getParameter(ParameterNamesIms.UTRAN_CELL_ID_3GPP);
}
/**
*
* @param dslLocation - String with the DSL location value
* @throws NullPointerException
* @throws ParseException
*/
public void setDSLLocation(String dslLocation) throws ParseException {
if (dslLocation == null)
throw new NullPointerException(
"JAIN-SIP Exception, "
+ "P-Access-Network-Info, setDSLLocation(), the dslLocation parameter is null.");
setParameter(ParameterNamesIms.DSL_LOCATION, dslLocation);
}
/**
*
* @return String DSL location value
*/
public String getDSLLocation() {
return getParameter(ParameterNamesIms.DSL_LOCATION);
}
/**
*
* @param ci3Gpp2 -- String CI 3GPP2 value
* @throws NullPointerException -- if arg is null
* @throws ParseException -- if arg is bad.
*/
public void setCI3GPP2(String ci3Gpp2) throws ParseException {
if (ci3Gpp2 == null)
throw new NullPointerException(
"JAIN-SIP Exception, "
+ "P-Access-Network-Info, setCI3GPP2(), the ci3Gpp2 parameter is null.");
setParameter(ParameterNamesIms.CI_3GPP2, ci3Gpp2);
}
/**
*
* @return String CI 3GPP2 value
*/
public String getCI3GPP2() {
return getParameter(ParameterNamesIms.CI_3GPP2);
}
/**
*
* @param name --
* parameter name
* @param value --
* value of parameter
*/
public void setParameter(String name, Object value) {
/**
* @todo ParametersHeader needs to be fix!? missing "throws
* ParseException" in setParameter(String, Object)
*/
if (name.equalsIgnoreCase(ParameterNamesIms.CGI_3GPP)
|| name.equalsIgnoreCase(ParameterNamesIms.UTRAN_CELL_ID_3GPP)
|| name.equalsIgnoreCase(ParameterNamesIms.DSL_LOCATION)
|| name.equalsIgnoreCase(ParameterNamesIms.CI_3GPP2)) {
try {
super.setQuotedParameter(name, value.toString());
} catch (ParseException e) {
}
} else {
// value can be token either than a quoted-string
super.setParameter(name, value);
}
}
/**
* extension-access-info = gen-value gen-value = token / host /
* quoted-string
*
* @param extendAccessInfo - extended Access Information
*/
public void setExtensionAccessInfo(Object extendAccessInfo)
throws ParseException {
if (extendAccessInfo == null)
throw new NullPointerException(
"JAIN-SIP Exception, "
+ "P-Access-Network-Info, setExtendAccessInfo(), the extendAccessInfo parameter is null.");
// or -> setParameter("", extendAccessInfo);
this.extendAccessInfo = extendAccessInfo;
}
public Object getExtensionAccessInfo() {
return this.extendAccessInfo;
}
protected String encodeBody() {
StringBuffer encoding = new StringBuffer();
if (getAccessType() != null)
encoding.append(getAccessType());
if (!parameters.isEmpty()) {
encoding.append(SEMICOLON + SP + this.parameters.encode());
}
// else if (getExtendAccessInfo() != null) // stack deve limitar, de
// acordo com a especificaĆ§Ć£o ?
if (getExtensionAccessInfo() != null) {
encoding.append(SEMICOLON + SP
+ getExtensionAccessInfo().toString());
}
return encoding.toString();
}
public void setValue(String value) throws ParseException {
throw new ParseException(value, 0);
}
public boolean equals(Object other) {
return (other instanceof PAccessNetworkInfoHeader) && super.equals(other);
}
/*
* Makes a deep clone. (ParametersHeader)
*/
public Object clone() {
PAccessNetworkInfo retval = (PAccessNetworkInfo) super.clone();
return retval;
}
}