I think we will to release this weekend, I think code is high quality and well tested. I do not have more ideas for inovations at this time, but we will need more opinions about quality.
<propoganda> We have some public class "MetaClass" for public methods only, possible "ReflectOptimizer" is a better name for it. It copies bean properties from array and array to bean without reflection, [java] iteration count: 100000 [java] net.sf.cglib.TestMetaClass$MetaClassReflectImpl: [java] 1797 ms. 0.01797 per iteration [java] net.sf.cglib.MAMetaClass0: [java] 78 ms. 7.8E-4 per iteration [java] factor: 23.038462 it is 9 - 40 times faster, possible depends on iteration count, it is not trivial to implement good performance test. I think it must increase performance for trivial queries with big result sets, I use this trick with plain jdbc and postgresql (it has not very fast driver) it increses performance 10% - 20% </propoganda> > Juozas, I'm still waiting for you to let me know when Hibernate should > start using a newer version of CGLIB .... I havn't upgraded, only > because I know you guys are still changing APIs, etc. > > So just let me know when you have something reasonably final. > > Thanks :) > > ----- Original Message ----- > From: "Juozas Baliuka" <[EMAIL PROTECTED]> > To: "Schnitzer, Jeff" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> > Cc: <[EMAIL PROTECTED]>; > <[EMAIL PROTECTED]> > Sent: Saturday, February 01, 2003 10:04 AM > Subject: Re: [Hibernate] Trouble with proxy implementations > > > > > > > > > > > > Agree, > > user doe's not need to know about cglib API used by hibernate. > > I will add prefix all Factory methods this way: "cglib$GetInterceptor()", > > "cglib$GetDelegate()" > > They are used for optimizations and we do not need "nice" names. Very > > possible we will decide to generate > > separate class for factory, It is possible to have all optimizations > without > > cglib interface implemented by proxy, > > MetaClass doe's almost the same. > > > > <snip> > > > > Also - I'm still rather confused why sometimes getInterceptor() is > > exposed and sometimes it isn't. > > > > It must be always implemented by generated classes, possible some of > objects > > are not instances of proxy class. > > > > I'm introspecting the proxy with > > java.beans.Introspector and printing out the PropertyDescriptors. It's > > also odd that I don't see a property called "delegate". > > > > Version used by hibernate doe's not have this method, it is introduced > later > > to eleminate "java.lang.reflect.Method.invoke". > > Instance returned form "getDelegate()" is the same as parameter "delegate" > > in "newInstance(interceptor,delegate)" > > used to redirect all intercepted methods. > > > > It is possible to live without "delegate" paramater in "newInstance" and > > "getDelegate" in "Factory", user defined interceptor can store this > > reference itself. > > Both methods can be implemented in MethodProxy : > > > > "invokeSuper" - indirect delegation to "super" > > ( > > > this.method()->MethodProxy.invokeSuper(this)->this.CGLIB$ACCESS_x_method()-> > > super.method() ) > > > > "invoke" - direct delegation to "delegate" > > ( this.method()->MethodProxy.invoke(param)->param.method() ) > > > > I see we will have nice weekend :) > > > > > > Jeff Schnitzer > > [EMAIL PROTECTED] > > > > > -----Original Message----- > > > From: Juozas Baliuka [mailto:[EMAIL PROTECTED] > > > Sent: Thursday, January 30, 2003 10:34 PM > > > To: Schnitzer, Jeff; [EMAIL PROTECTED] > > > Cc: [EMAIL PROTECTED] > > > Subject: Re: [Hibernate] Trouble with proxy implementations > > > > > > > > > This public method implemented for *all* proxy instances. > > > Proxy implements net.sf.cglib.Factory interface it is used for > > > optimization > > > to eleminate reflection. > > > We can rename getters and setters, but it is public API and you can > > filter > > > methods this way: > > > public boolean accept(){ > > > return net.sf.cglib.Factory.class != method.getDeclaringClass() ; > > > } > > > > > > > > > public interface Factory { > > > /** > > > * Creates new instance of the same type as factory > > > * @param ih interceptor > > > * @return instance > > > */ > > > public Object newInstance(MethodInterceptor ih); > > > > > > public MethodInterceptor getInterceptor(); > > > > > > public Object newInstance(MethodInterceptor ih, Object delegate); > > > > > > public Object newInstance( Class types[], Object args[], > > > MethodInterceptor ih);//calls multiarg constructor > > > > > > public Object getDelegate();//new getter > > > > > > public void setDelegate(Object delegate);//new setter > > > > > > public void setInterceptor(MethodInterceptor ih);//new setter > > > } > > > > > > > > > It gets weird. The problem is that *sometimes* the proxy exposes a > > > getInterceptor() method of type net.sf.cglib.proxy.MethodInterceptor. > > > > > > When I restart the JVM, it usually works for a while - this method is > > > not exposed. Eventually, however, something "breaks" and this method > > is > > > consistently exposed. > > > > > > ??? > > > > > > Jeff > > > > > > > -----Original Message----- > > > > From: Schnitzer, Jeff > > > > Sent: Thursday, January 30, 2003 5:23 PM > > > > To: [EMAIL PROTECTED] > > > > Cc: [EMAIL PROTECTED] > > > > Subject: RE: [Hibernate] Trouble with proxy implementations > > > > > > > > It's possible that there is a getter on the proxy that returns an > > > object > > > > that has the getSession() method. Difficult to tell from my current > > > > test app. I'll write some introspection code to find out what's > > going > > > > on. > > > > > > > > Jeff > > > > > > > > > -----Original Message----- > > > > > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > > > > > Sent: Thursday, January 30, 2003 4:45 PM > > > > > To: Schnitzer, Jeff > > > > > Cc: [EMAIL PROTECTED] > > > > > Subject: RE: [Hibernate] Trouble with proxy implementations > > > > > > > > > > > > > > > Wierd .... those methods are defined on the _handler_ class, > > > > > not the proxy interface itself..... > > > > > > > > > > And I didn't thing the proxies implement the interface of the > > > > > MethodInterceptor.... > > > > > > > > > > > > > > > > > > > > > > > > > "Schnitzer, > > > > > Jeff" To: > > > > > <[EMAIL PROTECTED]> > > > > > <[EMAIL PROTECTED] cc: > > > > > xis.com> Subject: RE: > > > [Hibernate] > > > > > Trouble with proxy implementations > > > > > > > > > > 31/01/03 11:04 > > > > > AM > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > It's with a very recent CVS copy of hibernate2. The getters must > > be > > > > > generated by CGLIB. It's hard to follow the exact call graph (I > > get > > > > an > > > > > exception that prevents the full XML from being displayed) but one > > > > > example: > > > > > > > > > > It looks like the proxy has a method getSession() that returns a > > > > > net.sf.hibernate.impl.SessionImpl. > > > > > > > > > > Jeff > > > > > > > > > > > > > > > > -----Original Message----- > > > > > > From: [EMAIL PROTECTED] > > [mailto:[EMAIL PROTECTED] > > > > > > Sent: Thursday, January 30, 2003 3:42 PM > > > > > > To: Schnitzer, Jeff > > > > > > Cc: [EMAIL PROTECTED] > > > > > > Subject: Re: [Hibernate] Trouble with proxy implementations > > > > > > > > > > > > > > > > > > Hmmmm. HibernateProxy itself only declares writeReplace(). Do > > you > > > > mean > > > > > > methods > > > > > > that are coming from CGLIB, or are you referring to an older > > > version > > > > > of > > > > > > Hibernate? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > "Schnitzer, Jeff" > > > > > > <[EMAIL PROTECTED]> To: > > > > > > <[EMAIL PROTECTED]> > > > > > > Sent by: cc: > > > > > > [EMAIL PROTECTED] > > > Subject: > > > > > > [Hibernate] Trouble with proxy implementations > > > > > > eforge.net > > > > > > > > > > > > > > > > > > 31/01/03 10:30 AM > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I'm having a small problem with the generated proxy > > > implementations > > > > in > > > > > > one of my webapps. My data objects are of course java beans, > > and > > > > > these > > > > > > java beans are passed up into the presentation tier. > > > > > > > > > > > > Among other things, my presentation tier uses reflection to > > > examine > > > > > the > > > > > > data (model) components and generate XML from them. This works > > > > great > > > > > > with real beans but causes a lot of trouble with proxies. > > > > > > > > > > > > Unfotunately the generated proxies have a lot of methods that > > fit > > > > the > > > > > > javabeans property pattern getXXX() and return sophisticated > > > > objects. > > > > > > This really makes a mess out of the process. > > > > > > > > > > > > Is it possible to change these methods so that they do not > > > coincide > > > > > with > > > > > > the pattern for javabeans properties? > > > > > > > > > > > > Jeff Schnitzer > > > > > > [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > ------------------------------------------------------- > > > > > > This SF.NET email is sponsored by: > > > > > > SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 > > > See! > > > > > > http://www.vasoftware.com > > > > > > _______________________________________________ > > > > > > hibernate-devel mailing list > > > > > > [EMAIL PROTECTED] > > > > > > https://lists.sourceforge.net/lists/listinfo/hibernate-devel > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ********************************************************************** > > > > > > Any personal or sensitive information contained in this email > > and > > > > > > attachments must be handled in accordance with the Victorian > > > > > Information > > > > > > Privacy Act 2000, the Health Records Act 2001 or the Privacy Act > > > > 1988 > > > > > > (Commonwealth), as applicable. > > > > > > > > > > > > This email, including all attachments, is confidential. If you > > > are > > > > > not > > > > > > the > > > > > > intended recipient, you must not disclose, distribute, copy or > > use > > > > the > > > > > > information contained in this email or attachments. Any > > > > > confidentiality > > > > > > or > > > > > > privilege is not waived or lost because this email has been sent > > > to > > > > > you in > > > > > > error. If you have received it in error, please let us know by > > > > reply > > > > > > email, delete it from your system and destroy any copies. > > > > > > > > > > > > ********************************************************************** > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ********************************************************************** > > > > > Any personal or sensitive information contained in this email and > > > > > attachments must be handled in accordance with the Victorian > > > > Information > > > > > Privacy Act 2000, the Health Records Act 2001 or the Privacy Act > > > 1988 > > > > > (Commonwealth), as applicable. > > > > > > > > > > This email, including all attachments, is confidential. If you > > are > > > > not > > > > > the > > > > > intended recipient, you must not disclose, distribute, copy or use > > > the > > > > > information contained in this email or attachments. Any > > > > confidentiality > > > > > or > > > > > privilege is not waived or lost because this email has been sent > > to > > > > you in > > > > > error. If you have received it in error, please let us know by > > > reply > > > > > email, delete it from your system and destroy any copies. > > > > > > > > ********************************************************************** > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------- > > > > This SF.NET email is sponsored by: > > > > SourceForge Enterprise Edition + IBM + LinuxWorld =omething 2 See! > > > > http://www.vasoftware.com > > > > _______________________________________________ > > > > hibernate-devel mailing list > > > > [EMAIL PROTECTED] > > > > https://lists.sourceforge.net/lists/listinfo/hibernate-devel > > > > > > > > > > > > ------------------------------------------------------- > > > This SF.NET email is sponsored by: > > > SourceForge Enterprise Edition + IBM + LinuxWorld =omething 2 See! > > > http://www.vasoftware.com > > > _______________________________________________ > > > hibernate-devel mailing list > > > [EMAIL PROTECTED] > > > https://lists.sourceforge.net/lists/listinfo/hibernate-devel > > > > > > > > > > > > > ------------------------------------------------------- > > This SF.NET email is sponsored by: > > SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See! > > http://www.vasoftware.com > > _______________________________________________ > > hibernate-devel mailing list > > [EMAIL PROTECTED] > > https://lists.sourceforge.net/lists/listinfo/hibernate-devel > ------------------------------------------------------- This SF.NET email is sponsored by: SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See! http://www.vasoftware.com _______________________________________________ hibernate-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/hibernate-devel