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