Allow custom ISessionStoreFactory
---------------------------------

                 Key: IBATISNET-185
                 URL: http://issues.apache.org/jira/browse/IBATISNET-185
             Project: iBatis for .NET
          Issue Type: Improvement
          Components: DataAccess, DataMapper
            Reporter: Ron Grabowski
            Priority: Minor


The interfaces and abstract class in IBatisNet.DataAccess.SessionScope and 
IBatisNet.DataMapper.SessionScope should be combined and moved into 
IBatisNet.Common and a new interface named 
IBatisNet.Common.SessionStore.ISessionStoreFactory should be created:

public interface ISessionStoreFactory
{
 void Initialize(IDictionary properties);
 ISessionStore GetSessionStore(string sessionStore);
 // void Shutdown(); ???
}

"setting" nodes in the SqlMap.config file currently only contains boolean 
values. I think we should keep with that convention if possible and introduce a 
seperate node named "sessionStoreFactory" that should mimic the custom cache 
support (allow properties to be passed into the Initialize method):

 <sessionStoreFactory type="Company.IBatisNet.CustomSessionStoreFactory, 
Company.IBatisNet">
  <property name="Hello" value="World" />
 </sessionStoreFactory>

IBatisNet should ship with at least two factories:
 
 CallContextSessionStoreFactory
 HybridSessionStoreFactory (HttpContext != null ? HttpContextSessionStore : 
CallContextSessionStore)

The default factory would be HybirdSessionStoreFactory. The user could manually 
specify one of the built-in factories by using an upper case alias:

 <sessionStoreFactory type="CALLCONTEXT" />
 <sessionStoreFactory type="HYBRID" />

For the DataAccess project, a context could use a custom session store factory 
like this:

 <daoSessionHandler id="SqlMap">
  <property name="resource" value="SqlMap_MSSQL_OleDb.config"/>
  <property name="sessionStoreFactory" 
value="Company.IBatisNet.CustomSessionStoreFactory, Company.IBatisNet"/>
  <property name="Hello" value="World"/>
 </daoSessionHandler>

The IDictionary passed into ISessionStoreFactory.Initialize would contain three 
keys: resource, sessionStoreFactory, and Hello.

If you wanted to always use CALLCONTEXT with a data access context:

 <daoSessionHandler id="SqlMap">
  <property name="resource" value="SqlMap_MSSQL_OleDb.config"/>
  <property name="sessionStoreFactory" value="CALLCONTEXT"/>
 </daoSessionHandler>

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to