Add check to see if a registered type IsExternal
[mono.git] / mcs / tools / wsdl / MonoWSDL2.cs
old mode 100755 (executable)
new mode 100644 (file)
index a91a7ed..e7aa82b
@@ -123,10 +123,14 @@ namespace Mono.WebServices
                                codeUnit.Namespaces.Add (proxyCode);\r
                                \r
                                WebReferenceCollection references = new WebReferenceCollection ();\r
-                               foreach (string url in urls) \r
+                               foreach (string murl in urls) \r
                                {\r
                                        DiscoveryClientProtocol dcc = CreateClient ();\r
-                                                                       \r
+\r
+                                       string url = murl;\r
+                                       if (!url.StartsWith ("http://") && !url.StartsWith ("https://") && !url.StartsWith ("file://"))\r
+                                               url = "file://" + Path.GetFullPath (url);\r
+\r
                                        dcc.DiscoverAny (url);\r
                                        dcc.ResolveAll ();\r
                                        \r
@@ -218,24 +222,25 @@ namespace Mono.WebServices
                        
                        if (hasWarnings) WriteText ("",0,0);\r
                                \r
-                       ServiceDescription rootDesc = null;\r
-                       
-                       foreach (object doc in references[0].Documents.Values) {\r
-                               ServiceDescription desc = doc as ServiceDescription;
-                               if (desc != null && desc.Services.Count > 0) {
-                                       rootDesc = desc;
-                                       break;
-                               }
-                       }
-                               \r
-                       if (rootDesc != null)\r
+                       string filename = outFilename;\r
+                       bool hasBindings = false;\r
+                       \r
+                       foreach (object doc in references[0].Documents.Values)\r
                        {\r
-                               string filename;\r
-                               if (outFilename != null)\r
-                                       filename = outFilename;\r
-                               else\r
-                                       filename = rootDesc.Services[0].Name    + "." + provider.FileExtension;\r
-                               \r
+                               ServiceDescription desc = doc as ServiceDescription;\r
+                               if (desc == null) continue;\r
+                               
+                               if (desc.Services.Count > 0 && filename == null)\r
+                                       filename = desc.Services[0].Name + "." + provider.FileExtension;\r
+                                       
+                               if (desc.Bindings.Count > 0 || desc.Services.Count > 0)\r
+                                       hasBindings = true;\r
+                       }\r
+                       \r
+                       if (filename == null)\r
+                               filename = "output." + provider.FileExtension;
+                       \r
+                       if (hasBindings) {\r
                                WriteText ("Writing file '" + filename + "'", 0, 0);\r
                                StreamWriter writer = new StreamWriter(filename);\r
                                \r