1600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang/* 2600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Conditions Of Use 3600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 4600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * This software was developed by employees of the National Institute of 5600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Standards and Technology (NIST), an agency of the Federal Government. 6600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Pursuant to title 15 Untied States Code Section 105, works of NIST 7600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * employees are not subject to copyright protection in the United States 8600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * and are considered to be in the public domain. As a result, a formal 9600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * license is not needed to use the software. 10600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 11600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * This software is provided by NIST as a service and is expressly 12600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * provided "AS IS." NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED 13600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF 14600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT 15600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * AND DATA ACCURACY. NIST does not warrant or make any representations 16600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * regarding the use of the software or the results thereof, including but 17600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * not limited to the correctness, accuracy, reliability or usefulness of 18600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * the software. 19600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 20600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Permission to use this software is contingent upon your acceptance 21600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * of the terms of this agreement 22600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 23600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * . 24600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 25600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 26600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangpackage gov.nist.javax.sip.parser; 27600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 28600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport gov.nist.core.*; 29600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 30600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport gov.nist.javax.sip.header.extensions.*; 31600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 32600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport gov.nist.javax.sip.header.ims.*; 33600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 34600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport javax.sip.header.*; 35600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport java.util.Hashtable; 36600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 37600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang/** 38600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Lexer class for the parser. 39600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 40600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @version 1.2 41600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 42600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @author M. Ranganathan <br/> 43600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 44600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 45600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 46600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangpublic class Lexer extends LexerCore { 47600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 48600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * get the header name of the line 49600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 50600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @return the header name (stuff before the :) bug fix submitted by 51600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * zvali@dev.java.net 52600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 53600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public static String getHeaderName(String line) { 54600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if (line == null) 55600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return null; 56600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang String headerName = null; 57600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang try { 58600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang int begin = line.indexOf(":"); 59600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang headerName = null; 60600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if (begin >= 1) 61600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang headerName = line.substring(0, begin).trim(); 62600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } catch (IndexOutOfBoundsException e) { 63600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return null; 64600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 65600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return headerName; 66600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 67600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 68600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public Lexer(String lexerName, String buffer) { 69600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang super(lexerName, buffer); 70600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang this.selectLexer(lexerName); 71600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 72600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 73600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang /** 74600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * get the header value of the line 75600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 76600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @return String 77600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 78600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public static String getHeaderValue(String line) { 79600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if (line == null) 80600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return null; 81600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang String headerValue = null; 82600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang try { 83600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang int begin = line.indexOf(":"); 84600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang headerValue = line.substring(begin + 1); 85600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } catch (IndexOutOfBoundsException e) { 86600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return null; 87600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 88600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return headerValue; 89600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 90600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 91600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public void selectLexer(String lexerName) { 92600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang synchronized (lexerTables) { 93600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // Synchronization Bug fix by Robert Rosen. 94600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang currentLexer = (Hashtable) lexerTables.get(lexerName); 95600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang this.currentLexerName = lexerName; 96600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if (currentLexer == null) { 97600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addLexer(lexerName); 98600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if (lexerName.equals("method_keywordLexer")) { 99600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.REGISTER, TokenTypes.REGISTER); 100600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.ACK, TokenTypes.ACK); 101600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.OPTIONS, TokenTypes.OPTIONS); 102600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.BYE, TokenTypes.BYE); 103600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.INVITE, TokenTypes.INVITE); 104600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.SIP.toUpperCase(), TokenTypes.SIP); 105600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.SIPS.toUpperCase(), TokenTypes.SIPS); 106600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.SUBSCRIBE, TokenTypes.SUBSCRIBE); 107600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.NOTIFY, TokenTypes.NOTIFY); 108600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.MESSAGE, TokenTypes.MESSAGE); 109600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 110600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // JvB: added to support RFC3903 111600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.PUBLISH, TokenTypes.PUBLISH); 112600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 113600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } else if (lexerName.equals("command_keywordLexer")) { 114600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(ErrorInfoHeader.NAME.toUpperCase(), 115600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.ERROR_INFO); 116600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(AllowEventsHeader.NAME.toUpperCase(), 117600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.ALLOW_EVENTS); 118600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(AuthenticationInfoHeader.NAME.toUpperCase(), 119600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.AUTHENTICATION_INFO); 120600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(EventHeader.NAME.toUpperCase(), TokenTypes.EVENT); 121600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(MinExpiresHeader.NAME.toUpperCase(), 122600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.MIN_EXPIRES); 123600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(RSeqHeader.NAME.toUpperCase(), TokenTypes.RSEQ); 124600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(RAckHeader.NAME.toUpperCase(), TokenTypes.RACK); 125600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(ReasonHeader.NAME.toUpperCase(), 126600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.REASON); 127600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(ReplyToHeader.NAME.toUpperCase(), 128600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.REPLY_TO); 129600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(SubscriptionStateHeader.NAME.toUpperCase(), 130600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.SUBSCRIPTION_STATE); 131600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TimeStampHeader.NAME.toUpperCase(), 132600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.TIMESTAMP); 133600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(InReplyToHeader.NAME.toUpperCase(), 134600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.IN_REPLY_TO); 135600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(MimeVersionHeader.NAME.toUpperCase(), 136600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.MIME_VERSION); 137600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(AlertInfoHeader.NAME.toUpperCase(), 138600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.ALERT_INFO); 139600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(FromHeader.NAME.toUpperCase(), TokenTypes.FROM); 140600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(ToHeader.NAME.toUpperCase(), TokenTypes.TO); 141600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(ReferToHeader.NAME.toUpperCase(), 142600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.REFER_TO); 143600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(ViaHeader.NAME.toUpperCase(), TokenTypes.VIA); 144600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(UserAgentHeader.NAME.toUpperCase(), 145600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.USER_AGENT); 146600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(ServerHeader.NAME.toUpperCase(), 147600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.SERVER); 148600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(AcceptEncodingHeader.NAME.toUpperCase(), 149600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.ACCEPT_ENCODING); 150600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(AcceptHeader.NAME.toUpperCase(), 151600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.ACCEPT); 152600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(AllowHeader.NAME.toUpperCase(), TokenTypes.ALLOW); 153600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(RouteHeader.NAME.toUpperCase(), TokenTypes.ROUTE); 154600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(AuthorizationHeader.NAME.toUpperCase(), 155600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.AUTHORIZATION); 156600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(ProxyAuthorizationHeader.NAME.toUpperCase(), 157600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.PROXY_AUTHORIZATION); 158600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(RetryAfterHeader.NAME.toUpperCase(), 159600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.RETRY_AFTER); 160600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(ProxyRequireHeader.NAME.toUpperCase(), 161600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.PROXY_REQUIRE); 162600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(ContentLanguageHeader.NAME.toUpperCase(), 163600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.CONTENT_LANGUAGE); 164600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(UnsupportedHeader.NAME.toUpperCase(), 165600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.UNSUPPORTED); 166600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(SupportedHeader.NAME.toUpperCase(), 167600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.SUPPORTED); 168600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(WarningHeader.NAME.toUpperCase(), 169600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.WARNING); 170600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(MaxForwardsHeader.NAME.toUpperCase(), 171600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.MAX_FORWARDS); 172600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(DateHeader.NAME.toUpperCase(), TokenTypes.DATE); 173600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(PriorityHeader.NAME.toUpperCase(), 174600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.PRIORITY); 175600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(ProxyAuthenticateHeader.NAME.toUpperCase(), 176600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.PROXY_AUTHENTICATE); 177600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(ContentEncodingHeader.NAME.toUpperCase(), 178600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.CONTENT_ENCODING); 179600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(ContentLengthHeader.NAME.toUpperCase(), 180600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.CONTENT_LENGTH); 181600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(SubjectHeader.NAME.toUpperCase(), 182600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.SUBJECT); 183600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(ContentTypeHeader.NAME.toUpperCase(), 184600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.CONTENT_TYPE); 185600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(ContactHeader.NAME.toUpperCase(), 186600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.CONTACT); 187600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(CallIdHeader.NAME.toUpperCase(), 188600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.CALL_ID); 189600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(RequireHeader.NAME.toUpperCase(), 190600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.REQUIRE); 191600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(ExpiresHeader.NAME.toUpperCase(), 192600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.EXPIRES); 193600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(RecordRouteHeader.NAME.toUpperCase(), 194600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.RECORD_ROUTE); 195600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(OrganizationHeader.NAME.toUpperCase(), 196600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.ORGANIZATION); 197600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(CSeqHeader.NAME.toUpperCase(), TokenTypes.CSEQ); 198600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(AcceptLanguageHeader.NAME.toUpperCase(), 199600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.ACCEPT_LANGUAGE); 200600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(WWWAuthenticateHeader.NAME.toUpperCase(), 201600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.WWW_AUTHENTICATE); 202600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(CallInfoHeader.NAME.toUpperCase(), 203600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.CALL_INFO); 204600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(ContentDispositionHeader.NAME.toUpperCase(), 205600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.CONTENT_DISPOSITION); 206600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // And now the dreaded short forms.... 207600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.K.toUpperCase(), TokenTypes.SUPPORTED); 208600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.C.toUpperCase(), 209600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.CONTENT_TYPE); 210600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.E.toUpperCase(), 211600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.CONTENT_ENCODING); 212600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.F.toUpperCase(), TokenTypes.FROM); 213600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.I.toUpperCase(), TokenTypes.CALL_ID); 214600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.M.toUpperCase(), TokenTypes.CONTACT); 215600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.L.toUpperCase(), 216600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.CONTENT_LENGTH); 217600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.S.toUpperCase(), TokenTypes.SUBJECT); 218600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.T.toUpperCase(), TokenTypes.TO); 219600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.U.toUpperCase(), 220600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.ALLOW_EVENTS); // JvB: added 221600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.V.toUpperCase(), TokenTypes.VIA); 222600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.R.toUpperCase(), TokenTypes.REFER_TO); 223600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.O.toUpperCase(), TokenTypes.EVENT); // Bug 224600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // fix 225600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // by 226600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // Mario 227600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // Mantak 228600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.X.toUpperCase(), TokenTypes.SESSIONEXPIRES_TO); // Bug fix by Jozef Saniga 229600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 230600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // JvB: added to support RFC3903 231600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(SIPETagHeader.NAME.toUpperCase(), 232600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.SIP_ETAG); 233600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(SIPIfMatchHeader.NAME.toUpperCase(), 234600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.SIP_IF_MATCH); 235600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 236600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // pmusgrave: Add RFC4028 and ReferredBy 237600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(SessionExpiresHeader.NAME.toUpperCase(), 238600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.SESSIONEXPIRES_TO); 239600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(MinSEHeader.NAME.toUpperCase(), 240600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.MINSE_TO); 241600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(ReferredByHeader.NAME.toUpperCase(), 242600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.REFERREDBY_TO); 243600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 244600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // pmusgrave RFC3891 245600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(ReplacesHeader.NAME.toUpperCase(), 246600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.REPLACES_TO); 247600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang //jean deruelle RFC3911 248600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(JoinHeader.NAME.toUpperCase(), 249600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.JOIN_TO); 250600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 251600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // IMS Headers 252600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(PathHeader.NAME.toUpperCase(), TokenTypes.PATH); 253600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(ServiceRouteHeader.NAME.toUpperCase(), 254600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.SERVICE_ROUTE); 255600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(PAssertedIdentityHeader.NAME.toUpperCase(), 256600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.P_ASSERTED_IDENTITY); 257600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(PPreferredIdentityHeader.NAME.toUpperCase(), 258600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.P_PREFERRED_IDENTITY); 259600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(PrivacyHeader.NAME.toUpperCase(), 260600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.PRIVACY); 261600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 262600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // issued by Miguel Freitas 263600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(PCalledPartyIDHeader.NAME.toUpperCase(), 264600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.P_CALLED_PARTY_ID); 265600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(PAssociatedURIHeader.NAME.toUpperCase(), 266600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.P_ASSOCIATED_URI); 267600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(PVisitedNetworkIDHeader.NAME.toUpperCase(), 268600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.P_VISITED_NETWORK_ID); 269600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(PChargingFunctionAddressesHeader.NAME 270600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang .toUpperCase(), 271600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.P_CHARGING_FUNCTION_ADDRESSES); 272600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(PChargingVectorHeader.NAME.toUpperCase(), 273600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.P_VECTOR_CHARGING); 274600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(PAccessNetworkInfoHeader.NAME.toUpperCase(), 275600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.P_ACCESS_NETWORK_INFO); 276600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(PMediaAuthorizationHeader.NAME.toUpperCase(), 277600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.P_MEDIA_AUTHORIZATION); 278600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 279600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(SecurityServerHeader.NAME.toUpperCase(), 280600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.SECURITY_SERVER); 281600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(SecurityVerifyHeader.NAME.toUpperCase(), 282600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.SECURITY_VERIFY); 283600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(SecurityClientHeader.NAME.toUpperCase(), 284600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.SECURITY_CLIENT); 285600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 286600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // added by aayush@rancore 287600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(PUserDatabaseHeader.NAME.toUpperCase(), 288600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.P_USER_DATABASE); 289600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 290600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // added by aayush@rancore 291600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(PProfileKeyHeader.NAME.toUpperCase(), 292600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.P_PROFILE_KEY); 293600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 294600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // added by aayush@rancore 295600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(PServedUserHeader.NAME.toUpperCase(), 296600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.P_SERVED_USER); 297600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 298600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // added by aayush@rancore 299600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(PPreferredServiceHeader.NAME.toUpperCase(), 300600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.P_PREFERRED_SERVICE); 301600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 302600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // added by aayush@rancore 303600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(PAssertedServiceHeader.NAME.toUpperCase(), 304600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang TokenTypes.P_ASSERTED_SERVICE); 305600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 306600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // added References header 307600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(ReferencesHeader.NAME.toUpperCase(),TokenTypes.REFERENCES); 308600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 309600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang // end // 310600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 311600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 312600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } else if (lexerName.equals("status_lineLexer")) { 313600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.SIP.toUpperCase(), TokenTypes.SIP); 314600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } else if (lexerName.equals("request_lineLexer")) { 315600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.SIP.toUpperCase(), TokenTypes.SIP); 316600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } else if (lexerName.equals("sip_urlLexer")) { 317600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.TEL.toUpperCase(), TokenTypes.TEL); 318600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.SIP.toUpperCase(), TokenTypes.SIP); 319600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang addKeyword(TokenNames.SIPS.toUpperCase(), TokenTypes.SIPS); 320600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 321600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 322600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 323600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 324600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang} 325