2 using System.Collections.Generic;
\r
4 using javax.faces.application;
\r
6 using javax.faces.context;
\r
7 using javax.faces.component;
\r
8 using javax.faces.render;
\r
11 using System.Diagnostics;
\r
13 namespace Mainsoft.Web.Hosting
\r
15 public abstract class BaseFacesViewHandler : ViewHandler, IExtendedViewHandler
\r
17 readonly ViewHandler _viewHandler;
\r
18 public static readonly string NAMESPACE = "__NAMESPACE";
\r
20 public BaseFacesViewHandler (ViewHandler viewHandler) {
\r
21 _viewHandler = viewHandler;
\r
24 public override string getActionURL (FacesContext facesContext, string viewId) {
\r
25 return _viewHandler.getActionURL (facesContext, viewId);
\r
28 public override Locale calculateLocale (FacesContext facesContext) {
\r
29 return _viewHandler.calculateLocale (facesContext);
\r
32 public override String calculateRenderKitId (FacesContext facesContext) {
\r
33 return _viewHandler.calculateRenderKitId (facesContext);
\r
36 public override UIViewRoot createView (FacesContext facesContext, String viewId) {
\r
38 // create instance of Page by viewId
\r
39 StringBuilder sb = new StringBuilder ();
\r
40 sb.Append (facesContext.getExternalContext ().getRequestContextPath ());
\r
42 IHttpHandler page = PageParser.GetCompiledPageInstance (sb.ToString (), null, ((AspNetFacesContext) facesContext).Context);
\r
44 HttpContext context = ((AspNetFacesContext) facesContext).Context;
\r
45 page.ProcessRequest (context);
\r
47 UIViewRoot uiViewRoot = _viewHandler.createView (facesContext, viewId);
\r
48 uiViewRoot.getChildren ().add (0, (UIComponent) page);
\r
50 Trace.WriteLine ("Created view " + viewId);
\r
54 public override String getResourceURL (FacesContext facesContext, String path) {
\r
55 return _viewHandler.getResourceURL (facesContext, path);
\r
58 public override void renderView (FacesContext facesContext, UIViewRoot viewToRender) {
\r
59 if (viewToRender == null)
\r
60 throw new ArgumentNullException ("viewToRender", "viewToRender must not be null");
\r
61 ((UIComponent) viewToRender.getChildren ().get (0)).encodeChildren (facesContext);
\r
65 public override UIViewRoot restoreView (FacesContext facesContext, String viewId) {
\r
66 return _viewHandler.restoreView (facesContext, viewId);
\r
69 public override void writeState (FacesContext facesContext) {
\r
70 StateManager manager = facesContext.getApplication ().getStateManager ();
\r
71 StateManager.SerializedView serializedView = manager.saveSerializedView (facesContext);
\r
72 manager.writeState (facesContext, serializedView);
\r
75 public virtual string EncodeNamespace (FacesContext facesContext, string value) {
\r
76 HttpContext context = ((AspNetFacesContext) facesContext).Context;
\r
77 string ns = context.Request.Form [NAMESPACE];
\r
78 if (String.IsNullOrEmpty (ns))
\r