Sorry,

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?
 
Regards,
 
Tim
----------------


Tim




----------------------------------------
> Subject: Re: Yet another proxy/weaving problem
> From: [email protected]
> Date: Sat, 4 Jun 2011 09:02:57 -0700
> CC: [email protected]; [email protected]
> To: [email protected]
>
> 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
>
                                          

Reply via email to