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