2010-01-08 Atsushi Enomoto <atsushi@ximian.com>
authorAtsushi Eno <atsushieno@gmail.com>
Fri, 8 Jan 2010 03:06:49 +0000 (03:06 -0000)
committerAtsushi Eno <atsushieno@gmail.com>
Fri, 8 Jan 2010 03:06:49 +0000 (03:06 -0000)
* SerializationMap.cs, KnownTypeCollection.cs : differentiate
  [DataContract(Namespace=null)] and [DataContract(Namespace="")].
  Fixed bug #568763.

* XmlObjectSrializerTest.cs : added test for bug #568763.

svn path=/trunk/mcs/; revision=149210

mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/ChangeLog
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/KnownTypeCollection.cs
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/SerializationMap.cs
mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/ChangeLog
mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/XmlObjectSerializerTest.cs

index 8e4eab14069721c149c8b79b8b965377b5753c3a..2dd79149ff4a2b80cda12554c946e0e40300a312 100755 (executable)
@@ -1,3 +1,9 @@
+2010-01-08  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SerializationMap.cs, KnownTypeCollection.cs : differentiate
+         [DataContract(Namespace=null)] and [DataContract(Namespace="")].
+         Fixed bug #568763.
+
 2009-12-01  Sebastien Pouliot  <sebastien@ximian.com>
 
        * DataContractSerializer.cs: Add two missing methods for FX3.0 
index 4ff2d0e8719b02ad60621115342de7b2892c15af..3690c5ae4c7525fabbda34e2ced30442947f28cb 100644 (file)
@@ -527,7 +527,7 @@ namespace System.Runtime.Serialization
                                ns = DefaultClrNamespaceBase + type.Namespace;
 
                        if (name == null)
-                               name = type.Namespace == null || type.Namespace.Length == 0 ? type.Name : type.FullName.Substring (type.Namespace.Length + 1).Replace ('+', '.');
+                               name = type.Namespace == null ? type.Name : type.FullName.Substring (type.Namespace.Length + 1).Replace ('+', '.');
 
                        return new QName (name, ns);
                }
index 70df5fe82eff7abdff7e1c0f6c48adb80074a79d..81211da0ef340c815d63afcc9b381da7c812f6d9 100644 (file)
@@ -100,9 +100,9 @@ namespace System.Runtime.Serialization
                {
                        KnownTypes = knownTypes;
                        RuntimeType = type;
-                       if (qname.Namespace == String.Empty)
+                       if (qname.Namespace == null)
                                qname = new QName (qname.Name,
-                                       "http://schemas.datacontract.org/2004/07/" + type.Namespace);
+                                       KnownTypeCollection.DefaultClrNamespaceBase + type.Namespace);
 
                        XmlName = qname;
                        Members = new List<DataMemberInfo> ();
index cdb7628c34558c691f4e337aa1bdd18abc511bde..ec7eecefa87f2aa8ead58c103cea4f8f92d8e894 100644 (file)
@@ -1,3 +1,7 @@
+2010-01-08  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * XmlObjectSrializerTest.cs : added test for bug #568763.
+
 2009-09-28  Atsushi Enomoto  <atsushi@ximian.com>
 
        * XsdDataContractExporterTest.cs : disable some tests that started
index 30a8ca87329587a04b630229880b17568f5a8bea..8cf3e245774cfc0e2c374d6305951588bc6f03f2 100644 (file)
@@ -227,6 +227,23 @@ namespace MonoTests.System.Runtime.Serialization
                        Assert.AreEqual (expected, sw.ToString ());
                }
 
+               // DCEmpty
+
+               [Test]
+               public void SerializeEmptyNoNSClass ()
+               {
+                       var ser = new DataContractSerializer (typeof (DCEmptyNoNS));
+                       SerializeEmptyNoNSClass (ser, "<DCEmptyNoNS xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" />");
+               }
+
+               void SerializeEmptyNoNSClass (XmlObjectSerializer ser, string expected)
+               {
+                       var sw = new StringWriter ();
+                       using (var w = XmlWriter.Create (sw, settings)) {
+                               ser.WriteObject (w, new DCEmptyNoNS ());
+                       }
+                       Assert.AreEqual (expected, sw.ToString ());
+               }
                // string (primitive)
 
                [Test]
@@ -1438,6 +1455,11 @@ namespace MonoTests.System.Runtime.Serialization
                public string Foo = "TEST";
        }
 
+       [DataContract (Namespace = "")]
+       public class DCEmptyNoNS
+       {
+       }
+
        [DataContract]
        public class DCSimple1
        {