interface Accessor
Normally we read the set of all secondary key fields first and then the set of all non-key fields, reading each set in order of field name. But when reading an old format record we must account for the following class evolution conversions:
To support these operations, the methods for reading fields allow reading specific ranges of fields as well as all fields. For example, all fields up to a deleted field could be read, and then all fields from the following field onward.
Modifier and Type | Field and Description |
---|---|
static int |
MAX_FIELD_NUM
A large field value to use instead of Integer.MAX_VALUE, to work around
Java JIT compiler bug when doing an (X <= Integer.MAX_VALUE) as would be
done in readXxxKeyFields methods.
|
Modifier and Type | Method and Description |
---|---|
java.lang.Object |
getField(java.lang.Object o,
int field,
int superLevel,
boolean isSecField)
Returns the value of a given field, representing primitives as primitive
wrapper objects.
|
boolean |
isPriKeyFieldNullOrZero(java.lang.Object o)
Returns whether the primary key field is null (for a reference type) or
zero (for a primitive integer type).
|
java.lang.Object |
newArray(int len)
Creates a new one dimensional array of the given length, having the
target class as its component type.
|
java.lang.Object |
newInstance()
Creates a new instance of the target class using its default
constructor.
|
void |
readCompositeKeyFields(java.lang.Object o,
EntityInput input)
Reads all composite key field values from the given EntityInput,
reading in declared field number order.
|
void |
readNonKeyFields(java.lang.Object o,
EntityInput input,
int startField,
int endField,
int superLevel)
Reads a range of non-key field values from the given EntityInput,
reading fields in super classes first and in name order within class.
|
void |
readPriKeyField(java.lang.Object o,
EntityInput input)
Reads the primary key field value from the given EntityInput.
|
void |
readSecKeyFields(java.lang.Object o,
EntityInput input,
int startField,
int endField,
int superLevel)
Reads a range of secondary key field values from the given EntityInput,
reading fields in super classes first and in name order within class.
|
void |
setField(java.lang.Object o,
int field,
int superLevel,
boolean isSecField,
java.lang.Object value)
Changes the value of a given field, representing primitives as primitive
wrapper objects.
|
void |
setPriField(java.lang.Object o,
java.lang.Object value)
Changes the value of the primary key field, representing primitives as
primitive wrapper objects.
|
void |
writeCompositeKeyFields(java.lang.Object o,
EntityOutput output)
Writes all composite key field values to the given EntityOutput, writing
in declared field number order.
|
void |
writeNonKeyFields(java.lang.Object o,
EntityOutput output)
Writes all non-key field values to the given EntityOutput, writing
fields in super classes first and in name order within class.
|
void |
writePriKeyField(java.lang.Object o,
EntityOutput output)
Writes the primary key field value to the given EntityOutput.
|
void |
writeSecKeyFields(java.lang.Object o,
EntityOutput output)
Writes all secondary key field values to the given EntityOutput,
writing fields in super classes first and in name order within class.
|
static final int MAX_FIELD_NUM
java.lang.Object newInstance()
java.lang.Object newArray(int len)
Using a special method for a one dimensional array, which can be implemented by bytecode generation, is a compromise. We use reflection to create multidimensional arrays. We could in the future generate code to create arrays as they are encountered, if there is a need to avoid reflection for multidimensional arrays.
boolean isPriKeyFieldNullOrZero(java.lang.Object o)
void writePriKeyField(java.lang.Object o, EntityOutput output) throws RefreshException
To write a primary key with a reference type, this method must call EntityOutput.writeKeyObject.
o
- is the object whose primary key field is to be written.output
- the output data to write to.RefreshException
void readPriKeyField(java.lang.Object o, EntityInput input) throws RefreshException
To read a primary key with a reference type, this method must call EntityInput.readKeyObject.
o
- is the object whose primary key field is to be read.input
- the input data to read from.RefreshException
void writeSecKeyFields(java.lang.Object o, EntityOutput output) throws RefreshException
o
- is the object whose secondary key fields are to be written.
If the primary key has a reference type, this method must call EntityOutput.registerPriKeyObject before writing any other fields.
output
- the output data to write to.RefreshException
void readSecKeyFields(java.lang.Object o, EntityInput input, int startField, int endField, int superLevel) throws RefreshException
If the primary key has a reference type, this method must call EntityInput.registerPriKeyObject before reading any other fields.
To read all fields, pass -1 for superLevel, zero for startField and MAX_FIELD_NUM for endField. Fields from super classes are read first.
To read a specific range of fields, pass a non-negative number for superLevel and the specific indices of the field range to be read in the class at that level.
o
- is the object whose secondary key fields are to be read.input
- the input data to read from.startField
- the starting field index in the range of fields to
read. To read all fields, the startField should be zero.endField
- the ending field index in the range of fields to read.
To read all fields, the endField should be MAX_FIELD_NUM.superLevel
- is a non-negative number to read the fields of the
class that is the Nth super instance; or a negative number to read
fields in all classes.RefreshException
void writeNonKeyFields(java.lang.Object o, EntityOutput output) throws RefreshException
o
- is the object whose non-key fields are to be written.output
- the output data to write to.RefreshException
void readNonKeyFields(java.lang.Object o, EntityInput input, int startField, int endField, int superLevel) throws RefreshException
To read all fields, pass -1 for superLevel, zero for startField and MAX_FIELD_NUM for endField. Fields from super classes are read first.
To read a specific range of fields, pass a non-negative number for superLevel and the specific indices of the field range to be read in the class at that level.
o
- is the object whose non-key fields are to be read.input
- the input data to read from.startField
- the starting field index in the range of fields to
read. To read all fields, the startField should be zero.endField
- the ending field index in the range of fields to read.
To read all fields, the endField should be MAX_FIELD_NUM.superLevel
- is a non-negative number to read the fields of the
class that is the Nth super instance; or a negative number to read
fields in all classes.RefreshException
void writeCompositeKeyFields(java.lang.Object o, EntityOutput output) throws RefreshException
o
- the composite key object whose fields are to be written.output
- the output data to write to.RefreshException
void readCompositeKeyFields(java.lang.Object o, EntityInput input) throws RefreshException
o
- the composite key object whose fields are to be read.input
- the input data to read from.RefreshException
java.lang.Object getField(java.lang.Object o, int field, int superLevel, boolean isSecField)
o
- is the object containing the key field.field
- is the field index.superLevel
- is a positive number to identify the field of the
class that is the Nth super instance; or zero to identify the field in
this class.isSecField
- is true for a secondary key field or false for a
non-key field.void setField(java.lang.Object o, int field, int superLevel, boolean isSecField, java.lang.Object value)
o
- is the object containing the key field.field
- is the field index.superLevel
- is a positive number to identify the field of the
class that is the Nth super instance; or zero to identify the field in
this class.isSecField
- is true for a secondary key field or false for a
non-key field.value
- is the new value of the field, or null to set a reference
type field to null.void setPriField(java.lang.Object o, java.lang.Object value)
o
- is the object containing the primary key field.field
- is the field index.superLevel
- is a positive number to identify the field of the
class that is the Nth super instance; or zero to identify the field in
this class.value
- is the new value of the field, or null to set a reference
type field to null.Copyright (c) 2004-2012 Oracle. All rights reserved.