| package gov.nist.javax.sip.parser.extensions; |
| |
| import gov.nist.javax.sip.header.*; |
| import gov.nist.javax.sip.header.extensions.*; |
| import gov.nist.javax.sip.parser.*; |
| |
| import java.text.ParseException; |
| import javax.sip.*; |
| |
| /** |
| * Parser for SIP Session Expires Header. |
| * |
| * |
| */ |
| public class SessionExpiresParser extends ParametersParser { |
| |
| /** |
| * protected constructor. |
| * @param text is the text of the header to parse |
| */ |
| public SessionExpiresParser(String text) { |
| super(text); |
| } |
| |
| /** |
| * constructor. |
| * @param lexer is the lexer passed in from the enclosing parser. |
| */ |
| protected SessionExpiresParser(Lexer lexer) { |
| super(lexer); |
| } |
| |
| /** |
| * Parse the header. |
| */ |
| public SIPHeader parse() throws ParseException { |
| SessionExpires se = new SessionExpires(); |
| if (debug) |
| dbg_enter("parse"); |
| try { |
| headerName(TokenTypes.SESSIONEXPIRES_TO); |
| |
| String nextId = lexer.getNextId(); |
| |
| try { |
| int delta = Integer.parseInt(nextId); |
| se.setExpires(delta); |
| } catch (NumberFormatException ex) { |
| throw createParseException("bad integer format"); |
| } catch (InvalidArgumentException ex) { |
| throw createParseException(ex.getMessage()); |
| } |
| // May have parameters... |
| this.lexer.SPorHT(); |
| super.parse(se); |
| return se; |
| |
| } finally { |
| if (debug) |
| dbg_leave("parse"); |
| } |
| |
| } |
| |
| public static void main(String args[]) throws ParseException { |
| String to[] = |
| { "Session-Expires: 30\n", |
| "Session-Expires: 45;refresher=uac\n", |
| }; |
| |
| for (int i = 0; i < to.length; i++) { |
| SessionExpiresParser tp = new SessionExpiresParser(to[i]); |
| SessionExpires t = (SessionExpires) tp.parse(); |
| System.out.println("encoded = " + t.encode()); |
| System.out.println("\ntime=" + t.getExpires() ); |
| if ( t.getParameter("refresher") != null) |
| System.out.println("refresher=" + t.getParameter("refresher") ); |
| |
| } |
| } |
| |
| |
| } |
| |