Procházet zdrojové kódy

move J2EEconts to Mainsoft.Web.Hosting ns; add support for our HttpContexts

svn path=/trunk/mcs/; revision=91937
Konstantin Triger před 18 roky
rodič
revize
4c0ce89d5b

+ 11 - 7
mcs/class/Mainsoft.Web/Mainsoft.Web.Hosting/ServletWorkerRequest.cs

@@ -41,13 +41,13 @@ namespace Mainsoft.Web.Hosting
 			if (serviceType == typeOfServletContext)
 				return _HttpServlet.getServletContext ();
 			return base.GetService (serviceType);
-		}
-
-		//public HttpServlet Servlet {
-		//    get {
-		//        return _HttpServlet;
-		//    }
-		//}
+		}
+
+		public HttpServlet Servlet {
+			get {
+				return _HttpServlet;
+			}
+		}
 
 		public HttpServletRequest ServletRequest {
 			get {
@@ -197,6 +197,10 @@ namespace Mainsoft.Web.Hosting
 
 		public override Principal GetUserPrincipal () {
 			return _HttpServletRequest.getUserPrincipal ();
+		}
+
+		public override BaseHttpContext CreateContext (System.Web.HttpContext context) {
+			return new ServletHttpContext (context);
 		}
 	}
 }

+ 2 - 0
mcs/class/Mainsoft.Web/Mainsoft.Web.Hosting/ServletWorkerRequest.jvm.cs

@@ -423,6 +423,8 @@ namespace Mainsoft.Web.Hosting {
 			_endOfSendCallback = callback;
 			_endOfSendArgs = extraData;
 		}
+
+		public abstract BaseHttpContext CreateContext (HttpContext context);
 	}
 }
 

+ 2 - 0
mcs/class/Mainsoft.Web/Mainsoft.Web.J2EE.csproj

@@ -133,8 +133,10 @@
     <Compile Include="Mainsoft.Web.SessionState\ServletSessionIDManager.cs" />
     <Compile Include="Mainsoft.Web.SessionState\ServletSessionStateStoreProvider.cs" />
     <Compile Include="Mainsoft.Web.SessionState\SessionListener.cs" />
+    <Compile Include="Mainsoft.Web\BaseHttpContext.cs" />
     <Compile Include="Mainsoft.Web\J2EEConsts.cs" />
     <Compile Include="Mainsoft.Web\J2EEUtils.cs" />
+    <Compile Include="Mainsoft.Web\ServletHttpContext.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>
   <ItemGroup>

+ 2 - 1
mcs/class/Mainsoft.Web/Mainsoft.Web.Security/DerbyDBSchema.cs

@@ -33,8 +33,9 @@ using System.Data;
 using System.Data.OleDb;
 using System.Collections.Generic;
 using System.Text;
-using System.Configuration.Provider;
+using System.Configuration.Provider;
 using System.Diagnostics;
+using Mainsoft.Web.Hosting;
 
 namespace Mainsoft.Web.Security
 {

+ 1 - 0
mcs/class/Mainsoft.Web/Mainsoft.Web.SessionState/ServletSessionStateItemCollection.cs

@@ -35,6 +35,7 @@ using System.Threading;
 using javax.servlet;
 using javax.servlet.http;
 using System.Diagnostics;
+using Mainsoft.Web.Hosting;
 
 namespace Mainsoft.Web.SessionState
 {

+ 64 - 0
mcs/class/Mainsoft.Web/Mainsoft.Web/BaseHttpContext.cs

@@ -0,0 +1,64 @@
+//
+// (C) 2007 Mainsoft Corporation (http://www.mainsoft.com)
+// Author: Konstantin Triger <[email protected]>
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+
+using System.Text;
+using System.Configuration;
+using System.Web;
+using Mainsoft.Web.Hosting;
+
+namespace Mainsoft.Web
+{
+	public abstract class BaseHttpContext
+	{
+		protected readonly HttpContext _context;
+		static readonly object _contextKey = new object ();
+
+		protected BaseHttpContext (HttpContext context) {
+			_context = context;
+			context.Items [_contextKey] = this;
+		}
+
+		protected static BaseHttpContext GetBaseHttpContext(HttpContext context) {
+			if (context == null)
+				throw new ArgumentNullException ("context");
+
+			BaseHttpContext baseContext = (BaseHttpContext) context.Items [_contextKey];
+			return baseContext ?? GetWorker (context).CreateContext (context);
+		}
+
+
+		protected BaseWorkerRequest Worker {
+			get { return GetWorker (_context); }
+		}
+
+		static BaseWorkerRequest GetWorker (HttpContext context) {
+			return (BaseWorkerRequest) ((IServiceProvider) context).GetService (typeof (HttpWorkerRequest));
+		}
+	}
+}

+ 1 - 1
mcs/class/Mainsoft.Web/Mainsoft.Web/J2EEConsts.cs

@@ -25,7 +25,7 @@
 
 using System;
 
-namespace Mainsoft.Web
+namespace Mainsoft.Web.Hosting
 {
 	public static class J2EEConsts
 	{

+ 102 - 0
mcs/class/Mainsoft.Web/Mainsoft.Web/ServletHttpContext.cs

@@ -0,0 +1,102 @@
+//
+// (C) 2007 Mainsoft Corporation (http://www.mainsoft.com)
+// Author: Konstantin Triger <[email protected]>
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Web;
+using Mainsoft.Web.Hosting;
+using javax.servlet;
+using javax.servlet.http;
+
+namespace Mainsoft.Web
+{
+	public sealed class ServletHttpContext : BaseHttpContext
+	{
+		internal ServletHttpContext (HttpContext context)
+			: base (context) {
+		}
+
+		/// <summary>
+		/// Gets the Mainsoft.Web.ServletHttpContext object for the current sevlet request.
+		/// </summary>
+		/// <param name="context"></param>
+		/// <returns></returns>
+		public static ServletHttpContext GetCurrent (HttpContext context) {
+			return BaseHttpContext.GetBaseHttpContext (context) as ServletHttpContext;
+		}
+
+		private new ServletWorkerRequest Worker {
+			get { return (ServletWorkerRequest) base.Worker; }
+		}
+
+		/// <summary>
+		/// Returns the current javax.servlet.http.HttpServlet object.
+		/// </summary>
+		public HttpServlet Servlet {
+			get { return Worker.Servlet; }
+		}
+
+		/// <summary>
+		/// Returns the current javax.servlet.http.HttpServletRequest object.
+		/// </summary>
+		public HttpServletRequest ServletRequest {
+			get { return Worker.ServletRequest; }
+		}
+
+
+		/// <summary>
+		/// Returns the current javax.servlet.http.HttpServletResponse object.
+		/// </summary>
+		public HttpServletResponse ServletResponse {
+			get { return Worker.ServletResponse; }
+		}
+
+		/// <summary>
+		/// Returns the javax.servlet.ServletConfig object for the current sevlet.
+		/// </summary>
+		public ServletConfig ServletConfig {
+			get { return Servlet.getServletConfig (); }
+		}
+
+		/// <summary>
+		/// Returns the javax.servlet.ServletContext object for the current application.
+		/// </summary>
+		public ServletContext ServletContext {
+			get { return Servlet.getServletContext (); }
+		}
+
+
+		/// <summary>
+		/// Returns the current servlet name.
+		/// </summary>
+		public string ServletName {
+			get {
+				return Servlet.getServletName ();
+			}
+		}
+	}
+}