Couple of fixes in FindCriteria and relevant contract types for Find operation.
authorAtsushi Eno <atsushi@ximian.com>
Wed, 1 Sep 2010 15:03:24 +0000 (00:03 +0900)
committerAtsushi Eno <atsushi@ximian.com>
Wed, 1 Sep 2010 15:03:24 +0000 (00:03 +0900)
mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/MessageContracts11.cs
mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/MessageContractsApril2005.cs
mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/MessageContractsCD1.cs
mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/FindCriteria.cs
mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/FindCriteriaTest.cs
mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/IntegratedDiscoveryTest.cs

index 7d270232b1e51f4f929337edfe7a5665b8e92dbc..96ed80597f242bd026102c709ae159f2fce3f86a 100644 (file)
@@ -78,6 +78,7 @@ namespace System.ServiceModel.Discovery.Version11
                        public FindResponse11 Body { get; set; }
                }
 
+               [CollectionDataContract (Name = "ProbeMatches", ItemName = "ProbeMatch", Namespace = NS)]
                public class FindResponse11 : List<EndpointDiscoveryMetadata11>
                {
                }
index 1af8c88c50fd1db8d0eae6eadb81e7e6adbc08bb..760202f135053b38d0069b56ae7ae97d0b8c83bc 100644 (file)
@@ -78,6 +78,7 @@ namespace System.ServiceModel.Discovery.VersionApril2005
                        public FindResponseApril2005 Body { get; set; }
                }
 
+               [CollectionDataContract (Name = "ProbeMatches", ItemName = "ProbeMatch", Namespace = NS)]
                public class FindResponseApril2005 : List<EndpointDiscoveryMetadataApril2005>
                {
                }
index a44281d971c7af7b5eb2289ac8a90abd55dca42c..36b4bf80fda02e2f39c681c85f9eb5a3ed873748 100644 (file)
@@ -78,6 +78,7 @@ namespace System.ServiceModel.Discovery.VersionCD1
                        public FindResponseCD1 Body { get; set; }
                }
 
+               [CollectionDataContract (Name = "ProbeMatches", ItemName = "ProbeMatch", Namespace = NS)]
                public class FindResponseCD1 : List<EndpointDiscoveryMetadataCD1>
                {
                }
index 4d23634e2a09d4950cb6ca93c77d6b1763b40f35..e90515f5fc018599fbe78f5503bd76d53857695b 100755 (executable)
@@ -70,6 +70,7 @@ namespace System.ServiceModel.Discovery
                        ContractTypeNames = new Collection<XmlQualifiedName> ();
                        Extensions = new Collection<XElement> ();
                        Scopes = new Collection<Uri> ();
+                       ScopeMatchBy = ScopeMatchByPrefix;
                        MaxResults = default_max_results;
                }
 
@@ -93,22 +94,22 @@ namespace System.ServiceModel.Discovery
                        var edm = endpointDiscoveryMetadata;
                        if (edm == null)
                                throw new ArgumentNullException ("endpointDiscoveryMetadata");
-                       if (edm.ContractTypeNames.Count > 0) {
+                       if (ContractTypeNames.Count > 0) {
                                bool match = false;
-                               foreach (var qn in edm.ContractTypeNames)
-                                       if (ContractTypeNames.Contains (qn))
+                               foreach (var qn in ContractTypeNames)
+                                       if (edm.ContractTypeNames.Contains (qn))
                                                match = true;
                                if (!match)
                                        return false;
                        }
-                       if (edm.Scopes.Count > 0) {
+                       if (Scopes.Count > 0) {
                                bool match = false;
-                               foreach (var scope in edm.Scopes) {
+                               foreach (var scope in Scopes) {
                                        if (ScopeMatchBy == null || ScopeMatchBy.Equals (ScopeMatchByPrefix)) {
-                                               if (Scopes.Contains (scope))
+                                               if (edm.Scopes.Contains (scope))
                                                        match = true;
                                        } else if (ScopeMatchBy.Equals (ScopeMatchByExact)) {
-                                               if (Scopes.Any (s => s.AbsoluteUri == scope.AbsoluteUri))
+                                               if (edm.Scopes.Any (s => s.AbsoluteUri == scope.AbsoluteUri))
                                                        match = true;
                                        }
                                        else if (ScopeMatchBy.Equals (ScopeMatchByUuid))
@@ -124,7 +125,7 @@ namespace System.ServiceModel.Discovery
                                        return false;
                        }
                        if (Extensions.Count > 0)
-                               throw new NotImplementedException ();
+                               throw new NotImplementedException (String.Format ("{0} extensions are found", Extensions.Count));
 
                        return true;
                }
@@ -152,8 +153,9 @@ namespace System.ServiceModel.Discovery
                                        ret.ScopeMatchBy = new Uri (reader.Value, UriKind.RelativeOrAbsolute);
                                        reader.MoveToElement ();
                                }
-                               ret.Scopes = new Collection<Uri> ((Uri []) reader.ReadElementContentAs (typeof (Uri []), null, "Scopes", version.Namespace));
                        }
+                       if (reader.IsStartElement ("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 ()) {
index 53bf01bf75ec72e701c737bd51b7602b8ddd3b1d..4c8e59657044466f7fbd195d6ee073b790268eb8 100755 (executable)
@@ -23,5 +23,15 @@ namespace MonoTests.System.ServiceModel.Discovery
                        Assert.AreEqual ("http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/rfc3986", FindCriteria.ScopeMatchByPrefix.ToString (), "#4");
                        Assert.AreEqual ("http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/uuid", FindCriteria.ScopeMatchByUuid.ToString (), "#5");
                }
+
+               [Test]
+               public void DefaultValues ()
+               {
+                       var fc = new FindCriteria ();
+                       Assert.AreEqual (int.MaxValue, fc.MaxResults, "#1");
+                       Assert.IsNotNull (fc.ContractTypeNames, "#2");
+                       Assert.IsNotNull (fc.Scopes, "#3");
+                       Assert.AreEqual (FindCriteria.ScopeMatchByPrefix, fc.ScopeMatchBy, "#4");
+               }
        }
 }
index d4ca3fa323bc8539d317bb9ba636868a1807a05f..f667cd769253aa5bafd9c11369575705e18307e2 100644 (file)
@@ -103,8 +103,8 @@ namespace MonoTests.System.ServiceModel.Discovery
                        // it internally hosts an AnnouncementService
                        var host = new ServiceHost (new AnnouncementBoundDiscoveryService (aEndpoint));
                        host.AddServiceEndpoint (dEndpoint);
-                       host.Open ();
                        try {
+                               host.Open ();
                                action (serviceUri, aEndpoint, dEndpoint);
                        } finally {
                                host.Close ();