aries-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Timothy Ward <>
Subject RE: Yet another proxy/weaving problem
Date Mon, 06 Jun 2011 11:36:21 GMT


Aparently I responded on the wrong fork of this message list

>From June 2nd 


I would like to quickly point out that the method java.lang.reflect.Method#isSynthetic() gives
you access to the synthetic flag in a very easy way. 
My understanding from JIT implementors has always been that final is a good thing for performance.
I also like the additional safety it adds to the proxy code, preventing us accidentally overriding
our own implementations.
I do think overriding synthetic methods when proxying is a reasonably bad idea, similarly
for bridge methods, which I imagine are also overridden. Intercepting these calls gives the
wrong behaviour unless you are extremely careful. Obviously I'm not part of the OWB discussion,
and they may be making valid points. For clarity we avoid weaving/overriding synthetic, static,
private, bridge, abstract or native modified methods in Aries code.
I assume removing the final modifier from the proxy weaving code also fixes the issue?


> Subject: Re: Yet another proxy/weaving problem
> From:
> Date: Sat, 4 Jun 2011 09:02:57 -0700
> CC:;
> To:
> I've now found another place where the added WovenProxy interface breaks OpenWebBeans.
The lack of response on the aries list to my first post makes me think that perhaps this interface
can't be removed. I notice that there's an isSynthetic() method on Class. I'm not sure what
this means but I'm wondering if it would be possible to mark this interface synthetic and
have the relevant parts of OWB ignore synthetic interfaces rather than explicitly configuring
it to ignore this particular interface?
> thanks
> david jencks
> On Jun 2, 2011, at 11:53 PM, David Jencks wrote:
> > another day another problem....
> >
> > org.apache.webbeans.exception.WebBeansConfigurationException: Decorator : Name:null,
WebBeans Type:DECORATOR, API Types:[org.jboss.jsr299.tck.tests.context.dependent.InteriorDecorator,org.apache.aries.proxy.weaving.WovenProxy,org.jboss.jsr299.tck.tests.context.dependent.Interior,java.lang.Object],
Qualifiers:[javax.enterprise.inject.Any,javax.enterprise.inject.Default] delegate attribute
must implement all of the decorator decorated types, but decorator type interface org.apache.aries.proxy.weaving.WovenProxy
is not assignable from delegate type of interface org.jboss.jsr299.tck.tests.context.dependent.Interior
> >
> >
> > I believe the story here is that decorator classes must not implement interfaces
that the delegate doesn't implement, but aries is adding the org.apache.aries.proxy.weaving.WovenProxy
to the decorator class.
> >
> > OWB is already excluding Serializable and I can modify the code to also exclude
org.apache.aries.proxy.weaving.WovenProxy and the jcdi tests pass but this is going to involve
making the list of ignored interfaces configurable and may not be acceptable to OWB.
> >
> > Is there any way to make the weaving/proxying code not add this interface? I don't
think the jdk proxying code needs to add interfaces....
> >
> > thanks
> > david jencks
View raw message