From: Paul H. <pha...@us...> - 2005-03-14 14:57:59
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Cache In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6214/nhibernate/src/NHibernate/Cache Modified Files: ICacheConcurrencyStrategy.cs NonstrictReadWriteCache.cs ReadOnlyCache.cs ReadWriteCache.cs Log Message: Bring cache up to 2.1 compliance Index: ReadWriteCache.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Cache/ReadWriteCache.cs,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** ReadWriteCache.cs 6 Mar 2005 12:44:35 -0000 1.9 --- ReadWriteCache.cs 14 Mar 2005 14:57:33 -0000 1.10 *************** *** 200,203 **** --- 200,275 ---- } + /// <summary> + /// + /// </summary> + /// <param name="key"></param> + /// <param name="value"></param> + /// <param name="version"></param> + /// <param name="lock"></param> + public void AfterUpdate( object key, object value, object version, ISoftLock @lock ) + { + lock( lockObject ) + { + if( log.IsDebugEnabled ) + { + log.Debug( "Updating: " + key ); + } + + _cache.Put( key, new CachedItem( value ) ); + + if( log.IsDebugEnabled ) + { + log.Debug( "Updating: " + key ); + } + } + } + + /// <summary> + /// + /// </summary> + /// <param name="key"></param> + /// <param name="value"></param> + /// <param name="version"></param> + public void AfterInsert( object key, object value, object version ) + { + lock( lockObject ) + { + if( log.IsDebugEnabled ) + { + log.Debug( "Inserting: " + key ); + } + + _cache.Put( key, new CachedItem( value ) ); + } + } + + /// <summary> + /// + /// </summary> + /// <param name="key"></param> + public void Evict( object key ) + { + // NOOP + } + + /// <summary> + /// + /// </summary> + /// <param name="key"></param> + /// <param name="value"></param> + public void Insert( object key, object value ) + { + // NOOP + } + + /// <summary> + /// + /// </summary> + /// <param name="key"></param> + /// <param name="value"></param> + public void Update( object key, object value ) + { + // NOOP + } #endregion } Index: NonstrictReadWriteCache.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Cache/NonstrictReadWriteCache.cs,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** NonstrictReadWriteCache.cs 6 Mar 2005 12:44:35 -0000 1.6 --- NonstrictReadWriteCache.cs 14 Mar 2005 14:57:33 -0000 1.7 *************** *** 132,135 **** --- 132,148 ---- } + /// <summary> + /// + /// </summary> + /// <param name="key"></param> + public void Evict( object key ) + { + if( log.IsDebugEnabled ) + { + log.Debug( "Evicting: " + key ); + } + _cache.Remove( key ); + } + /// <summary></summary> public void Clear() *************** *** 155,158 **** --- 168,191 ---- } + /// <summary> + /// + /// </summary> + /// <param name="key"></param> + /// <param name="value"></param> + public void Update( object key, object value ) + { + Evict( key ); + } + + /// <summary> + /// + /// </summary> + /// <param name="key"></param> + /// <param name="value"></param> + public void Insert( object key, object value ) + { + // Do nothing; + } + /// <summary></summary> public ICache Cache *************** *** 162,165 **** --- 195,220 ---- } + /// <summary> + /// Invalidate the item (again, for safety). + /// </summary> + /// <param name="key"></param> + /// <param name="value"></param> + /// <param name="version"></param> + /// <param name="lock"></param> + public void AfterUpdate( object key, object value, object version, ISoftLock @lock ) + { + Release( key, @lock ); + } + + /// <summary> + /// + /// </summary> + /// <param name="key"></param> + /// <param name="value"></param> + /// <param name="version"></param> + public void AfterInsert( object key, object value, object version ) + { + // Do nothing + } #endregion } Index: ReadOnlyCache.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Cache/ReadOnlyCache.cs,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** ReadOnlyCache.cs 6 Mar 2005 12:44:35 -0000 1.10 --- ReadOnlyCache.cs 14 Mar 2005 14:57:33 -0000 1.11 *************** *** 132,135 **** --- 132,188 ---- } + /// <summary> + /// + /// </summary> + /// <param name="key"></param> + /// <param name="value"></param> + /// <param name="version"></param> + /// <param name="lock"></param> + public void AfterUpdate( object key, object value, object version, ISoftLock @lock ) + { + log.Error( "Application attempted to edit read only item: " + key ); + throw new InvalidOperationException( "Can't write to a readonly object" ); + } + + /// <summary> + /// + /// </summary> + /// <param name="key"></param> + /// <param name="value"></param> + /// <param name="version"></param> + public void AfterInsert( object key, object value, object version ) + { + // Ignore + } + + /// <summary> + /// + /// </summary> + /// <param name="key"></param> + public void Evict( object key ) + { + // NOOP + } + + /// <summary> + /// + /// </summary> + /// <param name="key"></param> + /// <param name="value"></param> + public void Insert( object key, object value ) + { + // NOOP + } + + /// <summary> + /// + /// </summary> + /// <param name="key"></param> + /// <param name="value"></param> + public void Update( object key, object value ) + { + log.Error( "Application attempted to edit read only item: " + key ); + throw new InvalidOperationException( "Can't write to a readonly object" ); + } #endregion } Index: ICacheConcurrencyStrategy.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Cache/ICacheConcurrencyStrategy.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** ICacheConcurrencyStrategy.cs 6 Mar 2005 12:44:34 -0000 1.7 --- ICacheConcurrencyStrategy.cs 14 Mar 2005 14:57:32 -0000 1.8 *************** *** 26,30 **** /// <summary> ! /// Attempt to Cache an object /// </summary> /// <param name="key">The key (id) of the object to put in the Cache.</param> --- 26,30 ---- /// <summary> ! /// Attempt to cache an object, after loading from the database /// </summary> /// <param name="key">The key (id) of the object to put in the Cache.</param> *************** *** 45,48 **** --- 45,68 ---- /// <summary> + /// Called after an item has become stale (before the transaction completes). + /// </summary> + /// <param name="key"></param> + void Evict( object key ); + + /// <summary> + /// Called after an item has been updated (before the transaction completes), instead of calling Evict(). + /// </summary> + /// <param name="key"></param> + /// <param name="value"></param> + void Update( object key, object value ); + + /// <summary> + /// Called after an item has been inserted (before the transaction completes), instead of calling Evict(). + /// </summary> + /// <param name="key"></param> + /// <param name="value"></param> + void Insert( object key, object value ); + + /// <summary> /// We have finished the attempted update/delete (which may or may not have been successful) /// </summary> *************** *** 52,56 **** void Release( object key, ISoftLock @lock ); - /* /// <summary> /// Called after an item has been updated (after the transaction completes), instead of calling Release(). --- 72,75 ---- *************** *** 59,65 **** /// <param name="value"></param> /// <param name="version"></param> ! /// <param name="?"></param> /// <remarks>This method is used by "asynchronous" concurrency strategies.</remarks> ! void AfterUpdate(object key, object value, object version, SoftLock lock) throws CacheException; /// <summary> --- 78,84 ---- /// <param name="value"></param> /// <param name="version"></param> ! /// <param name="lock"></param> /// <remarks>This method is used by "asynchronous" concurrency strategies.</remarks> ! void AfterUpdate(object key, object value, object version, ISoftLock @lock ); /// <summary> *************** *** 70,78 **** /// <param name="version"></param> /// <remarks>This method is used by "asynchronous" concurrency strategies.</remarks> ! public void AfterInsert(object key, object value, object version) throws CacheException; ! */ /// <summary> ! /// /// </summary> /// <param name="key"></param> --- 89,96 ---- /// <param name="version"></param> /// <remarks>This method is used by "asynchronous" concurrency strategies.</remarks> ! void AfterInsert(object key, object value, object version ); /// <summary> ! /// Evict an item from the cache immediately (without regard for transaction isolation). /// </summary> /// <param name="key"></param> *************** *** 81,85 **** /// <summary> ! /// /// </summary> /// <exception cref="CacheException"></exception> --- 99,103 ---- /// <summary> ! /// Evict all items from the cache immediately. /// </summary> /// <exception cref="CacheException"></exception> *************** *** 87,91 **** /// <summary> ! /// /// </summary> /// <exception cref="CacheException"></exception> --- 105,109 ---- /// <summary> ! /// Clean up all resources. /// </summary> /// <exception cref="CacheException"></exception> |