Browse Source

Fix a couple of Hello/Probe serialization issues.

Atsushi Eno 15 years ago
parent
commit
d36e4ab4aa

+ 4 - 4
mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/MessageContracts11.cs

@@ -44,21 +44,21 @@ namespace System.ServiceModel.Discovery.Version11
 		public const string ResolveAction = NS + "/Resolve";
 		public const string ResolveMatchAction = NS + "/ResolveMatches";
 
-		[MessageContract (WrapperName = "Hello", WrapperNamespace = NS)]
+		[MessageContract (IsWrapped = false)]
 		public class OnlineAnnouncement
 		{
 			[MessageHeader (Name = "AppSequence", Namespace = NS)]
 			public DiscoveryMessageSequence11 MessageSequence { get; set; }
-			[MessageBodyMember]
+			[MessageBodyMember (Name = "Hello", Namespace = NS)]
 			public EndpointDiscoveryMetadata11 EndpointDiscoveryMetadata { get; set; }
 		}
 
-		[MessageContract (WrapperName = "Bye", WrapperNamespace = NS)]
+		[MessageContract (IsWrapped = false)]
 		public class OfflineAnnouncement
 		{
 			[MessageHeader (Name = "AppSequence", Namespace = NS)]
 			public DiscoveryMessageSequence11 MessageSequence { get; set; }
-			[MessageBodyMember]
+			[MessageBodyMember (Name = "Bye", Namespace = NS)]
 			public EndpointDiscoveryMetadata11 EndpointDiscoveryMetadata { get; set; }
 		}
 

+ 4 - 4
mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/MessageContractsApril2005.cs

@@ -44,21 +44,21 @@ namespace System.ServiceModel.Discovery.VersionApril2005
 		public const string ResolveAction = NS + "/Resolve";
 		public const string ResolveMatchAction = NS + "/ResolveMatches";
 
-		[MessageContract (WrapperName = "Hello", WrapperNamespace = NS)]
+		[MessageContract (IsWrapped = false)]
 		public class OnlineAnnouncement
 		{
 			[MessageHeader (Name = "AppSequence", Namespace = NS)]
 			public DiscoveryMessageSequenceApril2005 MessageSequence { get; set; }
-			[MessageBodyMember]
+			[MessageBodyMember (Name = "Hello", Namespace = NS)]
 			public EndpointDiscoveryMetadataApril2005 EndpointDiscoveryMetadata { get; set; }
 		}
 
-		[MessageContract (WrapperName = "Bye", WrapperNamespace = NS)]
+		[MessageContract (IsWrapped = false)]
 		public class OfflineAnnouncement
 		{
 			[MessageHeader (Name = "AppSequence", Namespace = NS)]
 			public DiscoveryMessageSequenceApril2005 MessageSequence { get; set; }
-			[MessageBodyMember]
+			[MessageBodyMember (Name = "Bye", Namespace = NS)]
 			public EndpointDiscoveryMetadataApril2005 EndpointDiscoveryMetadata { get; set; }
 		}
 

+ 4 - 4
mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/MessageContractsCD1.cs

@@ -44,21 +44,21 @@ namespace System.ServiceModel.Discovery.VersionCD1
 		public const string ResolveAction = NS + "/Resolve";
 		public const string ResolveMatchAction = NS + "/ResolveMatches";
 
-		[MessageContract (WrapperName = "Hello", WrapperNamespace = NS)]
+		[MessageContract (IsWrapped = false)]
 		public class OnlineAnnouncement
 		{
 			[MessageHeader (Name = "AppSequence", Namespace = NS)]
 			public DiscoveryMessageSequenceCD1 MessageSequence { get; set; }
-			[MessageBodyMember]
+			[MessageBodyMember (Name = "Hello", Namespace = NS)]
 			public EndpointDiscoveryMetadataCD1 EndpointDiscoveryMetadata { get; set; }
 		}
 
-		[MessageContract (WrapperName = "Bye", WrapperNamespace = NS)]
+		[MessageContract (IsWrapped = false)]
 		public class OfflineAnnouncement
 		{
 			[MessageHeader (Name = "AppSequence", Namespace = NS)]
 			public DiscoveryMessageSequenceCD1 MessageSequence { get; set; }
-			[MessageBodyMember]
+			[MessageBodyMember (Name = "Bye", Namespace = NS)]
 			public EndpointDiscoveryMetadataCD1 EndpointDiscoveryMetadata { get; set; }
 		}
 

+ 10 - 11
mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/EndpointDiscoveryMetadata.cs

@@ -53,6 +53,8 @@ namespace System.ServiceModel.Discovery
 		public Collection<Uri> Scopes { get; private set; }
 		public int Version { get; set; }
 
+		const string addrNS = "http://www.w3.org/2005/08/addressing";
+
 		internal static EndpointDiscoveryMetadata ReadXml (XmlReader reader, DiscoveryVersion version)
 		{
 			if (reader == null)
@@ -61,20 +63,17 @@ namespace System.ServiceModel.Discovery
 			var ret = new EndpointDiscoveryMetadata ();
 
 			reader.MoveToContent ();
-			if (reader.IsStartElement ("ProbeMatchType", version.Namespace) || reader.IsEmptyElement) {
-				reader.ReadStartElement ("ProbeType", version.Namespace);
 
-				// standard members
-				reader.MoveToContent ();
-				ret.Address = EndpointAddress.ReadFrom (AddressingVersion.WSAddressing10, reader);
+			reader.ReadStartElement ();
+			reader.MoveToContent ();
 
-				reader.MoveToContent ();
-				bool isEmpty = reader.IsEmptyElement;
-				ret.ContractTypeNames = new Collection<XmlQualifiedName> ((XmlQualifiedName []) reader.ReadElementContentAs (typeof (XmlQualifiedName []), null, "Types", version.Namespace));
+			// standard members
+			reader.MoveToContent ();
+			ret.Address = EndpointAddress.ReadFrom (AddressingVersion.WSAddressing10, reader, "EndpointReference", addrNS);
 
-				reader.MoveToContent ();
-				reader.ReadEndElement ();
-			}
+			reader.MoveToContent ();
+			if (reader.IsStartElement ("Types", version.Namespace))
+				ret.ContractTypeNames = new Collection<XmlQualifiedName> ((XmlQualifiedName []) reader.ReadElementContentAs (typeof (XmlQualifiedName []), null, "Types", version.Namespace));
 
 			reader.MoveToContent ();
 			if (reader.IsStartElement ("Scopes", version.Namespace))

+ 11 - 11
mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/FindCriteria.cs

@@ -100,23 +100,23 @@ namespace System.ServiceModel.Discovery
 			var ret = new FindCriteria ();
 
 			reader.MoveToContent ();
-			if (!reader.IsStartElement ("ProbeType", version.Namespace) || reader.IsEmptyElement)
-				throw new XmlException ("Non-empty ProbeType element is expected");
-			reader.ReadStartElement ("ProbeType", version.Namespace);
+			if (!reader.IsStartElement ("Probe", version.Namespace) || reader.IsEmptyElement)
+				throw new XmlException (String.Format ("Non-empty ProbeType element is expected. Got '{0}' {1} node in namespace '{2}' instead.", reader.LocalName, reader.NodeType, reader.NamespaceURI));
+			reader.ReadStartElement ("Probe", version.Namespace);
 
 			// standard members
 			reader.MoveToContent ();
-			bool isEmpty = reader.IsEmptyElement;
-			ret.ContractTypeNames = new Collection<XmlQualifiedName> ((XmlQualifiedName []) reader.ReadElementContentAs (typeof (XmlQualifiedName []), null, "Types", version.Namespace));
+			if (reader.IsStartElement ("Types", version.Namespace))
+				ret.ContractTypeNames = new Collection<XmlQualifiedName> ((XmlQualifiedName []) reader.ReadElementContentAs (typeof (XmlQualifiedName []), null, "Types", version.Namespace));
 
 			reader.MoveToContent ();
-			if (!reader.IsStartElement ("Scopes", version.Namespace))
-				throw new XmlException ("Scopes element is expected");
-			if (reader.MoveToAttribute ("MatchBy")) {
-				ret.ScopeMatchBy = new Uri (reader.Value, UriKind.RelativeOrAbsolute);
-				reader.MoveToElement ();
+			if (reader.IsStartElement ("Types", version.Namespace)) {
+				if (reader.MoveToAttribute ("MatchBy")) {
+					ret.ScopeMatchBy = new Uri (reader.Value, UriKind.RelativeOrAbsolute);
+					reader.MoveToElement ();
+				}
+				ret.Scopes = new Collection<Uri> ((Uri []) reader.ReadElementContentAs (typeof (Uri []), null, "Scopes", version.Namespace));
 			}
-			ret.Scopes = new Collection<Uri> ((Uri []) reader.ReadElementContentAs (typeof (Uri []), null, "Scopes", version.Namespace));
 
 			// non-standard members
 			for (reader.MoveToContent (); !reader.EOF && reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent ()) {