Просмотр исходного кода

initial implementation of 'unify request'

svn path=/branches/mainsoft/JSF/mcs/; revision=90267
Igor Zelmanovich 18 лет назад
Родитель
Сommit
7a1890486b

+ 4 - 0
mcs/class/System.Web/System.Web.UI/Page.cs

@@ -1349,6 +1349,10 @@ public partial class Page : TemplateControl, IHttpHandler
 		ProcessRaiseChangedEvents ();
 		ProcessRaisePostBackEvents ();
 		ProcessLoadComplete ();
+#if TARGET_J2EE
+		if (getFacesContext () != null)
+			return;
+#endif
 		RenderPage ();
 	}
 

+ 0 - 1
mcs/class/System.Web/System.Web.UI/Page.jvm.cs

@@ -44,7 +44,6 @@ namespace System.Web.UI
 {
 	public partial class Page
 	{
-		internal const string NamespaceKey = "__NAMESPACE";
 		const string PageNamespaceKey = "__PAGENAMESPACE";
 		const string RenderPageMark = "vmw.render.page=";
 		const string ActionPageMark = "vmw.action.page=";

+ 19 - 1
mcs/class/System.Web/System.Web/HttpApplication.cs

@@ -654,7 +654,7 @@ namespace System.Web {
 		//
 		// Ticks the clock: next step on the pipeline.
 		//
-		void Tick ()
+		internal void Tick ()
 		{
 			try {
 				if (pipeline.MoveNext ()){
@@ -966,6 +966,10 @@ namespace System.Web {
 					if (stop)
 						goto release;
 				
+#if TARGET_J2EE
+			bool doProcessHandler = false;
+		processHandler:
+#endif
 			try {
 				context.BeginTimeoutPossible ();
 				if (handler != null){
@@ -978,6 +982,10 @@ namespace System.Web {
 					} else {
 						must_yield = false;
 						handler.ProcessRequest (context);
+#if TARGET_J2EE
+						IHttpExtendedHandler extHandler=handler as IHttpExtendedHandler;
+						doProcessHandler = extHandler != null && !extHandler.getCompleted ();
+#endif
 					}
 				}
 			} catch (ThreadAbortException taex){
@@ -992,6 +1000,12 @@ namespace System.Web {
 				in_begin = false;
 				context.EndTimeoutPossible ();
 			}
+#if TARGET_J2EE
+			if (doProcessHandler) {
+				yield return false;
+				goto processHandler;
+			}
+#endif
 			if (must_yield)
 				yield return stop_processing;
 			else if (stop_processing)
@@ -1257,6 +1271,10 @@ namespace System.Web {
 
 		void IHttpAsyncHandler.EndProcessRequest (IAsyncResult result)
 		{
+#if TARGET_J2EE
+			if (result == null)
+				result = begin_iar;
+#endif
 			if (!result.IsCompleted)
 				result.AsyncWaitHandle.WaitOne ();
 			begin_iar = null;

+ 4 - 0
mcs/class/System.Web/System.Web/HttpApplicationFactory.cs

@@ -437,6 +437,10 @@ namespace System.Web {
 		//
 		internal static HttpApplication GetApplication (HttpContext context)
 		{
+#if TARGET_J2EE
+			if (context.ApplicationInstance!=null)
+				return context.ApplicationInstance;
+#endif
 			HttpApplicationFactory factory = theFactory;
 			HttpApplication app = null;
 			if (factory.app_start_needed){

+ 12 - 3
mcs/class/System.Web/System.Web/HttpContext.jvm.cs

@@ -37,6 +37,7 @@ using javax.faces.context;
 using System.Web.J2EE;
 using System.Web.UI;
 using javax.servlet;
+using System.Collections.Specialized;
 
 namespace System.Web {
 	
@@ -66,6 +67,10 @@ namespace System.Web {
 		internal HttpServletRequest ServletRequest {
 			get { return (HttpServletRequest)GetWorkerService(typeof(HttpServletRequest)); }
 		}
+		
+		internal NameValueCollection RequestParameters {
+			get { return (NameValueCollection) GetWorkerService (typeof (NameValueCollection)); }
+		}
 
 		internal HttpServletResponse ServletResponse {
 			get { return (HttpServletResponse)GetWorkerService(typeof(HttpServletResponse)); }
@@ -131,9 +136,7 @@ namespace System.Web {
 						faces = FacesContext;
 
 					if (faces != null) {
-						_PortletNamespace = faces.getRenderResponse () ?
-							faces.getExternalContext ().encodeNamespace (String.Empty) :
-							Request.Form [Page.NamespaceKey];
+						_PortletNamespace = faces.getExternalContext ().encodeNamespace (String.Empty);
 					}
 					
 					_PortletNamespace = _PortletNamespace ?? String.Empty;
@@ -149,5 +152,11 @@ namespace System.Web {
 		internal void EndTimeoutPossible ()
 		{
 		}
+
+		internal void SetWorkerRequest (HttpWorkerRequest wr) {
+			WorkerRequest = wr;
+			Request.SetWorkerRequest (wr);
+			Response.SetWorkerRequest (wr);
+		}
 	}
 }

+ 11 - 1
mcs/class/System.Web/System.Web/HttpRequest.jvm.cs

@@ -34,6 +34,7 @@ using System.Web.Configuration;
 using System.IO;
 using System.Collections;
 using [email protected];
+using System.Collections.Specialized;
 
 namespace System.Web
 {
@@ -58,7 +59,11 @@ namespace System.Web
 		{
 			HttpServletRequest servletReq = context.ServletRequest;
 			if (servletReq == null) {
-				RawLoadWwwForm ();
+				NameValueCollection requestParameters = context.RequestParameters;
+				if (requestParameters != null)
+					form.Add (requestParameters);
+				else
+					RawLoadWwwForm ();
 				return;
 			}
 
@@ -218,5 +223,10 @@ namespace System.Web
 					javaSession.setAttribute (SessionCookies, sessionCookies);
 			}
 		}
+
+		internal void SetWorkerRequest (HttpWorkerRequest wr) {
+			worker_request = wr;
+		}
+
 	}
 }

+ 1 - 1
mcs/class/System.Web/System.Web/HttpResponse.cs

@@ -47,7 +47,7 @@ namespace System.Web {
 	
 	// CAS - no InheritanceDemand here as the class is sealed
 	[AspNetHostingPermission (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
-	public sealed class HttpResponse {
+	public sealed partial class HttpResponse {
 		internal HttpWorkerRequest WorkerRequest;
 		internal HttpResponseStream output_stream;
 		internal bool buffer = true;

+ 14 - 0
mcs/class/System.Web/System.Web/HttpResponse.jvm.cs

@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace System.Web
+{
+	partial class HttpResponse
+	{
+		internal void SetWorkerRequest (HttpWorkerRequest wr) {
+			WorkerRequest = wr;
+		}
+
+	}
+}

+ 24 - 0
mcs/class/System.Web/System.Web/HttpRuntime.cs

@@ -42,6 +42,9 @@ using System.Web.Configuration;
 using System.Web.UI;
 using System.Web.Util;
 using System.Threading;
+#if TARGET_J2EE
+using [email protected];
+#endif
 
 #if NET_2_0 && !TARGET_JVM
 using System.CodeDom.Compiler;
@@ -417,7 +420,15 @@ namespace System.Web {
 		
 		static void RealProcessRequest (object o)
 		{
+#if TARGET_J2EE
+			HttpContext context = HttpContext.Current;
+			if (context == null)
+				context = new HttpContext ((HttpWorkerRequest) o);
+			else
+				context.SetWorkerRequest ((HttpWorkerRequest) o);
+#else
 			HttpContext context = new HttpContext ((HttpWorkerRequest) o);
+#endif
 			HttpContext.Current = context;
 			bool error = false;
 #if !TARGET_J2EE
@@ -461,10 +472,23 @@ namespace System.Web {
 				//
 				// Ask application to service the request
 				//
+#if TARGET_J2EE
 				IHttpAsyncHandler ihah = app;
+				if (context.Handler == null)
+					ihah.BeginProcessRequest (context, new AsyncCallback (request_processed), context);
+				else
+					app.Tick ();
+				//ihh.ProcessRequest (context);
+				IHttpExtendedHandler extHandler = context.Handler as IHttpExtendedHandler;
+				if (extHandler != null && !extHandler.getCompleted ())
+					return;
 
+				ihah.EndProcessRequest (null);
+#else
+				IHttpAsyncHandler ihah = app;
 				IAsyncResult appiar = ihah.BeginProcessRequest (context, new AsyncCallback (request_processed), context);
 				ihah.EndProcessRequest (appiar);
+#endif
 
 				HttpApplicationFactory.Recycle (app);
 			}

+ 7 - 7
mcs/class/System.Web/System.Web20.csproj

@@ -1226,12 +1226,12 @@
     <Compile Include="System.Web\HeadersCollection.cs" />
     <Compile Include="System.Web\HttpApplication.cs" />
     <Compile Include="System.Web\HttpParamsCollection.cs" />
+    <Compile Include="System.Web\HttpResponse.jvm.cs" />
     <Compile Include="System.Web\HttpResponseStream.jvm.cs" />
     <Compile Include="System.Web\HttpStaticObjectsCollection.cs">
       <SubType>Code</SubType>
     </Compile>
     <Compile Include="System.Web\HttpWorkerRequest.jvm.cs" />
-    <Compile Include="System.Web\IHttpExtendedHandler.cs" />
     <Compile Include="System.Web\UplevelHelper.cs" />
   </ItemGroup>
   <ItemGroup>
@@ -1372,14 +1372,14 @@
       <Private>False</Private>
       <HintPath>..\lib\J2SE.Helpers.dll</HintPath>
     </Reference>
-    <Reference Include="Mainsoft.Configuration, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <HintPath>..\lib\Mainsoft.Configuration.dll</HintPath>
-    </Reference>
-    <Reference Include="myfaces-api-1.1.0, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
+    <Reference Include="jsf-api, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\lib\myfaces-api-1.1.0.dll</HintPath>
+      <HintPath>..\lib\jsf-api.dll</HintPath>
       <Private>False</Private>
     </Reference>
+    <Reference Include="Mainsoft.Configuration, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
+      <HintPath>..\lib\Mainsoft.Configuration.dll</HintPath>
+    </Reference>
     <Reference Include="rt">
       <HintPath>..\lib\rt.dll</HintPath>
       <Private>False</Private>
@@ -1409,7 +1409,7 @@
   -->
   <ProjectExtensions>
     <VisualStudio>
-      <UserProperties REFS-JarPath-system-configuration="..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE V2\java_refs\framework\System.Configuration.jar" REFS-JarPath-system-data="..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE V2\java_refs\framework\System.Data.jar" REFS-JarPath-system-drawing="..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE V2\java_refs\framework\System.Drawing.jar;..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE V2\java_refs\framework\jai_imageio.jar;..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE V2\java_refs\framework\jai_core.jar;..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE V2\java_refs\framework\jai_codec.jar;..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE V2\java_refs\framework\clibwrapper_jiio.jar;..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE V2\java_refs\framework\mlibwrapper_jai.jar" REFS-JarPath-system-xml="..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE V2\java_refs\framework\System.Xml.jar" REFS-JarPath-system="..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE V2\java_refs\framework\System.jar" REFS-JarPath-mscorlib="..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE 2\java_refs\framework\mscorlib.jar" REFS-JarPath-rt="..\lib\rt.jar" REFS-JarPath-j2ee="..\lib\j2ee.jar" REFS-JarPath-j2ee-helpers="..\lib\J2EE.Helpers.jar" REFS-JarPath-j2se-helpers="..\lib\J2SE.Helpers.jar" REFS-JarPath-javaee="" REFS-RefInfo-javaee="repository:JavaEE:tomcat:1.3" REFS-JarPath-myfaces-api-1-1-0="..\lib\myfaces-api-1.1.0.jar" REFS-RefInfo-myfaces-api-1-1-0="j2il:" />
+      <UserProperties REFS-RefInfo-jsf-api="j2il:" REFS-JarPath-jsf-api="..\lib\jsf-api.jar" REFS-RefInfo-javaee="repository:JavaEE:tomcat:1.3" REFS-JarPath-javaee="" REFS-JarPath-j2se-helpers="..\lib\J2SE.Helpers.jar" REFS-JarPath-j2ee-helpers="..\lib\J2EE.Helpers.jar" REFS-JarPath-j2ee="..\lib\j2ee.jar" REFS-JarPath-rt="..\lib\rt.jar" REFS-JarPath-mscorlib="..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE 2\java_refs\framework\mscorlib.jar" REFS-JarPath-system="..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE V2\java_refs\framework\System.jar" REFS-JarPath-system-xml="..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE V2\java_refs\framework\System.Xml.jar" REFS-JarPath-system-drawing="..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE V2\java_refs\framework\System.Drawing.jar;..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE V2\java_refs\framework\jai_imageio.jar;..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE V2\java_refs\framework\jai_core.jar;..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE V2\java_refs\framework\jai_codec.jar;..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE V2\java_refs\framework\clibwrapper_jiio.jar;..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE V2\java_refs\framework\mlibwrapper_jai.jar" REFS-JarPath-system-data="..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE V2\java_refs\framework\System.Data.jar" REFS-JarPath-system-configuration="..\..\..\..\..\Program Files\Mainsoft\Visual MainWin for J2EE V2\java_refs\framework\System.Configuration.jar" />
     </VisualStudio>
   </ProjectExtensions>
   <PropertyGroup>