From: Michael D. <mik...@us...> - 2004-10-05 15:26:32
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Impl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26229/src/NHibernate/Impl Modified Files: Tag: alpha_avalon-proxy SessionImpl.cs Log Message: much work done to implement proxies with classes and virtual properties. All test that are being run now pass with proxy="some class" Index: SessionImpl.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Impl/SessionImpl.cs,v retrieving revision 1.44.2.2 retrieving revision 1.44.2.3 diff -C2 -d -r1.44.2.2 -r1.44.2.3 *** SessionImpl.cs 3 Oct 2004 16:58:14 -0000 1.44.2.2 --- SessionImpl.cs 5 Oct 2004 15:25:05 -0000 1.44.2.3 *************** *** 994,998 **** IClassPersister persister = GetPersister( li.PersistentClass ); Key key = new Key( li.Identifier, persister ); ! if ( !proxiesByKey.Contains(key) ) proxiesByKey[key] = proxy; // any earlier proxy takes precedence NHibernateProxyHelper.GetLazyInitializer( (INHibernateProxy) proxy ).Session = this; } --- 994,1002 ---- IClassPersister persister = GetPersister( li.PersistentClass ); Key key = new Key( li.Identifier, persister ); ! if ( !proxiesByKey.Contains(key) ) ! { ! proxiesByKey[key] = proxy; // any earlier proxy takes precedence ! } ! NHibernateProxyHelper.GetLazyInitializer( (INHibernateProxy) proxy ).Session = this; } *************** *** 1921,1926 **** else { ! //TODO: Get the proxy - there is some CGLIB code here ! proxy = null; proxiesByKey[key] = proxy; --- 1925,1936 ---- else { ! IProxyGenerator generator = ProxyGeneratorFactory.GetProxyGenerator(); ! proxy = generator.GetProxy( ! p.MappedClass ! , p.ConcreteProxyClass ! , p.ProxyInterfaces ! , p.ProxyIdentifierProperty ! , key.Identifier ! , this ); proxiesByKey[key] = proxy; *************** *** 2123,2127 **** { IProxyGenerator generator = ProxyGeneratorFactory.GetProxyGenerator(); ! proxy = generator.GetProxy( clazz, persister.ProxyInterfaces, persister.ProxyIdentifierProperty, id, this ); } proxiesByKey[key] = proxy; --- 2133,2137 ---- { IProxyGenerator generator = ProxyGeneratorFactory.GetProxyGenerator(); ! proxy = generator.GetProxy( clazz, persister.ConcreteProxyClass, persister.ProxyInterfaces, persister.ProxyIdentifierProperty, id, this ); } proxiesByKey[key] = proxy; *************** *** 2748,2752 **** { LazyInitializer li = NHibernateProxyHelper.GetLazyInitializer( (INHibernateProxy) obj ); ! if ( li.Session!=this ) throw new TransientObjectException("The proxy was not associated with this session"); return li.Identifier; } --- 2758,2765 ---- { LazyInitializer li = NHibernateProxyHelper.GetLazyInitializer( (INHibernateProxy) obj ); ! if ( li.Session!=this ) ! { ! throw new TransientObjectException("The proxy was not associated with this session"); ! } return li.Identifier; } *************** *** 3881,3885 **** if (obj is INHibernateProxy) { ! LazyInitializer li = NHibernateProxyHelper.GetLazyInitializer( (INHibernateProxy) obj ); object id = li.Identifier; IClassPersister persister = GetPersister( li.PersistentClass ); --- 3894,3898 ---- if (obj is INHibernateProxy) { ! LazyInitializer li = NHibernateProxyHelper.GetLazyInitializer( (INHibernateProxy) obj ); object id = li.Identifier; IClassPersister persister = GetPersister( li.PersistentClass ); |