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.