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 * Acknowledgement -- Lamine Brahimi 28 * Submitted a bug fix for a this class. 29 */ 30/******************************************************************************* 31 * Product of NIST/ITL Advanced Networking Technologies Division (ANTD). * 32 *******************************************************************************/ 33package gov.nist.javax.sip.address; 34 35/** 36 * User information part of a URL. 37 * 38 * @version 1.2 $Revision: 1.8 $ $Date: 2009/07/17 18:57:23 $ 39 * @author M. Ranganathan <br/> 40 * 41 */ 42public final class UserInfo extends NetObject { 43 44 45 private static final long serialVersionUID = 7268593273924256144L; 46 47 /** user field 48 */ 49 protected String user; 50 51 /** password field 52 */ 53 protected String password; 54 55 /** userType field 56 */ 57 protected int userType; 58 59 /** Constant field 60 */ 61 public final static int TELEPHONE_SUBSCRIBER = 1; 62 63 /** constant field 64 */ 65 public final static int USER = 2; 66 67 /** Default constructor 68 */ 69 public UserInfo() { 70 super(); 71 } 72 73 /** 74 * Compare for equality. 75 * @param obj Object to set 76 * @return true if the two headers are equals, false otherwise. 77 */ 78 public boolean equals(Object obj) { 79 if (getClass() != obj.getClass()) { 80 return false; 81 } 82 UserInfo other = (UserInfo) obj; 83 if (this.userType != other.userType) { 84 return false; 85 } 86 if (!this.user.equalsIgnoreCase(other.user)) { 87 return false; 88 } 89 if (this.password != null && other.password == null) 90 return false; 91 92 if (other.password != null && this.password == null) 93 return false; 94 95 if (this.password == other.password) 96 return true; 97 98 return (this.password.equals(other.password)); 99 } 100 101 /** 102 * Encode the user information as a string. 103 * @return String 104 */ 105 public String encode() { 106 return encode(new StringBuffer()).toString(); 107 } 108 109 public StringBuffer encode(StringBuffer buffer) { 110 if (password != null) 111 buffer.append(user).append(COLON).append(password); 112 else 113 buffer.append(user); 114 115 return buffer; 116 } 117 118 /** Clear the password field. 119 */ 120 public void clearPassword() { 121 this.password = null; 122 } 123 124 /** 125 * Gets the user type (which can be set to TELEPHONE_SUBSCRIBER or USER) 126 * @return the type of user. 127 */ 128 public int getUserType() { 129 return userType; 130 } 131 132 /** get the user field. 133 * @return String 134 */ 135 public String getUser() { 136 return user; 137 } 138 139 /** get the password field. 140 * @return String 141 */ 142 public String getPassword() { 143 return password; 144 } 145 146 /** 147 * Set the user member 148 * @param user String to set 149 */ 150 public void setUser(String user) { 151 this.user = user; 152 // BUG Fix submitted by Lamine Brahimi 153 // add this (taken form sip_messageParser) 154 // otherwise comparison of two SipUrl will fail because this 155 // parameter is not set (whereas it is set in sip_messageParser). 156 if (user != null 157 && (user.indexOf(POUND) >= 0 || user.indexOf(SEMICOLON) >= 0)) { 158 setUserType(TELEPHONE_SUBSCRIBER); 159 } else { 160 setUserType(USER); 161 } 162 } 163 164 /** 165 * Set the password member 166 * @param p String to set 167 */ 168 public void setPassword(String p) { 169 password = p; 170 } 171 172 /** 173 * Set the user type (to TELEPHONE_SUBSCRIBER or USER). 174 * @param type int to set 175 * @throws IllegalArgumentException if type is not in range. 176 */ 177 public void setUserType(int type) throws IllegalArgumentException { 178 if (type != TELEPHONE_SUBSCRIBER && type != USER) { 179 throw new IllegalArgumentException("Parameter not in range"); 180 } 181 userType = type; 182 } 183} 184