⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sipaddressimpl.java

📁 jsr-180 (SIP) 实现源码。可以在真实手机上使用
💻 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 + -