1 /* 2 * Conditions Of Use 3 * 4 * This software was developed by employees of the National Institute of 5 * Standards and Technology (NIST), an agency of the Federal Government. 6 * Pursuant to title 15 Untied States Code Section 105, works of NIST 7 * employees are not subject to copyright protection in the United States 8 * and are considered to be in the public domain. As a result, a formal 9 * license is not needed to use the software. 10 * 11 * This software is provided by NIST as a service and is expressly 12 * provided "AS IS." NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED 13 * OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF 14 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT 15 * AND DATA ACCURACY. NIST does not warrant or make any representations 16 * regarding the use of the software or the results thereof, including but 17 * not limited to the correctness, accuracy, reliability or usefulness of 18 * the software. 19 * 20 * Permission to use this software is contingent upon your acceptance 21 * of the terms of this agreement 22 * 23 * . 24 * 25 */ 26 /************************************************************************************************ 27 * PRODUCT OF PT INOVACAO - EST DEPARTMENT and Telecommunications Institute (Aveiro, Portugal) * 28 ************************************************************************************************/ 29 30 31 package gov.nist.javax.sip.parser.ims; 32 33 /** 34 * Privacy header parser. 35 * 36 * @author Miguel Freitas (IT) PT-Inovacao 37 */ 38 39 /* 40 * Privacy-hdr = "Privacy" HCOLON priv-value *(";" priv-value) 41 * priv-value = "header" / "session" / "user" / "none" / "critical" / token 42 */ 43 44 import gov.nist.core.*; 45 import gov.nist.javax.sip.header.SIPHeader; 46 import gov.nist.javax.sip.parser.Lexer; 47 import gov.nist.javax.sip.parser.TokenTypes; 48 import gov.nist.javax.sip.parser.HeaderParser; 49 50 import java.text.ParseException; 51 52 import gov.nist.javax.sip.header.ims.Privacy; 53 import gov.nist.javax.sip.header.ims.PrivacyList; 54 import gov.nist.javax.sip.header.ims.SIPHeaderNamesIms; 55 56 57 58 public class PrivacyParser 59 extends HeaderParser 60 implements TokenTypes 61 { 62 63 PrivacyParser(String privacyType)64 public PrivacyParser(String privacyType) { 65 66 super(privacyType); 67 } 68 PrivacyParser(Lexer lexer)69 protected PrivacyParser(Lexer lexer) { 70 71 super(lexer); 72 } 73 74 parse()75 public SIPHeader parse() throws ParseException 76 { 77 if (debug) 78 dbg_enter("PrivacyParser.parse"); 79 80 PrivacyList privacyList = new PrivacyList(); 81 82 try 83 { 84 this.headerName(TokenTypes.PRIVACY); 85 86 while (lexer.lookAhead(0) != '\n') { 87 this.lexer.SPorHT(); 88 89 Privacy privacy = new Privacy(); 90 privacy.setHeaderName(SIPHeaderNamesIms.PRIVACY); 91 92 this.lexer.match(TokenTypes.ID); 93 Token token = lexer.getNextToken(); 94 privacy.setPrivacy(token.getTokenValue()); 95 this.lexer.SPorHT(); 96 privacyList.add(privacy); 97 98 // Parsing others option-tags 99 while (lexer.lookAhead(0) == ';') 100 { 101 this.lexer.match(';'); 102 this.lexer.SPorHT(); 103 privacy = new Privacy(); 104 this.lexer.match(TokenTypes.ID); 105 token = lexer.getNextToken(); 106 privacy.setPrivacy(token.getTokenValue()); 107 this.lexer.SPorHT(); 108 109 privacyList.add(privacy); 110 } 111 } 112 113 return privacyList; 114 115 } 116 finally { 117 if (debug) 118 dbg_leave("PrivacyParser.parse"); 119 } 120 121 } 122 123 124 /** Test program */ main(String args[])125 public static void main(String args[]) throws ParseException 126 { 127 String rou[] = { 128 129 "Privacy: none\n", 130 "Privacy: none;id;user\n" 131 }; 132 133 for (int i = 0; i < rou.length; i++ ) { 134 PrivacyParser rp = 135 new PrivacyParser(rou[i]); 136 PrivacyList list = (PrivacyList) rp.parse(); 137 System.out.println("encoded = " +list.encode()); 138 } 139 } 140 141 142 143 } 144 145