Beispiel #1
0
        public static void Generate(ArrayList services, ArrayList schemas, string binOper, string protocol)
        {
            ServiceDescriptionCollection descCol = new ServiceDescriptionCollection();

            foreach (ServiceDescription sd in services)
            {
                descCol.Add(sd);
            }

            XmlSchemas schemaCol;

            if (schemas.Count > 0)
            {
                schemaCol = new XmlSchemas();
                foreach (XmlSchema sc in schemas)
                {
                    schemaCol.Add(sc);
                }
            }
            else
            {
                schemaCol = descCol[0].Types.Schemas;
            }

            string oper, bin = null;

            int i = binOper.IndexOf('/');

            if (i != -1)
            {
                oper = binOper.Substring(i + 1);
                bin  = binOper.Substring(0, i);
            }
            else
            {
                oper = binOper;
            }

            ConsoleSampleGenerator sg = new ConsoleSampleGenerator(descCol, schemaCol);

            string req, resp;

            sg.GenerateMessages(oper, bin, protocol, out req, out resp);

            Console.WriteLine();
            Console.WriteLine("Sample request message:");
            Console.WriteLine();
            Console.WriteLine(req);
            Console.WriteLine();
            Console.WriteLine("Sample response message:");
            Console.WriteLine();
            Console.WriteLine(resp);
        }
Beispiel #2
0
		public static void Generate (ArrayList services, ArrayList schemas, string binOper, string protocol)
		{
			ServiceDescriptionCollection descCol = new ServiceDescriptionCollection ();
			foreach (ServiceDescription sd in services)
				descCol.Add (sd);
				
			XmlSchemas schemaCol;

			if (schemas.Count > 0) {
				schemaCol = new XmlSchemas ();
				foreach (XmlSchema sc in schemas)
					schemaCol.Add (sc);
			}
			else
				schemaCol = descCol[0].Types.Schemas;
				
			string oper, bin = null; 
			
			int i = binOper.IndexOf ('/');
			if (i != -1) {
				oper = binOper.Substring (i+1);
				bin = binOper.Substring (0,i);
			}
			else
				oper = binOper;
			
			ConsoleSampleGenerator sg = new ConsoleSampleGenerator (descCol, schemaCol);
			
			string req, resp;
			sg.GenerateMessages (oper, bin, protocol, out req, out resp);
			
			Console.WriteLine ();
			Console.WriteLine ("Sample request message:");
			Console.WriteLine ();
			Console.WriteLine (req);
			Console.WriteLine ();
			Console.WriteLine ("Sample response message:");
			Console.WriteLine ();
			Console.WriteLine (resp);
		}
Beispiel #3
0
        int Run(string[] args)
        {
            try
            {
                // parse command line arguments
                foreach (string argument in args)
                {
                    ImportArgument(argument);
                }

                if (noLogo == false)
                {
                    Console.WriteLine(ProductId);
                }

                if (help || urls.Count == 0)
                {
                    Console.WriteLine(UsageMessage);
                    return(0);
                }

                CodeCompileUnit codeUnit  = new CodeCompileUnit();
                CodeNamespace   proxyCode = GetCodeNamespace();
                codeUnit.Namespaces.Add(proxyCode);

                WebReferenceCollection references = new WebReferenceCollection();

                DiscoveryClientProtocol dcc = CreateClient();

                foreach (string murl in urls)
                {
                    string url = murl;
                    if (!url.StartsWith("http://") && !url.StartsWith("https://") && !url.StartsWith("file://"))
                    {
                        url = new Uri(Path.GetFullPath(url)).ToString();
                    }

                    dcc.DiscoverAny(url);
                    dcc.ResolveAll();
                }

                WebReference reference = new WebReference(dcc.Documents, proxyCode, protocol, appSettingURLKey, appSettingBaseURL);
                references.Add(reference);

                if (sampleSoap != null)
                {
                    ConsoleSampleGenerator.Generate(descriptions, schemas, sampleSoap, protocol);
                }

                if (sampleSoap != null)
                {
                    return(0);
                }

                // generate the code
                GenerateCode(references, codeUnit);
                return(0);
            }
            catch (Exception exception)
            {
                Console.WriteLine("Error: {0}", exception.Message);

                // Supress this except for when debug is enabled
                Console.WriteLine("Stack:\n {0}", exception.StackTrace);
                return(2);
            }
        }
        ///
        /// <summary>
        ///	Driver's main control flow:
        ///	 - parse arguments
        ///	 - report required messages
        ///	 - terminate if no input
        ///	 - report errors
        /// </summary>
        ///
        int Run(string[] args)
        {
            try
            {
                // parse command line arguments
                foreach (string argument in args)
                {
                    ImportArgument(argument);
                }

                if (noLogo == false)
                {
                    Console.WriteLine(ProductId);
                }

                if (help || (!hasURL && className == null))
                {
                    Console.WriteLine(UsageMessage);
                    return(0);
                }

                if (className == null)
                {
                    DiscoveryClientProtocol dcc = CreateClient();

                    foreach (string urlEntry in urls)
                    {
                        string url = urlEntry;
                        dcc.AllowAutoRedirect = true;
                        if (!url.StartsWith("http://") && !url.StartsWith("https://") && !url.StartsWith("file://"))
                        {
                            url = new Uri(Path.GetFullPath(url)).ToString();
                        }

                        dcc.DiscoverAny(url);
                        dcc.ResolveAll();
                    }

                    foreach (object doc in dcc.Documents.Values)
                    {
                        if (doc is ServiceDescription)
                        {
                            descriptions.Add((ServiceDescription)doc);
                        }
                        else if (doc is XmlSchema)
                        {
                            schemas.Add((XmlSchema)doc);
                        }
                    }

                    if (descriptions.Count == 0)
                    {
                        Console.WriteLine("Warning: no classes were generated.");
                        return(0);
                    }
                }
                else
                {
                    string[] names = className.Split(',');
                    if (names.Length != 2)
                    {
                        throw new Exception("Invalid parameter value for 'type'");
                    }
                    string cls      = names[0].Trim();
                    string assembly = names[1].Trim();

                    Assembly asm = Assembly.LoadFrom(assembly);
                    Type     t   = asm.GetType(cls);
                    if (t == null)
                    {
                        throw new Exception("Type '" + cls + "' not found in assembly " + assembly);
                    }
                    ServiceDescriptionReflector reflector = new ServiceDescriptionReflector();
                    foreach (string url in urls)
                    {
                        reflector.Reflect(t, url);
                    }
                    foreach (XmlSchema s in reflector.Schemas)
                    {
                        schemas.Add(s);
                    }

                    foreach (ServiceDescription sd in reflector.ServiceDescriptions)
                    {
                        descriptions.Add(sd);
                    }
                }

                if (sampleSoap != null)
                {
                    ConsoleSampleGenerator.Generate(descriptions, schemas, sampleSoap, generator.Protocol);
                    return(0);
                }

                // generate the code
                generator.GenerateCode(descriptions, schemas);
                return(0);
            }
            catch (NullReferenceException e)
            {
                Console.WriteLine(e);
                return(2);
            }
            catch (InvalidCastException e)
            {
                Console.WriteLine(e);
                return(2);
            }
            catch (Exception exception)
            {
                Console.WriteLine("Error: {0}", exception.Message);
                // FIXME: surpress this except for when debug is enabled
                //Console.WriteLine("Stack:\n {0}", exception.StackTrace);
                return(2);
            }
        }