1
2/*******************************************************************************
3* Product of NIST/ITL Advanced Networking Technologies Division (ANTD).        *
4*******************************************************************************/
5
6package gov.nist.javax.sip.header.extensions;
7
8import gov.nist.javax.sip.header.ParametersHeader;
9
10import java.text.ParseException;
11
12import javax.sip.InvalidArgumentException;
13import javax.sip.header.ExtensionHeader;
14
15/**
16 * ReferredBy SIP Header.
17 *
18 * @version JAIN-SIP-1.1 $Revision: 1.5 $ $Date: 2009/10/18 13:46:36 $
19 *
20 * @author Peter Musgrave.
21 *
22 */
23public final class SessionExpires
24    extends ParametersHeader implements ExtensionHeader, SessionExpiresHeader {
25
26    // TODO: Need a unique UID
27    private static final long serialVersionUID = 8765762413224043300L;
28
29    // TODO: When the MinSEHeader is added to javax - move this there...pmusgrave
30    public static final String NAME = "Session-Expires";
31
32    public int expires;
33
34    public static final String REFRESHER = "refresher";
35    /** default Constructor.
36     */
37    public SessionExpires() {
38        super(NAME);
39    }
40
41    /**
42     * Gets the expires value of the SessionExpiresHeader. This expires value is
43     * relative time.
44     *
45     *
46     *
47     * @return the expires value of the ExpiresHeader.
48     *
49     * @since JAIN SIP v1.1
50     *
51     */
52    public int getExpires() {
53        return expires;
54    }
55
56    /**
57     * Sets the relative expires value of the SessionExpiresHeader.
58     * The expires value MUST be greater than zero and MUST be
59     * less than 2**31.
60     *
61     * @param expires - the new expires value
62     *
63     * @throws InvalidArgumentException if supplied value is less than zero.
64     *
65     * @since JAIN SIP v1.1
66     *
67     */
68    public void setExpires(int expires) throws InvalidArgumentException {
69        if (expires < 0)
70            throw new InvalidArgumentException("bad argument " + expires);
71        this.expires = expires;
72    }
73
74    public void setValue(String value) throws ParseException {
75        // not implemented.
76        throw new ParseException(value,0);
77
78    }
79
80    /**
81     * Encode the header content into a String.
82     * @return String
83     */
84    protected String encodeBody() {
85
86        String retval = Integer.toString(expires);
87
88        if (!parameters.isEmpty()) {
89            retval += SEMICOLON + parameters.encode();
90        }
91        return retval;
92    }
93
94    public String getRefresher() {
95       return parameters.getParameter(REFRESHER);
96    }
97
98    public void setRefresher(String refresher) {
99        this.parameters.set(REFRESHER,refresher);
100    }
101}
102
103
104
105