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 MinSE Parser. * * Min-SE = "Min-SE" HCOLON delta-seconds *(SEMI generic-param) * * @author P. Musgrave * * This code is in the public domain. */ public class MinSEParser extends ParametersParser { /** * protected constructor. * @param text is the text of the header to parse */ public MinSEParser(String text) { super(text); } /** * constructor. * @param lexer is the lexer passed in from the enclosing parser. */ protected MinSEParser(Lexer lexer) { super(lexer); } /** * Parse the header. */ public SIPHeader parse() throws ParseException { MinSE minse = new MinSE(); if (debug) dbg_enter("parse"); try { headerName(TokenTypes.MINSE_TO); String nextId = lexer.getNextId(); try { int delta = Integer.parseInt(nextId); minse.setExpires(delta); } catch (NumberFormatException ex) { throw createParseException("bad integer format"); } catch (InvalidArgumentException ex) { throw createParseException(ex.getMessage()); } this.lexer.SPorHT(); super.parse(minse); return minse; } finally { if (debug) dbg_leave("parse"); } } public static void main(String args[]) throws ParseException { String to[] = { "Min-SE: 30\n", "Min-SE: 45;some-param=somevalue\n", }; for (int i = 0; i < to.length; i++) { MinSEParser tp = new MinSEParser(to[i]); MinSE t = (MinSE) tp.parse(); System.out.println("encoded = " + t.encode()); System.out.println("\ntime=" + t.getExpires() ); if ( t.getParameter("some-param") != null) System.out.println("some-param=" + t.getParameter("some-param") ); } } }