private NameValue uriParam() throws ParseException { if (debug) dbg_enter("uriParam"); try { String pvalue = ""; String pname = paramNameOrValue(); char next = lexer.lookAhead(0); boolean isFlagParam = true; if (next == '=') { lexer.consume(1); pvalue = paramNameOrValue(); isFlagParam = false; } if (pname.length() == 0 && ( pvalue == null || pvalue.length() == 0)) return null; else return new NameValue(pname, pvalue, isFlagParam); } finally { if (debug) dbg_leave("uriParam"); } }
private NameValueList tel_parameters() throws ParseException { NameValueList nvList = new NameValueList(); // JvB: Need to handle 'phone-context' specially // 'isub' (or 'ext') MUST appear first, but we accept any order here NameValue nv; while ( true ) { String pname = paramNameOrValue(); // Handle 'phone-context' specially, it may start with '+' if ( pname.equalsIgnoreCase("phone-context")) { nv = phone_context(); } else { if (lexer.lookAhead(0) == '=') { lexer.consume(1); String value = paramNameOrValue(); nv = new NameValue( pname, value, false ); } else { nv = new NameValue( pname, "", true );// flag param } } nvList.set( nv ); if ( lexer.lookAhead(0) == ';' ) { lexer.consume(1); } else { return nvList; } } }