1600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangpackage gov.nist.javax.sip.header.ims; 2600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang/* 3600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* Conditions Of Use 4600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* 5600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* This software was developed by employees of the National Institute of 6600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* Standards and Technology (NIST), an agency of the Federal Government. 7600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* Pursuant to title 15 Untied States Code Section 105, works of NIST 8600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* employees are not subject to copyright protection in the United States 9600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* and are considered to be in the public domain. As a result, a formal 10600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* license is not needed to use the software. 11600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* 12600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* This software is provided by NIST as a service and is expressly 13600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* provided "AS IS." NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED 14600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF 15600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT 16600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* AND DATA ACCURACY. NIST does not warrant or make any representations 17600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* regarding the use of the software or the results thereof, including but 18600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* not limited to the correctness, accuracy, reliability or usefulness of 19600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* the software. 20600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* 21600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* Permission to use this software is contingent upon your acceptance 22600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* of the terms of this agreement 23600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* 24600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* . 25600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* 26600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang*/ 27600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport java.text.ParseException; 28600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport javax.sip.InvalidArgumentException; 29600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport javax.sip.header.ExtensionHeader; 30600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport gov.nist.javax.sip.address.AddressImpl; 31600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport gov.nist.javax.sip.header.AddressParametersHeader; 32600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 33600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang/** 34600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 35600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @author aayush.bhatnagar 36600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Rancore Technologies Pvt Ltd, Mumbai India. 37600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 38600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * This is the class used for encoding of the P-Served-User header 39600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 40600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * 41600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */ 42600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangpublic class PServedUser extends AddressParametersHeader implements PServedUserHeader, SIPHeaderNamesIms, ExtensionHeader{ 43600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 44600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 45600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public PServedUser(AddressImpl address) 46600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang { 47600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang super(P_SERVED_USER); 48600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang this.address = address; 49600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 50600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 51600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public PServedUser() 52600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang { 53600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang super(NAME); 54600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 55600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 56600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public String getRegistrationState() { 57600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 58600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return getParameter(ParameterNamesIms.REGISTRATION_STATE); 59600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 60600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 61600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public String getSessionCase() { 62600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 63600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return getParameter(ParameterNamesIms.SESSION_CASE); 64600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 65600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 66600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public void setRegistrationState(String registrationState) { 67600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 68600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if((registrationState!=null)) 69600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang { 70600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if(registrationState.equals("reg")||registrationState.equals("unreg")) 71600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang { 72600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang try { 73600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang setParameter(ParameterNamesIms.REGISTRATION_STATE, registrationState); 74600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } catch (ParseException e) { 75600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang e.printStackTrace(); 76600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 77600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 78600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 79600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang else 80600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang { 81600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang try { 82600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang throw new InvalidArgumentException("Value can be either reg or unreg"); 83600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } catch (InvalidArgumentException e) { 84600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang e.printStackTrace(); 85600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 86600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 87600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 88600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 89600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang else 90600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang { 91600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang throw new NullPointerException("regstate Parameter value is null"); 92600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 93600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 94600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 95600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 96600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public void setSessionCase(String sessionCase) { 97600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 98600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if((sessionCase!=null)) 99600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang { 100600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if((sessionCase.equals("orig"))||(sessionCase.equals("term"))) 101600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang { 102600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang try { 103600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang setParameter(ParameterNamesIms.SESSION_CASE, sessionCase); 104600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } catch (ParseException e) { 105600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang e.printStackTrace(); 106600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 107600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 108600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang else 109600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang { 110600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang try { 111600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang throw new InvalidArgumentException("Value can be either orig or term"); 112600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } catch (InvalidArgumentException e) { 113600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang e.printStackTrace(); 114600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 115600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 116600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 117600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 118600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang else 119600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang { 120600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang throw new NullPointerException("sess-case Parameter value is null"); 121600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 122600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 123600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 124600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 125600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang @Override 126600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang protected String encodeBody() { 127600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 128600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang StringBuffer retval = new StringBuffer(); 129600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 130600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang retval.append(address.encode()); 131600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 132600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if(parameters.containsKey(ParameterNamesIms.REGISTRATION_STATE)) 133600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang retval.append(SEMICOLON).append(ParameterNamesIms.REGISTRATION_STATE).append(EQUALS) 134600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang .append(this.getRegistrationState()); 135600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 136600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if(parameters.containsKey(ParameterNamesIms.SESSION_CASE)) 137600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang retval.append(SEMICOLON).append(ParameterNamesIms.SESSION_CASE).append(EQUALS) 138600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang .append(this.getSessionCase()); 139600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 140600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return retval.toString(); 141600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 142600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 143600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public void setValue(String value) throws ParseException { 144600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang throw new ParseException(value,0); 145600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 146600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 147600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 148600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public boolean equals(Object other) 149600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang { 150600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang if(other instanceof PServedUser) 151600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang { 152600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang final PServedUserHeader psu = (PServedUserHeader)other; 153600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return this.getAddress().equals(((PServedUser) other).getAddress()); 154600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 155600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return false; 156600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 157600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 158600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 159600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang public Object clone() { 160600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang PServedUser retval = (PServedUser) super.clone(); 161600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang return retval; 162600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang } 163600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 164600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang} 165