func (this *SipURIImpl) GetUserAtHost() string {
	user := this.authority.GetUserInfo().GetUser()
	host := this.authority.GetHost().String()
	return user + core.SIPSeparatorNames_AT + host
}
GetUser@host
@return user@host portion of the uri (null if none exists).
package address
import (
	"bytes"
	"container/list"
	"errors"
	"sip/core"
	"strconv"
	"strings"
)
type SipURIImpl struct {
	URIImpl
	authority *Authority
	uriParms *core.NameValueList
	qheaders *core.NameValueList
	telephoneSubscriber *TelephoneNumber
}
func NewSipURIImpl() *SipURIImpl {
	this := &SipURIImpl{}
	this.scheme = core.SIPTransportNames_SIP
	this.uriParms = core.NewNameValueList("uriparms")
	this.qheaders = core.NewNameValueList("qheaders")
	this.qheaders.SetSeparator("&")
	return this
}
func (this *SipURIImpl) SetScheme(scheme string) error {
	scheme = strings.ToLower(scheme)
	if scheme != core.SIPTransportNames_SIP && scheme != core.SIPTransportNames_SIPS {
		return errors.New("IllegalArgumentException: bad scheme " + scheme)
	}
	this.scheme = scheme
	return nil
}
func (this *SipURIImpl) GetScheme() string {
	return this.scheme
}
func (this *SipURIImpl) ClearUriParms() {
	this.uriParms = core.NewNameValueList("uriparms")
}
func (this *SipURIImpl) ClearPassword() {
	if this.authority != nil {
		userInfo := this.authority.GetUserInfo()
		if userInfo != nil {
			userInfo.ClearPassword()
		}
	}
}
func (this *SipURIImpl) GetAuthority() *Authority {
	return this.authority
}
func (this *SipURIImpl) ClearQheaders() {
	this.qheaders = core.NewNameValueList("qheaders")
}
func (this *SipURIImpl) String() string {
	var retval bytes.Buffer
	retval.WriteString(this.scheme)
	retval.WriteString(core.SIPSeparatorNames_COLON)
	if this.authority != nil {
		retval.WriteString(this.authority.String())
	}
	if this.uriParms.Len() != 0 {
		retval.WriteString(core.SIPSeparatorNames_SEMICOLON)
		retval.WriteString(this.uriParms.String())
	}
	if this.qheaders.Len() != 0 {
		retval.WriteString(core.SIPSeparatorNames_QUESTION)
		retval.WriteString(this.qheaders.String())
	}
	return retval.String()
}