1. refactoring
[mono.git] / mcs / class / Mainsoft.Web / Mainsoft.Web.Hosting / BaseFacesViewHandler.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using javax.faces.application;\r
5 using java.util;\r
6 using javax.faces.context;\r
7 using javax.faces.component;\r
8 using javax.faces.render;\r
9 using System.Web.UI;\r
10 using System.Web;\r
11 using System.Diagnostics;\r
12 \r
13 namespace Mainsoft.Web.Hosting\r
14 {\r
15         public abstract class BaseFacesViewHandler : ViewHandler\r
16         {\r
17                 readonly ViewHandler _viewHandler;\r
18 \r
19                 public BaseFacesViewHandler (ViewHandler viewHandler) {\r
20                         _viewHandler = viewHandler;\r
21                 }\r
22 \r
23                 public override string getActionURL (FacesContext facesContext, string viewId) {\r
24                         return _viewHandler.getActionURL (facesContext, viewId);\r
25                 }\r
26 \r
27                 public override Locale calculateLocale (FacesContext facesContext) {\r
28                         return _viewHandler.calculateLocale (facesContext);\r
29                 }\r
30 \r
31                 public override String calculateRenderKitId (FacesContext facesContext) {\r
32                         return _viewHandler.calculateRenderKitId (facesContext);\r
33                 }\r
34 \r
35                 public override UIViewRoot createView (FacesContext facesContext, String viewId) {\r
36 \r
37                         // create instance of Page by viewId\r
38                         StringBuilder sb = new StringBuilder ();\r
39                         sb.Append (facesContext.getExternalContext ().getRequestContextPath ());\r
40                         sb.Append (viewId);\r
41                         IHttpHandler page = PageParser.GetCompiledPageInstance (sb.ToString (), null, ((AspNetFacesContext) facesContext).Context);\r
42 \r
43                         HttpContext context = ((AspNetFacesContext) facesContext).Context;\r
44                         page.ProcessRequest (context);\r
45                         \r
46                         UIViewRoot uiViewRoot = _viewHandler.createView (facesContext, viewId);\r
47                         uiViewRoot.getChildren ().add (0, (UIComponent) page);\r
48                         \r
49                         Trace.WriteLine ("Created view " + viewId);\r
50                         return uiViewRoot;\r
51                 }\r
52 \r
53                 public override String getResourceURL (FacesContext facesContext, String path) {\r
54                         return _viewHandler.getResourceURL (facesContext, path);\r
55                 }\r
56 \r
57                 public override void renderView (FacesContext facesContext, UIViewRoot viewToRender) {\r
58                         if (viewToRender == null)\r
59                                 throw new ArgumentNullException ("viewToRender", "viewToRender must not be null");\r
60                         ((UIComponent) viewToRender.getChildren ().get (0)).encodeChildren (facesContext);\r
61                 }\r
62 \r
63 \r
64                 public override UIViewRoot restoreView (FacesContext facesContext, String viewId) {\r
65                         return _viewHandler.restoreView (facesContext, viewId);\r
66                 }\r
67 \r
68                 public override void writeState (FacesContext facesContext) {\r
69                         StateManager manager = facesContext.getApplication ().getStateManager ();\r
70                         StateManager.SerializedView serializedView = manager.saveSerializedView (facesContext);\r
71                         manager.writeState (facesContext, serializedView);\r
72                 }\r
73 \r
74         }\r
75 }\r