Author: atsushi
Date: 2007-01-15 00:26:35 -0500 (Mon, 15 Jan 2007)
New Revision: 71001

Modified:
   trunk/mcs/class/System.XML/System.Xml.Serialization/ChangeLog
   trunk/mcs/class/System.XML/System.Xml.Serialization/TypeData.cs
   trunk/mcs/class/System.XML/System.Xml.Serialization/TypeTranslator.cs
   trunk/mcs/class/System.XML/Test/System.Xml.Serialization/ChangeLog
   
trunk/mcs/class/System.XML/Test/System.Xml.Serialization/XmlReflectionImporterTests.cs
   
trunk/mcs/class/System.XML/Test/System.Xml.Serialization/XmlSerializerTests.cs
Log:
2007-01-15  Atsushi Enomoto  <[EMAIL PROTECTED]>

        * TypeData.cs : reject generic type definitions.
        * TypeTranslator.cs : Make generic type names in XML compatible with
          .net: foo_x0060_1 -> fooOfString.

        * XmlSerializerTests.cs : most of generic tests are working now.
        * XmlReflectionImporterTests.cs : test for rejecting generic type
          definition.



Modified: trunk/mcs/class/System.XML/System.Xml.Serialization/ChangeLog
===================================================================
--- trunk/mcs/class/System.XML/System.Xml.Serialization/ChangeLog       
2007-01-15 02:24:42 UTC (rev 71000)
+++ trunk/mcs/class/System.XML/System.Xml.Serialization/ChangeLog       
2007-01-15 05:26:35 UTC (rev 71001)
@@ -1,3 +1,9 @@
+2007-01-15  Atsushi Enomoto  <[EMAIL PROTECTED]>
+
+       * TypeData.cs : reject generic type definitions.
+       * TypeTranslator.cs : Make generic type names in XML compatible with
+         .net: foo_x0060_1 -> fooOfString.
+
 2006-12-04  Atsushi Enomoto  <[EMAIL PROTECTED]>
 
        * SerializationCodeGenerator.cs, XmlCustomFormatter.cs :

Modified: trunk/mcs/class/System.XML/System.Xml.Serialization/TypeData.cs
===================================================================
--- trunk/mcs/class/System.XML/System.Xml.Serialization/TypeData.cs     
2007-01-15 02:24:42 UTC (rev 71000)
+++ trunk/mcs/class/System.XML/System.Xml.Serialization/TypeData.cs     
2007-01-15 05:26:35 UTC (rev 71001)
@@ -61,6 +61,10 @@
 
                public TypeData (Type type, string elementName, bool 
isPrimitive, TypeData mappedType, XmlSchemaPatternFacet facet)
                {
+#if NET_2_0
+                       if (type.IsGenericTypeDefinition)
+                               throw new InvalidOperationException ("Generic 
type definition cannot be used in serialization. Only specific generic types 
can be used.");
+#endif
                        this.mappedType = mappedType;
                        this.facet = facet;
                        this.type = type;

Modified: trunk/mcs/class/System.XML/System.Xml.Serialization/TypeTranslator.cs
===================================================================
--- trunk/mcs/class/System.XML/System.Xml.Serialization/TypeTranslator.cs       
2007-01-15 02:24:42 UTC (rev 71000)
+++ trunk/mcs/class/System.XML/System.Xml.Serialization/TypeTranslator.cs       
2007-01-15 05:26:35 UTC (rev 71001)
@@ -207,12 +207,21 @@
                                typeData = dynamicCache[runtimeType] as 
TypeData;
                                if (typeData != null) return typeData;
 #endif
-                               
+
                                string name;
                                if (type.IsArray) {
                                        string sufix = GetTypeData 
(type.GetElementType ()).XmlType;
                                        name = GetArrayName (sufix);
                                }
+#if NET_2_0
+                               else if (type.IsGenericType && 
!type.IsGenericTypeDefinition) {
+                                       name = XmlConvert.EncodeLocalName 
(type.Name.Substring (0, type.Name.IndexOf ('`'))) + "Of";
+                                       foreach (Type garg in 
type.GetGenericArguments ())
+                                               name += garg.IsArray || 
garg.IsGenericType ?
+                                                       GetTypeData 
(garg).XmlType :
+                                                       
CodeIdentifier.MakePascal (XmlConvert.EncodeLocalName (garg.Name));
+                               }
+#endif
                                else 
                                        name = XmlConvert.EncodeLocalName 
(type.Name);
 

Modified: trunk/mcs/class/System.XML/Test/System.Xml.Serialization/ChangeLog
===================================================================
--- trunk/mcs/class/System.XML/Test/System.Xml.Serialization/ChangeLog  
2007-01-15 02:24:42 UTC (rev 71000)
+++ trunk/mcs/class/System.XML/Test/System.Xml.Serialization/ChangeLog  
2007-01-15 05:26:35 UTC (rev 71001)
@@ -1,3 +1,9 @@
+2007-01-15  Atsushi Enomoto  <[EMAIL PROTECTED]>
+
+       * XmlSerializerTests.cs : most of generic tests are working now.
+       * XmlReflectionImporterTests.cs : test for rejecting generic type
+         definition.
+
 2006-12-04  Atsushi Enomoto  <[EMAIL PROTECTED]>
 
        * XmlSerializerTests.cs :

Modified: 
trunk/mcs/class/System.XML/Test/System.Xml.Serialization/XmlReflectionImporterTests.cs
===================================================================
--- 
trunk/mcs/class/System.XML/Test/System.Xml.Serialization/XmlReflectionImporterTests.cs
      2007-01-15 02:24:42 UTC (rev 71000)
+++ 
trunk/mcs/class/System.XML/Test/System.Xml.Serialization/XmlReflectionImporterTests.cs
      2007-01-15 05:26:35 UTC (rev 71001)
@@ -17,6 +17,9 @@
 using System.Xml.Serialization;
 
 using NUnit.Framework;
+#if NET_2_0
+using System.Collections.Generic;
+#endif
 
 using MonoTests.System.Xml.TestClasses;
 
@@ -1541,6 +1544,13 @@
                {
                        new XmlSerializer (typeof (NullableContainer));
                }
+
+               [Test]
+               [ExpectedException (typeof (InvalidOperationException))]
+               public void ImportGenericTypeDefinition ()
+               {
+                       new XmlSerializer (typeof 
(List<int>).GetGenericTypeDefinition ());
+               }
 #endif
 
                public class Employee : IXmlSerializable

Modified: 
trunk/mcs/class/System.XML/Test/System.Xml.Serialization/XmlSerializerTests.cs
===================================================================
--- 
trunk/mcs/class/System.XML/Test/System.Xml.Serialization/XmlSerializerTests.cs  
    2007-01-15 02:24:42 UTC (rev 71000)
+++ 
trunk/mcs/class/System.XML/Test/System.Xml.Serialization/XmlSerializerTests.cs  
    2007-01-15 05:26:35 UTC (rev 71001)
@@ -2189,7 +2189,6 @@
 
                [Test]
                [ExpectedException (typeof (InvalidOperationException))]
-               [Category ("NotWorking")] // hmm, why?
                public void XmlArrayAttributeUnqualifiedWithNamespace ()
                {
                        new XmlSerializer (typeof 
(XmlArrayUnqualifiedWithNamespace));
@@ -2233,7 +2232,6 @@
 
 #if NET_2_0
                [Test]
-               [Category ("NotWorking")]
                public void TestSerializeGenSimpleClassString ()
                {
                        GenSimpleClass<string> simple = new 
GenSimpleClass<string> ();
@@ -2247,7 +2245,6 @@
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void TestSerializeGenSimpleClassBool ()
                {
                        GenSimpleClass<bool> simple = new GenSimpleClass<bool> 
();
@@ -2261,7 +2258,6 @@
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void TestSerializeGenSimpleStructInt ()
                {
                        GenSimpleStruct<int> simple = new GenSimpleStruct<int> 
(0);
@@ -2275,7 +2271,6 @@
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void TestSerializeGenListClassString ()
                {
                        GenListClass<string> genlist = new GenListClass<string> 
();
@@ -2290,7 +2285,6 @@
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void TestSerializeGenListClassFloat ()
                {
                        GenListClass<float> genlist = new GenListClass<float> 
();
@@ -2305,7 +2299,6 @@
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void TestSerializeGenListClassList ()
                {
                        GenListClass<GenListClass<int>> genlist = new 
GenListClass<GenListClass<int>> ();
@@ -2326,7 +2319,6 @@
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void TestSerializeGenListClassArray ()
                {
                        GenListClass<GenArrayClass<char>> genlist = new 
GenListClass<GenArrayClass<char>> ();
@@ -2348,7 +2340,6 @@
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void TestSerializeGenTwoClassCharDouble ()
                {
                        GenTwoClass<char, double> gentwo = new 
GenTwoClass<char, double> ();
@@ -2363,7 +2354,6 @@
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void TestSerializeGenDerivedClassDecimalShort ()
                {
                        GenDerivedClass<decimal, short> derived = new 
GenDerivedClass<decimal, short> ();
@@ -2380,7 +2370,6 @@
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void TestSerializeGenDerivedSecondClassByteUlong ()
                {
                        GenDerived2Class<byte, ulong> derived2 = new 
GenDerived2Class<byte, ulong> ();
@@ -2397,7 +2386,6 @@
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void TestSerializeGenNestedClass ()
                {
                        GenNestedClass<string, int>.InnerClass<bool> nested =
@@ -2413,7 +2401,6 @@
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void TestSerializeGenListClassListNested ()
                {
                        GenListClass<GenListClass<GenNestedClass<int, 
int>.InnerClass<string>>> genlist =
@@ -2446,7 +2433,6 @@
 
                public enum Myenum { one, two, three, four, five, six };
                [Test]
-               [Category ("NotWorking")]
                public void TestSerializeGenArrayClassEnum ()
                {
                        GenArrayClass<Myenum> genarr = new 
GenArrayClass<Myenum> ();
@@ -2462,7 +2448,6 @@
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void TestSerializeGenArrayStruct ()
                {
                        GenArrayClass<GenSimpleStruct<uint>> genarr = new 
GenArrayClass<GenSimpleStruct<uint>> ();
@@ -2513,7 +2498,6 @@
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void TestSerializeGenComplexStruct ()
                {
                        GenComplexStruct<int, string> complex = new 
GenComplexStruct<int, string> (0);

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

Reply via email to