2 using System.Collections.Generic;
\r
4 using System.Web.SessionState;
\r
6 using System.Web.Hosting;
\r
8 using javax.servlet.http;
\r
9 using Mainsoft.Web.Hosting;
\r
11 namespace Mainsoft.Web.SessionState
\r
13 public sealed partial class ServletSessionStateStoreProvider : SessionStateStoreProviderBase
\r
15 public override SessionStateStoreData CreateNewStoreData (HttpContext context, int timeout) {
\r
16 ServletSessionStateItemCollection sessionState = new ServletSessionStateItemCollection (context);
\r
17 return new SessionStateStoreData (
\r
19 sessionState.StaticObjects,
\r
21 //return new SessionStateStoreData (new SessionStateItemCollection (),
\r
22 // SessionStateUtility.GetSessionStaticObjects (context),
\r
26 static internal ServletWorkerRequest GetWorkerRequest (HttpContext context) {
\r
27 IServiceProvider sp = (IServiceProvider) context;
\r
28 return (ServletWorkerRequest) sp.GetService (typeof (HttpWorkerRequest));
\r
31 public override void CreateUninitializedItem (HttpContext context, string id, int timeout) {
\r
32 //HttpSession session = GetWorker(context).ServletRequest.getSession (false); //.setMaxInactiveInterval (timeout * 60);
\r
35 public override void Dispose () {
\r
39 public override void EndRequest (HttpContext context) {
\r
42 public override SessionStateStoreData GetItem (HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) {
\r
44 lockAge = TimeSpan.Zero;
\r
46 actions = SessionStateActions.None;
\r
49 return (SessionStateStoreData) GetWorkerRequest (context).ServletRequest.getSession (false).getAttribute (J2EEConsts.SESSION_STATE);
\r
52 public override SessionStateStoreData GetItemExclusive (HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) {
\r
53 return GetItem (context, id, out locked, out lockAge, out lockId, out actions);
\r
56 public override void InitializeRequest (HttpContext context) {
\r
59 public override void ReleaseItemExclusive (HttpContext context, string id, object lockId) {
\r
62 public override void RemoveItem (HttpContext context, string id, object lockId, SessionStateStoreData item) {
\r
63 GetWorkerRequest (context).ServletRequest.getSession (false).setAttribute (J2EEConsts.SESSION_STATE, null);
\r
66 public override void ResetItemTimeout (HttpContext context, string id) {
\r
67 //Java does this for us
\r
70 public override void SetAndReleaseItemExclusive (HttpContext context, string id, SessionStateStoreData item, object lockId, bool newItem) {
\r
71 GetWorkerRequest (context).ServletRequest.getSession (false).setAttribute (J2EEConsts.SESSION_STATE, item.Items);
\r
74 public override bool SetItemExpireCallback (SessionStateItemExpireCallback expireCallback) {
\r
75 throw new Exception ();
\r