Fix for IXmlSerializable.ReadXml. Bug 9762.
authorArina Itkes <arina@mono-cvs.ximian.com>
Mon, 4 Feb 2008 09:08:00 +0000 (09:08 -0000)
committerArina Itkes <arina@mono-cvs.ximian.com>
Mon, 4 Feb 2008 09:08:00 +0000 (09:08 -0000)
svn path=/trunk/mcs/; revision=94730

mcs/class/System.Data/System.Data/ChangeLog
mcs/class/System.Data/System.Data/DataTable.cs
mcs/class/System.Data/Test/System.Data/ChangeLog
mcs/class/System.Data/Test/System.Data/DataTableTest5.cs

index ab2609d32fc0bddb423cd4342da8f1f5546a8e82..29ec03c3670c1de730e75dbfbc86334b240516bb 100644 (file)
@@ -1,3 +1,7 @@
+2008-02-04 Arina Itkes <arinai@mainsoft.com>
+       
+       * DataTable.cs: Fix for IXmlSerializable.ReadXml.
+
 2008-01-28 Arina Itkes <arinai@mainsoft.com>
        
        * DataTable.cs: Fix for IXmlSerializable.WriteXml.
index ffba82e10ba72c128728e448dedef690fb57a278..8b5c38772ad35589d7235bb3997203322bdaba2f 100644 (file)
@@ -1706,7 +1706,7 @@ namespace System.Data {
 \r
                void IXmlSerializable.ReadXml (XmlReader reader) \r
                {\r
-                       ReadXml (reader);\r
+                       ReadXml_internal (reader, true);\r
                }\r
 \r
                void IXmlSerializable.WriteXml (XmlWriter writer) \r
@@ -2060,6 +2060,11 @@ namespace System.Data {
                }\r
 \r
                public XmlReadMode ReadXml (XmlReader reader)\r
+               {\r
+                       return ReadXml_internal (reader, false);\r
+               }\r
+\r
+               public XmlReadMode ReadXml_internal (XmlReader reader, bool serializable) \r
                {\r
                        // The documentation from MS for this method is rather\r
                        // poor.  The following cases have been observed\r
@@ -2086,7 +2091,7 @@ namespace System.Data {
                        DataSet ds = new DataSet ();\r
 \r
                        reader.MoveToContent ();\r
-                       if (Columns.Count > 0 && reader.LocalName != "diffgram"\r
+                       if (Columns.Count > 0 && reader.LocalName != "diffgram" || serializable)\r
                                mode = ds.ReadXml (reader);\r
                        else if (Columns.Count > 0 && reader.LocalName == "diffgram") {\r
                                  try {\r
index fccc75988117bc475d9b7fd988eb6a021e397953..ccff3804e3cbb8da22348f1b0d704fe22fa31d97 100644 (file)
@@ -1,3 +1,8 @@
+2008-02-04 Arina Itkes <arinai@mainsoft.com>
+
+       * DataTableTest5.cs: Removing of "Ignore" category
+         for tests on IXmlSerializable.ReadXml for empty DataTable.
+
 2008-02-03 Arina Itkes <arinai@mainsoft.com>
 
        * XmlExportOfTypedDataSetTest.cs: added test for exporting of
index e8e5515e4e50f0cbd2cd196c39ab905c69bb4266..e00da4c277392e47a502a02f6ad5348803711239 100644 (file)
@@ -451,7 +451,6 @@ namespace Monotests_System.Data
                        Assert.AreEqual (3, row ["DepartmentID"], "#75");
                }
 
-               [Ignore ("IXmlSerializable.ReadXml does not work for a table without columns defined.")]
                [Test]
                public void XmlTest1 () {
                        //Make a table without any relations
@@ -470,7 +469,6 @@ namespace Monotests_System.Data
                        VerifyTableSchema (table, parentTable1.TableName, null);//parentTable1.DataSet);
                }
 
-               [Ignore ("IXmlSerializable.ReadXml does not work for a table without columns defined.")]
                [Test]
                public void XmlTest2 () {
                        MakeParentTable1 ();
@@ -487,7 +485,6 @@ namespace Monotests_System.Data
                        VerifyTableSchema (table, parentTable1.TableName, ds);
                }
 
-               [Ignore ("IXmlSerializable.ReadXml does not work for a table without columns defined.")]
                [Test]
                public void XmlTest3 () {
                        //Create a parent table and create child tables
@@ -506,7 +503,7 @@ namespace Monotests_System.Data
                        VerifyTableSchema (table, parentTable1.TableName, null);
                }
 
-               [Ignore ("IXmlSerializable.ReadXml does not work for a table without columns defined.")]
+               
                [Test]
                public void XmlTest4 () {
                        //Create a parent table and create child tables
@@ -1063,7 +1060,6 @@ namespace Monotests_System.Data
                        Assert.AreEqual (DataRowState.Unchanged, row.RowState, "#10");
                }
 
-               [Ignore ("IXmlSerializable.ReadXml does not work for a table without columns defined.")]
                [Test]
                public void XmlTest16 () {
                        FileStream stream = null;