public void load_Wsdl_From_WSDL_File(string wsdlToLoad) { markGuiAs_Busy(); O2Thread.mtaThread( () => { var cacheLocation = getCacheFileName(wsdlToLoad); var sdl_Wsdl = new DotNet_SDK_WSDL(); if (wsdlToLoad.fileExists().isFalse() && wsdlToLoad.isUri() && wsdlToLoad.ends("wsdl").isFalse()) { wsdlToLoad += "?wsdl"; } var extraWsdlParameres = ExtraWsdlParameres.get_Text(); "extraWsdlParameres: {0}".debug(extraWsdlParameres ?? ""); var cSharpFile = sdl_Wsdl.wsdl_CreateAssembly(wsdlToLoad, null, extraWsdlParameres); //var cSharpFile = sdl_Wsdl.wsdl_CreateCSharp(wsdlToLoad); var compiledAssemblyPath = load_Wsdl_From_CSharpFile(cSharpFile); if (Cache_WSDL_Dll) { //create a cache copy of the dll "Saving {0} dll cache to {1}".info(compiledAssemblyPath, cacheLocation); Files.Copy(compiledAssemblyPath, cacheLocation); } }); }
//doesn't work because dll will be in use /*public void deleteCachedFile() * { * var loadedWsdl = WsdlLocation.get_Text(); * if (loadedWsdl.valid()) * { * var cachedFile = getCacheFileName(loadedWsdl); * if(cachedFile.fileExists()) * { * "Deleting File: {0}".info(cachedFile); * Files.deleteFile(cachedFile); * } * } * }*/ public void addScriptingSupport() { Func <string> getDefaultScript = () => { var cSharpFile = new DotNet_SDK_WSDL().wsdl_CreateCSharp(this.WsdlLocation.get_Text()); var parametersCreation = "".line(); var invocationParameters = ""; foreach (var parameter in this.CurrentMethod.parameters()) { var parameterName = parameter.Name.lowerCaseFirstLetter(); var parameterDefaultValue = ""; switch (parameter.ParameterType.FullName) { case "System.String": parameterDefaultValue = "\"\""; break; case "System.Int32": parameterDefaultValue = "0"; break; default: parameterDefaultValue = "new {0}()".format(parameter.ParameterType.FullName); break; } parametersCreation += "var {0} = {1};".line().format(parameterName, parameterDefaultValue); invocationParameters += "{0} ,".format(parameterName); } parametersCreation = (parametersCreation.valid()) ? parametersCreation.lineBeforeAndAfter() : ""; invocationParameters = invocationParameters.removeLastChar(); var varName = this.CurrentMethod.DeclaringType.Name.lowerCaseFirstLetter(); var scriptText = "var {0} = new {1}();".line().format(varName, this.CurrentMethod.DeclaringType.FullName) + parametersCreation + "var response = {0}.{1}({2});".line().format(varName, this.CurrentMethod.Name, invocationParameters) + "return response; // response type is: {0}".line().format(this.CurrentMethod.ReturnType.FullName) + "".line() + "//O2File:{0}".line().format(cSharpFile) + "//O2Ref:System.Web.Services.dll"; return(scriptText); }; Action openScriptEditorForCurrentMethod = () => { //O2.Kernel.O2LiveObjects.set("SoapParametersObject", wsdlCreation.SoapParametersObject); //O2.Kernel.O2LiveObjects.set("CurrentMethod", wsdlCreation.CurrentMethod); var script = "WebService Script Execution".showAsForm(700, 400).add_Script(false); script.InvocationParameters.Add("assembly", this.WsdlAssembly); script.InvocationParameters.Add("currentType", this.CurrentMethod.DeclaringType.Name); script.InvocationParameters.Add("currentMethod", this.CurrentMethod.Name); script.Code = "....Creating WebService Method invocation script ..."; script.Code = getDefaultScript(); }; //return wsdlCreation.CurrentMethod.typeName(); this.Methods_TreeView.insert_Above(20) .add_Link("Open Script Editor for selected Method", 0, 0, () => openScriptEditorForCurrentMethod()); }