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 * and others.
7600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Pursuant to title 15 Untied States Code Section 105, works of NIST
8600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * employees are not subject to copyright protection in the United States
9600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * and are considered to be in the public domain.  As a result, a formal
10600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * license is not needed to use the software.
11600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *
12600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * This software is provided by NIST as a service and is expressly
13600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * provided "AS IS."  NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED
14600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF
15600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT
16600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * AND DATA ACCURACY.  NIST does not warrant or make any representations
17600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * regarding the use of the software or the results thereof, including but
18600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * not limited to the correctness, accuracy, reliability or usefulness of
19600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * the software.
20600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *
21600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Permission to use this software is contingent upon your acceptance
22600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * of the terms of this agreement.
23600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *
24600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */
25600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang/*****************************************************************************
26600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * PRODUCT OF PT INOVACAO - EST DEPARTMENT and Aveiro University - Portugal)   *
27600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *****************************************************************************/
28600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
29600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangpackage gov.nist.javax.sip.header.ims;
30600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
31600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport java.text.ParseException;
32600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
33600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport javax.sip.header.ContactHeader;
34600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport javax.sip.header.ExtensionHeader;
35600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
36600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport gov.nist.javax.sip.header.ParametersHeader;
37600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
38600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang/**
39600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * <p>P-Access-Network-Info SIP Private Header</p>
40600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *
41600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @author Miguel Freitas (IT) PT-Inovacao
42600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *
43600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @since 1.2
44600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */
45600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
46600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangpublic class PAccessNetworkInfo
47600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    extends ParametersHeader
48600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    implements PAccessNetworkInfoHeader, ExtensionHeader {
49600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
50600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    // TODO: serialVersionUID
51600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
52600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    private String accessType;
53600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
54600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    private Object extendAccessInfo;
55600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
56600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /**
57600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * Public constructor.
58600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
59600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public PAccessNetworkInfo() {
60600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        super(PAccessNetworkInfoHeader.NAME);
61600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        parameters.setSeparator(SEMICOLON);
62600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
63600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
64600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /**
65600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * Constructor.
66600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
67600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public PAccessNetworkInfo(String accessTypeVal) {
68600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        this();
69600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        setAccessType(accessTypeVal);
70600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
71600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
72600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /**
73600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * Set the accessTpe
74600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *
75600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @param accessTypeVal - access type
76600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @throws NullPointerException
77600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
78600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public void setAccessType(String accessTypeVal) {
79600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        if (accessTypeVal == null)
80600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang            throw new NullPointerException(
81600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang                    "JAIN-SIP Exception, "
82600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang                            + "P-Access-Network-Info, setAccessType(), the accessType parameter is null.");
83600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
84600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        this.accessType = accessTypeVal;
85600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
86600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
87600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /**
88600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @return String access type
89600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
90600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public String getAccessType() {
91600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        return accessType;
92600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
93600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
94600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /**
95600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *
96600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @param cgi -- String CGI value
97600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @throws NullPointerException -- if null argument passed in
98600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @throws ParseException -- if bad argument passed in.
99600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
100600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public void setCGI3GPP(String cgi) throws ParseException {
101600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
102600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        if (cgi == null)
103600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang            throw new NullPointerException(
104600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang                    "JAIN-SIP Exception, "
105600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang                            + "P-Access-Network-Info, setCGI3GPP(), the cgi parameter is null.");
106600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
107600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        setParameter(ParameterNamesIms.CGI_3GPP, cgi);
108600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
109600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
110600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
111600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /**
112600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *
113600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @return String CGI value
114600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
115600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public String getCGI3GPP() {
116600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        return getParameter(ParameterNamesIms.CGI_3GPP);
117600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
118600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
119600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /**
120600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * Set the UtranCellID field.
121600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *
122600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @param  utranCellID -- String UTRAN Cell ID value
123600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @throws NullPointerException
124600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @throws ParseException
125600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
126600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public void setUtranCellID3GPP(String utranCellID) throws ParseException {
127600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
128600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        if (utranCellID == null)
129600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang            throw new NullPointerException(
130600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang                    "JAIN-SIP Exception, "
131600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang                            + "P-Access-Network-Info, setUtranCellID3GPP(), the utranCellID parameter is null.");
132600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
133600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        setParameter(ParameterNamesIms.UTRAN_CELL_ID_3GPP, utranCellID);
134600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
135600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
136600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
137600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /**
138600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *
139600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @return String UTRAN Cell ID value
140600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
141600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public String getUtranCellID3GPP() {
142600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        return getParameter(ParameterNamesIms.UTRAN_CELL_ID_3GPP);
143600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
144600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
145600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /**
146600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *
147600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @param dslLocation - String with the DSL location value
148600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @throws NullPointerException
149600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @throws ParseException
150600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
151600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public void setDSLLocation(String dslLocation) throws ParseException {
152600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
153600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        if (dslLocation == null)
154600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang            throw new NullPointerException(
155600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang                    "JAIN-SIP Exception, "
156600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang                            + "P-Access-Network-Info, setDSLLocation(), the dslLocation parameter is null.");
157600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
158600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        setParameter(ParameterNamesIms.DSL_LOCATION, dslLocation);
159600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
160600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
161600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
162600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /**
163600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *
164600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @return String DSL location value
165600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
166600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public String getDSLLocation() {
167600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        return getParameter(ParameterNamesIms.DSL_LOCATION);
168600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
169600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
170600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /**
171600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *
172600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @param ci3Gpp2 -- String CI 3GPP2 value
173600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @throws NullPointerException -- if arg is null
174600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @throws ParseException -- if arg is bad.
175600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
176600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public void setCI3GPP2(String ci3Gpp2) throws ParseException {
177600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        if (ci3Gpp2 == null)
178600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang            throw new NullPointerException(
179600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang                    "JAIN-SIP Exception, "
180600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang                            + "P-Access-Network-Info, setCI3GPP2(), the ci3Gpp2 parameter is null.");
181600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
182600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        setParameter(ParameterNamesIms.CI_3GPP2, ci3Gpp2);
183600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
184600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
185600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /**
186600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *
187600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @return String CI 3GPP2 value
188600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
189600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public String getCI3GPP2() {
190600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        return getParameter(ParameterNamesIms.CI_3GPP2);
191600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
192600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
193600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /**
194600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *
195600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @param name --
196600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *            parameter name
197600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @param value --
198600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *            value of parameter
199600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
200600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public void setParameter(String name, Object value) {
201600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        /**
202600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang         * @todo ParametersHeader needs to be fix!? missing "throws
203600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang         *       ParseException" in setParameter(String, Object)
204600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang         */
205600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
206600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        if (name.equalsIgnoreCase(ParameterNamesIms.CGI_3GPP)
207600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang                || name.equalsIgnoreCase(ParameterNamesIms.UTRAN_CELL_ID_3GPP)
208600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang                || name.equalsIgnoreCase(ParameterNamesIms.DSL_LOCATION)
209600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang                || name.equalsIgnoreCase(ParameterNamesIms.CI_3GPP2)) {
210600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang            try {
211600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang                super.setQuotedParameter(name, value.toString());
212600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang            } catch (ParseException e) {
213600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
214600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang            }
215600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
216600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        } else {
217600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang            // value can be token either than a quoted-string
218600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang            super.setParameter(name, value);
219600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
220600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        }
221600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
222600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
223600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
224600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /**
225600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * extension-access-info = gen-value gen-value = token / host /
226600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * quoted-string
227600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *
228600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @param extendAccessInfo - extended Access Information
229600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
230600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public void setExtensionAccessInfo(Object extendAccessInfo)
231600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang            throws ParseException {
232600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
233600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        if (extendAccessInfo == null)
234600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang            throw new NullPointerException(
235600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang                    "JAIN-SIP Exception, "
236600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang                            + "P-Access-Network-Info, setExtendAccessInfo(), the extendAccessInfo parameter is null.");
237600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
238600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        // or -> setParameter("", extendAccessInfo);
239600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
240600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        this.extendAccessInfo = extendAccessInfo;
241600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
242600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
243600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
244600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public Object getExtensionAccessInfo() {
245600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        return this.extendAccessInfo;
246600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
247600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
248600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    protected String encodeBody() {
249600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
250600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        StringBuffer encoding = new StringBuffer();
251600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
252600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        if (getAccessType() != null)
253600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang            encoding.append(getAccessType());
254600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
255600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        if (!parameters.isEmpty()) {
256600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang            encoding.append(SEMICOLON + SP + this.parameters.encode());
257600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        }
258600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        // else if (getExtendAccessInfo() != null) // stack deve limitar, de
259600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        // acordo com a especificação ?
260600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        if (getExtensionAccessInfo() != null) {
261600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang            encoding.append(SEMICOLON + SP
262600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang                    + getExtensionAccessInfo().toString());
263600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        }
264600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
265600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        return encoding.toString();
266600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
267600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
268600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
269600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public void setValue(String value) throws ParseException {
270600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        throw new ParseException(value, 0);
271600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
272600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
273600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
274600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
275600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public boolean equals(Object other) {
276600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        return (other instanceof PAccessNetworkInfoHeader) && super.equals(other);
277600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
278600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
279600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /*
280600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * Makes a deep clone. (ParametersHeader)
281600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
282600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public Object clone() {
283600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        PAccessNetworkInfo retval = (PAccessNetworkInfo) super.clone();
284600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        return retval;
285600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
286600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
287600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
288600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang}
289