From: Michael D. <mik...@us...> - 2004-09-22 04:46:53
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Type In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20582/Type Modified Files: PersistentCollectionType.cs Log Message: Removed Obsoleted method from PersistentCollection Fixed bug with Bags that are lazy loading being flushed after an addition that would end up putting the same item in the bag twice. Index: PersistentCollectionType.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Type/PersistentCollectionType.cs,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** PersistentCollectionType.cs 20 Aug 2004 17:39:01 -0000 1.14 --- PersistentCollectionType.cs 22 Sep 2004 04:46:44 -0000 1.15 *************** *** 7,34 **** using NHibernate.SqlTypes; ! namespace NHibernate.Type { ! /// <summary> /// PersistentCollectionType. /// </summary> ! public abstract class PersistentCollectionType : AbstractType, IAssociationType { private readonly string role; private static readonly SqlType[] NoSqlTypes = {}; ! public PersistentCollectionType(string role) { this.role = role; } ! public virtual string Role { get { return role; } } ! public override bool IsPersistentCollectionType { get { return true; } } ! public override sealed bool Equals(object x, object y) { ! // proxies? return x==y; } --- 7,39 ---- using NHibernate.SqlTypes; ! namespace NHibernate.Type ! { /// <summary> /// PersistentCollectionType. /// </summary> ! public abstract class PersistentCollectionType : AbstractType, IAssociationType ! { private readonly string role; private static readonly SqlType[] NoSqlTypes = {}; ! public PersistentCollectionType(string role) ! { this.role = role; } ! public virtual string Role ! { get { return role; } } ! public override bool IsPersistentCollectionType ! { get { return true; } } ! public override sealed bool Equals(object x, object y) ! { ! // proxies? - comment in h2.0.3 also return x==y; } *************** *** 36,49 **** public abstract PersistentCollection Instantiate(ISessionImplementor session, CollectionPersister persister); ! public override object NullSafeGet(IDataReader rs, string name, ISessionImplementor session, object owner) { throw new AssertionFailure("bug in PersistentCollectionType"); } ! public override object NullSafeGet(IDataReader rs, string[] name, ISessionImplementor session, object owner) { return ResolveIdentifier( Hydrate(rs, name, session, owner), session, owner ); } ! public virtual object GetCollection(object id, object owner, ISessionImplementor session) { ! PersistentCollection collection = session.GetLoadingCollection(role, id); if(collection!=null) return collection.GetCachedValue(); //TODO: yuck... call another method - H2.0.3comment --- 41,62 ---- public abstract PersistentCollection Instantiate(ISessionImplementor session, CollectionPersister persister); ! public override object NullSafeGet(IDataReader rs, string name, ISessionImplementor session, object owner) ! { throw new AssertionFailure("bug in PersistentCollectionType"); } ! public override object NullSafeGet(IDataReader rs, string[] name, ISessionImplementor session, object owner) ! { return ResolveIdentifier( Hydrate(rs, name, session, owner), session, owner ); } ! public override void NullSafeSet(IDbCommand cmd, object value, int index, ISessionImplementor session) ! { ! } ! ! public virtual object GetCollection(object id, object owner, ISessionImplementor session) ! { ! // added the owner ! PersistentCollection collection = session.GetLoadingCollection( role, id ); if(collection!=null) return collection.GetCachedValue(); //TODO: yuck... call another method - H2.0.3comment *************** *** 64,87 **** } ! public override void NullSafeSet(IDbCommand cmd, object value, int index, ISessionImplementor session) { ! } ! ! public override SqlType[] SqlTypes(IMapping session) { return NoSqlTypes; } ! public override int GetColumnSpan(IMapping session) { return 0; } ! public override string ToXML(object value, ISessionFactoryImplementor factory) { return (value==null) ? null : value.ToString(); } ! public override object DeepCopy(object value) { return value; } ! public override string Name { get { return ReturnedClass.Name; } } --- 77,102 ---- } ! public override SqlType[] SqlTypes(IMapping session) ! { return NoSqlTypes; } ! public override int GetColumnSpan(IMapping session) ! { return 0; } ! public override string ToXML(object value, ISessionFactoryImplementor factory) ! { return (value==null) ? null : value.ToString(); } ! public override object DeepCopy(object value) ! { return value; } ! public override string Name ! { get { return ReturnedClass.Name; } } *************** *** 98,106 **** /// DictionaryEntry. /// </remarks> ! public virtual ICollection GetElementsCollection(object collection) { return ( (ICollection)collection ); } ! public override bool IsMutable { get { return false; } } --- 113,123 ---- /// DictionaryEntry. /// </remarks> ! public virtual ICollection GetElementsCollection(object collection) ! { return ( (ICollection)collection ); } ! public override bool IsMutable ! { get { return false; } } *************** *** 120,144 **** } ! public override object Assemble(object cached, ISessionImplementor session, object owner) { object id = session.GetEntityIdentifier(owner); ! if(id==null) throw new AssertionFailure("bug re-assembling collection reference"); return ResolveIdentifier(id, session, owner); - //return ResolveIdentifier(cached, session, owner); } ! public override bool IsDirty(object old, object current, ISessionImplementor session) { ! System.Type ownerClass = session.Factory.GetCollectionPersister(role).OwnerClass; ! if ( !session.Factory.GetPersister(ownerClass).IsVersioned ) { // collections don't dirty an unversioned parent entity return false; } ! else { return base.IsDirty(old, current, session); } } ! public override bool HasNiceEquals { get { return false; } } --- 137,167 ---- } ! public override object Assemble(object cached, ISessionImplementor session, object owner) ! { object id = session.GetEntityIdentifier(owner); ! if(id==null) ! { ! throw new AssertionFailure("bug re-assembling collection reference"); ! } return ResolveIdentifier(id, session, owner); } ! public override bool IsDirty(object old, object current, ISessionImplementor session) ! { System.Type ownerClass = session.Factory.GetCollectionPersister(role).OwnerClass; ! if ( !session.Factory.GetPersister(ownerClass).IsVersioned ) ! { // collections don't dirty an unversioned parent entity return false; } ! else ! { return base.IsDirty(old, current, session); } } ! public override bool HasNiceEquals ! { get { return false; } } *************** *** 150,175 **** * all collections are associations. */ ! public override bool IsAssociationType { get { return true; } } ! public virtual ForeignKeyType ForeignKeyType { get { return ForeignKeyType.ForeignKeyToParent; } } ! public override object Hydrate(IDataReader rs, string[] name, ISessionImplementor session, object owner) { return session.GetEntityIdentifier(owner); } ! public override object ResolveIdentifier(object value, ISessionImplementor session, object owner) { ! if (value==null) { return null; } ! else { return GetCollection( value, owner, session); } } ! public virtual bool IsArrayType { get { return false; } } --- 173,207 ---- * all collections are associations. */ ! public override bool IsAssociationType ! { get { return true; } } ! public virtual ForeignKeyType ForeignKeyType ! { get { return ForeignKeyType.ForeignKeyToParent; } } ! public override object Hydrate(IDataReader rs, string[] name, ISessionImplementor session, object owner) ! { return session.GetEntityIdentifier(owner); } ! public override object ResolveIdentifier(object value, ISessionImplementor session, object owner) ! { ! if (value==null) ! { return null; } ! else ! { ! // h2.1 changed this to use sesion.GetCollection( role, value, owner ) and ! // move the impl of GetCollection from this class to the ISession. return GetCollection( value, owner, session); } } ! public virtual bool IsArrayType ! { get { return false; } } |