1600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang/*******************************************************************************
2600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* Product of NIST/ITL Advanced Networking Technologies Division (ANTD).        *
3600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang*******************************************************************************/
4600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang/*
5600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* This code has been contributed by the author to the public domain.
6600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang*/
7600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangpackage gov.nist.javax.sip.header.extensions;
8600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
9600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport java.text.ParseException;
10600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport gov.nist.javax.sip.header.*;
11600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
12600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport javax.sip.*;
13600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport javax.sip.header.ExtensionHeader;
14600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
15600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang/**
16600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * MinSE SIP Header.
17600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *
18600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * (Created by modifying Expires.java)
19600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *
20600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @version JAIN-SIP-1.1 $Revision: 1.4 $ $Date: 2009/10/18 13:46:36 $
21600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *
22600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @author P. Musgrave <pmusgrave@newheights.com>  <br/>
23600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *
24600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */
25600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangpublic class MinSE
26600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    extends ParametersHeader implements ExtensionHeader, MinSEHeader {
27600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
28600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    // TODO: When the MinSEHeader is added to javax - move this there...pmusgrave
29600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public static final String NAME = "Min-SE";
30600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
31600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /**
32600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * Comment for <code>serialVersionUID</code>
33600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
34600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    private static final long serialVersionUID = 3134344915465784267L;
35600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
36600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /** expires field
37600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
38600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public int expires;
39600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
40600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /** default constructor
41600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
42600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public MinSE() {
43600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        super(NAME);
44600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
45600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
46600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /**
47600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * Return canonical form.
48600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @return String
49600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
50600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public String encodeBody() {
51600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        String retval = Integer.toString(expires); // seems overkill - but Expires did this.
52600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
53600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        if (!parameters.isEmpty()) {
54600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang            retval += SEMICOLON + parameters.encode();
55600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        }
56600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        return retval;
57600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
58600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
59600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public void setValue(String value) throws ParseException {
60600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        // not implemented.
61600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        throw new ParseException(value,0);
62600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
63600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
64600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
65600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /**
66600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * Gets the expires value of the ExpiresHeader. This expires value is
67600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *
68600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * relative time.
69600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *
70600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *
71600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *
72600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @return the expires value of the ExpiresHeader.
73600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *
74600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @since JAIN SIP v1.1
75600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *
76600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
77600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public int getExpires() {
78600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        return expires;
79600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
80600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
81600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /**
82600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * Sets the relative expires value of the ExpiresHeader.
83600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * The expires value MUST be greater than zero and MUST be
84600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * less than 2**31.
85600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *
86600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @param expires - the new expires value of this ExpiresHeader
87600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *
88600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @throws InvalidArgumentException if supplied value is less than zero.
89600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *
90600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @since JAIN SIP v1.2
91600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     *
92600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
93600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public void setExpires(int expires) throws InvalidArgumentException {
94600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        if (expires < 0)
95600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang            throw new InvalidArgumentException("bad argument " + expires);
96600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        this.expires = expires;
97600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
98600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang}
99