⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 biwsdlbiws2stubcodegen.py

📁 ajax 框价.是个好工具.javascript 矿家.可以用在任何平台.
💻 PY
字号:
from BiWsdlJsCodeGen import *import reimport itertoolsimport stringimport os.path"""<summary>BiWsdiBiJsStubCodeGen is a class for generating BiWebService based JS WSDL stubs.</summary>"""class BiWsdlBiWs2StubCodeGen (BiWsdlJsCodeGen):    """    <summary>    Constructor.    </summary>    """    def __init__(self):        super(BiWsdlBiWs2StubCodeGen, self).__init__()        self.__genAsyncCalls = True        self.__genSyncCalls = True    def startGen(self):        super(BiWsdlBiWs2StubCodeGen, self).startGen()        self.emitIndentedCommentLine("/// <summary>")        self.emitIndentedCommentLine("/// This file includes WebService client stub definitions. File was automatically generated")        self.emitIndentedCommentLine("/// by BiWsdl2Js.")        self.emitIndentedCommentLine("/// </summary>")        self.emitLine("")    def endGen(self):        super(BiWsdlBiWs2StubCodeGen, self).endGen()      def startService(self, aServiceName):        super(BiWsdlBiWs2StubCodeGen, self).startService(aServiceName)        self.emitIndentedLine("// #region Service " + aServiceName)                self.__currentClassName = self.getStubClassName(aServiceName)        self.startClassCtor(self.__currentClassName,                            [("aWebService", "BiWebService2 instance to use for operating service."),                             ("aWsdl", "URL to WSDL describing service (WSDL used to generate this stub or compatible)")],                            "BiObject",                            self.__currentClassName + " implements a service stub for service " + aServiceName + ".")        self.emitIndentedLine("BiObject.call(this);")        self.emitIndentedLine("this._webService = aWebService;");        self.emitIndentedLine("this._webService.useService(aWsdl, \"" + aServiceName + "\", true);");        if self.__genAsyncCalls:            self.emitIndentedLine("this._webService.addEventListener(\"callcomplete\", this._handleAsyncCompletion, this);");        self.endClassCtor()        self.startClassMethod("_getServiceObj", [], "Return the web-service object (from BiWebService) to use for invoking service calls.")        self.emitIndentedLine("return this._webService;");        self.endClassMethod()        if self.__genAsyncCalls:           self.startClassMethod("_handleAsyncCompletion", [("aEvt", "Handled event")], "Handle an async call completion event by invoking callback specified in call.")           self.emitIndentedLine("if(\"__callback\" in aEvt.getCall().getCallContext())");           self.emitIndentedLine("{"); self.indent();           self.emitIndentedLine("aEvt.getCall().getCallContext().__callback.call(aEvt.getCall().getCallContext().__callbackThis, aEvt);");           self.outdent(); self.emitIndentedLine("}");           self.endClassMethod();            def endService(self, aServiceName):        super(BiWsdlBiWs2StubCodeGen, self).endService(aServiceName)        self.emitIndentedLine("// #endregion");         self.emitLine("");    def startPort(self, aPortName):        super(BiWsdlBiWs2StubCodeGen, self).startPort(aPortName)        self.emitIndentedLine("// #region Port " + aPortName);            def endPort(self, aPortName):        super(BiWsdlBiWs2StubCodeGen, self).endPort(aPortName)        self.emitIndentedLine("// #endregion");        self.emitLine("");    def genMethod(self, aName, aArgs, aArgTypes):        # Prepare java names for all...        lArgNames = list(itertools.imap(self.convertQNameToJName, aArgs))                # Generate synchronous call method        if self.__genSyncCalls:            self.emitIndentedCommentLine("/// <summary>");            self.emitIndentedCommentLine("/// Invoke the port's " + aName + " operation synchronously. Returns result from web service.");            self.emitIndentedCommentLine("/// </summary>");            for lParamIdx in range(len(lArgNames)):                self.emitIndentedCommentLine("/// <param name=\"" + lArgNames[lParamIdx] + "\"> Value of " + aArgs[lParamIdx] + " as defined in source WSDL. Type: " + aArgTypes[lParamIdx] + ".</param>");            lFnName = self.__currentClassName + ".prototype." + self.getStubMethodName(self.getCurrentService(), self.getCurrentPort(), aName, False)            self.emitIndentedLine(lFnName + " = function(" + string.join(lArgNames, ", ") + ")");            self.emitIndentedLine("{"); self.indent();                        self.emitIndentedLine("return this._getServiceObj().syncInvoke(" + string.join(["\"" + self.getCurrentPort() + "." + aName + "\""] + lArgNames, ", ") + ");");            self.outdent(); self.emitIndentedLine("}");            self.emitLine("");        # Generate asynchronous call method        if self.__genAsyncCalls:            self.emitIndentedCommentLine("/// <summary>");            self.emitIndentedCommentLine("/// Invoke the port's " + aName + " operation asynchronously. Call a callback when done.");            self.emitIndentedCommentLine("/// </summary>");            self.emitIndentedCommentLine("/// <param name=\"aCallback\">Callback function to invoke upon completion of operation. Function ");            self.emitIndentedCommentLine("///    receives results object as a parameter. Result object.value is the result, Result object.error indicates ");            self.emitIndentedCommentLine("///    whether an error ocurred or not.</param>");            self.emitIndentedCommentLine("/// <param name=\"aCallbackThis\">this to use for callback function invocation.");            for lParamIdx in range(len(lArgNames)):                self.emitIndentedCommentLine("/// <param name=\"" + lArgNames[lParamIdx] + "\"> Value of " + aArgs[lParamIdx] + " as defined in source WSDL. Type: " + aArgTypes[lParamIdx] + ".</param>");            lFnName = self.__currentClassName + ".prototype." + self.getStubMethodName(self.getCurrentService(), self.getCurrentPort(), aName, True)            self.emitIndentedLine(lFnName + " = function(" + string.join(["aCallback", "aCallbackThis"]+lArgNames, ", ") + ")");            self.emitIndentedLine("{"); self.indent();            self.emitIndentedLine("var lCtxt = { __callback: aCallback, __callbackThis: aCallbackThis };");             self.emitIndentedLine("this._getServiceObj().pushCallContext(lCtxt);");            self.emitLine("");            self.emitIndentedLine("var lRet=this._getServiceObj().asyncInvoke(" + string.join(["\"" + self.getCurrentPort() + "." + aName + "\""] + lArgNames, ", ") + ");");            self.emitLine("");            self.emitIndentedLine("this._getServiceObj().popCallContext();");            self.emitIndentedLine("return lRet;");            self.outdent(); self.emitIndentedLine("}");            self.emitLine("");    def getStubClassName(aServiceName):        return BiWsdlJsCodeGen.convertQNameToJName(aServiceName)    getStubClassName=staticmethod(getStubClassName)        def getStubMethodName(aServiceName, aPortName, aMethodName, aAsync):        if aAsync: lSyncPfx = "async"        else: lSyncPfx = "sync"                return lSyncPfx+"_"+BiWsdlJsCodeGen.convertQNameToJName(aPortName)+"_"+BiWsdlJsCodeGen.convertQNameToJName(aMethodName)    getStubMethodName=staticmethod(getStubMethodName)    """    <summary>    Set generated call type -- to sync, async or both.    </summary>    <param name="aCallType">Type of call to generate. sync for synchronous calls, async for asynchronous calls, both for both </param>    """    def setCalltype(self, aCallType):        if aCallType not in ["async", "sync", "both"]: raise Exception("Invalid callType value: " + aCallType)        self.__genAsyncCalls = aCallType in ["async", "both"]        self.__genSyncCalls = aCallType in ["sync", "both"]                

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -