Sync parameter names in System.Data with .NET.
[mono.git] / mcs / class / System.Data / System.Data / XmlDiffLoader.cs
index 45efcb97dfa4d23521c11e560e082b6c46ab88ee..df9080909624f709ea57626528cc9bc25e1f1ffd 100644 (file)
@@ -12,6 +12,7 @@
 //     Lluis Sanchez Gual (lluis@ximian.com)
 //
 // (c)copyright 2003 Ville Palo
+// Copyright 2011 Xamarin Inc.
 //
 
 //
@@ -229,13 +230,16 @@ namespace System.Data {
                        do {
                                switch (reader.NamespaceURI) {
                                case XmlConstants.XmlnsNS:
+#if NET_2_0
+                               case XmlConstants.XmlNS:
+#endif
                                case XmlConstants.DiffgrNamespace:
                                case XmlConstants.MsdataNamespace:
                                case XmlConstants.MspropNamespace:
                                case XmlSchema.Namespace:
                                        continue;
                                }
-                               DataColumn c = Table.Columns [reader.LocalName];
+                               DataColumn c = Table.Columns [XmlHelper.Decode (reader.LocalName)];
                                if (c == null ||
                                        c.ColumnMapping != MappingType.Attribute)                                       continue;
                                if (c.Namespace == null && reader.NamespaceURI == String.Empty ||
@@ -265,9 +269,9 @@ namespace System.Data {
                        {
                                if (reader.NodeType != XmlNodeType.Element) { reader.Read (); continue; }
                                
-                               if (Table.Columns.Contains (reader.LocalName)) 
+                               string colName = XmlHelper.Decode (reader.LocalName);
+                               if (Table.Columns.Contains (colName)) 
                                {
-                                       string colName = reader.LocalName;
                                        object data = XmlDataLoader.StringToObject (Table.Columns[colName].DataType, reader.ReadString ());
                                        
                                        if (loadType == DataRowVersion.Current) Row [colName] = data;
@@ -322,11 +326,11 @@ namespace System.Data {
                        
                        if (changes != null)
                        {
-                               if (string.Compare (changes, "modified", true) == 0) {
+                               if (string.Compare (changes, "modified", true, CultureInfo.InvariantCulture) == 0) {
                                        DiffGrRows.Add (id, Row); // for later use
                                        state = DataRowState.Modified;
                                }
-                               else if (string.Compare (changes, "inserted", true) == 0) {
+                               else if (string.Compare (changes, "inserted", true, CultureInfo.InvariantCulture) == 0) {
                                        state = DataRowState.Added;
                                }
                                else
@@ -336,7 +340,7 @@ namespace System.Data {
                                state = DataRowState.Unchanged;
                        
                        // If row had errors add row to hashtable for later use
-                       if (error != null && string.Compare (error, "true", true) == 0)
+                       if (error != null && string.Compare (error, "true", true, CultureInfo.InvariantCulture) == 0)
                                ErrorRows.Add (id, Row);
                
                        LoadColumns (Table, Row, reader, DataRowVersion.Current);
@@ -348,6 +352,7 @@ namespace System.Data {
 
                DataTable GetTable (string name)
                {
+                       name = XmlConvert.DecodeName (name);
                        if (DSet != null) 
                                return DSet.Tables [name];
                        else if (name == table.TableName)