📄 wsdl.cpp
字号:
}void wsdl__definitions::builtinElements(const SetOfString& elements){ for (SetOfString::const_iterator el = elements.begin(); el != elements.end(); ++el) builtinElementSet.insert(*el);}void wsdl__definitions::builtinAttribute(const char *attribute){ builtinAttributeSet.insert(attribute);}void wsdl__definitions::builtinAttributes(const SetOfString& attributes){ for (SetOfString::const_iterator at = attributes.begin(); at != attributes.end(); ++at) builtinAttributeSet.insert(*at);}const SetOfString& wsdl__definitions::builtinTypes() const{ return builtinTypeSet;}const SetOfString& wsdl__definitions::builtinElements() const{ return builtinElementSet;}const SetOfString& wsdl__definitions::builtinAttributes() const{ return builtinAttributeSet;}int wsdl__service::traverse(wsdl__definitions& definitions){ if (vflag) cerr << "Analyzing wsdl service " << (name?name:"") << endl; // process ports for (vector<wsdl__port>::iterator i = port.begin(); i != port.end(); ++i) (*i).traverse(definitions); return SOAP_OK;}wsdl__port::wsdl__port(){ bindingRef = NULL;}int wsdl__port::traverse(wsdl__definitions& definitions){ if (vflag) cerr << "Analyzing wsdl port" << endl; // search binding name const char *token = qname_token(binding, definitions.targetNamespace); bindingRef = NULL; if (token) { for (vector<wsdl__binding>::iterator binding = definitions.binding.begin(); binding != definitions.binding.end(); ++binding) { if ((*binding).name && !strcmp((*binding).name, token)) { bindingRef = &(*binding); if (vflag) cerr << "Found port " << (name?name:"") << " binding " << (token?token:"") << endl; break; } } } if (!bindingRef) { for (vector<wsdl__import>::iterator import = definitions.import.begin(); import != definitions.import.end(); ++import) { wsdl__definitions *importdefinitions = (*import).definitionsPtr(); if (importdefinitions) { token = qname_token(binding, importdefinitions->targetNamespace); if (token) { for (vector<wsdl__binding>::iterator binding = importdefinitions->binding.begin(); binding != importdefinitions->binding.end(); ++binding) { if ((*binding).name && !strcmp((*binding).name, token)) { bindingRef = &(*binding); if (vflag) cerr << "Found port " << (name?name:"") << " binding " << (token?token:"") << endl; break; } } } } } } if (!bindingRef) cerr << "Warning: no port '" << (name?name:"") << "' binding '" << (binding?binding:"") << "' in WSDL definitions '" << (definitions.name?definitions.name:"") << "' namespace " << (definitions.targetNamespace?definitions.targetNamespace:"?") << endl; return SOAP_OK;}void wsdl__port::bindingPtr(wsdl__binding *binding){ bindingRef = binding;}wsdl__binding *wsdl__port::bindingPtr() const{ return bindingRef;}wsdl__binding::wsdl__binding(){ portTypeRef = NULL;}int wsdl__binding::traverse(wsdl__definitions& definitions){ if (vflag) cerr << "Analyzing wsdl bindings" << endl; const char *token = qname_token(type, definitions.targetNamespace); portTypeRef = NULL; if (token) { for (vector<wsdl__portType>::iterator portType = definitions.portType.begin(); portType != definitions.portType.end(); ++portType) { if ((*portType).name && !strcmp((*portType).name, token)) { portTypeRef = &(*portType); if (vflag) cerr << "Found binding " << (name?name:"") << " portType " << (token?token:"") << endl; break; } } } if (!portTypeRef) { for (vector<wsdl__import>::iterator import = definitions.import.begin(); import != definitions.import.end(); ++import) { wsdl__definitions *importdefinitions = (*import).definitionsPtr(); if (importdefinitions) { token = qname_token(type, importdefinitions->targetNamespace); if (token) { for (vector<wsdl__portType>::iterator portType = importdefinitions->portType.begin(); portType != importdefinitions->portType.end(); ++portType) { if ((*portType).name && !strcmp((*portType).name, token)) { portTypeRef = &(*portType); if (vflag) cerr << "Found binding " << (name?name:"") << " portType " << (token?token:"") << endl; break; } } } } } } if (!portTypeRef) cerr << "Warning: no binding '" << (name?name:"") << "' portType '" << (type?type:"") << "' in WSDL definitions '" << (definitions.name?definitions.name:"") << "' namespace " << (definitions.targetNamespace?definitions.targetNamespace:"?") << endl; for (vector<wsdl__binding_operation>::iterator i = operation.begin(); i != operation.end(); ++i) (*i).traverse(definitions, portTypeRef); return SOAP_OK;}void wsdl__binding::portTypePtr(wsdl__portType *portType){ portTypeRef = portType;}wsdl__portType *wsdl__binding::portTypePtr() const{ return portTypeRef;}wsdl__binding_operation::wsdl__binding_operation(){ operationRef = NULL;}int wsdl__binding_operation::traverse(wsdl__definitions& definitions, wsdl__portType *portTypeRef){ if (vflag) cerr << "Analyzing wsdl binding operation" << endl; if (input) input->traverse(definitions); if (output) output->traverse(definitions); for (vector<wsdl__ext_fault>::iterator i = fault.begin(); i != fault.end(); ++i) (*i).traverse(definitions); operationRef = NULL; if (name && portTypeRef) { for (vector<wsdl__operation>::iterator i = portTypeRef->operation.begin(); i != portTypeRef->operation.end(); ++i) { if ((*i).name && !strcmp((*i).name, name)) { operationRef = &(*i); if (vflag) cerr << "Found operation " << (name?name:"") << endl; break; } } } if (!operationRef) cerr << "Warning: no operation '" << (name?name:"") << "' in WSDL definitions '" << (definitions.name?definitions.name:"") << "' namespace " << (definitions.targetNamespace?definitions.targetNamespace:"?") << endl; else { for (vector<wsdl__ext_fault>::iterator i = fault.begin(); i != fault.end(); ++i) { if ((*i).name) { for (vector<wsdl__fault>::iterator j = operationRef->fault.begin(); j != operationRef->fault.end(); ++j) { if ((*j).name && !strcmp((*j).name, (*i).name)) { (*i).messagePtr((*j).messagePtr()); if (vflag) cerr << "Found fault " << ((*j).name?(*j).name:"") << " message " << endl; break; } } } else if ((*i).soap__fault_ && (*i).soap__fault_->name) // try the soap:fault name, this is not elegant, but neither is WSDL 1.1 { for (vector<wsdl__fault>::iterator j = operationRef->fault.begin(); j != operationRef->fault.end(); ++j) { if ((*j).name && !strcmp((*j).name, (*i).soap__fault_->name)) { (*i).messagePtr((*j).messagePtr()); if (vflag) cerr << "Found fault " << ((*j).name?(*j).name:"") << " message " << endl; break; } } } if (!(*i).messagePtr()) cerr << "Warning: no soap:fault message in WSDL definitions '" << (definitions.name?definitions.name:"") << "' operation '" << (name?name:"") << "' namespace " << (definitions.targetNamespace?definitions.targetNamespace:"?") << endl; } } return SOAP_OK;}void wsdl__binding_operation::operationPtr(wsdl__operation *operation){ operationRef = operation;}wsdl__operation *wsdl__binding_operation::operationPtr() const{ return operationRef;}int wsdl__ext_input::traverse(wsdl__definitions& definitions){ if (vflag) cerr << "Analyzing wsdl ext input" << endl; for (vector<soap__header>::iterator hd = soap__header_.begin(); hd != soap__header_.end(); ++hd) (*hd).traverse(definitions); if (mime__multipartRelated_) mime__multipartRelated_->traverse(definitions); return SOAP_OK;}int wsdl__ext_output::traverse(wsdl__definitions& definitions){ if (vflag) cerr << "Analyzing wsdl ext output" << endl; for (vector<soap__header>::iterator hd = soap__header_.begin(); hd != soap__header_.end(); ++hd) (*hd).traverse(definitions); if (mime__multipartRelated_) mime__multipartRelated_->traverse(definitions); return SOAP_OK;}wsdl__ext_fault::wsdl__ext_fault(){ messageRef = NULL;}int wsdl__ext_fault::traverse(wsdl__definitions& definitions){ if (vflag) cerr << "Analyzing wsdl ext fault" << endl; messageRef = NULL; return SOAP_OK;}void wsdl__ext_fault::messagePtr(wsdl__message *message){ messageRef = message;}wsdl__message *wsdl__ext_fault::messagePtr() const{ return messageRef;}int wsdl__portType::traverse(wsdl__definitions& definitions){ if (vflag) cerr << "Analyzing wsdl portType" << endl; for (vector<wsdl__operation>::iterator i = operation.begin(); i != operation.end(); ++i) (*i).traverse(definitions); return SOAP_OK;}int wsdl__operation::traverse(wsdl__definitions& definitions){ if (vflag) cerr << "Analyzing wsdl operation" << endl; if (input) input->traverse(definitions); if (output) output->traverse(definitions); for (vector<wsdl__fault>::iterator i = fault.begin(); i != fault.end(); ++i) (*i).traverse(definitions); return SOAP_OK;}wsdl__input::wsdl__input(){ messageRef = NULL;}int wsdl__input::traverse(wsdl__definitions& definitions){ if (vflag) cerr << "Analyzing wsdl input" << endl; const char *token = qname_token(message, definitions.targetNamespace); messageRef = NULL; if (token) { for (vector<wsdl__message>::iterator message = definitions.message.begin(); message != definitions.message.end(); ++message) { if ((*message).name && !strcmp((*message).name, token)) { messageRef = &(*message); if (vflag) cerr << "Found input " << (name?name:"") << " message " << (token?token:"") << endl; break; } } } if (!messageRef) { for (vector<wsdl__import>::iterator import = definitions.import.begin(); import != definitions.import.end(); ++import) { wsdl__definitions *importdefinitions = (*import).definitionsPtr(); if (importdefinitions) { token = qname_token(message, importdefinitions->targetNamespace); if (token) { for (vector<wsdl__message>::iterator message = importdefinitions->message.begin(); message != importdefinitions->message.end(); ++message) { if ((*message).name && !strcmp((*message).name, token)) { messageRef = &(*message); if (vflag) cerr << "Found input " << (name?name:"") << " message " << (token?token:"") << endl; break; } } } } } } if (!messageRef) cerr << "Warning: no input '" << (name?name:"") << "' message '" << (message?message:"") << "' in WSDL definitions '" << (definitions.name?definitions.name:"") << "' namespace " << (definitions.targetNamespace?definitions.targetNamespace:"?") << endl; return SOAP_OK;}void wsdl__input::messagePtr(wsdl__message *message){ messageRef = message;}wsdl__message *wsdl__input::messagePtr() const{ return messageRef;}wsdl__output::wsdl__output(){ messageRef = NULL;}int wsdl__output::traverse(wsdl__definitions& definitions){ if (vflag) cerr << "Analyzing wsdl output" << endl; const char *token = qname_token(message, definitions.targetNamespace); messageRef = NULL; if (token) { for (vector<wsdl__message>::iterator message = definitions.message.begin(); message != definitions.message.end(); ++message) { if ((*message).name && !strcmp((*message).name, token)) { messageRef = &(*message); if (vflag) cerr << "Found output " << (name?name:"") << " message " << (token?token:"") << endl; break; } } } if (!messageRef) { for (vector<wsdl__import>::iterator import = definitions.import.begin(); import != definitions.import.end(); ++import) { wsdl__definitions *importdefinitions = (*import).definitionsPtr(); if (importdefinitions) { token = qname_token(message, importdefinitions->targetNamespace); if (token) { for (vector<wsdl__message>::iterator message = importdefinitions->message.begin(); message != importdefinitions->message.end(); ++message) { if ((*message).name && !strcmp((*message).name, token)) { messageRef = &(*message); if (vflag) cerr << "Found output " << (name?name:"") << " message " << (token?token:"") << endl; break; } } } } } } if (!messageRef) cerr << "Warning: no output '" << (name?name:"") << "' message '" << (message?message:"") << "' in WSDL definitions '" << (definitions.name?definitions.name:"") << "' namespace " << (definitions.targetNamespace?definitions.targetNamespace:"?") << endl; return SOAP_OK;}void wsdl__output::messagePtr(wsdl__message *message){ messageRef = message;}wsdl__message *wsdl__output::messagePtr() const{ return messageRef;}wsdl__fault::wsdl__fault(){ messageRef = NULL;}int wsdl__fault::traverse(wsdl__definitions& definitions){ if (vflag) cerr << "Analyzing wsdl fault" << endl; const char *token = qname_token(message, definitions.targetNamespace); messageRef = NULL; if (token) { for (vector<wsdl__message>::iterator message = definitions.message.begin(); message != definitions.message.end(); ++message) { if ((*message).name && !strcmp((*message).name, token)) { messageRef = &(*message); if (vflag) cerr << "Found fault " << (name?name:"") << " message " << (token?token:"") << endl; break; } } } if (!messageRef) { for (vector<wsdl__import>::iterator import = definitions.import.begin(); import != definitions.import.end(); ++import) { wsdl__definitions *importdefinitions = (*import).definitionsPtr(); if (importdefinitions) { token = qname_token(message, importdefinitions->targetNamespace); if (token) { for (vector<wsdl__message>::iterator message = importdefinitions->message.begin(); message != importdefinitions->message.end(); ++message) { if ((*message).name && !strcmp((*message).name, token)) { messageRef = &(*message); if (vflag) cerr << "Found output " << (name?name:"") << " message " << (token?token:"") << endl; break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -