move RenderKitFactory to the base
[mono.git] / mcs / class / Mainsoft.Web / Mainsoft.Web.Hosting / BaseFacesStateManager.cs
index 07c917daa3906f550e26c812363276cd09bfb3a2..f916f72128fd8f688f67bce8c847024dfc44d470 100644 (file)
@@ -4,11 +4,18 @@ using System.Text;
 using javax.faces.application;\r
 using javax.faces.component;\r
 using javax.faces.context;\r
+using System.Diagnostics;\r
+using System.Web.UI;\r
+using javax.faces.render;\r
+using javax.faces;\r
 \r
 namespace Mainsoft.Web.Hosting\r
 {\r
        public abstract class BaseFacesStateManager : StateManager\r
        {\r
+               protected static readonly string VIEWSTATE = "__VIEWSTATE";\r
+               protected static readonly RenderKitFactory RenderKitFactory = (RenderKitFactory) FactoryFinder.getFactory (FactoryFinder.RENDER_KIT_FACTORY);\r
+\r
                public override StateManager.SerializedView saveSerializedView (FacesContext facesContext) {\r
                        Object treeStruct = getTreeStructureToSave (facesContext);\r
                        Object compStates = getComponentStateToSave (facesContext);\r
@@ -16,7 +23,7 @@ namespace Mainsoft.Web.Hosting
                        return serializedView;\r
                }\r
 \r
-               protected override Object getTreeStructureToSave (FacesContext facesContext) {\r
+               protected override sealed Object getTreeStructureToSave (FacesContext facesContext) {\r
                        return null;\r
                }\r
 \r
@@ -25,28 +32,29 @@ namespace Mainsoft.Web.Hosting
                                                                                                                                String renderKitId) {\r
 \r
                        UIViewRoot uiViewRoot = restoreTreeStructure (facesContext, viewId, renderKitId);\r
-                       if (uiViewRoot != null) {\r
-                               uiViewRoot.setViewId (viewId);\r
+                       Page page = (Page) uiViewRoot.getChildren ().get (0);\r
+                       if (page.IsPostBack || page.IsCallback)\r
                                restoreComponentState (facesContext, uiViewRoot, renderKitId);\r
-                               String restoredViewId = uiViewRoot.getViewId ();\r
-                               if (restoredViewId == null || !(restoredViewId.Equals (viewId))) {\r
-                                       return null;\r
-                               }\r
-                       }\r
+                       else\r
+                               facesContext.renderResponse ();\r
                        return uiViewRoot;\r
                }\r
 \r
+               protected override sealed UIViewRoot restoreTreeStructure (FacesContext facesContext, string viewId, string renderKitId) {\r
+                       return facesContext.getApplication ().getViewHandler ().createView (facesContext, viewId);\r
+               }\r
+\r
                protected override Object getComponentStateToSave (FacesContext facesContext) {\r
-                       Console.WriteLine ("Entering getComponentStateToSave");\r
+                       Trace.WriteLine ("Entering getComponentStateToSave");\r
 \r
                        UIViewRoot viewRoot = facesContext.getViewRoot ();\r
                        if (viewRoot.isTransient ()) {\r
                                return null;\r
                        }\r
 \r
-                       Object serializedComponentStates = viewRoot.processSaveState (facesContext);\r
+                       Object serializedComponentStates = ((UIComponent) viewRoot.getChildren ().get (0)).processSaveState (facesContext);\r
                        //Locale is a state attribute of UIViewRoot and need not be saved explicitly\r
-                       Console.WriteLine ("Exiting getComponentStateToSave");\r
+                       Trace.WriteLine ("Exiting getComponentStateToSave");\r
                        return serializedComponentStates;\r
                }\r
        }\r