Implemented Servlet session management. Servlet hosting moved to Mainsoft.Web package
[mono.git] / mcs / class / Mainsoft.Web / Mainsoft.Web.SessionState / ServletSessionStateStoreProvider.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.Web.SessionState;\r
5 using System.Web;\r
6 using System.Web.Hosting;\r
7 using javax.servlet;\r
8 using javax.servlet.http;\r
9 using Mainsoft.Web.Hosting;\r
10 \r
11 namespace Mainsoft.Web.SessionState\r
12 {\r
13         public sealed partial class ServletSessionStateStoreProvider : SessionStateStoreProviderBase\r
14         {\r
15                 public override SessionStateStoreData CreateNewStoreData (HttpContext context, int timeout) {\r
16                         ServletSessionStateItemCollection sessionState = new ServletSessionStateItemCollection (context);\r
17                         return new SessionStateStoreData (\r
18                                 sessionState,\r
19                                 sessionState.StaticObjects,\r
20                                 timeout);\r
21                         //return new SessionStateStoreData (new SessionStateItemCollection (),\r
22                         //                  SessionStateUtility.GetSessionStaticObjects (context),\r
23                         //                  timeout);\r
24                 }\r
25 \r
26                 static internal ServletWorkerRequest GetWorkerRequest (HttpContext context) {\r
27                         IServiceProvider sp = (IServiceProvider) context;\r
28                         return (ServletWorkerRequest) sp.GetService (typeof (HttpWorkerRequest));\r
29                 }\r
30 \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
33                 }\r
34 \r
35                 public override void Dispose () {\r
36                         \r
37                 }\r
38 \r
39                 public override void EndRequest (HttpContext context) {\r
40                 }\r
41 \r
42                 public override SessionStateStoreData GetItem (HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) {\r
43                         locked = false;\r
44                         lockAge = TimeSpan.Zero;\r
45                         lockId = null;\r
46                         actions = SessionStateActions.None;\r
47                         if (id == null)\r
48                                 return null;\r
49                         return (SessionStateStoreData) GetWorkerRequest (context).ServletRequest.getSession (false).getAttribute (J2EEConsts.SESSION_STATE);\r
50                 }\r
51 \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
54                 }\r
55 \r
56                 public override void InitializeRequest (HttpContext context) {\r
57                 }\r
58 \r
59                 public override void ReleaseItemExclusive (HttpContext context, string id, object lockId) {\r
60                 }\r
61 \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
64                 }\r
65 \r
66                 public override void ResetItemTimeout (HttpContext context, string id) {\r
67                         //Java does this for us\r
68                 }\r
69 \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
72                 }\r
73 \r
74                 public override bool SetItemExpireCallback (SessionStateItemExpireCallback expireCallback) {\r
75                         throw new Exception ();\r
76                 }\r
77         }\r
78 }\r