Thanks Dan,

+1 (non binding) to pull in 0.3.x and cut off a new release.

Regards
JB

On 06/15/2012 03:20 PM, Daniel Kulp wrote:

The latest JDK updates for 1.6.0_u33 and 1.7.0_u5 contain a much stricter
class verifier that refuses to verify the classes we generate for our ASM
based proxies.   Basically, when we generate the constructor for the proxy,
we were trying to bypass all the constructors for the superclasses and
calling the equivalent of Object.super().    That is no longer allowed.
Per java spec, the constructor MUST call a valid constructor on the
immediate superclass.   You cannot "skip" parent and such.  Plus, it must be
VALID to call the constructor.

I've updated trunk to use any non-private no-arg constructor on the
superclass.   That works for most of the cases.   However, we do have a
testcase that tests proxying a class with a private no-arg constructor.
There is NO WAY we can proxy that now unless someone has a new brilliant
idea.   We also cannot proxy classes that don't have a no-arg constructor
for similar reasons.  Anyone have any thoughts?    The fix gets a majority
of the use cases working again.   For the other cases, it DOES fall back to
the old method which would allow them to work on the older JDK's, but they
will continue to fail on the newer JDK's.


I'd like to pull this back into a 0.3.x fix and start a release real soon.
This problem breaks a TON of stuff when using the new JDK's and thus a lot
of applications will likely break.   Getting a fix out quickly is likely a
good idea.


--
Jean-Baptiste Onofré
[email protected]
http://blog.nanthrax.net
Talend - http://www.talend.com

Reply via email to