- java.lang.Object
-
- org.snmp4j.smi.AbstractVariable
-
- org.snmp4j.smi.SMIAddress
-
- org.snmp4j.smi.GenericAddress
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
,java.lang.Comparable<Variable>
,BERSerializable
,Address
,AssignableFromByteArray
,AssignableFromString
,Variable
public class GenericAddress extends SMIAddress
TheGenericAddress
implements the decorator and factory design pattern to provide a generic address type.To register address types other than the default, set the system property
ADDRESS_TYPES_PROPERTIES
before calling theparse(java.lang.String)
method for the first time.- Version:
- 3.0
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private SMIAddress
address
static java.lang.String
ADDRESS_TYPES_PROPERTIES
private static java.lang.String
ADDRESS_TYPES_PROPERTIES_DEFAULT
private static java.util.Map<java.lang.String,java.lang.Class<? extends Address>>
knownAddressTypes
private static LogAdapter
logger
(package private) static long
serialVersionUID
static java.lang.String
TYPE_DTLS
Default address type identifier for an DtlsAddress.static java.lang.String
TYPE_IP
Default address type identifier for an IpAddress.static java.lang.String
TYPE_TCP
Default address type identifier for a TcpAddress.static java.lang.String
TYPE_TLS
Default address type identifier for an TlsAddress.static java.lang.String
TYPE_UDP
Default address type identifier for an UpdAddress.-
Fields inherited from class org.snmp4j.smi.AbstractVariable
SMISYNTAXES_PROPERTIES
-
-
Constructor Summary
Constructors Constructor Description GenericAddress()
GenericAddress(SMIAddress address)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Object
clone()
Clones this variable.int
compareTo(Variable o)
void
decodeBER(BERInputStream inputStream)
Decodes aVariable
from anBERInputStream
.void
encodeBER(java.io.OutputStream outputStream)
Encodes aVariable
to anOutputStream
.boolean
equals(java.lang.Object o)
void
fromSubIndex(OID subIndex, boolean impliedLength)
Sets the value of thisVariable
from the supplied (sub-)index.Address
getAddress()
int
getBERLength()
Returns the length of thisVariable
in bytes when encoded according to the Basic Encoding Rules (BER).int
getSyntax()
Gets the ASN.1 syntax identifier value of this SNMP variable.static java.lang.String
getTDomainPrefix(java.lang.Class<? extends Address> addressClass)
Gets the transport domain prefix string (lowercase) for a suppliedAddress
class.int
hashCode()
boolean
isValid()
Checks whether thisAddress
is a valid transport address.static Address
parse(java.lang.String address)
Parses a given transport protocol dependent address string into anAddress
instance that is subsumed by thisGenericAddress
object.boolean
parseAddress(java.lang.String address)
Parse an address form the supplied string.private static void
registerAddressTypes()
Register Address classes from a properties file.void
setAddress(SMIAddress address)
void
setValue(byte[] rawAddress)
Sets the value of this object from the supplied byte array.void
setValue(java.lang.String value)
Sets the address value from the supplied String.byte[]
toByteArray()
Returns the value of this object as a byte array.int
toInt()
Returns an integer representation of this variable if such a representation exists.long
toLong()
Returns a long representation of this variable if such a representation exists.java.lang.String
toString()
Gets a string representation of the variable.OID
toSubIndex(boolean impliedLength)
Converts the value of thisVariable
to a (sub-)index value.-
Methods inherited from class org.snmp4j.smi.AbstractVariable
createFromBER, createFromSyntax, equal, getBERPayloadLength, getSyntaxFromString, getSyntaxString, getSyntaxString, isDynamic, isException
-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.snmp4j.smi.Address
isTransportCompatible
-
-
-
-
Field Detail
-
serialVersionUID
static final long serialVersionUID
- See Also:
- Constant Field Values
-
TYPE_UDP
public static final java.lang.String TYPE_UDP
Default address type identifier for an UpdAddress.- See Also:
- Constant Field Values
-
TYPE_TCP
public static final java.lang.String TYPE_TCP
Default address type identifier for a TcpAddress.- See Also:
- Constant Field Values
-
TYPE_IP
public static final java.lang.String TYPE_IP
Default address type identifier for an IpAddress.- See Also:
- Constant Field Values
-
TYPE_TLS
public static final java.lang.String TYPE_TLS
Default address type identifier for an TlsAddress.- See Also:
- Constant Field Values
-
TYPE_DTLS
public static final java.lang.String TYPE_DTLS
Default address type identifier for an DtlsAddress.- See Also:
- Constant Field Values
-
ADDRESS_TYPES_PROPERTIES
public static final java.lang.String ADDRESS_TYPES_PROPERTIES
- See Also:
- Constant Field Values
-
ADDRESS_TYPES_PROPERTIES_DEFAULT
private static final java.lang.String ADDRESS_TYPES_PROPERTIES_DEFAULT
- See Also:
- Constant Field Values
-
logger
private static final LogAdapter logger
-
address
private SMIAddress address
-
knownAddressTypes
private static java.util.Map<java.lang.String,java.lang.Class<? extends Address>> knownAddressTypes
-
-
Constructor Detail
-
GenericAddress
public GenericAddress()
-
GenericAddress
public GenericAddress(SMIAddress address)
-
-
Method Detail
-
getSyntax
public int getSyntax()
Description copied from class:AbstractVariable
Gets the ASN.1 syntax identifier value of this SNMP variable.- Specified by:
getSyntax
in interfaceVariable
- Specified by:
getSyntax
in classAbstractVariable
- Returns:
- an integer value less than 128 for regular SMI objects and a value greater or equal than 128 for exception values like noSuchObject, noSuchInstance, and endOfMibView.
-
isValid
public boolean isValid()
Description copied from interface:Address
Checks whether thisAddress
is a valid transport address.- Returns:
true
if the address is valid,false
otherwise.
-
toString
public java.lang.String toString()
Description copied from class:AbstractVariable
Gets a string representation of the variable.- Specified by:
toString
in interfaceVariable
- Specified by:
toString
in classAbstractVariable
- Returns:
- a string representation of the variable's value.
-
hashCode
public int hashCode()
- Specified by:
hashCode
in interfaceVariable
- Specified by:
hashCode
in classAbstractVariable
-
compareTo
public int compareTo(Variable o)
- Specified by:
compareTo
in interfacejava.lang.Comparable<Variable>
- Specified by:
compareTo
in interfaceVariable
- Specified by:
compareTo
in classAbstractVariable
-
equals
public boolean equals(java.lang.Object o)
- Specified by:
equals
in interfaceVariable
- Specified by:
equals
in classAbstractVariable
-
decodeBER
public void decodeBER(BERInputStream inputStream) throws java.io.IOException
Description copied from class:AbstractVariable
Decodes aVariable
from anBERInputStream
.- Specified by:
decodeBER
in interfaceBERSerializable
- Specified by:
decodeBER
in classAbstractVariable
- Parameters:
inputStream
- anBERInputStream
containing a BER encoded byte stream.- Throws:
java.io.IOException
- if the stream could not be decoded by using BER rules.
-
encodeBER
public void encodeBER(java.io.OutputStream outputStream) throws java.io.IOException
Description copied from class:AbstractVariable
Encodes aVariable
to anOutputStream
.- Specified by:
encodeBER
in interfaceBERSerializable
- Specified by:
encodeBER
in classAbstractVariable
- Parameters:
outputStream
- anOutputStream
.- Throws:
java.io.IOException
- if an error occurs while writing to the stream.
-
getBERLength
public int getBERLength()
Description copied from class:AbstractVariable
Returns the length of thisVariable
in bytes when encoded according to the Basic Encoding Rules (BER).- Specified by:
getBERLength
in interfaceBERSerializable
- Specified by:
getBERLength
in classAbstractVariable
- Returns:
- the BER encoded length of this variable.
-
setAddress
public void setAddress(SMIAddress address)
-
getAddress
public Address getAddress()
-
registerAddressTypes
private static void registerAddressTypes()
Register Address classes from a properties file. The registered address types are used by theparse(String)
method to type-safe instantiate sub-classes fromAddress
from aString
.
-
parse
public static Address parse(java.lang.String address)
Parses a given transport protocol dependent address string into anAddress
instance that is subsumed by thisGenericAddress
object.- Parameters:
address
- an address string with a leading type specifier as defined in the "address.properties". The format is"type:address"
where the format ofaddress
depends ontype
. Valid values fortype
are, for example, "udp" and "tcp".- Returns:
- a
Address
instance of the address classes specified in "address.properties" whose type ID matched the specified ID inaddress
. Ifaddress
cannot be parsed,null
is returned. - Throws:
java.lang.IllegalArgumentException
- if the address type indicator supplied is not know.
-
parseAddress
public boolean parseAddress(java.lang.String address)
Parse an address form the supplied string.- Parameters:
address
- an address string known by the GenericAddress.- Returns:
- boolean
- See Also:
parse(String address)
-
setValue
public void setValue(byte[] rawAddress)
Description copied from interface:AssignableFromByteArray
Sets the value of this object from the supplied byte array.- Parameters:
rawAddress
- a byte array.
-
clone
public java.lang.Object clone()
Description copied from interface:Variable
Clones this variable. Cloning can be used by the SNMP4J API to better support concurrency by creating a clone for internal processing. The content of this object is independent to the content of the clone. Thus, changes to the clone will have no effect to this object.- Specified by:
clone
in interfaceVariable
- Specified by:
clone
in classAbstractVariable
- Returns:
- a new instance of this
Variable
with the same value.
-
toInt
public int toInt()
Description copied from class:AbstractVariable
Returns an integer representation of this variable if such a representation exists.- Specified by:
toInt
in interfaceVariable
- Specified by:
toInt
in classAbstractVariable
- Returns:
- an integer value (if the native representation of this variable would be a long, then the long value will be casted to int).
-
toLong
public long toLong()
Description copied from class:AbstractVariable
Returns a long representation of this variable if such a representation exists.- Specified by:
toLong
in interfaceVariable
- Specified by:
toLong
in classAbstractVariable
- Returns:
- a long value.
-
toSubIndex
public OID toSubIndex(boolean impliedLength)
Description copied from class:AbstractVariable
Converts the value of thisVariable
to a (sub-)index value.- Specified by:
toSubIndex
in interfaceVariable
- Specified by:
toSubIndex
in classAbstractVariable
- Parameters:
impliedLength
- specifies if the sub-index has an implied length. This parameter applies to variable length variables only (e.g.OctetString
andOID
). For other variables it has no effect.- Returns:
- an OID that represents this value as an (sub-)index.
-
fromSubIndex
public void fromSubIndex(OID subIndex, boolean impliedLength)
Description copied from class:AbstractVariable
Sets the value of thisVariable
from the supplied (sub-)index.- Specified by:
fromSubIndex
in interfaceVariable
- Specified by:
fromSubIndex
in classAbstractVariable
- Parameters:
subIndex
- the sub-index OID.impliedLength
- specifies if the sub-index has an implied length. This parameter applies to variable length variables only (e.g.OctetString
andOID
). For other variables it has no effect.
-
toByteArray
public byte[] toByteArray()
Description copied from interface:AssignableFromByteArray
Returns the value of this object as a byte array.- Returns:
- a byte array.
-
setValue
public void setValue(java.lang.String value)
Description copied from interface:Address
Sets the address value from the supplied String. The string must match the format required for the Address instance implementing this interface. Otherwise anIllegalArgumentException
runtime exception is thrown.- Parameters:
value
- an address String.
-
getTDomainPrefix
public static java.lang.String getTDomainPrefix(java.lang.Class<? extends Address> addressClass)
Gets the transport domain prefix string (lowercase) for a suppliedAddress
class.- Parameters:
addressClass
- an implementation class ofAddress
.- Returns:
- the corresponding transport domain prefix as defined by the
IANA registry "SNMP Transport Domains" if the
addressClass
has been registered with a domain prefix,null
otherwise. - Since:
- 2.0
-
-