You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by gb...@apache.org on 2008/06/09 21:22:29 UTC

svn commit: r665838 - in /ibatis/trunk/cs/V3/src: Apache.Ibatis.DataMapper.SqlClient.Test.2005/Fixtures/Mapping/ Apache.Ibatis.DataMapper/ Apache.Ibatis.DataMapper/MappedStatements/ Apache.Ibatis.DataMapper/Model/Events/ Apache.Ibatis.DataMapper/Model/...

Author: gbayon
Date: Mon Jun  9 12:22:28 2008
New Revision: 665838

URL: http://svn.apache.org/viewvc?rev=665838&view=rev
Log:
IBATISNET-271 refactoring following Ron remarks

Added:
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/IMappedStatementEvents.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/MappedStatementEventSupport.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/BaseStatementEventArgs.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/Events.cd
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostInsertEventArgs.cs
      - copied, changed from r664536, ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostInsertEvent.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostSelectEventArgs.cs
      - copied, changed from r664536, ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostSelectEvent.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostStatementEventArgs.cs
      - copied, changed from r664536, ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostStatementEvent.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostUpdateOrDeleteEventArgs.cs
      - copied, changed from r664536, ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostUpdateOrDeleteEvent.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreInsertEventArgs.cs
      - copied, changed from r664536, ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreInsertEvent.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreSelectEventArgs.cs
      - copied, changed from r664536, ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreSelectEvent.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreStatementEventArgs.cs
      - copied, changed from r664536, ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreStatementEvent.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreUpdateOrDeleteEventArgs.cs
      - copied, changed from r664536, ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreUpdateOrDeleteEvent.cs
Removed:
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/BaseSatementEvent.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/ISatementEvent.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/Listeners/IStatementEventListener.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/Listeners/PostInsertEventListener.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/Listeners/PostSelectEventListener.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/Listeners/PostUpdateOrDeleteEventListener.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/Listeners/PreInsertEventListener.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/Listeners/PreSelectEventListener.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/Listeners/PreUpdateOrDeleteEventListener.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostInsertEvent.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostSelectEvent.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostStatementEvent.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostUpdateOrDeleteEvent.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreInsertEvent.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreSelectEvent.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreStatementEvent.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreUpdateOrDeleteEvent.cs
Modified:
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper.SqlClient.Test.2005/Fixtures/Mapping/EventTest.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Apache.Ibatis.DataMapper.20005.csproj
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/CachingStatement.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/IMappedStatement.cs
    ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/MappedStatement.cs

Modified: ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper.SqlClient.Test.2005/Fixtures/Mapping/EventTest.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper.SqlClient.Test.2005/Fixtures/Mapping/EventTest.cs?rev=665838&r1=665837&r2=665838&view=diff
==============================================================================
--- ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper.SqlClient.Test.2005/Fixtures/Mapping/EventTest.cs (original)
+++ ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper.SqlClient.Test.2005/Fixtures/Mapping/EventTest.cs Mon Jun  9 12:22:28 2008
@@ -1,3 +1,4 @@
+using System;
 using Apache.Ibatis.Common.Resources;
 using Apache.Ibatis.DataMapper.Configuration;
 using Apache.Ibatis.DataMapper.Configuration.Interpreters.Config.Xml;
@@ -45,16 +46,6 @@
             InitScript(sessionFactory.DataSource, scriptDirectory + "documents-init.sql");
         }
 
-        private static void ReInitListeners(IMappedStatement statement)
-        {
-            statement.PreInsertListeners = new PreInsertEventListener[] {};
-            statement.PreSelectListeners = new PreSelectEventListener[] { };
-            statement.PreUpdateOrDeleteListeners = new PreUpdateOrDeleteEventListener[] { };
-
-            statement.PostInsertListeners = new PostInsertEventListener[] { };
-            statement.PostSelectListeners = new PostSelectEventListener[] { };
-            statement.PostUpdateOrDeleteListeners = new PostUpdateOrDeleteEventListener[] { };
-        }
 
         private static void ReInitListeners(IResultMap resultMap)
         {
@@ -70,40 +61,54 @@
 
 
         [Test]
-        public void PreSelectEventListener_must_be_fired()
+        public void PreSelectEvent_must_be_fired()
         {
             IMappedStatement statement = ((IModelStoreAccessor)dataMapper).ModelStore.GetMappedStatement("SelectAccount");
-            ReInitListeners(statement);
             Assert.That(statement, Is.Not.Null);
-            statement.PreSelectListeners = new PreSelectEventListener[] { new MyPreSelectEventListener() };
+            statement.PreSelect+= PreSelectEventHandler;
 
             Account account = dataMapper.QueryForObject<Account>("SelectAccount", 1);
             Assert.That(account, Is.Not.Null);
             Assert.That(account.Id, Is.EqualTo(2));
+
+            statement.PreSelect -= PreSelectEventHandler;
+        }
+
+        private static void PreSelectEventHandler(object src, PreSelectEventArgs evnt)
+        {
+            Assert.That(((IMappedStatement)src).Id, Is.EqualTo("SelectAccount"));
+            evnt.ParameterObject = ((int)evnt.ParameterObject) +1;
         }
 
+
         [Test]
         public void PostSelectEventListener_must_be_fired()
         {
             IMappedStatement statement = ((IModelStoreAccessor)dataMapper).ModelStore.GetMappedStatement("SelectAccount");
-            ReInitListeners(statement);
             Assert.That(statement, Is.Not.Null);
-            statement.PostSelectListeners = new PostSelectEventListener[] { new MyPostSelectEventListener() };
+            statement.PostSelect += PostSelectEventHandler;
 
             Account account = dataMapper.QueryForObject<Account>("SelectAccount", 1);
             Assert.That(account, Is.Not.Null);
             Assert.That(account.Id, Is.EqualTo(99));
+
+            statement.PostSelect -= PostSelectEventHandler;
+        }
+
+        private static void PostSelectEventHandler(object src, PostSelectEventArgs evnt)
+        {
+            Assert.That(((IMappedStatement)src).Id, Is.EqualTo("SelectAccount"));
+            Account account = (Account)evnt.ResultObject;
+            account.Id = 99;
         }
 
+        
         [Test]
         public void PreInsertEventListener_must_be_fired()
         {
-            IMappedStatement statement = ((IModelStoreAccessor)dataMapper).ModelStore.GetMappedStatement("SelectAccount");
-            ReInitListeners(statement);
-            statement = ((IModelStoreAccessor)dataMapper).ModelStore.GetMappedStatement("InsertAccount");
-            ReInitListeners(statement);
+            IMappedStatement statement = statement = ((IModelStoreAccessor)dataMapper).ModelStore.GetMappedStatement("InsertAccount");
             Assert.That(statement, Is.Not.Null);
-            statement.PreInsertListeners = new PreInsertEventListener[] { new MyPreInsertEventListener() };
+            statement.PreInsert += PreInsertEventHandler;
             
             Account account = new Account();
             account.Id = 6;
@@ -120,17 +125,24 @@
             Assert.That(account.FirstName, Is.EqualTo("Calamity"));
             Assert.That(account.LastName, Is.EqualTo("Jane"));
             Assert.That(account.EmailAddress, Is.EqualTo("pre.insert.email@noname.org"));
+
+            statement.PreInsert -= PreInsertEventHandler;
+        }
+
+        private static void PreInsertEventHandler(object src, PreInsertEventArgs evnt)
+        {
+            Assert.That(((IMappedStatement)src).Id, Is.EqualTo("InsertAccount"));
+            Account account = (Account)evnt.ParameterObject;
+            account.EmailAddress = "pre.insert.email@noname.org";
         }
 
+        
         [Test]
         public void PostInsertEventListener_must_be_fired()
         {
-            IMappedStatement statement = ((IModelStoreAccessor)dataMapper).ModelStore.GetMappedStatement("SelectAccount");
-            ReInitListeners(statement);
-            statement = ((IModelStoreAccessor)dataMapper).ModelStore.GetMappedStatement("InsertAccount");
-            ReInitListeners(statement);
+            IMappedStatement statement = ((IModelStoreAccessor)dataMapper).ModelStore.GetMappedStatement("InsertAccount");
             Assert.That(statement, Is.Not.Null);
-            statement.PostInsertListeners = new PostInsertEventListener[] { new MyPostInsertEventListener() };
+            statement.PostInsert += PostInsertEventHandler;
 
             Account account = new Account();
             account.Id = 6;
@@ -142,16 +154,26 @@
 
             Assert.That(id, Is.EqualTo(999));
             Assert.That(account.Id, Is.EqualTo(99));
+
+            statement.PostInsert -= PostInsertEventHandler;
+
         }
 
+        private static void PostInsertEventHandler(object src, PostInsertEventArgs evnt)
+        {
+            Assert.That(((IMappedStatement)src).Id, Is.EqualTo("InsertAccount"));
+            Account account = (Account)evnt.ParameterObject;
+            account.Id = 99;
+            evnt.ResultObject = 999;
+        }
+      
+
         [Test]
         public void PreUpdateOrDeleteEventListener_must_be_fired()
         {
-            IMappedStatement statement = ((IModelStoreAccessor)dataMapper).ModelStore.GetMappedStatement("SelectAccount");
-            ReInitListeners(statement);
-            statement = ((IModelStoreAccessor)dataMapper).ModelStore.GetMappedStatement("UpdateAccount");
-            ReInitListeners(statement);
-            statement.PreUpdateOrDeleteListeners = new PreUpdateOrDeleteEventListener[] { new MyPreUpdateOrDeleteEventListener() };
+            IMappedStatement statement =  ((IModelStoreAccessor)dataMapper).ModelStore.GetMappedStatement("UpdateAccount");
+            statement.PreUpdateOrDelete += PreUpdateOrDeleteEventHandler;
+            
             Account account = dataMapper.QueryForObject<Account>("SelectAccount", 1);
             account.EmailAddress = "To.Be.Replace@noname.org";
 
@@ -162,16 +184,22 @@
             Assert.That(account, Is.Not.Null);
             Assert.That(account.Id, Is.EqualTo(1));
             Assert.That(account.EmailAddress, Is.EqualTo("Pre.Update.Or.Delete.Event@noname.org"));
+
+            statement.PreUpdateOrDelete -= PreUpdateOrDeleteEventHandler;
+        }
+
+        private static void PreUpdateOrDeleteEventHandler(object src, PreUpdateOrDeleteEventArgs evnt)
+        {
+            Assert.That(((IMappedStatement)src).Id, Is.EqualTo("UpdateAccount"));
+            Account account = (Account)evnt.ParameterObject;
+            account.EmailAddress = "Pre.Update.Or.Delete.Event@noname.org";
         }
 
         [Test]
         public void PostUpdateOrDeleteEventListener_must_be_fired()
         {
-            IMappedStatement statement = ((IModelStoreAccessor)dataMapper).ModelStore.GetMappedStatement("SelectAccount");
-            ReInitListeners(statement);
-            statement = ((IModelStoreAccessor)dataMapper).ModelStore.GetMappedStatement("UpdateAccount");
-            ReInitListeners(statement);
-            statement.PostUpdateOrDeleteListeners = new PostUpdateOrDeleteEventListener[] { new MyPostUpdateOrDeleteEventListener() };
+            IMappedStatement statement = ((IModelStoreAccessor)dataMapper).ModelStore.GetMappedStatement("UpdateAccount");
+            statement.PostUpdateOrDelete += PostUpdateOrDeleteEventHandler;
 
             Account account = dataMapper.QueryForObject<Account>("SelectAccount", 1);
 
@@ -179,8 +207,20 @@
 
             Assert.That(id, Is.EqualTo(999));
             Assert.That(account.Id, Is.EqualTo(99));
+
+            statement.PostUpdateOrDelete -= PostUpdateOrDeleteEventHandler;
+
+        }
+
+        private static void PostUpdateOrDeleteEventHandler(object src, PostUpdateOrDeleteEventArgs evnt)
+        {
+            Assert.That(((IMappedStatement)src).Id, Is.EqualTo("UpdateAccount"));
+            Account account = (Account)evnt.ParameterObject;
+            account.Id = 99;
+            evnt.ResultObject = 999;
         }
 
+        /*
         [Test]
         public void PreCreateEventListener_must_be_fired()
         {
@@ -242,19 +282,6 @@
             Assert.That(account.Document.Id, Is.EqualTo(55));
         }
         
-        private class MyPreSelectEventListener : PreSelectEventListener
-        {
-            /// <summary>
-            /// Calls on the specified event.
-            /// </summary>
-            /// <param name="evnt">The event.</param>
-            /// <returns>Returns the parameter object</returns>
-            public override object OnEvent(PreSelectEvent evnt)
-            {
-                Assert.That(evnt.MappedStatement.Id, Is.EqualTo("SelectAccount"));
-                return (int)evnt.ParameterObject +1;
-           }
-        }
 
         private class MyPostSelectEventListener : PostSelectEventListener
         {
@@ -264,7 +291,7 @@
             /// </summary>
             /// <param name="evnt">The event.</param>
             /// <returns>Returns is used as the result object</returns>
-            public override object OnEvent(PostSelectEvent evnt)
+            public override object OnEvent(PostSelectEventArgs evnt)
             {
                 Assert.That(evnt.MappedStatement.Id, Is.EqualTo("SelectAccount"));
                 Account account = (Account)evnt.ResultObject;
@@ -282,7 +309,7 @@
             /// </summary>
             /// <param name="evnt">The event.</param>
             /// <returns>Returns is used as the parameter object</returns>
-            public override object OnEvent(PreInsertEvent evnt)
+            public override object OnEvent(PreInsertEventArgs evnt)
             {
                 Assert.That(evnt.MappedStatement.Id, Is.EqualTo("InsertAccount"));
                 Account account = (Account)evnt.ParameterObject;
@@ -300,7 +327,7 @@
             /// </summary>
             /// <param name="evnt">The event.</param>
             /// <returns>Returns is used as the result object</returns>
-            public override object OnEvent(PostInsertEvent evnt)
+            public override object OnEvent(PostInsertEventArgs evnt)
             {
                 Assert.That(evnt.MappedStatement.Id, Is.EqualTo("InsertAccount"));
                 Account account = (Account)evnt.ParameterObject;
@@ -317,7 +344,7 @@
             /// </summary>
             /// <param name="evnt">The event.</param>
             /// <returns>Returns is used as the parameter object</returns>
-            public override object OnEvent(PreUpdateOrDeleteEvent evnt)
+            public override object OnEvent(PreUpdateOrDeleteEventArgs evnt)
             {
                 Assert.That(evnt.MappedStatement.Id, Is.EqualTo("UpdateAccount"));
                 Account account = (Account)evnt.ParameterObject;
@@ -335,7 +362,7 @@
             /// </summary>
             /// <param name="evnt">The event.</param>
             /// <returns>Returns is used as the result object</returns>
-            public override object OnEvent(PostUpdateOrDeleteEvent evnt)
+            public override object OnEvent(PostUpdateOrDeleteEventArgs evnt)
             {
                 Assert.That(evnt.MappedStatement.Id, Is.EqualTo("UpdateAccount"));
                 Account account = (Account)evnt.ParameterObject;
@@ -419,6 +446,8 @@
 
                 return null;
             }
+
         }
+         */
     }
 }

Modified: ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Apache.Ibatis.DataMapper.20005.csproj
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Apache.Ibatis.DataMapper.20005.csproj?rev=665838&r1=665837&r2=665838&view=diff
==============================================================================
--- ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Apache.Ibatis.DataMapper.20005.csproj (original)
+++ ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Apache.Ibatis.DataMapper.20005.csproj Mon Jun  9 12:22:28 2008
@@ -179,36 +179,30 @@
     <Compile Include="MappedStatements\PropertStrategy\CircularStrategy.cs" />
     <Compile Include="MappedStatements\ResultStrategy\CirularStrategy.cs" />
     <Compile Include="Model\Events\BaseResultMapEvent.cs" />
+    <Compile Include="MappedStatements\IMappedStatementEvents.cs" />
     <Compile Include="Model\Events\IResultMapEvent.cs" />
     <Compile Include="Model\Events\IResultPropertyEvent.cs" />
-    <Compile Include="Model\Events\ISatementEvent.cs" />
     <Compile Include="Model\Events\Listeners\IResultMapEventListener.cs" />
     <Compile Include="Model\Events\Listeners\IResultPropertyEventListener.cs" />
-    <Compile Include="Model\Events\Listeners\IStatementEventListener.cs" />
-    <Compile Include="Model\Events\BaseSatementEvent.cs" />
     <Compile Include="Model\Events\Listeners\PostCreateEventListener.cs" />
-    <Compile Include="Model\Events\Listeners\PostInsertEventListener.cs" />
     <Compile Include="Model\Events\Listeners\PostPropertyEventListener.cs" />
-    <Compile Include="Model\Events\Listeners\PostSelectEventListener.cs" />
-    <Compile Include="Model\Events\Listeners\PostUpdateOrDeleteEventListener.cs" />
     <Compile Include="Model\Events\Listeners\PreCreateEventListener.cs" />
     <Compile Include="Model\Events\Listeners\PrePropertyEventListener.cs" />
-    <Compile Include="Model\Events\Listeners\PreSelectEventListener.cs" />
-    <Compile Include="Model\Events\Listeners\PreUpdateOrDeleteEventListener.cs" />
+    <Compile Include="MappedStatements\MappedStatementEventSupport.cs" />
     <Compile Include="Model\Events\PostCreateEvent.cs" />
     <Compile Include="Model\Events\PostPropertyEvent.cs" />
-    <Compile Include="Model\Events\PostStatementEvent.cs" />
+    <Compile Include="Model\Events\PostStatementEventArgs.cs" />
     <Compile Include="Model\Events\PreCreateEvent.cs" />
     <Compile Include="Model\Events\PrePropertyEvent.cs" />
-    <Compile Include="Model\Events\PreStatementEvent.cs" />
+    <Compile Include="Model\Events\PreStatementEventArgs.cs" />
+    <Compile Include="Model\Events\BaseStatementEventArgs.cs" />
     <Compile Include="Model\Events\StatementEventType.cs" />
-    <Compile Include="Model\Events\PostInsertEvent.cs" />
-    <Compile Include="Model\Events\PostSelectEvent.cs" />
-    <Compile Include="Model\Events\PostUpdateOrDeleteEvent.cs" />
-    <Compile Include="Model\Events\PreInsertEvent.cs" />
-    <Compile Include="Model\Events\Listeners\PreInsertEventListener.cs" />
-    <Compile Include="Model\Events\PreSelectEvent.cs" />
-    <Compile Include="Model\Events\PreUpdateOrDeleteEvent.cs" />
+    <Compile Include="Model\Events\PostInsertEventArgs.cs" />
+    <Compile Include="Model\Events\PostSelectEventArgs.cs" />
+    <Compile Include="Model\Events\PostUpdateOrDeleteEventArgs.cs" />
+    <Compile Include="Model\Events\PreInsertEventArgs.cs" />
+    <Compile Include="Model\Events\PreSelectEventArgs.cs" />
+    <Compile Include="Model\Events\PreUpdateOrDeleteEventArgs.cs" />
     <Compile Include="Model\ParameterMapping\InlineParemeterMapBuilder.cs" />
     <Compile Include="Model\ResultMapping\ArgumentPropertyCollection.cs" />
     <Compile Include="Model\Sql\External\ExternalSql.cs" />
@@ -630,6 +624,7 @@
     <None Include="Configuration\Module\ModuleDiagram.cd" />
     <None Include="DataMapperDiagram.cd" />
     <None Include="MappedStatements\ResultStrategy\ClassDiagram.cd" />
+    <None Include="Model\Events\Events.cd" />
     <EmbeddedResource Include="SqlMap.xsd">
       <SubType>Designer</SubType>
     </EmbeddedResource>

Modified: ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/CachingStatement.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/CachingStatement.cs?rev=665838&r1=665837&r2=665838&view=diff
==============================================================================
--- ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/CachingStatement.cs (original)
+++ ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/CachingStatement.cs Mon Jun  9 12:22:28 2008
@@ -46,9 +46,9 @@
     /// Acts as a decorator arounf an <see cref="IMappedStatement"/> to add cache functionality
 	/// </summary>
     [DebuggerDisplay("MappedStatement: {mappedStatement.Id}")]
-    public sealed class CachingStatement : IMappedStatement
+    public sealed class CachingStatement : MappedStatementEventSupport, IMappedStatement
 	{
-		private MappedStatement mappedStatement =null;
+		private readonly MappedStatement mappedStatement =null;
 
 		/// <summary>
 		/// Event launch on exceute query
@@ -66,67 +66,6 @@
 
 		#region IMappedStatement Members
 
-        /// <summary>
-        /// Gets or sets the pre insert listener.
-        /// </summary>
-        /// <value>The pre insert listener.</value>
-        public IStatementEventListener<PreInsertEvent>[] PreInsertListeners
-        {
-            get { return mappedStatement.PreInsertListeners; }
-            set { mappedStatement.PreInsertListeners = value; }
-        }
-
-        /// <summary>
-        /// Gets or sets the post insert listener.
-        /// </summary>
-        /// <value>The post insert listener.</value>
-        public IStatementEventListener<PostInsertEvent>[] PostInsertListeners
-        {
-            get { return mappedStatement.PostInsertListeners; }
-            set { mappedStatement.PostInsertListeners = value; }
-        }
-
-        /// <summary>
-        /// Gets or sets the pre update listener.
-        /// </summary>
-        /// <value>The pre update listener.</value>
-        public IStatementEventListener<PreUpdateOrDeleteEvent>[] PreUpdateOrDeleteListeners
-        {
-            get { return mappedStatement.PreUpdateOrDeleteListeners; }
-            set { mappedStatement.PreUpdateOrDeleteListeners = value; }
-        }
-
-        /// <summary>
-        /// Gets or sets the post update listener.
-        /// </summary>
-        /// <value>The post update listener.</value>
-        public IStatementEventListener<PostUpdateOrDeleteEvent>[] PostUpdateOrDeleteListeners
-        {
-            get { return mappedStatement.PostUpdateOrDeleteListeners; }
-            set { mappedStatement.PostUpdateOrDeleteListeners = value; }
-        }
-
-        /// <summary>
-        /// Gets or sets the pre select listener.
-        /// </summary>
-        /// <value>The pre select listener.</value>
-        public IStatementEventListener<PreSelectEvent>[] PreSelectListeners
-        {
-            get { return mappedStatement.PreSelectListeners; }
-            set { mappedStatement.PreSelectListeners = value; }
-        }
-
-        /// <summary>
-        /// Gets or sets the post select listener.
-        /// </summary>
-        /// <value>The post select listener.</value>
-        public IStatementEventListener<PostSelectEvent>[] PostSelectListeners
-        {
-            get { return mappedStatement.PostSelectListeners; }
-            set { mappedStatement.PostSelectListeners = value; }
-        }
-
-
 		/// <summary>
 		/// The IPreparedCommand to use
 		/// </summary>
@@ -306,7 +245,7 @@
         {
             IList list = null;
 
-            object param = mappedStatement.LaunchPreEvent(mappedStatement.PreSelectListeners, parameterObject);
+            object param = RaisePreEvent<PreSelectEventArgs>(PreSelectEvent, parameterObject);
 
             RequestScope request = Statement.Sql.GetRequestScope(this, param, session);
 
@@ -322,7 +261,7 @@
                 Statement.CacheModel[cacheKey] = list;
             }
 
-            return mappedStatement.LaunchPostEvent(mappedStatement.PostSelectListeners, param, list);
+            return RaisePostEvent<IList, PostSelectEventArgs>(PostSelectEvent, param, list);
         }
         #endregion
 
@@ -349,7 +288,7 @@
         {
             IList<T> list = null;
 
-            object param = mappedStatement.LaunchPreEvent(mappedStatement.PreSelectListeners, parameterObject);
+            object param = RaisePreEvent<PreSelectEventArgs>(PreSelectEvent, parameterObject);
 
             RequestScope request = Statement.Sql.GetRequestScope(this, param, session);
 
@@ -364,8 +303,7 @@
                 list = mappedStatement.RunQueryForList<T>(request, session, param);
                 Statement.CacheModel[cacheKey] = list;
             }
-
-            return mappedStatement.LaunchPostEvent(mappedStatement.PostSelectListeners, param, list);
+            return RaisePostEvent<IList<T>, PostSelectEventArgs>(PostSelectEvent, param, list);
         }
         #endregion
 
@@ -383,7 +321,7 @@
 		{
 			object obj = null;
 
-            object param = mappedStatement.LaunchPreEvent(mappedStatement.PreSelectListeners, parameterObject);
+            object param = RaisePreEvent<PreSelectEventArgs>(PreSelectEvent, parameterObject);
 
             RequestScope request = Statement.Sql.GetRequestScope(this, param, session);
 
@@ -405,7 +343,7 @@
 				Statement.CacheModel[cacheKey] = obj;
 			}
 
-            return mappedStatement.LaunchPostEvent(mappedStatement.PostSelectListeners, param, obj);
+            return RaisePostEvent<object, PostSelectEventArgs>(PostSelectEvent, param, obj);
         }
         
         #endregion
@@ -424,7 +362,7 @@
         {
             T obj = default(T);
 
-            object param = mappedStatement.LaunchPreEvent(mappedStatement.PreSelectListeners, parameterObject);
+            object param = RaisePreEvent<PreSelectEventArgs>(PreSelectEvent, parameterObject);
 
             RequestScope request = Statement.Sql.GetRequestScope(this, param, session);
 
@@ -450,7 +388,7 @@
                 Statement.CacheModel[cacheKey] = obj;
             }
 
-            return mappedStatement.LaunchPostEvent(mappedStatement.PostSelectListeners, param, obj);
+            return RaisePostEvent<T, PostSelectEventArgs>(PostSelectEvent, param, obj);
         }
         
         #endregion

Modified: ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/IMappedStatement.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/IMappedStatement.cs?rev=665838&r1=665837&r2=665838&view=diff
==============================================================================
--- ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/IMappedStatement.cs (original)
+++ ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/IMappedStatement.cs Mon Jun  9 12:22:28 2008
@@ -45,7 +45,7 @@
 	/// <summary>
 	/// Summary description for IMappedStatement.
 	/// </summary>
-	public interface IMappedStatement
+	public interface IMappedStatement : IMappedStatementEvents
 	{
 
 		#region Event
@@ -82,40 +82,6 @@
         /// <value>The model store.</value>
         IModelStore ModelStore { get; }
 
-        /// <summary>
-        /// Gets or sets the pre insert listener.
-        /// </summary>
-        /// <value>The pre insert listener.</value>
-        IStatementEventListener<PreInsertEvent>[] PreInsertListeners { get; set;}
-        /// <summary>
-        /// Gets or sets the post insert listener.
-        /// </summary>
-        /// <value>The post insert listener.</value>
-        IStatementEventListener<PostInsertEvent>[] PostInsertListeners { get; set;}
-
-        /// <summary>
-        /// Gets or sets the pre update listener.
-        /// </summary>
-        /// <value>The pre update listener.</value>
-        IStatementEventListener<PreUpdateOrDeleteEvent>[] PreUpdateOrDeleteListeners { get; set;}
-        /// <summary>
-        /// Gets or sets the post update listener.
-        /// </summary>
-        /// <value>The post update listener.</value>
-        IStatementEventListener<PostUpdateOrDeleteEvent>[] PostUpdateOrDeleteListeners { get; set;}
-
-        /// <summary>
-        /// Gets or sets the pre select listener.
-        /// </summary>
-        /// <value>The pre select listener.</value>
-        IStatementEventListener<PreSelectEvent>[] PreSelectListeners { get; set;}
-
-        /// <summary>
-        /// Gets or sets the post select listener.
-        /// </summary>
-        /// <value>The post select listener.</value>
-        IStatementEventListener<PostSelectEvent>[] PostSelectListeners { get; set;}
-
 		#endregion
 
 		#region ExecuteQueryForMap

Added: ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/IMappedStatementEvents.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/IMappedStatementEvents.cs?rev=665838&view=auto
==============================================================================
--- ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/IMappedStatementEvents.cs (added)
+++ ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/IMappedStatementEvents.cs Mon Jun  9 12:22:28 2008
@@ -0,0 +1,44 @@
+#region Apache Notice
+/*****************************************************************************
+ * $Revision: 476843 $
+ * $LastChangedDate: 2008-06-08 20:20:44 +0200 (dim., 08 juin 2008) $
+ * $LastChangedBy: gbayon $
+ * 
+ * iBATIS.NET Data Mapper
+ * Copyright (C) 2008/2005 - The Apache Software Foundation
+ *  
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * 
+ ********************************************************************************/
+#endregion
+
+using System;
+using System.ComponentModel;
+using Apache.Ibatis.DataMapper.Model.Events;
+
+namespace Apache.Ibatis.DataMapper.MappedStatements
+{
+    /// <summary>
+    /// Defines the contract for events generated during statement execution.
+    /// </summary>
+    public interface IMappedStatementEvents
+    {
+        event EventHandler<PreInsertEventArgs> PreInsert;
+        event EventHandler<PreSelectEventArgs> PreSelect;
+        event EventHandler<PreUpdateOrDeleteEventArgs> PreUpdateOrDelete;
+        event EventHandler<PostInsertEventArgs> PostInsert;
+        event EventHandler<PostSelectEventArgs> PostSelect;
+        event EventHandler<PostUpdateOrDeleteEventArgs> PostUpdateOrDelete;
+    }
+}

Modified: ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/MappedStatement.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/MappedStatement.cs?rev=665838&r1=665837&r2=665838&view=diff
==============================================================================
--- ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/MappedStatement.cs (original)
+++ ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/MappedStatement.cs Mon Jun  9 12:22:28 2008
@@ -58,7 +58,7 @@
     /// Base implementation of <see cref="IMappedStatement"/>.
     /// </summary>
     [DebuggerDisplay("MappedStatement: {Id}")]
-    public class MappedStatement : IMappedStatement
+    public class MappedStatement : MappedStatementEventSupport, IMappedStatement
     {
         /// <summary>
         /// Event launch on execute query
@@ -70,16 +70,6 @@
         private readonly IModelStore modelStore = null;
         private readonly IPreparedCommand preparedCommand = null;
         private readonly IResultStrategy resultStrategy = null;
-
-        protected IStatementEventListener<PreInsertEvent>[] preInsertListeners = new IStatementEventListener<PreInsertEvent>[] { };
-        protected IStatementEventListener<PostInsertEvent>[] postInsertListeners = new IStatementEventListener<PostInsertEvent>[] { };
-
-        protected IStatementEventListener<PreUpdateOrDeleteEvent>[] preUpdateOrDeleteListeners = new IStatementEventListener<PreUpdateOrDeleteEvent>[] { };
-        protected IStatementEventListener<PostUpdateOrDeleteEvent>[] postUpdateOrDeleteListeners = new IStatementEventListener<PostUpdateOrDeleteEvent>[] { };
-
-        protected IStatementEventListener<PreSelectEvent>[] preSelectListeners = new IStatementEventListener<PreSelectEvent>[] { };
-        protected IStatementEventListener<PostSelectEvent>[] postSelectListeners = new IStatementEventListener<PostSelectEvent>[] { };
-
         #endregion
 
         /// <summary>
@@ -99,66 +89,6 @@
 
         #region properties
         /// <summary>
-        /// Gets or sets the pre insert listener.
-        /// </summary>
-        /// <value>The pre insert listener.</value>
-        public IStatementEventListener<PreInsertEvent>[] PreInsertListeners
-        {
-            get { return preInsertListeners; }
-            set { preInsertListeners = value; }
-        }
-
-        /// <summary>
-        /// Gets or sets the post insert listener.
-        /// </summary>
-        /// <value>The post insert listener.</value>
-        public IStatementEventListener<PostInsertEvent>[] PostInsertListeners
-        {
-            get { return postInsertListeners; }
-            set { postInsertListeners = value; }
-        }
-
-        /// <summary>
-        /// Gets or sets the pre update listener.
-        /// </summary>
-        /// <value>The pre update listener.</value>
-        public IStatementEventListener<PreUpdateOrDeleteEvent>[] PreUpdateOrDeleteListeners
-        {
-            get { return preUpdateOrDeleteListeners; }
-            set { preUpdateOrDeleteListeners = value; }
-        }
-
-        /// <summary>
-        /// Gets or sets the post update listener.
-        /// </summary>
-        /// <value>The post update listener.</value>
-        public IStatementEventListener<PostUpdateOrDeleteEvent>[] PostUpdateOrDeleteListeners
-        {
-            get { return postUpdateOrDeleteListeners; }
-            set { postUpdateOrDeleteListeners = value; }
-        }
-
-        /// <summary>
-        /// Gets or sets the pre select listener.
-        /// </summary>
-        /// <value>The pre select listener.</value>
-        public IStatementEventListener<PreSelectEvent>[] PreSelectListeners
-        {
-            get { return preSelectListeners; }
-            set { preSelectListeners = value; }
-        }
-
-        /// <summary>
-        /// Gets or sets the post select listener.
-        /// </summary>
-        /// <value>The post select listener.</value>
-        public IStatementEventListener<PostSelectEvent>[] PostSelectListeners
-        {
-            get { return postSelectListeners; }
-            set { postSelectListeners = value; }
-        }
-
-        /// <summary>
         /// The IPreparedCommand to use
         /// </summary>
         public IPreparedCommand PreparedCommand
@@ -208,14 +138,14 @@
         {
             object obj = null;
 
-            object param = LaunchPreEvent(preSelectListeners, parameterObject);
+            object param = RaisePreEvent<PreSelectEventArgs>(PreSelectEvent, parameterObject);
 
             RequestScope request = statement.Sql.GetRequestScope(this, param, session);
             preparedCommand.Create(request, session, Statement, param);
 
             obj = RunQueryForObject(request, session, param, resultObject);
 
-            return LaunchPostEvent(postSelectListeners, param, obj);
+            return RaisePostEvent<object, PostSelectEventArgs>(PostSelectEvent, param, obj);
         }
 
         /// <summary>
@@ -282,7 +212,7 @@
         {
             T obj = default(T);
 
-            object param = LaunchPreEvent(preSelectListeners, parameterObject);
+            object param = RaisePreEvent<PreSelectEventArgs>(PreSelectEvent, parameterObject);
 
             RequestScope request = statement.Sql.GetRequestScope(this, param, session);
 
@@ -290,7 +220,7 @@
 
             obj = RunQueryForObject<T>(request, session, param, resultObject);
 
-            return LaunchPostEvent(postSelectListeners, param, obj);
+            return RaisePostEvent<T, PostSelectEventArgs>(PostSelectEvent, param, obj);
         }
 
 
@@ -356,7 +286,7 @@
         /// <param name="rowDelegate"></param>
         public virtual IList ExecuteQueryForRowDelegate(ISession session, object parameterObject, RowDelegate rowDelegate)
         {
-            object param = LaunchPreEvent(preSelectListeners, parameterObject);
+            object param = RaisePreEvent<PreSelectEventArgs>(PreSelectEvent, parameterObject);
 
             RequestScope request = statement.Sql.GetRequestScope(this, param, session);
 
@@ -369,7 +299,7 @@
 
             IList list = RunQueryForList(request, session, param, null, rowDelegate);
 
-            return LaunchPostEvent(postSelectListeners, param, list);
+            return RaisePostEvent<IList, PostSelectEventArgs>(PostSelectEvent, param, list);
         }
 
         /// <summary>
@@ -406,7 +336,7 @@
         /// <returns>A List of result objects.</returns>
         public virtual IList ExecuteQueryForList(ISession session, object parameterObject)
         {
-            object param = LaunchPreEvent(preSelectListeners, parameterObject);
+            object param = RaisePreEvent<PreSelectEventArgs>(PreSelectEvent, parameterObject);
 
             RequestScope request = statement.Sql.GetRequestScope(this, param, session);
 
@@ -414,7 +344,7 @@
 
             IList list = RunQueryForList(request, session, param);
 
-            return LaunchPostEvent(postSelectListeners, param, list);
+            return RaisePostEvent<IList, PostSelectEventArgs>(PostSelectEvent, param, list);
         }
 
         /// <summary>
@@ -425,7 +355,7 @@
         /// <param name="resultObject">A strongly typed collection of result objects.</param>
         public virtual void ExecuteQueryForList(ISession session, object parameterObject, IList resultObject)
         {
-            object param = LaunchPreEvent(preSelectListeners, parameterObject);
+            object param = RaisePreEvent<PreSelectEventArgs>(PreSelectEvent, parameterObject);
 
             RequestScope request = statement.Sql.GetRequestScope(this, param, session);
 
@@ -433,7 +363,7 @@
 
             RunQueryForList(request, session, param, resultObject, null);
 
-            LaunchPostEvent(postSelectListeners, param, resultObject);
+            RaisePostEvent<IList, PostSelectEventArgs>(PostSelectEvent, param, resultObject);
         }
 
         /// <summary>
@@ -572,7 +502,7 @@
         /// <param name="rowDelegate"></param>
         public virtual IList<T> ExecuteQueryForRowDelegate<T>(ISession session, object parameterObject, RowDelegate<T> rowDelegate)
         {
-            object param = LaunchPreEvent(preSelectListeners, parameterObject);
+            object param = RaisePreEvent<PreSelectEventArgs>(PreSelectEvent, parameterObject);
 
             RequestScope request = statement.Sql.GetRequestScope(this, param, session);
 
@@ -584,7 +514,7 @@
             }
             IList<T> list = RunQueryForList<T>(request, session, param, null, rowDelegate);
 
-            return LaunchPostEvent(postSelectListeners, param, list);
+            return RaisePostEvent<IList<T>, PostSelectEventArgs>(PostSelectEvent, param, list);
         }
 
 
@@ -596,7 +526,7 @@
         /// <returns>A List of result objects.</returns>
         public virtual IList<T> ExecuteQueryForList<T>(ISession session, object parameterObject)
         {
-            object param = LaunchPreEvent(preSelectListeners, parameterObject);
+            object param = RaisePreEvent<PreSelectEventArgs>(PreSelectEvent, parameterObject);
 
             RequestScope request = statement.Sql.GetRequestScope(this, param, session);
 
@@ -604,7 +534,7 @@
 
             IList<T> list = RunQueryForList<T>(request, session, param, null, null);
 
-            return LaunchPostEvent(postSelectListeners, param, list);
+            return RaisePostEvent<IList<T>, PostSelectEventArgs>(PostSelectEvent, param, list);
         }
 
         /// <summary>
@@ -615,7 +545,7 @@
         /// <param name="resultObject">A strongly typed collection of result objects.</param>
         public virtual void ExecuteQueryForList<T>(ISession session, object parameterObject, IList<T> resultObject)
         {
-            object param = LaunchPreEvent(preSelectListeners, parameterObject);
+            object param = RaisePreEvent<PreSelectEventArgs>(PreSelectEvent, parameterObject);
 
             RequestScope request = statement.Sql.GetRequestScope(this, param, session);
 
@@ -623,7 +553,7 @@
 
             RunQueryForList<T>(request, session, param, resultObject, null);
 
-            LaunchPostEvent(postSelectListeners, param, resultObject);
+            RaisePostEvent<IList<T>, PostSelectEventArgs>(PostSelectEvent, param, resultObject);
         }
 
         /// <summary>
@@ -746,8 +676,6 @@
             return list;
         }
 
-
-
         #endregion
 
         #region ExecuteUpdate, ExecuteInsert
@@ -763,7 +691,7 @@
         {
             int rows = 0; // the number of rows affected
 
-            object param = LaunchPreEvent(preUpdateOrDeleteListeners, parameterObject);
+            object param = RaisePreEvent<PreUpdateOrDeleteEventArgs>(PreUpdateOrDeleteEvent, parameterObject);
 
             RequestScope request = statement.Sql.GetRequestScope(this, param, session);
 
@@ -778,7 +706,7 @@
 
             RaiseExecuteEvent();
 
-            return LaunchPostEvent(postUpdateOrDeleteListeners, param, rows);
+            return RaisePostEvent<int, PostUpdateOrDeleteEventArgs>(PostUpdateOrDeleteEvent, param, rows);
         }
 
 
@@ -794,7 +722,7 @@
             object generatedKey = null;
             SelectKey selectKeyStatement = null;
 
-            object param = LaunchPreEvent(preInsertListeners, parameterObject);
+            object param = RaisePreEvent<PreInsertEventArgs>(PreInsertEvent, parameterObject);
 
             RequestScope request = statement.Sql.GetRequestScope(this, param, session);
 
@@ -861,7 +789,7 @@
 
             RaiseExecuteEvent();
 
-            return LaunchPostEvent(postInsertListeners, param, generatedKey);
+            return RaisePostEvent<object, PostInsertEventArgs>(PostInsertEvent, param, generatedKey);
         }
 
         #endregion
@@ -1185,54 +1113,6 @@
             Execute(this, e);
         }
 
-        /// <summary>
-        /// Launches the pre event.
-        /// </summary>
-        /// <param name="listeners">The listeners.</param>
-        /// <param name="parameterObject">The parameter object.</param>
-        internal object LaunchPreEvent<TEvent>(IStatementEventListener<TEvent>[] listeners, 
-            object parameterObject) where TEvent : PreStatementEvent, new()
-        {
-            object param = parameterObject;
-            if (listeners.Length > 0)
-            {
-                TEvent evnt = new TEvent();
-                evnt.MappedStatement = this;
-                evnt.ParameterObject = param;
-                foreach (IStatementEventListener<TEvent> listener in listeners)
-                {
-                    evnt.ParameterObject = listener.OnEvent(evnt);
-                }
-                param = evnt.ParameterObject;
-            }
-            return param;
-        }
 
-        /// <summary>
-        /// Launches the pre event.
-        /// </summary>
-        /// <param name="listeners">The listeners.</param>
-        /// <param name="parameterObject">The parameter object.</param>
-        /// <param name="resultObject">The result object.</param>
-        /// <returns></returns>
-        internal TType LaunchPostEvent<TType, TEvent>(IStatementEventListener<TEvent>[] listeners, 
-            object parameterObject,
-            TType resultObject) where TEvent : PostStatementEvent, new()
-        {
-            TType result = resultObject;
-            if (listeners.Length > 0)
-            {
-                TEvent evnt = new TEvent();
-                evnt.MappedStatement = this;
-                evnt.ResultObject = result;
-                evnt.ParameterObject = parameterObject;
-                foreach (IStatementEventListener<TEvent> listener in listeners)
-                {
-                    evnt.ResultObject = listener.OnEvent(evnt);
-                }
-                result = (TType)evnt.ResultObject;
-            }
-            return result;
-        }
     }
 }

Added: ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/MappedStatementEventSupport.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/MappedStatementEventSupport.cs?rev=665838&view=auto
==============================================================================
--- ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/MappedStatementEventSupport.cs (added)
+++ ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/MappedStatementEventSupport.cs Mon Jun  9 12:22:28 2008
@@ -0,0 +1,154 @@
+#region Apache Notice
+/*****************************************************************************
+ * $Revision: 476843 $
+ * $LastChangedDate: 2008-06-08 20:20:44 +0200 (dim., 08 juin 2008) $
+ * $LastChangedBy: gbayon $
+ * 
+ * iBATIS.NET Data Mapper
+ * Copyright (C) 2008/2005 - The Apache Software Foundation
+ *  
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * 
+ ********************************************************************************/
+#endregion
+
+using System;
+using System.ComponentModel;
+using Apache.Ibatis.DataMapper.MappedStatements;
+using Apache.Ibatis.DataMapper.Model.Events;
+
+namespace Apache.Ibatis.DataMapper.MappedStatements
+{
+    /// <summary>
+    /// Base implementation for <see cref="IMappedStatementEvents"/>
+    /// </summary>
+    [Serializable]
+    public abstract class MappedStatementEventSupport : IMappedStatementEvents
+    {
+        protected static readonly object PreInsertEvent = new object();
+        protected static readonly object PreSelectEvent = new object();
+        protected static readonly object PreUpdateOrDeleteEvent = new object();
+        protected static readonly object PostInsertEvent = new object();
+        protected static readonly object PostSelectEvent = new object();
+        protected static readonly object PostUpdateOrDeleteEvent = new object();
+
+        private readonly EventHandlerList events = new EventHandlerList();
+
+        #region IMappedStatementEvents Members
+
+        /// <summary>
+        /// Will handle an <see cref="PreInsertEventArgs"/>. 
+        /// </summary>
+        public event EventHandler<PreInsertEventArgs> PreInsert
+        {
+            add { events.AddHandler(PreInsertEvent, value); }
+            remove { events.RemoveHandler(PreInsertEvent, value); }
+        }
+
+        /// <summary>
+        /// Will handle an <see cref="PreSelectEventArgs"/>. 
+        /// </summary>
+        public event EventHandler<PreSelectEventArgs> PreSelect
+        {
+            add { events.AddHandler(PreSelectEvent, value); }
+            remove { events.RemoveHandler(PreSelectEvent, value); }
+        }
+
+        /// <summary>
+        /// Will handle an <see cref="PreUpdateOrDeleteEventArgs"/>. 
+        /// </summary>
+        public event EventHandler<PreUpdateOrDeleteEventArgs> PreUpdateOrDelete
+        {
+            add { events.AddHandler(PreUpdateOrDeleteEvent, value); }
+            remove { events.RemoveHandler(PreUpdateOrDeleteEvent, value); }
+        }
+
+        /// <summary>
+        /// Will handle an <see cref="PostInsertEventArgs"/>. 
+        /// </summary>
+        public event EventHandler<PostInsertEventArgs> PostInsert
+        {
+            add { events.AddHandler(PostInsertEvent, value); }
+            remove { events.RemoveHandler(PostInsertEvent, value); }
+        }
+
+        /// <summary>
+        /// Will handle an <see cref="PostSelectEventArgs"/>. 
+        /// </summary>
+        public event EventHandler<PostSelectEventArgs> PostSelect
+        {
+            add { events.AddHandler(PostSelectEvent, value); }
+            remove { events.RemoveHandler(PostSelectEvent, value); }
+        }
+
+        /// <summary>
+        /// Will handle an <see cref="PostUpdateOrDeleteEventArgs"/>. 
+        /// </summary>
+        public event EventHandler<PostUpdateOrDeleteEventArgs> PostUpdateOrDelete
+        {
+            add { events.AddHandler(PostUpdateOrDeleteEvent, value); }
+            remove { events.RemoveHandler(PostUpdateOrDeleteEvent, value); }
+        }
+
+        #endregion
+
+        /// <summary>
+        /// Raises the pre event.
+        /// </summary>
+        /// <param name="key">The key.</param>
+        /// <param name="parameterObject">The parameter object.</param>
+        /// <returns>Returns is used as the parameter object</returns>
+        protected virtual object RaisePreEvent<TEvent>(object key,  object parameterObject)
+            where TEvent : PreStatementEventArgs, new()
+        {
+            EventHandler<TEvent> handlers = (EventHandler<TEvent>)events[key];
+
+            TEvent eventArgs = new TEvent();
+            eventArgs.ParameterObject = parameterObject;
+
+            // should process _all_ the listeners
+            if (handlers != null)
+            {
+                handlers(this, eventArgs);            
+            }
+
+            return eventArgs.ParameterObject;
+        }
+
+        /// <summary>
+        /// Raises the post event.
+        /// </summary>
+        /// <param name="key">The key.</param>
+        /// <param name="parameterObject">The parameter object.</param>
+        /// <param name="resultObject">The result object.</param>
+        /// <returns>Returns is used as the result object</returns>
+        protected virtual TType RaisePostEvent<TType, TEvent>(object key, object parameterObject, TType resultObject)
+            where TEvent : PostStatementEventArgs, new()
+        {
+            EventHandler<TEvent> handlers = (EventHandler<TEvent>)events[key];
+
+            TEvent eventArgs = new TEvent();
+            eventArgs.ParameterObject = parameterObject;
+            eventArgs.ResultObject = resultObject;
+
+            // should process _all_ the listeners
+            if (handlers != null)
+            {
+                handlers(this, eventArgs);
+            }
+
+            return (TType)eventArgs.ResultObject;
+        }
+    }
+}

Added: ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/BaseStatementEventArgs.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/BaseStatementEventArgs.cs?rev=665838&view=auto
==============================================================================
--- ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/BaseStatementEventArgs.cs (added)
+++ ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/BaseStatementEventArgs.cs Mon Jun  9 12:22:28 2008
@@ -0,0 +1,59 @@
+#region Apache Notice
+/*****************************************************************************
+ * $Revision: 476843 $
+ * $LastChangedDate: 2008-06-08 20:20:44 +0200 (dim., 08 juin 2008) $
+ * $LastChangedBy: gbayon $
+ * 
+ * iBATIS.NET Data Mapper
+ * Copyright (C) 2008/2005 - The Apache Software Foundation
+ *  
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * 
+ ********************************************************************************/
+#endregion
+
+using System;
+using Apache.Ibatis.DataMapper.MappedStatements;
+
+namespace Apache.Ibatis.DataMapper.Model.Events
+{
+    /// <summary>
+    /// Base class for event statement
+    /// </summary>
+    public abstract class BaseStatementEventArgs : EventArgs
+    {
+        private object parameterObject = null;
+
+        #region ISatementEvent Members
+
+        /// <summary>
+        /// Gets or sets the parameter object.
+        /// </summary>
+        /// <value>The parameter object.</value>
+        public object ParameterObject
+        {
+            get { return parameterObject; }
+            set { parameterObject = value; }
+        }
+
+        /// <summary>
+        /// Gets the event type.
+        /// </summary>
+        /// <value>The type.</value>
+        public abstract StatementEventType Type { get; }
+
+
+        #endregion
+    }
+}

Added: ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/Events.cd
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/Events.cd?rev=665838&view=auto
==============================================================================
--- ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/Events.cd (added)
+++ ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/Events.cd Mon Jun  9 12:22:28 2008
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ClassDiagram MajorVersion="1" MinorVersion="1">
+  <Font Name="Tahoma" Size="8.25" />
+  <Class Name="Apache.Ibatis.DataMapper.Model.Events.BaseStatementEventArgs">
+    <Position X="5.5" Y="0.75" Width="2.25" />
+    <TypeIdentifier>
+      <FileName>Model\Events\BaseStatementEventArgs.cs</FileName>
+      <HashCode>AAABAAAAAAAAAAAAAAgAAAAAAAAAAAAAAQgAAAAAAQA=</HashCode>
+    </TypeIdentifier>
+    <Compartments>
+      <Compartment Name="Fields" Collapsed="true" />
+    </Compartments>
+  </Class>
+  <Class Name="Apache.Ibatis.DataMapper.Model.Events.PreStatementEventArgs">
+    <Position X="3" Y="3.25" Width="1.75" />
+    <TypeIdentifier>
+      <FileName>Model\Events\PreStatementEventArgs.cs</FileName>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="Apache.Ibatis.DataMapper.Model.Events.PostStatementEventArgs">
+    <Position X="9" Y="3.25" Width="2" />
+    <TypeIdentifier>
+      <FileName>Model\Events\PostStatementEventArgs.cs</FileName>
+      <HashCode>AAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAA=</HashCode>
+    </TypeIdentifier>
+    <Compartments>
+      <Compartment Name="Fields" Collapsed="true" />
+    </Compartments>
+  </Class>
+  <Class Name="Apache.Ibatis.DataMapper.Model.Events.PreInsertEventArgs">
+    <Position X="1.5" Y="4.75" Width="1.75" />
+    <TypeIdentifier>
+      <FileName>Model\Events\PreInsertEventArgs.cs</FileName>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAA=</HashCode>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="Apache.Ibatis.DataMapper.Model.Events.PreSelectEventArgs">
+    <Position X="4.25" Y="4.75" Width="1.75" />
+    <TypeIdentifier>
+      <FileName>Model\Events\PreSelectEventArgs.cs</FileName>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAA=</HashCode>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="Apache.Ibatis.DataMapper.Model.Events.PreUpdateOrDeleteEventArgs">
+    <Position X="2.75" Y="6.25" Width="2.25" />
+    <TypeIdentifier>
+      <FileName>Model\Events\PreUpdateOrDeleteEventArgs.cs</FileName>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAA=</HashCode>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="Apache.Ibatis.DataMapper.Model.Events.PostInsertEventArgs">
+    <Position X="7" Y="5.25" Width="1.75" />
+    <TypeIdentifier>
+      <FileName>Model\Events\PostInsertEventArgs.cs</FileName>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAA=</HashCode>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="Apache.Ibatis.DataMapper.Model.Events.PostSelectEventArgs">
+    <Position X="11.25" Y="5.25" Width="1.75" />
+    <TypeIdentifier>
+      <FileName>Model\Events\PostSelectEventArgs.cs</FileName>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAA=</HashCode>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="Apache.Ibatis.DataMapper.Model.Events.PostUpdateOrDeleteEventArgs">
+    <Position X="9" Y="6.25" Width="2" />
+    <TypeIdentifier>
+      <FileName>Model\Events\PostUpdateOrDeleteEventArgs.cs</FileName>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAA=</HashCode>
+    </TypeIdentifier>
+  </Class>
+</ClassDiagram>
\ No newline at end of file

Copied: ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostInsertEventArgs.cs (from r664536, ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostInsertEvent.cs)
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostInsertEventArgs.cs?p2=ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostInsertEventArgs.cs&p1=ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostInsertEvent.cs&r1=664536&r2=665838&rev=665838&view=diff
==============================================================================
--- ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostInsertEvent.cs (original)
+++ ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostInsertEventArgs.cs Mon Jun  9 12:22:28 2008
@@ -26,9 +26,9 @@
 namespace Apache.Ibatis.DataMapper.Model.Events
 {
     /// <summary>
-    /// Lauchs after excuting an insert statement
+    /// Event launchs after excuting an insert statement
     /// </summary>
-    public sealed class PostInsertEvent : PostStatementEvent
+    public sealed class PostInsertEventArgs : PostStatementEventArgs
     {
         /// <summary>
         /// Gets the event type.

Copied: ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostSelectEventArgs.cs (from r664536, ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostSelectEvent.cs)
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostSelectEventArgs.cs?p2=ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostSelectEventArgs.cs&p1=ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostSelectEvent.cs&r1=664536&r2=665838&rev=665838&view=diff
==============================================================================
--- ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostSelectEvent.cs (original)
+++ ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostSelectEventArgs.cs Mon Jun  9 12:22:28 2008
@@ -26,9 +26,9 @@
 namespace Apache.Ibatis.DataMapper.Model.Events
 {
     /// <summary>
-    /// Lauchs before excuting a select statement
+    /// Event lauchs after excuting a select statement
     /// </summary>
-    public sealed class PostSelectEvent : PostStatementEvent
+    public sealed class PostSelectEventArgs : PostStatementEventArgs
     {
         /// <summary>
         /// Gets the event type.

Copied: ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostStatementEventArgs.cs (from r664536, ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostStatementEvent.cs)
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostStatementEventArgs.cs?p2=ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostStatementEventArgs.cs&p1=ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostStatementEvent.cs&r1=664536&r2=665838&rev=665838&view=diff
==============================================================================
--- ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostStatementEvent.cs (original)
+++ ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostStatementEventArgs.cs Mon Jun  9 12:22:28 2008
@@ -26,9 +26,9 @@
 namespace Apache.Ibatis.DataMapper.Model.Events
 {
     /// <summary>
-    /// Base class for post <see cref="ISatementEvent"/>
+    /// Base class for post <see cref="BaseStatementEventArgs"/>
     /// </summary>
-    public abstract class PostStatementEvent : BaseSatementEvent
+    public abstract class PostStatementEventArgs : BaseStatementEventArgs
     {
         private object resultObject = null;
 

Copied: ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostUpdateOrDeleteEventArgs.cs (from r664536, ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostUpdateOrDeleteEvent.cs)
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostUpdateOrDeleteEventArgs.cs?p2=ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostUpdateOrDeleteEventArgs.cs&p1=ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostUpdateOrDeleteEvent.cs&r1=664536&r2=665838&rev=665838&view=diff
==============================================================================
--- ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostUpdateOrDeleteEvent.cs (original)
+++ ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PostUpdateOrDeleteEventArgs.cs Mon Jun  9 12:22:28 2008
@@ -28,7 +28,7 @@
     /// <summary>
     /// Lauchs after excuting an update/delete statement
     /// </summary>
-    public sealed class PostUpdateOrDeleteEvent : PostStatementEvent
+    public sealed class PostUpdateOrDeleteEventArgs : PostStatementEventArgs
     {
         /// <summary>
         /// Gets the event type.

Copied: ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreInsertEventArgs.cs (from r664536, ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreInsertEvent.cs)
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreInsertEventArgs.cs?p2=ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreInsertEventArgs.cs&p1=ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreInsertEvent.cs&r1=664536&r2=665838&rev=665838&view=diff
==============================================================================
--- ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreInsertEvent.cs (original)
+++ ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreInsertEventArgs.cs Mon Jun  9 12:22:28 2008
@@ -26,9 +26,9 @@
 namespace Apache.Ibatis.DataMapper.Model.Events
 {
     /// <summary>
-    /// Lauchs before excuting an insert statement
+    /// Event lauchs before excuting an insert statement
     /// </summary>
-    public sealed class PreInsertEvent : PreStatementEvent
+    public sealed class PreInsertEventArgs : PreStatementEventArgs
     {
         /// <summary>
         /// Gets the event type.

Copied: ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreSelectEventArgs.cs (from r664536, ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreSelectEvent.cs)
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreSelectEventArgs.cs?p2=ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreSelectEventArgs.cs&p1=ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreSelectEvent.cs&r1=664536&r2=665838&rev=665838&view=diff
==============================================================================
--- ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreSelectEvent.cs (original)
+++ ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreSelectEventArgs.cs Mon Jun  9 12:22:28 2008
@@ -26,9 +26,9 @@
 namespace Apache.Ibatis.DataMapper.Model.Events
 {
     /// <summary>
-    /// Lauchs before excuting a select statement
+    /// Event launchs before excuting a select statement
     /// </summary>
-    public sealed class PreSelectEvent : PreStatementEvent
+    public sealed class PreSelectEventArgs : PreStatementEventArgs
     {
         /// <summary>
         /// Gets the event type.

Copied: ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreStatementEventArgs.cs (from r664536, ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreStatementEvent.cs)
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreStatementEventArgs.cs?p2=ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreStatementEventArgs.cs&p1=ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreStatementEvent.cs&r1=664536&r2=665838&rev=665838&view=diff
==============================================================================
--- ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreStatementEvent.cs (original)
+++ ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreStatementEventArgs.cs Mon Jun  9 12:22:28 2008
@@ -26,9 +26,9 @@
 namespace Apache.Ibatis.DataMapper.Model.Events
 {
     /// <summary>
-    /// Base class for pre <see cref="ISatementEvent"/>
+    /// Base class for pre <see cref="BaseStatementEventArgs"/>
     /// </summary>
-    public abstract class PreStatementEvent : BaseSatementEvent
+    public abstract class PreStatementEventArgs : BaseStatementEventArgs
     {
 
     }

Copied: ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreUpdateOrDeleteEventArgs.cs (from r664536, ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreUpdateOrDeleteEvent.cs)
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreUpdateOrDeleteEventArgs.cs?p2=ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreUpdateOrDeleteEventArgs.cs&p1=ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreUpdateOrDeleteEvent.cs&r1=664536&r2=665838&rev=665838&view=diff
==============================================================================
--- ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreUpdateOrDeleteEvent.cs (original)
+++ ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/Model/Events/PreUpdateOrDeleteEventArgs.cs Mon Jun  9 12:22:28 2008
@@ -26,9 +26,9 @@
 namespace Apache.Ibatis.DataMapper.Model.Events
 {
     /// <summary>
-    /// Lauchs before excuting an update/delete statement
+    /// Event launchs before excuting an update/delete statement
     /// </summary>
-    public sealed class PreUpdateOrDeleteEvent : PreStatementEvent
+    public sealed class PreUpdateOrDeleteEventArgs : PreStatementEventArgs
     {
         /// <summary>
         /// Gets the event type.