|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.sleepycat.persist.impl.EnhancedAccessor
public class EnhancedAccessor
Implements Accessor for a complex persistent class.
Field Summary | |
---|---|
static boolean |
EXPECT_ENHANCED
|
Fields inherited from interface com.sleepycat.persist.impl.Accessor |
---|
MAX_FIELD_NUM |
Constructor Summary | |
---|---|
EnhancedAccessor(Catalog catalog,
Class type,
ComplexFormat format)
Creates an accessor for a complex type. |
|
EnhancedAccessor(Catalog catalog,
Class type,
List<FieldInfo> fieldInfos)
Creates an accessor for a composite key type. |
Method Summary | |
---|---|
Object |
getField(Object o,
int field,
int superLevel,
boolean isSecField)
Returns the value of a given field, representing primitives as primitive wrapper objects. |
(package private) static boolean |
isEnhanced(Class type)
Returns whether a given class is a (registered) enhanced class. |
boolean |
isPriKeyFieldNullOrZero(Object o)
Returns whether the primary key field is null (for a reference type) or zero (for a primitive integer type). |
Object |
newArray(int len)
Creates a new one dimensional array of the given length, having the target class as its component type. |
Object |
newInstance()
Creates a new instance of the target class using its default constructor. |
void |
readCompositeKeyFields(Object o,
EntityInput input)
Reads all composite key field values from the given EntityInput, reading in declared field number order. |
void |
readNonKeyFields(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(Object o,
EntityInput input)
Reads the primary key field value from the given EntityInput. |
void |
readSecKeyFields(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. |
static void |
registerClass(String className,
Enhanced prototype)
Registers a prototype instance, and should be called during initialization of the prototype class. |
void |
setField(Object o,
int field,
int superLevel,
boolean isSecField,
Object value)
Changes the value of a given field, representing primitives as primitive wrapper objects. |
void |
setPriField(Object o,
Object value)
Changes the value of the primary key field, representing primitives as primitive wrapper objects. |
void |
writeCompositeKeyFields(Object o,
EntityOutput output)
Writes all composite key field values to the given EntityOutput, writing in declared field number order. |
void |
writeNonKeyFields(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(Object o,
EntityOutput output)
Writes the primary key field value to the given EntityOutput. |
void |
writeSecKeyFields(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. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final boolean EXPECT_ENHANCED
Constructor Detail |
---|
EnhancedAccessor(Catalog catalog, Class type, ComplexFormat format)
EnhancedAccessor(Catalog catalog, Class type, List<FieldInfo> fieldInfos)
Method Detail |
---|
public static void registerClass(String className, Enhanced prototype)
static boolean isEnhanced(Class type)
public Object newInstance()
Accessor
newInstance
in interface Accessor
public Object newArray(int len)
Accessor
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.
newArray
in interface Accessor
public boolean isPriKeyFieldNullOrZero(Object o)
Accessor
isPriKeyFieldNullOrZero
in interface Accessor
public void writePriKeyField(Object o, EntityOutput output) throws RefreshException
Accessor
To write a primary key with a reference type, this method must call EntityOutput.writeKeyObject.
writePriKeyField
in interface Accessor
o
- is the object whose primary key field is to be written.output
- the output data to write to.
RefreshException
public void readPriKeyField(Object o, EntityInput input) throws RefreshException
Accessor
To read a primary key with a reference type, this method must call EntityInput.readKeyObject.
readPriKeyField
in interface Accessor
o
- is the object whose primary key field is to be read.input
- the input data to read from.
RefreshException
public void writeSecKeyFields(Object o, EntityOutput output) throws RefreshException
Accessor
writeSecKeyFields
in interface Accessor
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
public void readSecKeyFields(Object o, EntityInput input, int startField, int endField, int superLevel) throws RefreshException
Accessor
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.
readSecKeyFields
in interface Accessor
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
public void writeNonKeyFields(Object o, EntityOutput output) throws RefreshException
Accessor
writeNonKeyFields
in interface Accessor
o
- is the object whose non-key fields are to be written.output
- the output data to write to.
RefreshException
public void readNonKeyFields(Object o, EntityInput input, int startField, int endField, int superLevel) throws RefreshException
Accessor
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.
readNonKeyFields
in interface Accessor
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
public void writeCompositeKeyFields(Object o, EntityOutput output) throws RefreshException
Accessor
writeCompositeKeyFields
in interface Accessor
o
- the composite key object whose fields are to be written.output
- the output data to write to.
RefreshException
public void readCompositeKeyFields(Object o, EntityInput input) throws RefreshException
Accessor
readCompositeKeyFields
in interface Accessor
o
- the composite key object whose fields are to be read.input
- the input data to read from.
RefreshException
public Object getField(Object o, int field, int superLevel, boolean isSecField)
Accessor
getField
in interface Accessor
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.
public void setField(Object o, int field, int superLevel, boolean isSecField, Object value)
Accessor
setField
in interface Accessor
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.public void setPriField(Object o, Object value)
Accessor
setPriField
in interface Accessor
o
- is the object containing the primary key field.value
- is the new value of the field, or null to set a reference
type field to null.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |