Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcos Henrich <marcoshenrich@gmail.com>2016-07-05 13:31:14 +0300
committerGitHub <noreply@github.com>2016-07-05 13:31:14 +0300
commit8fad9cb4846cf15f034238862d31f5b7277f15f6 (patch)
treeecab07d2ad77084e38b3681e9bebb66cfa455a4b
parent80d015b2df275ad48fa77c02224f6ebc7e08bbd4 (diff)
parentaa68415f7b662e712a76e375098088f5ac2ba027 (diff)
Merge pull request #3226 from esdrubal/soap_headers_fix
[System.Web.Services] Fixes bad XmlMapping.Key.
-rw-r--r--mcs/class/System.Web.Services/System.Web.Services.Protocols/Methods.cs9
-rwxr-xr-xmcs/class/System.Web.Services/Test/System.Web.Services.Protocols/SoapHttpClientProtocolTest.cs39
2 files changed, 47 insertions, 1 deletions
diff --git a/mcs/class/System.Web.Services/System.Web.Services.Protocols/Methods.cs b/mcs/class/System.Web.Services/System.Web.Services.Protocols/Methods.cs
index 2585d053605..6171dba1c01 100644
--- a/mcs/class/System.Web.Services/System.Web.Services.Protocols/Methods.cs
+++ b/mcs/class/System.Web.Services/System.Web.Services.Protocols/Methods.cs
@@ -214,6 +214,9 @@ namespace System.Web.Services.Protocols {
OutputMembersMapping = soapImporter.ImportMembersMapping (ResponseName, ResponseNamespace, out_members, hasWrappingElem, writeAccessors);
}
+ InputMembersMapping.SetKey(RequestName);
+ OutputMembersMapping.SetKey(ResponseName);
+
requestSerializerId = parent.RegisterSerializer (InputMembersMapping);
responseSerializerId = parent.RegisterSerializer (OutputMembersMapping);
@@ -254,6 +257,8 @@ namespace System.Web.Services.Protocols {
else
InputHeaderMembersMapping = soapImporter.ImportMembersMapping ("", RequestNamespace, members, false, false);
+ InputHeaderMembersMapping.SetKey(RequestName + ":InHeaders");
+
requestHeadersSerializerId = parent.RegisterSerializer (InputHeaderMembersMapping);
}
@@ -265,7 +270,9 @@ namespace System.Web.Services.Protocols {
OutputHeaderMembersMapping = xmlImporter.ImportMembersMapping ("", RequestNamespace, members, false);
else
OutputHeaderMembersMapping = soapImporter.ImportMembersMapping ("", RequestNamespace, members, false, false);
-
+
+ OutputHeaderMembersMapping.SetKey(ResponseName + ":OutHeaders");
+
responseHeadersSerializerId = parent.RegisterSerializer (OutputHeaderMembersMapping);
}
diff --git a/mcs/class/System.Web.Services/Test/System.Web.Services.Protocols/SoapHttpClientProtocolTest.cs b/mcs/class/System.Web.Services/Test/System.Web.Services.Protocols/SoapHttpClientProtocolTest.cs
index 0019e05c278..cd9dc050fe7 100755
--- a/mcs/class/System.Web.Services/Test/System.Web.Services.Protocols/SoapHttpClientProtocolTest.cs
+++ b/mcs/class/System.Web.Services/Test/System.Web.Services.Protocols/SoapHttpClientProtocolTest.cs
@@ -243,5 +243,44 @@ namespace MonoTests.System.Web.Services.Protocols
}
}
}
+
+ public class RequestHeader : SoapHeader
+ {
+ }
+
+ public class ResponseHeader : SoapHeader
+ {
+ }
+
+ [WebServiceBindingAttribute(Name = "ServiceWithHeaders", Namespace = "https://example.com")]
+ public class ServiceWithHeaders : SoapHttpClientProtocol
+ {
+ public RequestHeader RequestHeader { get; set; }
+ public ResponseHeader ResponseHeader { get; set; }
+
+ [SoapHeaderAttribute("ResponseHeader", Direction = SoapHeaderDirection.Out)]
+ [SoapHeaderAttribute("RequestHeader")]
+ [SoapDocumentMethodAttribute("", RequestNamespace = "https://example.com", ResponseNamespace = "https://example.com", Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
+ public int method1()
+ {
+ return 0;
+ }
+
+ [SoapHeaderAttribute("ResponseHeader", Direction = SoapHeaderDirection.Out)]
+ [SoapHeaderAttribute("RequestHeader")]
+ [SoapDocumentMethodAttribute("", RequestNamespace = "https://example.com", ResponseNamespace = "https://example.com", Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
+ public int method2()
+ {
+ return 0;
+ }
+ }
+
+ [Test] // Covers #41564
+ public void ServiceWithHeader () {
+ var service = new ServiceWithHeaders ();
+ Assert.IsNotNull (service);
+ // Should not throw an exception
+ // XAMMAC specific bug
+ }
}
}