diff options
Diffstat (limited to 'java/gov/nist/javax/sip/address/UserInfo.java')
-rw-r--r-- | java/gov/nist/javax/sip/address/UserInfo.java | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/java/gov/nist/javax/sip/address/UserInfo.java b/java/gov/nist/javax/sip/address/UserInfo.java new file mode 100644 index 0000000..0b558ee --- /dev/null +++ b/java/gov/nist/javax/sip/address/UserInfo.java @@ -0,0 +1,183 @@ +/* +* Conditions Of Use +* +* This software was developed by employees of the National Institute of +* Standards and Technology (NIST), an agency of the Federal Government. +* Pursuant to title 15 Untied States Code Section 105, works of NIST +* employees are not subject to copyright protection in the United States +* and are considered to be in the public domain. As a result, a formal +* license is not needed to use the software. +* +* This software is provided by NIST as a service and is expressly +* provided "AS IS." NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED +* OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT +* AND DATA ACCURACY. NIST does not warrant or make any representations +* regarding the use of the software or the results thereof, including but +* not limited to the correctness, accuracy, reliability or usefulness of +* the software. +* +* Permission to use this software is contingent upon your acceptance +* of the terms of this agreement +* +* . +* +*/ +/* + * Acknowledgement -- Lamine Brahimi + * Submitted a bug fix for a this class. + */ +/******************************************************************************* + * Product of NIST/ITL Advanced Networking Technologies Division (ANTD). * + *******************************************************************************/ +package gov.nist.javax.sip.address; + +/** + * User information part of a URL. + * + * @version 1.2 $Revision: 1.8 $ $Date: 2009/07/17 18:57:23 $ + * @author M. Ranganathan <br/> + * + */ +public final class UserInfo extends NetObject { + + + private static final long serialVersionUID = 7268593273924256144L; + + /** user field + */ + protected String user; + + /** password field + */ + protected String password; + + /** userType field + */ + protected int userType; + + /** Constant field + */ + public final static int TELEPHONE_SUBSCRIBER = 1; + + /** constant field + */ + public final static int USER = 2; + + /** Default constructor + */ + public UserInfo() { + super(); + } + + /** + * Compare for equality. + * @param obj Object to set + * @return true if the two headers are equals, false otherwise. + */ + public boolean equals(Object obj) { + if (getClass() != obj.getClass()) { + return false; + } + UserInfo other = (UserInfo) obj; + if (this.userType != other.userType) { + return false; + } + if (!this.user.equalsIgnoreCase(other.user)) { + return false; + } + if (this.password != null && other.password == null) + return false; + + if (other.password != null && this.password == null) + return false; + + if (this.password == other.password) + return true; + + return (this.password.equals(other.password)); + } + + /** + * Encode the user information as a string. + * @return String + */ + public String encode() { + return encode(new StringBuffer()).toString(); + } + + public StringBuffer encode(StringBuffer buffer) { + if (password != null) + buffer.append(user).append(COLON).append(password); + else + buffer.append(user); + + return buffer; + } + + /** Clear the password field. + */ + public void clearPassword() { + this.password = null; + } + + /** + * Gets the user type (which can be set to TELEPHONE_SUBSCRIBER or USER) + * @return the type of user. + */ + public int getUserType() { + return userType; + } + + /** get the user field. + * @return String + */ + public String getUser() { + return user; + } + + /** get the password field. + * @return String + */ + public String getPassword() { + return password; + } + + /** + * Set the user member + * @param user String to set + */ + public void setUser(String user) { + this.user = user; + // BUG Fix submitted by Lamine Brahimi + // add this (taken form sip_messageParser) + // otherwise comparison of two SipUrl will fail because this + // parameter is not set (whereas it is set in sip_messageParser). + if (user != null + && (user.indexOf(POUND) >= 0 || user.indexOf(SEMICOLON) >= 0)) { + setUserType(TELEPHONE_SUBSCRIBER); + } else { + setUserType(USER); + } + } + + /** + * Set the password member + * @param p String to set + */ + public void setPassword(String p) { + password = p; + } + + /** + * Set the user type (to TELEPHONE_SUBSCRIBER or USER). + * @param type int to set + * @throws IllegalArgumentException if type is not in range. + */ + public void setUserType(int type) throws IllegalArgumentException { + if (type != TELEPHONE_SUBSCRIBER && type != USER) { + throw new IllegalArgumentException("Parameter not in range"); + } + userType = type; + } +} |