AssemblyPath support, patch by Michel Faucault.
authorAtsushi Eno <atsushi@ximian.com>
Wed, 5 Jan 2011 07:17:20 +0000 (16:17 +0900)
committerAtsushi Eno <atsushi@ximian.com>
Wed, 5 Jan 2011 07:17:20 +0000 (16:17 +0900)
mcs/tools/svcutil/Driver.cs

index 07f4a84ff3f0705af4a35381955667bbbd714462..5c2a8c49e46f1415e265622b38c618a895757502 100644 (file)
@@ -66,56 +66,56 @@ namespace Mono.ServiceContractTool
 
                        // For now only assemblyPath is supported.
                        foreach (string arg in co.RemainingArguments) {
-                               Uri uri = null;
-                               if (Uri.TryCreate (arg, UriKind.Absolute, out uri)) {
-                                       metadata = ResolveWithDisco (arg);
-                                       if (metadata == null)
-                                               metadata = ResolveWithWSMex (arg);
-
-                                       continue;
-                               }
-
-                               FileInfo fi = new FileInfo (arg);
-                               if (!fi.Exists)
-                               switch (fi.Extension) {
-                               case ".exe":
-                               case ".dll":
-                                       GenerateContractType (fi.FullName);
-                                       break;
-                               default:
-                                       throw new NotSupportedException ("Not supported file extension: " + fi.Extension);
+                               if (!File.Exists (arg)) {
+                                       Uri uri = null;
+                                       if (Uri.TryCreate (arg, UriKind.Absolute, out uri)) {
+                                               metadata = ResolveWithDisco (arg);
+                                               if (metadata == null)
+                                                       metadata = ResolveWithWSMex (arg);
+
+                                                       continue;
+                                       }
+                               } else {
+                                       FileInfo fi = new FileInfo (arg);
+                                       switch (fi.Extension) {
+                                       case ".exe":
+                                       case ".dll":
+                                               GenerateContractType (fi.FullName);
+                                               break;
+                                       default:
+                                               throw new NotSupportedException ("Not supported file extension: " + fi.Extension);
+                                       }
                                }
                        }
 
-                       if (metadata == null)
-                               return;
-                       
-                       List<IWsdlImportExtension> list = new List<IWsdlImportExtension> ();
-                       list.Add (new TransportBindingElementImporter ());
-                       //list.Add (new DataContractSerializerMessageContractImporter ());
-                       list.Add (new XmlSerializerMessageContractImporter ());
-
-                       //WsdlImporter importer = new WsdlImporter (metadata, null, list);
-                       WsdlImporter importer = new WsdlImporter (metadata);
-                       ServiceEndpointCollection endpoints = importer.ImportAllEndpoints ();
-                       Collection<ContractDescription> contracts = new Collection<ContractDescription> ((from se in endpoints select se.Contract).ToArray ());
-
-                       Console.WriteLine ("Generating files..");
-
-                       // FIXME: could better become IWsdlExportExtension
-                       foreach (ContractDescription cd in contracts) {
-                               if (co.GenerateMoonlightProxy) {
-                                       var moonctx = new MoonlightChannelBaseContext ();
-                                       cd.Behaviors.Add (new MoonlightChannelBaseContractExtension (moonctx, co.GenerateMonoTouchProxy));
-                                       foreach (var od in cd.Operations)
-                                               od.Behaviors.Add (new MoonlightChannelBaseOperationExtension (moonctx, co.GenerateMonoTouchProxy));
-                                       generator.GenerateServiceContractType (cd);
-                                       moonctx.Fixup ();
+                       if (metadata != null)
+                       {
+                               List<IWsdlImportExtension> list = new List<IWsdlImportExtension> ();
+                               list.Add (new TransportBindingElementImporter ());
+                               //list.Add (new DataContractSerializerMessageContractImporter ());
+                               list.Add (new XmlSerializerMessageContractImporter ());
+
+                               //WsdlImporter importer = new WsdlImporter (metadata, null, list);
+                               WsdlImporter importer = new WsdlImporter (metadata);
+                               ServiceEndpointCollection endpoints = importer.ImportAllEndpoints ();
+                               Collection<ContractDescription> contracts = new Collection<ContractDescription> ((from se in endpoints select se.Contract).ToArray ());
+
+                               Console.WriteLine ("Generating files..");
+
+                               // FIXME: could better become IWsdlExportExtension
+                               foreach (ContractDescription cd in contracts) {
+                                       if (co.GenerateMoonlightProxy) {
+                                               var moonctx = new MoonlightChannelBaseContext ();
+                                               cd.Behaviors.Add (new MoonlightChannelBaseContractExtension (moonctx, co.GenerateMonoTouchProxy));
+                                               foreach (var od in cd.Operations)
+                                                       od.Behaviors.Add (new MoonlightChannelBaseOperationExtension (moonctx, co.GenerateMonoTouchProxy));
+                                               generator.GenerateServiceContractType (cd);
+                                               moonctx.Fixup ();
+                                       }
+                                       else
+                                               generator.GenerateServiceContractType (cd);
                                }
-                               else
-                                       generator.GenerateServiceContractType (cd);
                        }
-
                        /*if (cns.Types.Count == 0) {
                                Console.Error.WriteLine ("Argument assemblies have no types.");
                                Environment.Exit (1);