diff options
author | Atsushi Eno <atsushieno@gmail.com> | 2007-09-25 21:35:18 +0400 |
---|---|---|
committer | Atsushi Eno <atsushieno@gmail.com> | 2007-09-25 21:35:18 +0400 |
commit | 6959e0c1d3d243a70bc74d0e6095d3fe539e19f7 (patch) | |
tree | 6f45adcf5efa18993416566f50d9429c979e4711 /mcs/class/System.XML/System.Xml.Serialization | |
parent | 8e05931259ce9328959effacd0122eec209bbe5a (diff) |
2007-09-25 Atsushi Enomoto <atsushi@ximian.com>
* XmlSerializerTests.cs : added deserialization test for
XmlSchemaProviderAttribute use.
* XmlReflectionImporterTests.cs : added test for conclict resolution
between defaultNamespace and XmlSchemaProvider() namespace.
* XmlSchemaExporterTests.cs : use Infoset() comparison.
* XmlTypeMapping.cs : Namespace and XmlTypeNamespace could be
different when an explicit namespace is specified (e.g. at
XmlReflectionImporter.ctor).
* SerializationCodeGenerator.cs,
XmlSerializationWriterInterpreter.cs :
revert XmlTypeMapping.XmlTypeNamsepace usage. Now with the fix
above, original code should work fine.
svn path=/trunk/mcs/; revision=86346
Diffstat (limited to 'mcs/class/System.XML/System.Xml.Serialization')
4 files changed, 14 insertions, 4 deletions
diff --git a/mcs/class/System.XML/System.Xml.Serialization/ChangeLog b/mcs/class/System.XML/System.Xml.Serialization/ChangeLog index f4f1d7fb87f..65448b3fa31 100644 --- a/mcs/class/System.XML/System.Xml.Serialization/ChangeLog +++ b/mcs/class/System.XML/System.Xml.Serialization/ChangeLog @@ -1,5 +1,15 @@ 2007-09-25 Atsushi Enomoto <atsushi@ximian.com> + * XmlTypeMapping.cs : Namespace and XmlTypeNamespace could be + different when an explicit namespace is specified (e.g. at + XmlReflectionImporter.ctor). + * SerializationCodeGenerator.cs, + XmlSerializationWriterInterpreter.cs : + revert XmlTypeMapping.XmlTypeNamsepace usage. Now with the fix + above, original code should work fine. + +2007-09-25 Atsushi Enomoto <atsushi@ximian.com> + * XmlTypeMapping.cs, XmlSerializationWriterInterpreter.cs, SerializationCodeGenerator.cs : More XmlSchemaProviderAttribute method check. Use QName returned diff --git a/mcs/class/System.XML/System.Xml.Serialization/SerializationCodeGenerator.cs b/mcs/class/System.XML/System.Xml.Serialization/SerializationCodeGenerator.cs index 40b577324d9..e5dd7805a1c 100644 --- a/mcs/class/System.XML/System.Xml.Serialization/SerializationCodeGenerator.cs +++ b/mcs/class/System.XML/System.Xml.Serialization/SerializationCodeGenerator.cs @@ -666,9 +666,7 @@ namespace System.Xml.Serialization if (typeMap.TypeData.SchemaType == SchemaTypes.XmlSerializable) { - WriteLine (String.Format ("WriteSerializable (ob, {0}, {1}, isNullable);", - typeMap.XmlType != null ? GetLiteral (typeMap.XmlType) : "element", - typeMap.XmlTypeNamespace != null ? GetLiteral (typeMap.XmlTypeNamespace) : "namesp")); + WriteLine ("WriteSerializable (ob, element, namesp, isNullable);"); GenerateEndHook (); WriteLineUni ("}"); diff --git a/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationWriterInterpreter.cs b/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationWriterInterpreter.cs index 29f7a61a53e..bcb918281a5 100644 --- a/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationWriterInterpreter.cs +++ b/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationWriterInterpreter.cs @@ -116,7 +116,7 @@ namespace System.Xml.Serialization if (typeMap.TypeData.SchemaType == SchemaTypes.XmlSerializable) { - WriteSerializable ((IXmlSerializable)ob, typeMap.XmlType ?? element, typeMap.XmlTypeNamespace ?? namesp, isNullable); + WriteSerializable ((IXmlSerializable)ob, element, namesp, isNullable); return; } diff --git a/mcs/class/System.XML/System.Xml.Serialization/XmlTypeMapping.cs b/mcs/class/System.XML/System.Xml.Serialization/XmlTypeMapping.cs index bbf222f03de..7d201991bdf 100644 --- a/mcs/class/System.XML/System.Xml.Serialization/XmlTypeMapping.cs +++ b/mcs/class/System.XML/System.Xml.Serialization/XmlTypeMapping.cs @@ -232,6 +232,8 @@ namespace System.Xml.Serialization throw new InvalidOperationException ( String.Format ("Method {0}.{1}() specified by XmlSchemaProviderAttribute has invalid signature: return type must be compatible with System.Xml.XmlQualifiedName.", typeData.Type.Name, method)); + // defaultNamespace at XmlReflectionImporter takes precedence for Namespace, but not for XsdTypeNamespace. + UpdateRoot (new XmlQualifiedName (_schemaTypeName.Name, Namespace ?? _schemaTypeName.Namespace)); XmlTypeNamespace = _schemaTypeName.Namespace; XmlType = _schemaTypeName.Name; |