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