Author: adar
Date: 2007-02-20 13:07:56 -0500 (Tue, 20 Feb 2007)
New Revision: 73201

Modified:
   trunk/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
   trunk/mcs/class/System.Web/System.Web.UI.WebControls/ObjectDataSourceView.cs
   
trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/ObjectDataSourceTest.cs
   
trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/ObjectDataSourceViewTest.cs
Log:
2007-02-20  Adar Wesley <[EMAIL PROTECTED]>

        * ObjectDataSourceView.cs: fixed ViewState behavior to match MS.  Added 
relevant tests.



Modified: trunk/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
===================================================================
--- trunk/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog      
2007-02-20 18:01:37 UTC (rev 73200)
+++ trunk/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog      
2007-02-20 18:07:56 UTC (rev 73201)
@@ -1,3 +1,7 @@
+2007-02-20  Adar Wesley <[EMAIL PROTECTED]>
+
+       * ObjectDataSourceView.cs: fixed ViewState behavior to match MS.  Added 
relevant tests.
+
 2007-02-20  Gert Driesen  <[EMAIL PROTECTED]>
 
        * Calendar.cs: Fixed bug #80881 by using Thread's CurrentCulture

Modified: 
trunk/mcs/class/System.Web/System.Web.UI.WebControls/ObjectDataSourceView.cs
===================================================================
--- 
trunk/mcs/class/System.Web/System.Web.UI.WebControls/ObjectDataSourceView.cs    
    2007-02-20 18:01:37 UTC (rev 73200)
+++ 
trunk/mcs/class/System.Web/System.Web.UI.WebControls/ObjectDataSourceView.cs    
    2007-02-20 18:07:56 UTC (rev 73201)
@@ -63,8 +63,8 @@
                string typeName = null;
                string updateMethod = null;
                private static string privateBinPath = null;
-               
-               StateBag viewState = new StateBag ();
+
+               bool isTrackingViewState = false;
                ParameterCollection selectParameters;
                ParameterCollection updateParameters;
                ParameterCollection deleteParameters;
@@ -261,10 +261,6 @@
                        }
                }
                
-               StateBag ViewState {
-                       get { return viewState; }
-               }
-               
                public override bool CanDelete {
                        get { return DeleteMethod.Length > 0; }
                }
@@ -293,15 +289,12 @@
                public override bool CanUpdate {
                        get { return UpdateMethod.Length > 0; }
                }
-               
+
+               // LAME SPEC: MSDN says value should be stored in ViewState but 
tests show otherwise.
+               private ConflictOptions conflictDetection = 
ConflictOptions.OverwriteChanges;
                public ConflictOptions ConflictDetection {
-                       get {
-                               object ret = ViewState ["ConflictDetection"];
-                               return ret != null ? (ConflictOptions)ret : 
ConflictOptions.OverwriteChanges;
-                       }
-                       set {
-                               ViewState ["ConflictDetection"] = value;
-                       }
+                       get { return conflictDetection; }
+                       set { conflictDetection = value; }
                }
 
                public bool ConvertNullToDBNull {
@@ -332,8 +325,6 @@
                                if (deleteParameters == null) {
                                        deleteParameters = new 
ParameterCollection ();
                                        deleteParameters.ParametersChanged += 
new EventHandler (OnParametersChanged); 
-                                       if (IsTrackingViewState)
-                                               
((IStateManager)deleteParameters).TrackViewState ();
                                }
                                return deleteParameters;
                        }
@@ -383,8 +374,6 @@
                                if (insertParameters == null) {
                                        insertParameters = new 
ParameterCollection ();
                                        insertParameters.ParametersChanged += 
new EventHandler (OnParametersChanged); 
-                                       if (IsTrackingViewState)
-                                               
((IStateManager)insertParameters).TrackViewState ();
                                }
                                return insertParameters;
                        }
@@ -480,8 +469,6 @@
                                if (updateParameters == null) {
                                        updateParameters = new 
ParameterCollection ();
                                        updateParameters.ParametersChanged += 
new EventHandler (OnParametersChanged); 
-                                       if (IsTrackingViewState)
-                                               
((IStateManager)updateParameters).TrackViewState ();
                                }
                                return updateParameters;
                        }
@@ -1142,7 +1129,6 @@
                protected virtual void LoadViewState (object savedState)
                {
                        object[] state = (savedState == null) ? new object [6] 
: (object[]) savedState;
-                       viewState.LoadViewState (state[0]);
                        ((IStateManager)SelectParameters).LoadViewState 
(state[1]); 
                        ((IStateManager)UpdateParameters).LoadViewState 
(state[2]); 
                        ((IStateManager)DeleteParameters).LoadViewState 
(state[3]); 
@@ -1152,19 +1138,18 @@
 
                protected virtual object SaveViewState()
                {
-                       object[] state = new object [6];
-                       state [0] = viewState.SaveViewState ();
+                       object[] state = new object [5];
                        
                        if (selectParameters != null)
-                               state [1] = 
((IStateManager)selectParameters).SaveViewState ();
+                               state [0] = 
((IStateManager)selectParameters).SaveViewState ();
                        if (updateParameters != null)
-                               state [2] = 
((IStateManager)updateParameters).SaveViewState ();
+                               state [1] = 
((IStateManager)updateParameters).SaveViewState ();
                        if (deleteParameters != null)
-                               state [3] = 
((IStateManager)deleteParameters).SaveViewState ();
+                               state [2] = 
((IStateManager)deleteParameters).SaveViewState ();
                        if (insertParameters != null)
-                               state [4] = 
((IStateManager)insertParameters).SaveViewState ();
+                               state [3] = 
((IStateManager)insertParameters).SaveViewState ();
                        if (filterParameters != null)
-                               state [5] = 
((IStateManager)filterParameters).SaveViewState ();
+                               state [4] = 
((IStateManager)filterParameters).SaveViewState ();
                        
                        foreach (object ob in state)
                                if (ob != null) return state;
@@ -1174,17 +1159,15 @@
                
                protected virtual void TrackViewState()
                {
-                       viewState.TrackViewState ();
+                       isTrackingViewState = true;
+
                        if (selectParameters != null) 
((IStateManager)selectParameters).TrackViewState ();
-                       if (updateParameters != null) 
((IStateManager)updateParameters).TrackViewState ();
-                       if (deleteParameters != null) 
((IStateManager)deleteParameters).TrackViewState ();
-                       if (insertParameters != null) 
((IStateManager)insertParameters).TrackViewState ();
                        if (filterParameters != null) 
((IStateManager)filterParameters).TrackViewState ();
                }
                
                protected bool IsTrackingViewState
                {
-                       get { return viewState.IsTrackingViewState; }
+                       get { return isTrackingViewState; }
                }
                
                
@@ -1213,3 +1196,4 @@
 
 
 
+

Modified: 
trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/ObjectDataSourceTest.cs
===================================================================
--- 
trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/ObjectDataSourceTest.cs
   2007-02-20 18:01:37 UTC (rev 73200)
+++ 
trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/ObjectDataSourceTest.cs
   2007-02-20 18:07:56 UTC (rev 73201)
@@ -215,19 +215,13 @@
                        Assert.AreEqual ("", ods.TypeName, "TypeName");
                        Assert.AreEqual ("", ods.UpdateMethod, "UpdateMethod ");
                        Assert.AreEqual (typeof (ParameterCollection), 
ods.UpdateParameters.GetType (), "UpdateParameters");
-                       
-               }
-
-               [Test]
-               public void ObjectDataSource_NotWorkingDefaultProperties ()
-               {
-                       ObjectDataSourcePoker ods = new ObjectDataSourcePoker 
();
                        Assert.AreEqual (0, ods.CacheDuration, "CacheDuration");
                        Assert.AreEqual (DataSourceCacheExpiry.Absolute, 
ods.CacheExpirationPolicy, "CacheExpirationPolicy");
                        Assert.AreEqual ("", ods.CacheKeyDependency, 
"CacheKeyDependency");
                        Assert.AreEqual (false, ods.ConvertNullToDBNull, 
"ConvertNullToDBNull ");
                        Assert.AreEqual (false, ods.EnableCaching, 
"EnableCaching ");
                        Assert.AreEqual ("", ods.SqlCacheDependency, 
"SqlCacheDependency");
+                       
                }
 
                //Non default properties values
@@ -296,20 +290,34 @@
                {
                        ObjectDataSourcePoker  ods = new ObjectDataSourcePoker 
();
                        //InitObjectDataSource (ods,"");        
+
+                       ods.CacheDuration = 1;
+                       ods.CacheExpirationPolicy = 
DataSourceCacheExpiry.Sliding;
+                       ods.CacheKeyDependency = "key";
+                       ods.ConflictDetection = 
ConflictOptions.CompareAllValues;
+                       ods.ConvertNullToDBNull = true;
+                       ods.DataObjectTypeName = "DataObjectType";
+                       ods.DeleteMethod = "deleteMethod";
+                       ods.EnableCaching = true;
+                       ods.EnablePaging = true;
+                       ods.FilterExpression = "filter expression";
+                       ods.InsertMethod = "insertMethod";
+                       ods.MaximumRowsParameterName = "maxRows";
+                       ods.OldValuesParameterFormatString = "old_{0}";
+                       ods.SelectCountMethod = "selectCountMethod";
+                       ods.SelectMethod = "selectMethod";
+                       ods.SortParameterName = "sortParamName";
+                       ods.SqlCacheDependency = "cacheDependency";
+                       ods.StartRowIndexParameterName = "startRow";
+                       ods.TypeName = "TypeName";
+                       ods.UpdateMethod = "updateMethod";
+
+                       object state = ods.SaveState ();
+                       Assert.IsNull (state, "ViewState is null");
+
                        ObjectDataSourcePoker copy = new ObjectDataSourcePoker 
();
-                       FormParameter p = new FormParameter ("ID", "TextBox1");
-                       p.DefaultValue = "1002";
-                       ods.FilterParameters.Add (p);
-                       Parameter p1 = new Parameter ("ID", TypeCode.String, 
"1001");
-                       Parameter p2 = new Parameter ("FName", TypeCode.String, 
"Mahesh");              
-                       ods.SelectParameters.Add (p1);
-                       ods.SelectParameters.Add (p2); 
-                       object state = ods.SaveState ();
                        copy.LoadState (state);
-                       Assert.AreEqual ("ID", copy.FilterParameters [0].Name, 
"ViewStateFilterParameters1");
-                       Assert.AreEqual ("1002", copy.FilterParameters 
[0].DefaultValue, "ViewStateFilterParameters2");
-                       Assert.AreEqual ("1001", 
copy.SelectParameters[0].DefaultValue, "ViewStateSelectParameters1");
-                       Assert.AreEqual (2, copy.SelectParameters.Count , 
"ViewStateSelectParameters2");
+
                }
 
                //Properties functionality

Modified: 
trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/ObjectDataSourceViewTest.cs
===================================================================
--- 
trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/ObjectDataSourceViewTest.cs
       2007-02-20 18:01:37 UTC (rev 73200)
+++ 
trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/ObjectDataSourceViewTest.cs
       2007-02-20 18:07:56 UTC (rev 73201)
@@ -190,13 +190,6 @@
                        Assert.AreEqual ("", sql.TypeName, "TypeName");
                        Assert.AreEqual ("", sql.UpdateMethod, "UpdateMethod");
                        Assert.AreEqual (true, sql.IsTrackingViewState (), 
"IsTrackingViewState");
-               }
-
-               [Test]
-               public void DefaultsNotWorking ()
-               {
-                       ObjectDataSource ds = new ObjectDataSource ();
-                       ObjectViewPoker sql = new ObjectViewPoker (ds, 
"DefaultView", null);
                        Assert.IsTrue (sql.CanRetrieveTotalRowCount, 
"CanRetrieveTotalRowCount");
                }
 
@@ -254,6 +247,58 @@
                }
 
                [Test]
+               public void ViewStateSupport () 
+               {
+                       ObjectDataSourceView view;
+                       MyDataSource ds = new MyDataSource ();
+
+                       ds.ID = "ObjectDataSource2";
+                       ds.TypeName = 
"MonoTests.System.Web.UI.WebControls.DataSourceObject";
+                       ds.SelectMethod = "Select";
+                       ds.SelectCountMethod = "SelectCount";
+
+                       view = (ObjectDataSourceView) ds.DoGetView 
("DefaultView");
+                       ((IStateManager) view).TrackViewState ();
+
+                       Parameter p1 = new Parameter ("test", TypeCode.String);
+
+                       Assert.IsTrue (((IStateManager) 
view).IsTrackingViewState, "IsTrackingViewState");
+                       Assert.IsTrue (((IStateManager) 
view.FilterParameters).IsTrackingViewState, 
"FilterParameters.IsTrackingViewState");
+                       Assert.IsTrue (((IStateManager) 
view.SelectParameters).IsTrackingViewState, 
"SelecteParameters.IsTrackingViewState");
+                       Assert.IsFalse (((IStateManager) 
view.DeleteParameters).IsTrackingViewState, 
"DeleteParameters.IsTrackingViewState");
+                       Assert.IsFalse (((IStateManager) 
view.InsertParameters).IsTrackingViewState, 
"InsertParameters.IsTrackingViewState");
+                       Assert.IsFalse (((IStateManager) 
view.UpdateParameters).IsTrackingViewState, 
"UpdateParameters.IsTrackingViewState");
+
+                       object state = ((IStateManager) view).SaveViewState ();
+                       Assert.IsNull (state, "view ViewState not null");
+
+                       view.DeleteParameters.Add (p1);
+                       view.InsertParameters.Add (p1);
+                       //view.UpdateParameters.Add (p1);
+
+                       state = ((IStateManager) view).SaveViewState ();
+                       Assert.IsNull (state, "view ViewState not null");
+
+                       view.FilterParameters.Add (p1);
+                       //view.SelectParameters.Add (p1);
+
+                       state = ((IStateManager) view).SaveViewState ();
+                       Assert.IsNotNull (state, "view ViewState not null");
+
+                       state = ((IStateManager) 
view.FilterParameters).SaveViewState ();
+                       Assert.IsNotNull (state, "FilterParamenters ViewState 
not null");
+                       state = ((IStateManager) 
view.SelectParameters).SaveViewState ();
+                       Assert.IsNull (state, "SelectParameters ViewState not 
null");
+
+                       state = ((IStateManager) 
view.DeleteParameters).SaveViewState ();
+                       Assert.IsNotNull (state, "DeleteParameters ViewState 
not null");
+                       state = ((IStateManager) 
view.InsertParameters).SaveViewState ();
+                       Assert.IsNotNull (state, "InsertParameters ViewState 
not null");
+                       state = ((IStateManager) 
view.UpdateParameters).SaveViewState ();
+                       Assert.IsNull (state, "UpdateParameters ViewState not 
null");
+               }
+
+               [Test]
                public void ViewState ()
                {
                        // Note :
@@ -268,11 +313,9 @@
                        ds.SelectMethod = "Select";
                        ds.SelectCountMethod = "SelectCount";
 
-                       Parameter p1 = new Parameter ("test", TypeCode.String);
-                       ds.SelectParameters.Add (p1);
-                       ds.FilterParameters.Add (p1);
+                       view = (ObjectDataSourceView) ds.DoGetView 
("DefaultView");
+                       ((IStateManager) view).TrackViewState ();
 
-                       view = (ObjectDataSourceView) ds.DoGetView 
("DefaultView");
                        view.ConflictDetection = 
ConflictOptions.CompareAllValues;
                        view.ConvertNullToDBNull = true;
                        view.DataObjectTypeName = "test";
@@ -288,13 +331,12 @@
                        view.TypeName = "test";
                        view.UpdateMethod = "test";
 
-                       ((IStateManager) view).TrackViewState ();
                        object state = ((IStateManager) view).SaveViewState ();
+                       Assert.IsNull (state, "ViewState#1");
 
                        ObjectDataSourceView copy = new ObjectDataSourceView 
(ds, "DefaultView", null);
                        ((IStateManager) copy).LoadViewState (state);
 
-                       Assert.AreEqual (null, state, "ViewState#1");
                }
 
                [Test]

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to