package javax.megaco.association;
import java.io.Serializable;
import javax.megaco.ExceptionInfoCode;
import javax.megaco.ParameterNotSetException;
/**
* This class represents the local transport address. This transport address is
* used by the stack to send messages to peer. It can be used to store and
* retrieve the local transport type and the corresponding address. Only one of
* the transport addresses can be set for the local entity. If the transport is
* SCTP, then multiple local IP addresses can be set. If transport is TCP or
* UDP, then only one IPv4/IPv6 address or domain name can be set. In this case
* optional port id can also be specified.
*
*
*/
public class LocalAddr implements Serializable {
private String[] ipAddr = null;
private TransportType tpt_type = null;
private String addrString = null;
private String aal5Addr = null;
private String mtpAddr = null;
private String domainName = null;
private int portId = -1;
private boolean isPortIdPresent = false;
/**
* Constructs a empty Local Address Identifier reference object. The
* parameters would be set to this object using get methods defined for this
* class.
*/
public LocalAddr() {
}
public LocalAddr(java.lang.String[] ipAddr, TransportType tpt_type) throws IllegalArgumentException {
if (ipAddr == null || tpt_type == null) {
IllegalArgumentException invalidArgumentException = new IllegalArgumentException("IP Address or TransportType cannot be null for LocalAddr");
//invalidArgumentException.setInfoCode(ExceptionInfoCode.INV_LOCAL_ADDR);
throw invalidArgumentException;
}
// TODO : check for IP valid form
this.ipAddr = ipAddr;
this.tpt_type = tpt_type;
}
public LocalAddr(java.lang.String addrString, TransportType tpt_type) throws IllegalArgumentException {
if (addrString == null || tpt_type == null) {
IllegalArgumentException invalidArgumentException = new IllegalArgumentException("AddressString or TransportType cannot be null for LocalAddr");
//invalidArgumentException.setInfoCode(ExceptionInfoCode.INV_LOCAL_ADDR);
throw invalidArgumentException;
}
// TODO : check for validity
this.addrString = addrString;
this.tpt_type = tpt_type;
}
public LocalAddr(java.lang.String aal5Addr) throws IllegalArgumentException {
if (addrString == null) {
IllegalArgumentException invalidArgumentException = new IllegalArgumentException("aal5 AddressString cannot be null for LocalAddr");
//invalidArgumentException.setInfoCode(ExceptionInfoCode.INV_LOCAL_ADDR);
throw invalidArgumentException;
}
// TODO : check for validity
tpt_type = TransportType.ATM_TPT;
this.aal5Addr = aal5Addr;
}
public void setDomainName(java.lang.String domainName, TransportType tpt_type) throws IllegalArgumentException {
if (domainName == null || tpt_type == null) {
IllegalArgumentException invalidArgumentException = new IllegalArgumentException("domainName or TransportType cannot be null for LocalAddr");
//invalidArgumentException.setInfoCode(ExceptionInfoCode.INV_LOCAL_ADDR);
throw invalidArgumentException;
}
// TODO: Set the domainName as per tpt_type
this.domainName = domainName;
this.tpt_type = tpt_type;
}
public void setIpAddr(java.lang.String[] ipAddr, TransportType tpt_type) throws IllegalArgumentException {
if (domainName == null || tpt_type == null) {
IllegalArgumentException invalidArgumentException = new IllegalArgumentException("ipAddr or TransportType cannot be null for LocalAddr");
//invalidArgumentException.setInfoCode(ExceptionInfoCode.INV_LOCAL_ADDR);
throw invalidArgumentException;
}
// TODO: Check for validity
this.ipAddr = ipAddr;
this.tpt_type = tpt_type;
}
public void setPortId(int portId) throws IllegalArgumentException {
if (portId < 1) {
IllegalArgumentException invalidArgumentException = new IllegalArgumentException("portId cannot be less than 1 for LocalAddr");
//invalidArgumentException.setInfoCode(ExceptionInfoCode.INV_LOCAL_ADDR);
throw invalidArgumentException;
}
this.isPortIdPresent = true;
this.portId = portId;
}
public void setMtp3Addr(java.lang.String mtpAddr) throws IllegalArgumentException {
if (mtpAddr == null) {
IllegalArgumentException invalidArgumentException = new IllegalArgumentException("mtpAddr cannot be null for LocalAddr");
//invalidArgumentException.setInfoCode(ExceptionInfoCode.INV_LOCAL_ADDR);
throw invalidArgumentException;
}
this.tpt_type = TransportType.MTP3B_TPT;
this.mtpAddr = mtpAddr;
}
public void setAAL5Addr(java.lang.String aal5Addr) throws IllegalArgumentException {
if (aal5Addr == null) {
IllegalArgumentException invalidArgumentException = new IllegalArgumentException("aal5Addr cannot be null for LocalAddr");
//invalidArgumentException.setInfoCode(ExceptionInfoCode.INV_LOCAL_ADDR);
throw invalidArgumentException;
}
// TODO : Validity check?
this.aal5Addr = aal5Addr;
this.tpt_type = TransportType.ATM_TPT;
}
public java.lang.String getDomainName() {
return this.domainName;
}
public java.lang.String[] getIpAddr() {
return this.ipAddr;
}
public int getPortId() throws ParameterNotSetException {
if (!this.isPortIdPresent) {
ParameterNotSetException parameterNotSetException = new ParameterNotSetException("PortId not yet set for LocalAddr");
throw parameterNotSetException;
}
return this.portId;
}
public boolean isPortIdPresent() {
return this.isPortIdPresent;
}
public java.lang.String getMtp3Addr() {
return this.mtpAddr;
}
public java.lang.String getAAL5Addr() {
return this.aal5Addr;
}
public int getTransportType() {
return this.tpt_type.getTransportType();
}
@Override
public String toString() {
// TODO : need to recreate
return super.toString();
}
}