On Dec 9, 2009, at 2:13 PM, David Blevins wrote:
On Dec 9, 2009, at 2:06 AM, tbush wrote:
Thanks. I checked out the 3.1.2 source and made the change locally
to get
myself moving again; so don't rush to get binaries up.
Oh great. I somehow managed to mess up my changes -- got CMR
failures. Send me yours and I'll see if the test suite doesn't like
it better. Made a JIRA issue for it here where you can attach a diff:
https://issues.apache.org/jira/browse/OPENEJB-1116
I got the same CMR failures on that patch as well. I spent nearly all
day Sunday trying to figure out what might be wrong with our approach
-- we both took the same obvious approach. I put it down and came at
it again today with a fresh pair of eyes and found the issue
relatively quickly. Basically the issue was mistakenly changing this
"deleted" occurrence:
private void createOpenEJB_deleted(MethodVisitor mv, CmrField
cmrField) {
// this.${cmrField.name}Cmr.deleted(this.${cmrField.name});
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, implClassName, cmrField.getName()
+ "Cmr", cmrField.getAccessorDescriptor());
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, implClassName,
cmrField.getName(), cmrField.getDescriptor());
mv.visitMethodInsn(INVOKEVIRTUAL,
cmrField.getAccessorInternalName(), "deleted",
cmrField.getCmrStyle().getDeletedDescriptor());
}
If I had read the ASM code closely I'd have seen that this "deleted"
is a method call and not a field access. Anyway, all fixed.
I'll update the JIRA issue shortly.
-David