Home | History | Annotate | Download | only in extensions
      1 package gov.nist.javax.sip.parser.extensions;
      2 
      3 import gov.nist.javax.sip.header.*;
      4 import gov.nist.javax.sip.header.extensions.*;
      5 import gov.nist.javax.sip.parser.*;
      6 
      7 import java.text.ParseException;
      8 
      9 // Parser for Join Header (RFC3911)
     10 // Extension by jean deruelle
     11 //
     12 // Join        = "Join" HCOLON callid *(SEMI join-param)
     13 // join-param  = to-tag / from-tag / generic-param
     14 // to-tag          = "to-tag" EQUAL token
     15 // from-tag        = "from-tag" EQUAL token
     16 //
     17 //
     18 
     19 public class JoinParser extends ParametersParser {
     20 
     21     /**
     22      * Creates new CallIDParser
     23      * @param callID message to parse
     24      */
     25     public JoinParser(String callID) {
     26         super(callID);
     27     }
     28 
     29     /**
     30      * Constructor
     31      * @param lexer Lexer to set
     32      */
     33     protected JoinParser(Lexer lexer) {
     34         super(lexer);
     35     }
     36 
     37     /**
     38      * parse the String message
     39      * @return SIPHeader (CallID object)
     40      * @throws ParseException if the message does not respect the spec.
     41      */
     42     public SIPHeader parse() throws ParseException {
     43         if (debug)
     44             dbg_enter("parse");
     45         try {
     46             headerName(TokenTypes.JOIN_TO);
     47 
     48             Join join = new Join();
     49             this.lexer.SPorHT();
     50             String callId = lexer.byteStringNoSemicolon();
     51             this.lexer.SPorHT();
     52             super.parse(join);
     53             join.setCallId(callId);
     54             return join;
     55         } finally {
     56             if (debug)
     57                 dbg_leave("parse");
     58         }
     59     }
     60 
     61     public static void main(String args[]) throws ParseException {
     62         String to[] =
     63             {   "Join: 12345th5z8z\n",
     64                 "Join: 12345th5z8z;to-tag=tozght6-45;from-tag=fromzght789-337-2\n",
     65             };
     66 
     67         for (int i = 0; i < to.length; i++) {
     68             JoinParser tp = new JoinParser(to[i]);
     69             Join t = (Join) tp.parse();
     70             System.out.println("Parsing => " + to[i]);
     71             System.out.print("encoded = " + t.encode() + "==> ");
     72             System.out.println("callId " + t.getCallId() + " from-tag=" + t.getFromTag()
     73                     + " to-tag=" + t.getToTag()) ;
     74 
     75         }
     76     }
     77 
     78 }
     79