📄 sipnameaddressparser.java
字号:
package com.micromethod.sipstack.ri;
import java.util.Enumeration;
import java.util.Vector;
import com.micromethod.sipstack.i.SipException;
/**
* SipNameAddressParser
*/
public class SipNameAddressParser {
public static final short _fldfor = 0;
public static final short _fldnew = 1;
public static final short _fldcase = 2;
public static final short _fldif = 3;
public static final short _fldtry = 4;
public static final short a = 5;
public static final short _fldint = 6;
public static final short _fldbyte = 7;
public static final short _flddo = 8;
/**
* SipNameAddressParser Constructor
*/
public SipNameAddressParser() {
}
/**
* parseNameAddress
*
* @param address
* @param part
* @return Name-Address
* @throws SipException
*/
public static synchronized NameAddress parseNameAddress(String address,
short part) throws SipException {
NameAddress l1 = new NameAddress();
Vector vector = SipHeaderParser.parseString(address.trim());
short word1 = 0;
boolean flag = false;
boolean flag1 = false;
boolean flag2 = false;
StringBuffer stringbuffer = new StringBuffer();
Object obj = null;
Object obj1 = null;
short word2 = part;
for (short word3 = 0; word3 < vector.size(); word3++) {
Cache o1 = (Cache) vector.elementAt(((int) (word3)));
label0: switch (word2) {
case 7: // '\007'
case 8: // '\b'
default:
break;
case 0: // '\0'
switch (o1.m_ctrlState) {
case 7: // '\007'
l1.m_displayName = o1.m_paragraph;
break;
case 1: // '\001'
case 5: // '\005'
if (o1.m_paragraph.equals("*")) {
l1.m_star = "*";
return l1;
}
Cache o2 = (Cache) vector.elementAt(word3 + 1);
if (o2.m_initial == ':') {
checkScheme(o1);
l1.m_scheme = o1.m_paragraph;
if (stringbuffer.length() > 0) {
l1.m_displayName = stringbuffer.toString();
stringbuffer.setLength(0);
}
word3++;
word1 = word3;
word2 = 1;
}
else {
if (stringbuffer.length() > 0)
stringbuffer.append(" ");
stringbuffer.append(o1.m_paragraph);
}
break;
case 2: // '\002'
if (o1.m_initial == '<')
flag1 = true;
else
error("Unknown scheme '" + stringbuffer + "'");
break;
case 3: // '\003'
case 4: // '\004'
case 6: // '\006'
default:
error("Unknown scheme '" + o1.m_paragraph + "'");
break;
}
break;
case 1: // '\001'
switch (o1.m_ctrlState) {
case 1: // '\001'
case 3: // '\003'
case 5: // '\005'
stringbuffer.append(o1.m_paragraph);
break label0;
case 2: // '\002'
switch (o1.m_initial) {
case 64: // '@'
l1.m_fullName = stringbuffer.toString();
stringbuffer.setLength(0);
if (l1.m_fullName.length() == 0)
error("Empty user name");
word2 = 3;
break label0;
case 58: // ':'
word2 = 2;
break label0;
case 62: // '>'
flag2 = true;
if (flag) {
word3 = word1;
word1 = 0;
word2 = 3;
break label0;
}
Cache o5 = (Cache) vector.elementAt(word3 - 1);
if (o5.m_ctrlState == 1 || o5.m_ctrlState == 5)
l1.m_host = o5.m_paragraph;
else
error("Illegal host '" + o5.m_paragraph + "'");
stringbuffer.setLength(0);
word2 = 8;
break;
case 36: // '$'
case 38: // '&'
case 43: // '+'
case 44: // ','
case 47: // '/'
case 59: // ';'
case 61: // '='
case 63: // '?'
flag = true;
stringbuffer.append(o1.m_initial);
break;
case 37: // '%'
case 39: // '\''
case 40: // '('
case 41: // ')'
case 42: // '*'
case 45: // '-'
case 46: // '.'
case 48: // '0'
case 49: // '1'
case 50: // '2'
case 51: // '3'
case 52: // '4'
case 53: // '5'
case 54: // '6'
case 55: // '7'
case 56: // '8'
case 57: // '9'
case 60: // '<'
default:
error("Illegal character in user info part '" + o1.m_initial
+ "'");
break;
}
break label0;
case 6: // '\006'
l1.m_host = o1.m_paragraph;
word2 = 4;
break label0;
case -1:
if (flag) {
word3 = word1;
word1 = 0;
word2 = 3;
break label0;
}
Cache o6 = (Cache) vector.elementAt(word3 - 1);
if (o6.m_ctrlState == 1 || o6.m_ctrlState == 5)
l1.m_host = o6.m_paragraph;
else
error("Illegal host '" + o6.m_paragraph + "'");
stringbuffer.setLength(0);
word2 = 8;
break;
case 0: // '\0'
case 4: // '\004'
default:
error("Invalid user name part '" + o1.m_paragraph + "'");
break;
}
break;
case 2: // '\002'
switch (o1.m_ctrlState) {
case 1: // '\001'
case 3: // '\003'
case 5: // '\005'
Cache o3 = (Cache) vector.elementAt(word3 + 1);
Cache o7 = (Cache) vector.elementAt(word3 - 1);
if (o3.m_initial == '@') {
if (o7.m_initial == ':') {
l1.m_user = o1.m_paragraph;
stringbuffer.append(":");
stringbuffer.append(l1.m_user);
l1.m_fullName = stringbuffer.toString();
stringbuffer.setLength(0);
if (l1.m_fullName.length() == 0)
error("Empty user name");
}
else {
error("Wrong user info part '" + o1.m_paragraph + "'");
}
word3++;
word2 = 3;
break label0;
}
Cache o8 = (Cache) vector.elementAt(word3 - 2);
if (o8.m_ctrlState == 1 || o8.m_ctrlState == 5)
l1.m_host = o8.m_paragraph;
else
error("Illegal host '" + o8.m_paragraph + "'");
stringbuffer.setLength(0);
word3--;
word2 = 4;
break;
case -1:
case 2: // '\002'
error("Is this useless case in AFTER_NAME_STATE");
break;
case 0: // '\0'
case 4: // '\004'
default:
error("Problem in user info part '" + o1.m_paragraph + "'");
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -