1package gov.nist.javax.sip.header.ims; 2/* 3* Conditions Of Use 4* 5* This software was developed by employees of the National Institute of 6* Standards and Technology (NIST), an agency of the Federal Government. 7* Pursuant to title 15 Untied States Code Section 105, works of NIST 8* employees are not subject to copyright protection in the United States 9* and are considered to be in the public domain. As a result, a formal 10* license is not needed to use the software. 11* 12* This software is provided by NIST as a service and is expressly 13* provided "AS IS." NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED 14* OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF 15* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT 16* AND DATA ACCURACY. NIST does not warrant or make any representations 17* regarding the use of the software or the results thereof, including but 18* not limited to the correctness, accuracy, reliability or usefulness of 19* the software. 20* 21* Permission to use this software is contingent upon your acceptance 22* of the terms of this agreement 23* 24* . 25* 26*/ 27import java.text.ParseException; 28import javax.sip.InvalidArgumentException; 29import javax.sip.header.ExtensionHeader; 30import gov.nist.javax.sip.address.AddressImpl; 31import gov.nist.javax.sip.header.AddressParametersHeader; 32 33/** 34 * 35 * @author aayush.bhatnagar 36 * Rancore Technologies Pvt Ltd, Mumbai India. 37 * 38 * This is the class used for encoding of the P-Served-User header 39 * 40 * 41 */ 42public class PServedUser extends AddressParametersHeader implements PServedUserHeader, SIPHeaderNamesIms, ExtensionHeader{ 43 44 45 public PServedUser(AddressImpl address) 46 { 47 super(P_SERVED_USER); 48 this.address = address; 49 } 50 51 public PServedUser() 52 { 53 super(NAME); 54 } 55 56 public String getRegistrationState() { 57 58 return getParameter(ParameterNamesIms.REGISTRATION_STATE); 59 } 60 61 public String getSessionCase() { 62 63 return getParameter(ParameterNamesIms.SESSION_CASE); 64 } 65 66 public void setRegistrationState(String registrationState) { 67 68 if((registrationState!=null)) 69 { 70 if(registrationState.equals("reg")||registrationState.equals("unreg")) 71 { 72 try { 73 setParameter(ParameterNamesIms.REGISTRATION_STATE, registrationState); 74 } catch (ParseException e) { 75 e.printStackTrace(); 76 } 77 78 } 79 else 80 { 81 try { 82 throw new InvalidArgumentException("Value can be either reg or unreg"); 83 } catch (InvalidArgumentException e) { 84 e.printStackTrace(); 85 } 86 } 87 88 } 89 else 90 { 91 throw new NullPointerException("regstate Parameter value is null"); 92 } 93 94 } 95 96 public void setSessionCase(String sessionCase) { 97 98 if((sessionCase!=null)) 99 { 100 if((sessionCase.equals("orig"))||(sessionCase.equals("term"))) 101 { 102 try { 103 setParameter(ParameterNamesIms.SESSION_CASE, sessionCase); 104 } catch (ParseException e) { 105 e.printStackTrace(); 106 } 107 } 108 else 109 { 110 try { 111 throw new InvalidArgumentException("Value can be either orig or term"); 112 } catch (InvalidArgumentException e) { 113 e.printStackTrace(); 114 } 115 116 } 117 } 118 else 119 { 120 throw new NullPointerException("sess-case Parameter value is null"); 121 } 122 123 } 124 125 @Override 126 protected String encodeBody() { 127 128 StringBuffer retval = new StringBuffer(); 129 130 retval.append(address.encode()); 131 132 if(parameters.containsKey(ParameterNamesIms.REGISTRATION_STATE)) 133 retval.append(SEMICOLON).append(ParameterNamesIms.REGISTRATION_STATE).append(EQUALS) 134 .append(this.getRegistrationState()); 135 136 if(parameters.containsKey(ParameterNamesIms.SESSION_CASE)) 137 retval.append(SEMICOLON).append(ParameterNamesIms.SESSION_CASE).append(EQUALS) 138 .append(this.getSessionCase()); 139 140 return retval.toString(); 141 } 142 143 public void setValue(String value) throws ParseException { 144 throw new ParseException(value,0); 145 146 } 147 148 public boolean equals(Object other) 149 { 150 if(other instanceof PServedUser) 151 { 152 final PServedUserHeader psu = (PServedUserHeader)other; 153 return this.getAddress().equals(((PServedUser) other).getAddress()); 154 } 155 return false; 156 } 157 158 159 public Object clone() { 160 PServedUser retval = (PServedUser) super.clone(); 161 return retval; 162 } 163 164} 165