* // or if no primary key but has superclass:
* super.bdbReadPriKeyField(input, format);
* }
*/
private void genBdbReadPriKeyField() {
MethodVisitor mv = cv.visitMethod
(ACC_PUBLIC, "bdbReadPriKeyField",
"(Lcom/sleepycat/persist/impl/EntityInput;" +
"Lcom/sleepycat/persist/impl/Format;)V",
null, null);
mv.visitCode();
if (priKeyField != null) {
if (!genReadSimpleKeyField(mv, priKeyField)) {
/* For a non-simple type, call EntityInput.readKeyObject. */
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 1);
mv.visitVarInsn(ALOAD, 2);
mv.visitMethodInsn
(INVOKEINTERFACE, "com/sleepycat/persist/impl/EntityInput",
"readKeyObject",
"(Lcom/sleepycat/persist/impl/Format;)" +
"Ljava/lang/Object;");
mv.visitTypeInsn(CHECKCAST, getTypeInstName(priKeyField.type));
mv.visitFieldInsn
(PUTFIELD, className, priKeyField.name,
priKeyField.type.getDescriptor());
}
} else if (hasPersistentSuperclass) {
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 1);
mv.visitVarInsn(ALOAD, 2);
mv.visitMethodInsn
(INVOKESPECIAL, superclassName, "bdbReadPriKeyField",
"(Lcom/sleepycat/persist/impl/EntityInput;" +
"Lcom/sleepycat/persist/impl/Format;)V");
}
mv.visitInsn(RETURN);
mv.visitMaxs(3, 3);
mv.visitEnd();
}