1600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangpackage gov.nist.javax.sip.parser.extensions; 2600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 3600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport gov.nist.javax.sip.header.*; 4600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport gov.nist.javax.sip.header.extensions.*; 5600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport gov.nist.javax.sip.parser.*; 6600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 7600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport java.text.ParseException; 8600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport javax.sip.*; 9600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 10600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang/** 11600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Parser for SIP Session Expires Header. 12600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 13600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 14600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 15600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangpublic class SessionExpiresParser extends ParametersParser { 16600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 17600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 18600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * protected constructor. 19600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @param text is the text of the header to parse 20600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 21600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public SessionExpiresParser(String text) { 22600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang super(text); 23600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 24600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 25600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 26600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * constructor. 27600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @param lexer is the lexer passed in from the enclosing parser. 28600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 29600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang protected SessionExpiresParser(Lexer lexer) { 30600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang super(lexer); 31600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 32600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 33600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 34600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Parse the header. 35600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 36600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public SIPHeader parse() throws ParseException { 37600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang SessionExpires se = new SessionExpires(); 38600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if (debug) 39600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang dbg_enter("parse"); 40600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang try { 41600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang headerName(TokenTypes.SESSIONEXPIRES_TO); 42600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 43600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang String nextId = lexer.getNextId(); 44600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 45600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang try { 46600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang int delta = Integer.parseInt(nextId); 47600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang se.setExpires(delta); 48600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } catch (NumberFormatException ex) { 49600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang throw createParseException("bad integer format"); 50600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } catch (InvalidArgumentException ex) { 51600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang throw createParseException(ex.getMessage()); 52600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 53600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // May have parameters... 54600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang this.lexer.SPorHT(); 55600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang super.parse(se); 56600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return se; 57600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 58600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } finally { 59600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if (debug) 60600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang dbg_leave("parse"); 61600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 62600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 63600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 64600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 65600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public static void main(String args[]) throws ParseException { 66600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang String to[] = 67600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang { "Session-Expires: 30\n", 68600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang "Session-Expires: 45;refresher=uac\n", 69600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang }; 70600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 71600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang for (int i = 0; i < to.length; i++) { 72600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang SessionExpiresParser tp = new SessionExpiresParser(to[i]); 73600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang SessionExpires t = (SessionExpires) tp.parse(); 74600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang System.out.println("encoded = " + t.encode()); 75600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang System.out.println("\ntime=" + t.getExpires() ); 76600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if ( t.getParameter("refresher") != null) 77600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang System.out.println("refresher=" + t.getParameter("refresher") ); 78600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 79600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 80600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 81600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 82600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 83600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang} 84600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 85