public static final class SMSSubmit.ValidityPeriod extends AbstractLazyEncodedByteArray
The API offered by this class is as if the type were specified in ASN.1 as follows.
ValidityPeriod ::= CHOICE { length INTEGER, timeStamp SMSTimeStamp, enhancedValidityPeriod EnhancedValidityPeriod }The class takes care of encoding the field values into a byte-array and decoding field values from a byte-array, the encoded representation being as tabulated below.
Data Encoding - based on 3GPP TS 23.040 V9.0.0 (2009-06) §9.2.3.12 pp68-69 | |||||||||
---|---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
1 octet | 0 | 0 | 0 | Validity period format discriminates... | 0 | 0 | 0 | ||
Either | 1 octet | Length | |||||||
or | 7 octets | Time stamp | |||||||
or | 7 octets | Enhanced validity period |
Modifier and Type | Class and Description |
---|---|
static class |
SMSSubmit.ValidityPeriod.Choice
Enumeration of discriminating values.
|
static class |
SMSSubmit.ValidityPeriod.EnhancedValidityPeriod
Representation of an EnhancedValidityPeriod.
|
isDecoded
encoded
FIELD_ABSENT, FIELD_UNINITIALISED
Constructor and Description |
---|
SMSSubmit.ValidityPeriod()
Constructs a new ValidityPeriod object with no fields set.
|
SMSSubmit.ValidityPeriod(byte[] data)
Constructs a new ValidityPeriod object from network-encoded data.
|
SMSSubmit.ValidityPeriod(byte[] data,
int start,
int len)
Constructs a new ValidityPeriod object from part of network-encoded data.
|
SMSSubmit.ValidityPeriod(DataInput in)
Constructs a new ValidityPeriod object from data deserialized from a stream that was written by
toStream(DataOutput) . |
SMSSubmit.ValidityPeriod(int length)
Constructs a new ValidityPeriod object from the given arguments.
|
SMSSubmit.ValidityPeriod(SMSSubmit.ValidityPeriod.EnhancedValidityPeriod enhancedValidityPeriod)
Constructs a new ValidityPeriod object from the given arguments.
|
SMSSubmit.ValidityPeriod(SMSTimeStamp timeStamp)
Constructs a new ValidityPeriod object from the given arguments.
|
Modifier and Type | Method and Description |
---|---|
void |
checkFieldsSet()
Checks that all mandatory fields are present.
|
SMSSubmit.ValidityPeriod |
clone()
Constructs a copy of this object and everything reachable from it.
|
static SMSSubmit.ValidityPeriod |
copyOf(SMSSubmit.ValidityPeriod from)
Creates a new object of this type, cloning the values of common fields from the given object of any subclass of the same base type.
|
protected void |
decode()
Computes the decoded form from the encoded form.
|
protected void |
encode()
Computes the encoded form from the decoded form.
|
protected boolean |
encodedIsInvalid()
Determines whether the encoded form is invalid.
|
SMSSubmit.ValidityPeriod.Choice |
getChoice()
Gets the discriminant for which choice is chosen.
|
static int |
getContainedLength(byte[] data,
int start,
int len)
Determines the length of the encoded value that commences at offset
start in the given data . |
byte[] |
getEncodedForm()
Gets the encoded form.
|
SMSSubmit.ValidityPeriod.EnhancedValidityPeriod |
getEnhancedValidityPeriod()
Gets the value of enhanced format of validity period.
|
static FieldAccessor[] |
getFieldAccessors()
Gets a new array of the accessors for fields of this type.
|
Map<String,Object> |
getFieldsMap(boolean withAbsents)
Gets a Map from :discriminant-name to field-value.
|
int |
getLength()
Gets the value of length of relative validity period.
|
SMSTimeStamp |
getTimeStamp()
Gets the value of absolute time of validity period termination.
|
boolean |
isEnhancedValidityPeriodChosen()
Tests whether the choice is enhancedValidityPeriod.
|
boolean |
isLengthChosen()
Tests whether the choice is length.
|
boolean |
isTimeStampChosen()
Tests whether the choice is timeStamp.
|
SMSSubmit.ValidityPeriod |
setEnhancedValidityPeriod(SMSSubmit.ValidityPeriod.EnhancedValidityPeriod value)
Sets the value of enhanced format of validity period.
|
SMSSubmit.ValidityPeriod |
setLength(int value)
Sets the value of length of relative validity period.
|
void |
setReadOnly()
Sets this and all its fields to be immutable.
|
SMSSubmit.ValidityPeriod |
setTimeStamp(SMSTimeStamp value)
Sets the value of absolute time of validity period termination.
|
void |
toStream(DataOutput out)
Serializes this object to a stream in a form suitable for reading by
SMSSubmit.ValidityPeriod(DataInput) . |
checkDecode, checkModifyAndDecode
equals, hashCode, toString
checkModify, isReadOnly
public SMSSubmit.ValidityPeriod()
public SMSSubmit.ValidityPeriod(byte[] data)
data
- network-encoded dataNullPointerException
- if data is nullpublic SMSSubmit.ValidityPeriod(byte[] data, int start, int len)
start
and is len
bytes long.
The data is not decoded and might not be decodable.data
- network-encoded datastart
- starting offset of network-encoded data in byte arraylen
- default length if not predictableNullPointerException
- if data is nullIllegalArgumentException
- if len is negativepublic SMSSubmit.ValidityPeriod(DataInput in) throws IOException
toStream(DataOutput)
.in
- the stream to read fromEOFException
- if reading is pre-empted by end-of-fileIOException
- if the data cannot be readpublic SMSSubmit.ValidityPeriod(int length)
length
- length of relative validity periodpublic SMSSubmit.ValidityPeriod(SMSTimeStamp timeStamp)
timeStamp
- absolute time of validity period terminationpublic SMSSubmit.ValidityPeriod(SMSSubmit.ValidityPeriod.EnhancedValidityPeriod enhancedValidityPeriod)
enhancedValidityPeriod
- EnhancedValidityPeriod of validity periodpublic void toStream(DataOutput out) throws IOException
SMSSubmit.ValidityPeriod(DataInput)
.out
- the stream to write toIOException
- if an I/O error occurspublic SMSSubmit.ValidityPeriod.Choice getChoice() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic boolean isLengthChosen() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic boolean isTimeStampChosen() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic boolean isEnhancedValidityPeriodChosen() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic void checkFieldsSet() throws EncodeException
checkFieldsSet
in class AbstractLazyEncodedDataObject<byte[]>
EncodeException
- if any mandatory field is not presentpublic int getLength() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic SMSTimeStamp getTimeStamp() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic SMSSubmit.ValidityPeriod.EnhancedValidityPeriod getEnhancedValidityPeriod() throws DecodeException
DecodeException
- if encoded state cannot be decodedpublic SMSSubmit.ValidityPeriod setLength(int value) throws IllegalStateException
value
- int representation of length of relative validity periodIllegalStateException
public SMSSubmit.ValidityPeriod setTimeStamp(SMSTimeStamp value) throws IllegalStateException
value
- SMSTimeStamp representation of absolute time of validity period terminationIllegalStateException
public SMSSubmit.ValidityPeriod setEnhancedValidityPeriod(SMSSubmit.ValidityPeriod.EnhancedValidityPeriod value) throws IllegalStateException
value
- EnhancedValidityPeriod representation of enhanced format of validity periodIllegalStateException
public static SMSSubmit.ValidityPeriod copyOf(SMSSubmit.ValidityPeriod from)
from
- the object from which to copypublic SMSSubmit.ValidityPeriod clone()
clone
in interface DataObject
clone
in class AbstractDataObject
public void setReadOnly()
setReadOnly
in interface DataObject
setReadOnly
in class AbstractDataObject
public static FieldAccessor[] getFieldAccessors()
public Map<String,Object> getFieldsMap(boolean withAbsents)
getFieldsMap
in class AbstractFieldsObject
withAbsents
- the value of this parameter is ignoredprotected boolean encodedIsInvalid()
public byte[] getEncodedForm() throws EncodeException
EncodeException
- if encoding failspublic static int getContainedLength(byte[] data, int start, int len)
start
in the given data
.
The value is not fully decoded and might not be decodable.
If the encoded value ends with a filling field,
then the given len
is returned.
If the encoded value is so currupt that its length cannot be determined,
then 0
is returned.data
- network-encoded datastart
- index into data where value commenceslen
- length in data to be consideredNullPointerException
- if data is nullprotected void encode() throws EncodeException
encode
in class AbstractLazyEncodedDataObject<byte[]>
EncodeException
- if encoding failsprotected void decode() throws DecodeException
decode
in class AbstractLazyEncodedDataObject<byte[]>
DecodeException
- if decoding fails