| 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; |
| |
| // Parser for Join Header (RFC3911) |
| // Extension by jean deruelle |
| // |
| // Join = "Join" HCOLON callid *(SEMI join-param) |
| // join-param = to-tag / from-tag / generic-param |
| // to-tag = "to-tag" EQUAL token |
| // from-tag = "from-tag" EQUAL token |
| // |
| // |
| |
| public class JoinParser extends ParametersParser { |
| |
| /** |
| * Creates new CallIDParser |
| * @param callID message to parse |
| */ |
| public JoinParser(String callID) { |
| super(callID); |
| } |
| |
| /** |
| * Constructor |
| * @param lexer Lexer to set |
| */ |
| protected JoinParser(Lexer lexer) { |
| super(lexer); |
| } |
| |
| /** |
| * parse the String message |
| * @return SIPHeader (CallID object) |
| * @throws ParseException if the message does not respect the spec. |
| */ |
| public SIPHeader parse() throws ParseException { |
| if (debug) |
| dbg_enter("parse"); |
| try { |
| headerName(TokenTypes.JOIN_TO); |
| |
| Join join = new Join(); |
| this.lexer.SPorHT(); |
| String callId = lexer.byteStringNoSemicolon(); |
| this.lexer.SPorHT(); |
| super.parse(join); |
| join.setCallId(callId); |
| return join; |
| } finally { |
| if (debug) |
| dbg_leave("parse"); |
| } |
| } |
| |
| public static void main(String args[]) throws ParseException { |
| String to[] = |
| { "Join: 12345th5z8z\n", |
| "Join: 12345th5z8z;to-tag=tozght6-45;from-tag=fromzght789-337-2\n", |
| }; |
| |
| for (int i = 0; i < to.length; i++) { |
| JoinParser tp = new JoinParser(to[i]); |
| Join t = (Join) tp.parse(); |
| System.out.println("Parsing => " + to[i]); |
| System.out.print("encoded = " + t.encode() + "==> "); |
| System.out.println("callId " + t.getCallId() + " from-tag=" + t.getFromTag() |
| + " to-tag=" + t.getToTag()) ; |
| |
| } |
| } |
| |
| } |