Rather than duplicating code I thought we could code to asm4's released jars, and provide the basic proxy-asm artifact. Then shade asm4 and provide proxy-asm-shaded. Then optionally, we could create another shaded jar that relocates to the same destination as xbean-shaded-asm4 but does not actually shade the classes. I think maven-shade-plugin would do this by specifying relocations without the artifactSet, though I haven't tried it. Then we support:
* asm4 is on classpath * one well-known shading that the user may already have on the classpath * dependencies shaded to a namespace specific to proxy-asm One of these options will work in every case. Even ASM's own FAQ recommends the equivalent of shading per consuming library[1]. Matt [1] http://asm.ow2.org/doc/faq.html#Q15 On Mon, Jul 29, 2013 at 9:59 AM, Romain Manni-Bucau <rmannibu...@gmail.com>wrote: > You have the clean proxy code here (just rework the method generation > which is a bit different): > http://svn.apache.org/repos/asf/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyFactory.java > > the point is i already have cases where i want to use asm and asm shaded, > we can multiply the impl number too but it would duplicate the code. > > About the perf a bench would say it, i didn't take time to do it. > > *Romain Manni-Bucau* > *Twitter: @rmannibucau <https://twitter.com/rmannibucau>* > *Blog: **http://rmannibucau.wordpress.com/*<http://rmannibucau.wordpress.com/> > *LinkedIn: **http://fr.linkedin.com/in/rmannibucau* > *Github: https://github.com/rmannibucau* > > > > 2013/7/29 Matt Benson <gudnabr...@gmail.com> > >> >> On Sun, Jul 28, 2013 at 12:16 PM, Romain Manni-Bucau < >> rmannibu...@gmail.com> wrote: >> >>> answers inline >>> >>> *Romain Manni-Bucau* >>> *Twitter: @rmannibucau <https://twitter.com/rmannibucau>* >>> *Blog: >>> **http://rmannibucau.wordpress.com/*<http://rmannibucau.wordpress.com/> >>> *LinkedIn: **http://fr.linkedin.com/in/rmannibucau* >>> *Github: https://github.com/rmannibucau* >>> >>> >>> >>> 2013/7/28 Matt Benson <gudnabr...@gmail.com> >>> >>>> Interesting patch. I have some questions and comments: >>>> >>>> - You'd additionally need to make sure the impl class is non-final, no? >>>> >>> >>> hmm, good question i didn't check but with asm we can subclass final >>> classes, hehe >>> >> >> >> We can? How devious... well, then strike my question. >> >> >>> >>> >>>> - note to others that asm4-shaded is used because asm didn't change >>>> packages from v3. Good to see this in use; I hadn't kept track after >>>> submitting that patch. ;-) >>>> >>> >>> i used asm4 since that's the more up to date and it supports java 7 very >>> well. The shade was used since provided in tomee and owb but real asm >>> should be fine (see next point) >>> >>> >>>> - Would you explain the purpose of the AsmFacade class? Much of the >>>> "nuts and bolts" work of the patch seems quite different from what I >>>> perceive as "typical asm client code." >>>> >>> >>> i first wrote it with asm imports but a common issue is: do i use asm? >>> spring-asm-shade? xbean-asm-shade? so AsmFacade is an utility class to >>> allow to use whatever impl is here (almost). >>> >>> >> >> While I find this to be interesting and quite clever, I feel like it's >> maybe too much. For one point, have you tried searching the web for >> meaningful examples of ASM code? It's not that easy IMO. I think it'd be >> nicer for our ASM code to exemplify "normal" ASM as much as possible. I'd >> say it'd be enough to write the basic impl against stock asm4. If we >> wanted we could then provide one artifact that shades asm4, and another >> that rewrites the compiled classes to depend on xbean-shaded-asm4, and >> surely that would be enough for users to get by with. Then our code would >> be more intelligible as well as useful from the perspective of helping >> other devs learn from good examples. >> >> Back to the subject of cglib, do you expect this implementation should >>>> significantly outperform it for any reason ( if so, which? ), or is the >>>> main motivation that cglib is almost dead as you say? >>>> >>> >>> since cglib is dead we need something else and i expect the impl to be >>> faster than javassist. Another nice side effect is no dep in a container >>> providing asm. >>> >>> >> >> I am taking this as still saying, yes, the ASM proxy implementation might >> not be any faster than cglib. ;) Which is fine. >> >> Thanks! >> >> Matt >> >> >>> Thanks and regards, >>>> Matt >>>> On Jul 28, 2013 10:58 AM, "Romain Manni-Bucau" <rmannibu...@gmail.com> >>>> wrote: >>>> >>>>> Hi >>>>> >>>>> here is a patch implementing proxying using ASM: >>>>> https://gist.github.com/rmannibucau/6099063 >>>>> >>>>> having the handlers used by default in ProxyFactory protected would >>>>> avoid to copy them in ASMProxyFactory. >>>>> >>>>> *Romain Manni-Bucau* >>>>> *Twitter: @rmannibucau <https://twitter.com/rmannibucau>* >>>>> *Blog: >>>>> **http://rmannibucau.wordpress.com/*<http://rmannibucau.wordpress.com/> >>>>> *LinkedIn: **http://fr.linkedin.com/in/rmannibucau* >>>>> *Github: https://github.com/rmannibucau* >>>>> >>>>> >>>>> >>>>> 2013/7/28 Romain Manni-Bucau <rmannibu...@gmail.com> >>>>> >>>>>> Cglib is "almost" dead if i'm right, javassist is alive but not that >>>>>> stable and owb is faster ATM and at least would bring an Apache impl >>>>>> adapted to [proxy]. >>>>>> >>>>>> Note: the fact to be able to reuse InvocationHandler and not a new >>>>>> API is great too >>>>>> Le 27 juil. 2013 20:13, "Matt Benson" <gudnabr...@gmail.com> a >>>>>> écrit : >>>>>> >>>>>> AFAIK Mark Struberg's work on the OWB proxies could be instructive, >>>>>>> and >>>>>>> since I've just spent several weeks in ASM hell I might just be a >>>>>>> bit of >>>>>>> use there myself. The only thing is, isn't cglib built on ASM as >>>>>>> well? The >>>>>>> dynamic nature of the various proxy helpers means that we probably >>>>>>> couldn't >>>>>>> really improve on cglib, i.e. only if we could test invocation >>>>>>> matching up >>>>>>> front while creating the proxy class would we be faster. >>>>>>> >>>>>>> Matt >>>>>>> On Jul 27, 2013 12:22 PM, "Romain Manni-Bucau" < >>>>>>> rmannibu...@gmail.com> >>>>>>> wrote: >>>>>>> >>>>>>> > Hehe, we benched in owb but lets wait the porting ;) >>>>>>> > Le 27 juil. 2013 16:49, "James Carman" <ja...@carmanconsulting.com> >>>>>>> a >>>>>>> > écrit : >>>>>>> > >>>>>>> > > On Sat, Jul 27, 2013 at 10:34 AM, Romain Manni-Bucau >>>>>>> > > <rmannibu...@gmail.com> wrote: >>>>>>> > > > Once ill have done the monitoring stuff ill try to work on it. >>>>>>> > > >>>>>>> > > What would be really cool is to have a "smackdown" once we get >>>>>>> ASM >>>>>>> > > into the mix to see which one performs the best and exactly how >>>>>>> fast >>>>>>> > > they are compared to one another. >>>>>>> > > >>>>>>> > > >>>>>>> --------------------------------------------------------------------- >>>>>>> > > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >>>>>>> > > For additional commands, e-mail: dev-h...@commons.apache.org >>>>>>> > > >>>>>>> > > >>>>>>> > >>>>>>> >>>>>> >>>>> >>> >> >