/*
* 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;
}
}