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

Reply via email to