📄 sipaddressimpl.java
字号:
package com.micromethod.sipstack.ri;
import java.util.Enumeration;
import java.util.Vector;
import com.micromethod.sipstack.i.SipException;
/**
* SipAddressImpl
*/
public class SipAddressImpl {
/**
* m_scheme
*/
private String m_scheme = null;
/**
* m_displayName
*/
private String m_displayName = null;
/**
* m_fullName, : + m_user
*/
private String m_fullName = null;
/**
* m_host
*/
private String m_host = null;
/**
* m_star, *
*/
private String m_star = null;
/**
* m_port
*/
private String m_port = null;
/**
* m_user
*/
private String m_user = null;
/**
* m_parameters
*/
private Vector m_parameters = null;
private Vector _fldbyte = null;
/**
* m_address
*/
private String m_address = null;
/**
* m_uri
*/
private String m_uri = null;
/**
* SipAddressImpl Constructor
*
* @param address
* @throws IllegalArgumentException
*/
public SipAddressImpl(String address) throws IllegalArgumentException {
m_scheme = null;
m_displayName = null;
m_fullName = null;
m_host = null;
m_star = null;
m_port = null;
m_user = null;
m_parameters = new Vector();
_fldbyte = new Vector();
m_address = null;
m_uri = null;
m_address = address;
parseAddress(address);
}
/**
* SipAddressImpl Constructor
*
* @param displayName
* @param uri
* @throws IllegalArgumentException
*/
public SipAddressImpl(String displayName, String uri)
throws IllegalArgumentException {
m_scheme = null;
m_displayName = null;
m_fullName = null;
m_host = null;
m_star = null;
m_port = null;
m_user = null;
m_parameters = new Vector();
_fldbyte = new Vector();
m_address = null;
m_uri = null;
StringBuffer stringbuffer = new StringBuffer();
if (displayName != null) {
stringbuffer.append(displayName);
stringbuffer.append(" ");
}
stringbuffer.append(uri);
m_address = stringbuffer.toString();
parseAddress(m_address);
}
/**
* parseAddress
*
* @param address
* @throws IllegalArgumentException
*/
private void parseAddress(String address) throws IllegalArgumentException {
if (address == null)
throw new NullPointerException("null address String");
if (address.length() == 0)
throw new IllegalArgumentException("Empty address");
m_address = address;
try {
NameAddress l1 = SipNameAddressParser.parseNameAddress(m_address,
(short) 0);
m_displayName = l1.m_displayName;
m_scheme = l1.m_scheme;
m_fullName = l1.m_fullName;
m_user = l1.m_user;
m_host = l1.m_host;
m_port = l1.m_port;
m_uri = l1.m_uri;
m_parameters = l1.m_parameters;
m_star = l1.m_star;
}
catch (SipException sipexception) {
throw new IllegalArgumentException(sipexception.getMessage());
}
catch (NumberFormatException numberformatexception) {
throw new IllegalArgumentException(numberformatexception.getMessage());
}
}
/**
* checkParameter
*
* @param parameter
* @throws SipException
*/
private void checkParameter(String parameter) throws SipException {
NameAddress l1 = SipNameAddressParser
.parseNameAddress(parameter, (short) 5);
}
/**
* addParameter
*
* @param name
* @param value
* @throws SipException
*/
private void addParameter(String name, String value) throws SipException {
name = name.toLowerCase();
if (getParameter(name) != null) {
throw new SipException("Duplicate parameter '" + name + "'", (byte) 0);
}
else {
m_parameters.addElement(((Object) (new PairStructure(name, value))));
return;
}
}
/**
* assembledURI
*
* @param scheme
* @param name
* @param value
* @param port
* @return URI
*/
private String assembledURI(String scheme, String name, String value,
String port) {
StringBuffer stringbuffer = new StringBuffer();
if (scheme != null && scheme.length() > 0) {
stringbuffer.append(scheme);
stringbuffer.append(":");
}
if (name != null) {
stringbuffer.append(name);
stringbuffer.append("@");
}
if (value != null)
stringbuffer.append(value);
if (port != null && port.length() > 0) {
Integer.parseInt(port);
stringbuffer.append(":");
stringbuffer.append(port);
}
return stringbuffer.toString();
}
/**
* getDisplayName
*
* @return displayName
*/
public String getDisplayName() {
return m_displayName;
}
/**
* setDisplayName
*
* @param displayName
* @throws IllegalArgumentException
*/
public void setDisplayName(String displayName)
throws IllegalArgumentException {
if (displayName == null)
throw new IllegalArgumentException("Illegal display name '" + displayName
+ "'");
displayName = displayName.trim();
SipAddressImpl v1 = null;
try {
v1 = new SipAddressImpl(displayName + " sip:host");
}
catch (Exception exception) {
throw new IllegalArgumentException("Illegal display name '" + displayName
+ "'");
}
m_displayName = v1.getDisplayName();
m_star = null;
}
/**
* getScheme
*
* @return scheme
*/
public String getScheme() {
return m_scheme;
}
/**
* setScheme
*
* @param scheme
* @throws IllegalArgumentException
*/
public void setScheme(String scheme) throws IllegalArgumentException {
if (scheme == null)
throw new NullPointerException("Try to set null scheme");
scheme = scheme.trim();
if (scheme.length() == 0)
throw new IllegalArgumentException("Empty scheme '" + scheme + "'");
try {
Vector vector = SipHeaderParser.parseString(scheme);
if (vector.size() != 2)
throw new IllegalArgumentException("Illegal scheme '" + scheme + "'");
SipNameAddressParser.checkScheme((Cache) vector.elementAt(0));
}
catch (Exception exception) {
throw new IllegalArgumentException(exception.getMessage());
}
m_scheme = scheme;
m_uri = assembledURI(m_scheme, m_fullName, m_host, m_port);
m_star = null;
}
/**
* getUser
*
* @return fullName
*/
public String getUser() {
return m_fullName;
}
/**
* setUser
*
* @param user
* @throws IllegalArgumentException
*/
public void setUser(String user) throws IllegalArgumentException {
if (user != null) {
user = user.trim();
if (user.length() == 0)
throw new IllegalArgumentException("Empty user info");
}
SipAddressImpl v1 = null;
try {
v1 = new SipAddressImpl(assembledURI(m_scheme, user, m_host, m_port));
}
catch (Exception exception) {
throw new IllegalArgumentException("Illegal user info '" + user + "'");
}
m_fullName = v1.getUser();
m_uri = v1.getURI();
m_star = null;
}
/**
* getURI
*
* @return URI
*/
public String getURI() {
return m_uri;
}
/**
* setURI
*
* @param uri
* @throws IllegalArgumentException
*/
public void setURI(String uri) throws IllegalArgumentException {
SipAddressImpl v1 = null;
try {
v1 = new SipAddressImpl(uri);
}
catch (Exception exception) {
throw new IllegalArgumentException("Illegal URI '" + uri + "'");
}
m_uri = v1.getURI();
m_scheme = v1.getScheme();
m_fullName = v1.getUser();
m_host = v1.getHost();
m_port = Integer.toString(v1.getPort());
m_star = null;
}
/**
* getHost
*
* @return host
*/
public String getHost() {
return m_host;
}
/**
* setHost
*
* @param host
* @throws IllegalArgumentException
*/
public void setHost(String host) throws IllegalArgumentException {
if (host == null)
throw new NullPointerException("try to set null host");
if (host != null) {
host = host.trim();
if (host.length() == 0)
throw new IllegalArgumentException("Empty host");
}
SipAddressImpl v1 = null;
try {
v1 = new SipAddressImpl(assembledURI(m_scheme, m_fullName, host, m_port));
}
catch (Exception exception) {
throw new IllegalArgumentException("Illegal host '" + host + "'");
}
m_host = v1.getHost();
m_uri = v1.getURI();
m_star = null;
}
/**
* getPort
*
* @return port
*/
public int getPort() {
if (m_star != null)
return 0;
if (m_port == null)
return 5060;
else
return Integer.parseInt(m_port);
}
/**
* setPort
*
* @param port
* @throws IllegalArgumentException
*/
public void setPort(int port) throws IllegalArgumentException {
if (port < 0 || port > 65535)
throw new IllegalArgumentException("Port number out of range '" + port
+ "'");
if (port == 0)
m_port = null;
else
m_port = Integer.toString(port);
m_uri = assembledURI(m_scheme, m_fullName, m_host, m_port);
m_star = null;
}
/**
* getParameter
*
* @param name
* @return parameter value
*/
public String getParameter(String name) {
for (Enumeration enumeration = m_parameters.elements(); enumeration
.hasMoreElements();) {
PairStructure t1 = (PairStructure) enumeration.nextElement();
if (t1.getName().equals(((Object) (name))))
return t1.getValue();
}
return null;
}
/**
* setParameter
*
* @param name
* @param value
* @throws IllegalArgumentException
*/
public void setParameter(String name, String value)
throws IllegalArgumentException {
if (name != null) {
name = name.trim();
if (name.length() == 0)
throw new IllegalArgumentException("Parameter name empty");
}
else {
throw new NullPointerException("Parameter name null");
}
if (value != null)
value = value.trim();
String s2 = getParameter(name);
if (s2 != null)
removeParameter(name);
StringBuffer stringbuffer = new StringBuffer(";");
stringbuffer.append(name);
if (value != null) {
stringbuffer.append("=");
stringbuffer.append(value);
}
try {
checkParameter(stringbuffer.toString());
}
catch (Exception exception) {
if (s2 != null) {
removeParameter(name);
try {
addParameter(name, s2);
}
catch (SipException sipexception) {
Protocol.echo("Impl. error SHOULD NOT; " + sipexception.getMessage());
}
}
throw new IllegalArgumentException(exception.getMessage());
}
try {
if (value == null)
addParameter(name, "");
else
addParameter(name, value);
}
catch (Exception exception1) {
throw new IllegalArgumentException("INTERNAL ERROR: "
+ exception1.getMessage());
}
}
/**
* removeParameter
*
* @param name
*/
public void removeParameter(String name) {
if (name == null)
return;
Enumeration enumeration = m_parameters.elements();
do {
if (!enumeration.hasMoreElements())
break;
PairStructure t1 = (PairStructure) enumeration.nextElement();
if (!t1.getName().equals(((Object) (name))))
continue;
m_parameters.removeElement(((Object) (t1)));
break;
}
while (true);
}
/**
* getParameterNames
*
* @return parameterName String[]
*/
public String[] getParameterNames() {
if (!m_parameters.isEmpty()) {
String as[] = new String[m_parameters.size()];
for (int i = 0; i < m_parameters.size(); i++)
as[i] = ((PairStructure) m_parameters.elementAt(i)).getName();
return as;
}
else {
return null;
}
}
/**
* toString
*
* @return String
*/
public String toString() {
StringBuffer stringbuffer = new StringBuffer();
Object obj = null;
if (m_star != null)
return m_star;
if (m_displayName != null) {
if (m_displayName.indexOf(" ") >= 0) {
stringbuffer.append("\"");
stringbuffer.append(m_displayName);
stringbuffer.append("\"");
}
else {
stringbuffer.append(m_displayName);
}
stringbuffer.append(" <");
}
if (m_scheme != null) {
stringbuffer.append(m_scheme);
if (m_scheme.length() > 0)
stringbuffer.append(":");
}
else {
stringbuffer.append("sip:");
}
if (m_fullName != null) {
stringbuffer.append(m_fullName);
stringbuffer.append("@");
}
if (m_host != null)
stringbuffer.append(m_host);
else
return null;
if (m_port != null) {
stringbuffer.append(":");
stringbuffer.append(m_port);
}
if (!m_parameters.isEmpty()) {
stringbuffer.append(";");
Enumeration enumeration = m_parameters.elements();
PairStructure t1 = null;
do {
if (!enumeration.hasMoreElements())
break;
if (t1 != null)
stringbuffer.append(";");
t1 = (PairStructure) enumeration.nextElement();
stringbuffer.append(t1.getName());
if (!t1.getValue().equals("")) {
stringbuffer.append("=");
stringbuffer.append(t1.getValue());
}
}
while (true);
}
if (m_displayName != null)
stringbuffer.append(">");
if (stringbuffer.length() > 0)
return stringbuffer.toString();
else
return null;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -