From 9fee60b9e26b38d5a9593a042775598e1bf21ae8 Mon Sep 17 00:00:00 2001 From: Matthew Heaton Date: Sat, 7 Jun 2025 10:03:31 +1000 Subject: [PATCH 1/3] Fully qualify XmlSchemaProviderAttribute and associated code in SchemaExporter.cs. Refactor the ReuseIXmlSerializableType test to reference a csproj instead of pre-compiled assembly (in preparation for adding additional test type). --- .../System/Runtime/Serialization/Globals.cs | 2 +- .../Runtime/Serialization/SchemaExporter.cs | 9 ++-- .../dotnet-svcutil.params.json | 4 +- .../TypesLib/TypesLib.csproj | 11 ++++ .../CommonTypes/AnotherSharedType.cs | 14 +++++ .../CommonTypes/CommonTypes.csproj | 11 ++++ .../CommonTypes/CustomSerializableType.cs | 48 ++++++++++++++++++ .../CommonTypes/SomeSharedType.cs | 11 ++++ .../TypeReuseIXmlSerializable.wsdl | 0 .../tests/TestCases/TypeReuse/CommonTypes.dll | Bin 7168 -> 0 bytes .../lib/tests/src/GlobalToolTests.cs | 5 +- 11 files changed, 106 insertions(+), 9 deletions(-) create mode 100644 src/dotnet-svcutil/lib/tests/Baselines/ReuseIXmlSerializableType/TypesLib/TypesLib.csproj create mode 100644 src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/AnotherSharedType.cs create mode 100644 src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/CommonTypes.csproj create mode 100644 src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/CustomSerializableType.cs create mode 100644 src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/SomeSharedType.cs rename src/dotnet-svcutil/lib/tests/TestCases/{TypeReuse => ReuseIXmlSerializableType}/TypeReuseIXmlSerializable.wsdl (100%) delete mode 100644 src/dotnet-svcutil/lib/tests/TestCases/TypeReuse/CommonTypes.dll diff --git a/src/dotnet-svcutil/lib/src/FrameworkFork/System.Runtime.Serialization/System/Runtime/Serialization/Globals.cs b/src/dotnet-svcutil/lib/src/FrameworkFork/System.Runtime.Serialization/System/Runtime/Serialization/Globals.cs index b6e258c2fc5..db5cee73e96 100644 --- a/src/dotnet-svcutil/lib/src/FrameworkFork/System.Runtime.Serialization/System/Runtime/Serialization/Globals.cs +++ b/src/dotnet-svcutil/lib/src/FrameworkFork/System.Runtime.Serialization/System/Runtime/Serialization/Globals.cs @@ -514,7 +514,7 @@ internal static Type TypeOfXmlSchemaProviderAttribute get { if (s_typeOfXmlSchemaProviderAttribute == null) - s_typeOfXmlSchemaProviderAttribute = typeof(XmlSchemaProviderAttribute); + s_typeOfXmlSchemaProviderAttribute = typeof(System.Xml.Serialization.XmlSchemaProviderAttribute); return s_typeOfXmlSchemaProviderAttribute; } } diff --git a/src/dotnet-svcutil/lib/src/FrameworkFork/System.Runtime.Serialization/System/Runtime/Serialization/SchemaExporter.cs b/src/dotnet-svcutil/lib/src/FrameworkFork/System.Runtime.Serialization/System/Runtime/Serialization/SchemaExporter.cs index b20c2e3d940..a7bf864c118 100644 --- a/src/dotnet-svcutil/lib/src/FrameworkFork/System.Runtime.Serialization/System/Runtime/Serialization/SchemaExporter.cs +++ b/src/dotnet-svcutil/lib/src/FrameworkFork/System.Runtime.Serialization/System/Runtime/Serialization/SchemaExporter.cs @@ -40,7 +40,7 @@ private static bool InvokeSchemaProviderMethod(Type clrType, XmlSchemaSet schema return false; } - XmlSchemaProviderAttribute provider = (XmlSchemaProviderAttribute)attrs[0]; + System.Xml.Serialization.XmlSchemaProviderAttribute provider = (System.Xml.Serialization.XmlSchemaProviderAttribute)attrs[0]; if (provider.IsAny) { xsdType = CreateAnyElementType(); @@ -55,11 +55,11 @@ private static bool InvokeSchemaProviderMethod(Type clrType, XmlSchemaSet schema } else { - MethodInfo getMethod = clrType.GetMethod(methodName, /*BindingFlags.DeclaredOnly |*/ BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public, new Type[] { typeof(XmlSchemaSet) }); + MethodInfo getMethod = clrType.GetMethod(methodName, /*BindingFlags.DeclaredOnly |*/ BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public, new Type[] { typeof(System.Xml.Schema.XmlSchemaSet) }); if (getMethod == null) throw /*System.Runtime.Serialization.*/DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidDataContractException(string.Format(SRSerialization.MissingGetSchemaMethod, DataContract.GetClrTypeFullName(clrType), methodName))); - if (!(Globals.TypeOfXmlQualifiedName.IsAssignableFrom(getMethod.ReturnType))) + if (!typeof(System.Xml.XmlQualifiedName).IsAssignableFrom(getMethod.ReturnType)) throw /*System.Runtime.Serialization.*/DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidDataContractException(string.Format(SRSerialization.InvalidReturnTypeOnGetSchemaMethod, DataContract.GetClrTypeFullName(clrType), methodName, DataContract.GetClrTypeFullName(getMethod.ReturnType), DataContract.GetClrTypeFullName(Globals.TypeOfXmlQualifiedName)))); object typeInfo = getMethod.Invoke(null, new object[] { schemas }); @@ -78,7 +78,8 @@ private static bool InvokeSchemaProviderMethod(Type clrType, XmlSchemaSet schema } else { - stableName = (XmlQualifiedName)typeInfo; + var systemName = (System.Xml.XmlQualifiedName)typeInfo; + stableName = new XmlQualifiedName(systemName.Name, systemName.Namespace); } } return true; diff --git a/src/dotnet-svcutil/lib/tests/Baselines/ReuseIXmlSerializableType/ReuseIXmlSerializableType/ServiceReference/dotnet-svcutil.params.json b/src/dotnet-svcutil/lib/tests/Baselines/ReuseIXmlSerializableType/ReuseIXmlSerializableType/ServiceReference/dotnet-svcutil.params.json index e0cc04dd28f..66789fa45c5 100644 --- a/src/dotnet-svcutil/lib/tests/Baselines/ReuseIXmlSerializableType/ReuseIXmlSerializableType/ServiceReference/dotnet-svcutil.params.json +++ b/src/dotnet-svcutil/lib/tests/Baselines/ReuseIXmlSerializableType/ReuseIXmlSerializableType/ServiceReference/dotnet-svcutil.params.json @@ -3,14 +3,14 @@ "version": "99.99.99", "options": { "inputs": [ - "../../../../../../src/dotnet-svcutil/lib/tests/TestCases/TypeReuse/TypeReuseIXmlSerializable.wsdl" + "../../../../../../src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/TypeReuseIXmlSerializable.wsdl" ], "namespaceMappings": [ "*, ReuseIXmlSerializableType_NS" ], "outputFile": "Reference.cs", "references": [ - "$testCasesPath$//TypeReuse//CommonTypes.dll" + "$testCasesPath$//ReuseIXmlSerializableType//CommonTypes//CommonTypes.csproj" ], "targetFramework": "N.N", "typeReuseMode": "Specified" diff --git a/src/dotnet-svcutil/lib/tests/Baselines/ReuseIXmlSerializableType/TypesLib/TypesLib.csproj b/src/dotnet-svcutil/lib/tests/Baselines/ReuseIXmlSerializableType/TypesLib/TypesLib.csproj new file mode 100644 index 00000000000..7ef1d73cc41 --- /dev/null +++ b/src/dotnet-svcutil/lib/tests/Baselines/ReuseIXmlSerializableType/TypesLib/TypesLib.csproj @@ -0,0 +1,11 @@ + + + + netstandard1.3 + + + + + + + diff --git a/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/AnotherSharedType.cs b/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/AnotherSharedType.cs new file mode 100644 index 00000000000..4860eb8447b --- /dev/null +++ b/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/AnotherSharedType.cs @@ -0,0 +1,14 @@ +using System.Runtime.Serialization; + +namespace CommonTypes +{ + [DataContract] + public struct AnotherSharedType + { + [DataMember] + public int SomeProperty { get; set; } + + [DataMember] + public CustomSerializableType SomeXmlSerializableType { get; set; } + } +} diff --git a/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/CommonTypes.csproj b/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/CommonTypes.csproj new file mode 100644 index 00000000000..fd1b5c006a3 --- /dev/null +++ b/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/CommonTypes.csproj @@ -0,0 +1,11 @@ + + + + netstandard2.0 + + + + + + + diff --git a/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/CustomSerializableType.cs b/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/CustomSerializableType.cs new file mode 100644 index 00000000000..b81334b50f1 --- /dev/null +++ b/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/CustomSerializableType.cs @@ -0,0 +1,48 @@ +using System; +using System.Globalization; +using System.Numerics; +using System.Xml; +using System.Xml.Schema; +using System.Xml.Serialization; + +namespace CommonTypes +{ + public struct CustomSerializableType : IXmlSerializable + { + public BigInteger TestValue { get; set; } + + public XmlSchema? GetSchema() + { + XmlSchema schema = new XmlSchema() + { + Id = "CustomSerializableTypeSchema" + }; + XmlSchemaSimpleType schemaSimpleType1 = new XmlSchemaSimpleType(); + schemaSimpleType1.Name = "BigIntegerString"; + XmlSchemaSimpleType schemaSimpleType2 = schemaSimpleType1; + XmlSchemaSimpleTypeRestriction simpleTypeRestriction = new XmlSchemaSimpleTypeRestriction() + { + BaseTypeName = new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema") + }; + schemaSimpleType2.Content = (XmlSchemaSimpleTypeContent) simpleTypeRestriction; + schema.Items.Add((XmlSchemaObject) schemaSimpleType2); + return schema; + } + + public void ReadXml(XmlReader reader) + { + reader.ReadStartElement(); + reader.ReadStartElement(); + this.TestValue = BigInteger.Parse(reader.ReadContentAsString()); + reader.ReadEndElement(); + reader.ReadEndElement(); + } + + public void WriteXml(XmlWriter writer) + { + writer.WriteStartElement("BigIntegerString"); + writer.WriteValue(this.TestValue.ToString((IFormatProvider) CultureInfo.InvariantCulture)); + writer.WriteEndElement(); + } + } +} diff --git a/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/SomeSharedType.cs b/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/SomeSharedType.cs new file mode 100644 index 00000000000..a2319d3806b --- /dev/null +++ b/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/SomeSharedType.cs @@ -0,0 +1,11 @@ +using System.Runtime.Serialization; + +namespace CommonTypes +{ + [DataContract] + public struct SomeSharedType + { + [DataMember] + public int SomeProperty { get; set; } + } +} diff --git a/src/dotnet-svcutil/lib/tests/TestCases/TypeReuse/TypeReuseIXmlSerializable.wsdl b/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/TypeReuseIXmlSerializable.wsdl similarity index 100% rename from src/dotnet-svcutil/lib/tests/TestCases/TypeReuse/TypeReuseIXmlSerializable.wsdl rename to src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/TypeReuseIXmlSerializable.wsdl diff --git a/src/dotnet-svcutil/lib/tests/TestCases/TypeReuse/CommonTypes.dll b/src/dotnet-svcutil/lib/tests/TestCases/TypeReuse/CommonTypes.dll deleted file mode 100644 index c3d81b2a2c9638f175d8fdb75732b35eac67e7fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7168 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 I|ECE22brMo Date: Sun, 8 Jun 2025 09:25:28 +1000 Subject: [PATCH 2/3] Fix unit test. --- .../CommonTypes/CustomSerializableType.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/CustomSerializableType.cs b/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/CustomSerializableType.cs index b81334b50f1..eff5a121880 100644 --- a/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/CustomSerializableType.cs +++ b/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/CustomSerializableType.cs @@ -11,7 +11,7 @@ public struct CustomSerializableType : IXmlSerializable { public BigInteger TestValue { get; set; } - public XmlSchema? GetSchema() + public XmlSchema GetSchema() { XmlSchema schema = new XmlSchema() { From d87c275937703a2d6f7757b03a7b995d7b93ecec Mon Sep 17 00:00:00 2001 From: Matthew Heaton Date: Sun, 8 Jun 2025 10:58:45 +1000 Subject: [PATCH 3/3] Update ReuseIXmlSerializableType unit test to include an example type from a custom namespace that requires the XmlSchemaProvider attribute. --- .../TypesLib/TypesLib.csproj | 11 ---- .../CommonTypes/AnotherSharedType.cs | 3 + .../CustomSerializableTypeWithNs.cs | 57 +++++++++++++++++++ .../TypeReuseIXmlSerializable.wsdl | 17 +++++- 4 files changed, 76 insertions(+), 12 deletions(-) delete mode 100644 src/dotnet-svcutil/lib/tests/Baselines/ReuseIXmlSerializableType/TypesLib/TypesLib.csproj create mode 100644 src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/CustomSerializableTypeWithNs.cs diff --git a/src/dotnet-svcutil/lib/tests/Baselines/ReuseIXmlSerializableType/TypesLib/TypesLib.csproj b/src/dotnet-svcutil/lib/tests/Baselines/ReuseIXmlSerializableType/TypesLib/TypesLib.csproj deleted file mode 100644 index 7ef1d73cc41..00000000000 --- a/src/dotnet-svcutil/lib/tests/Baselines/ReuseIXmlSerializableType/TypesLib/TypesLib.csproj +++ /dev/null @@ -1,11 +0,0 @@ - - - - netstandard1.3 - - - - - - - diff --git a/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/AnotherSharedType.cs b/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/AnotherSharedType.cs index 4860eb8447b..7552128ab8c 100644 --- a/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/AnotherSharedType.cs +++ b/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/AnotherSharedType.cs @@ -10,5 +10,8 @@ public struct AnotherSharedType [DataMember] public CustomSerializableType SomeXmlSerializableType { get; set; } + + [DataMember] + public CustomSerializableTypeWithNs SomeXmlSerializableTypeWithNs { get; set; } } } diff --git a/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/CustomSerializableTypeWithNs.cs b/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/CustomSerializableTypeWithNs.cs new file mode 100644 index 00000000000..fdbfae4654b --- /dev/null +++ b/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/CommonTypes/CustomSerializableTypeWithNs.cs @@ -0,0 +1,57 @@ +using System; +using System.Globalization; +using System.Numerics; +using System.Xml; +using System.Xml.Schema; +using System.Xml.Serialization; + +namespace CommonTypes +{ + [XmlSchemaProvider("GetXmlSchema")] + public struct CustomSerializableTypeWithNs : IXmlSerializable + { + public BigInteger TestValue { get; set; } + + // This method is defined by the XmlSchemaProvider attributes and + // called by the SchemaExporter::InvokeSchemaProviderMethod to get + // the custom Xml Qualified name for the type mapping. + public static XmlQualifiedName GetXmlSchema(XmlSchemaSet xss) + { + return new XmlQualifiedName("CustomSerializableTypeWithNs", "http://www.example.com/Schemas/CommonTypes"); + } + + public XmlSchema GetSchema() + { + XmlSchema schema = new XmlSchema() + { + Id = "CustomSerializableTypeSchema" + }; + XmlSchemaSimpleType schemaSimpleType1 = new XmlSchemaSimpleType(); + schemaSimpleType1.Name = "BigIntegerString"; + XmlSchemaSimpleType schemaSimpleType2 = schemaSimpleType1; + XmlSchemaSimpleTypeRestriction simpleTypeRestriction = new XmlSchemaSimpleTypeRestriction() + { + BaseTypeName = new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema") + }; + schemaSimpleType2.Content = (XmlSchemaSimpleTypeContent)simpleTypeRestriction; + schema.Items.Add((XmlSchemaObject)schemaSimpleType2); + return schema; + } + + public void ReadXml(XmlReader reader) + { + reader.ReadStartElement(); + reader.ReadStartElement(); + this.TestValue = BigInteger.Parse(reader.ReadContentAsString()); + reader.ReadEndElement(); + reader.ReadEndElement(); + } + + public void WriteXml(XmlWriter writer) + { + writer.WriteStartElement("BigIntegerString"); + writer.WriteValue(this.TestValue.ToString((IFormatProvider)CultureInfo.InvariantCulture)); + writer.WriteEndElement(); + } + } +} diff --git a/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/TypeReuseIXmlSerializable.wsdl b/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/TypeReuseIXmlSerializable.wsdl index a85a089353a..739cab9e126 100644 --- a/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/TypeReuseIXmlSerializable.wsdl +++ b/src/dotnet-svcutil/lib/tests/TestCases/ReuseIXmlSerializableType/TypeReuseIXmlSerializable.wsdl @@ -93,7 +93,7 @@ - + @@ -115,6 +115,7 @@ + @@ -130,6 +131,20 @@ + + + + + + true + + + + + + + +