/* wsdl.h WSDL 1.1 and WSDL 2.0 schemas -------------------------------------------------------------------------------- gSOAP XML Web services tools Copyright (C) 2000-2014, Robert van Engelen, Genivia Inc. All Rights Reserved. This software is released under one of the following licenses: GPL or Genivia's license for commercial use. -------------------------------------------------------------------------------- GPL license. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Author contact information: engelen@genivia.com / engelen@acm.org -------------------------------------------------------------------------------- A commercial use license is available from Genivia, Inc., contact@genivia.com -------------------------------------------------------------------------------- */ //gsoapopt w //gsoap wsdl schema documentation: WSDL 1.1/2.0 binding schema //gsoap wsdl schema namespace: http://schemas.xmlsoap.org/wsdl/ //gsoap wsdl schema namespace2: http://www.w3.org/ns/wsdl //gsoap wsdl schema elementForm: qualified //gsoap wsdl schema attributeForm: unqualified #import "imports.h" #import "schema.h" #import "soap.h" #import "mime.h" #import "dime.h" #import "http.h" #import "gwsdl.h" #import "wsam.h" #import "wsp.h" #import "bpel.h" class wsdl__definitions; // forward declaration class wsdl__import { public: @xsd__anyURI namespace_; @xsd__anyURI location; private: wsdl__definitions *definitionsRef; public: wsdl__import(); int preprocess(wsdl__definitions&); int traverse(wsdl__definitions&); void definitionsPtr(wsdl__definitions*); wsdl__definitions *definitionsPtr() const; }; class wsdl__types : public xs__schema // WSDL 2.0 inlined schema { public: xsd__string documentation; // ? std::vector xs__schema_; // * public: int preprocess(wsdl__definitions&); int traverse(wsdl__definitions&); }; class wsdl__part { public: @xsd__NMTOKEN name; @xsd__QName element; @xsd__QName type; xsd__string documentation; // ? private: xs__element *elementRef; // traverse() finds element xs__simpleType *simpleTypeRef; // traverse() finds simpleType xs__complexType *complexTypeRef; // traverse() finds complexType public: wsdl__part(); int traverse(wsdl__definitions&); void elementPtr(xs__element*); void simpleTypePtr(xs__simpleType*); void complexTypePtr(xs__complexType*); xs__element *elementPtr() const; xs__simpleType *simpleTypePtr() const; xs__complexType *complexTypePtr() const; }; class wsdl__message { public: @xsd__NMTOKEN name; xsd__string documentation; // ? std::vector wsp__Policy_; // * std::vector wsp__PolicyReference_;// * std::vector part; // * public: int traverse(wsdl__definitions&); }; class wsdl__ioput { public: @xsd__NMTOKEN name; @xsd__QName message; @xsd__NMTOKEN messageLabel; // WSDL 2.0 @xsd__QName element; // WSDL 2.0 @xsd__anyURI wsa__Action; @xsd__anyURI wsam__Action; xsd__string documentation; // ? wsp__Policy *wsp__Policy_; // ? wsp__PolicyReference *wsp__PolicyReference_; // ? private: wsdl__message *messageRef; // traverse() finds message xs__element *elementRef; // traverse() finds element WSDL 2.0 public: wsdl__ioput(); int traverse(wsdl__definitions&); void messagePtr(wsdl__message*); wsdl__message *messagePtr() const; void elementPtr(xs__element*); xs__element *elementPtr() const; }; class wsdl__fault { public: @xsd__NMTOKEN name; @xsd__QName message; @xsd__QName ref; // WSDL 2.0 @xsd__NMTOKEN messageLabel; // WSDL 2.0 @xsd__QName element; // WSDL 2.0 @xsd__anyURI wsa__Action; @xsd__anyURI wsam__Action; xsd__string documentation; // ? wsp__Policy *wsp__Policy_; // ? wsp__PolicyReference *wsp__PolicyReference_; // ? private: wsdl__message *messageRef; // traverse() finds message xs__element *elementRef; // traverse() finds element WSDL 2.0 public: wsdl__fault(); int traverse(wsdl__definitions&); void messagePtr(wsdl__message*); wsdl__message *messagePtr() const; void elementPtr(xs__element*); xs__element *elementPtr() const; }; class wsdl__operation { public: @xsd__NMTOKEN name; @xsd__anyURI pattern; // WSDL 2.0 @xsd__anyURI style; // WSDL 2.0 @xsd__string wrpc__signature; // WSDL 2.0 @xsd__string parameterOrder; xsd__string documentation; // ? wsp__Policy *wsp__Policy_; // ? wsp__PolicyReference *wsp__PolicyReference_; // ? $int __union1; union wsdl__union_ioput // | { wsdl__ioput *input; wsdl__ioput *output; } __ioput1; $int __union2; union wsdl__union_ioput __ioput2; // | std::vector fault; // * std::vector infault; // * WSDL 2.0 std::vector outfault; // * WSDL 2.0 public: int traverse(wsdl__definitions&); }; class wsdl__portType // ... and WSDL 2.0 interface { public: @xsd__NMTOKEN name; @xsd__QName extends; // WSDL 2.0 @xsd__anyURI styleDefault; // WSDL 2.0 xsd__string documentation; // ? wsp__Policy *wsp__Policy_; // ? wsp__PolicyReference *wsp__PolicyReference_; // ? std::vector fault; // * WSDL 2.0 std::vector operation; // * private: wsdl__definitions *definitionsRef; public: wsdl__portType(); int traverse(wsdl__definitions&); void definitionsPtr(wsdl__definitions*); wsdl__definitions *definitionsPtr() const; }; class wsdl__ext_ioput // binding extensibility element { public: @xsd__NMTOKEN name; @xsd__NMTOKEN messageLabel; // WSDL 2.0 xsd__string documentation; // ? wsp__Policy *wsp__Policy_; // ? wsp__PolicyReference *wsp__PolicyReference_; // ? dime__message *dime__message_; // ? soap__body *soap__body_; // ? xsd__string http__urlEncoded; // ? mime__multipartRelated *mime__multipartRelated_;// ? mime__content *mime__content_; // ? mime__mimeXml *mime__mimeXml_; // ? std::vector soap__header_; // * std::vector wsoap__module_; // * WSDL 2.0 std::vector wsoap__header_; // * WSDL 2.0 std::vector whttp__header_; // * WSDL 2.0 public: int traverse(wsdl__definitions&); }; class wsdl__ext_fault // binding extensibility element { public: @xsd__NMTOKEN name; @xsd__QName ref; // WSDL 2.0 @xsd__NMTOKEN messageLabel; // WSDL 2.0 @xsd__QName wsoap__code; // WSDL 2.0 @xsd__QName wsoap__subcodes; // WSDL 2.0 xsd__string documentation; // ? wsp__Policy *wsp__Policy_; // ? wsp__PolicyReference *wsp__PolicyReference_; // ? soap__fault *soap__fault_; // ? std::vector wsoap__module_; // * WSDL 2.0 private: wsdl__fault *faultRef; public: wsdl__ext_fault(); int traverse(wsdl__definitions&, wsdl__portType*); void faultPtr(wsdl__fault*); wsdl__fault *faultPtr() const; }; class wsdl__ext_operation // binding extensibility element { public: @xsd__NMTOKEN name; @xsd__QName ref; // WSDL 2.0 @xsd__anyURI wsoap__mep; // WSDL 2.0 @xsd__anyURI wsoap__action; // WSDL 2.0 @xsd__string whttp__method; // WSDL 2.0 @xsd__string whttp__location; // WSDL 2.0 xsd__string documentation; // ? wsp__Policy *wsp__Policy_; // ? wsp__PolicyReference *wsp__PolicyReference_; // ? soap__operation *soap__operation_; // ? http__operation *http__operation_; // ? wsdl__ext_ioput *input; // ? wsdl__ext_ioput *output; // ? std::vector fault; // * std::vector infault; // * WSDL 2.0 std::vector outfault; // * WSDL 2.0 private: wsdl__operation *operationRef; // traverse() finds operation public: wsdl__ext_operation(); int traverse(wsdl__definitions&, wsdl__portType*); void operationPtr(wsdl__operation*); wsdl__operation *operationPtr() const; }; class wsdl__binding { public: @xsd__NMTOKEN name; @xsd__QName type; @xsd__anyURI type_; // WSDL 2.0 @xsd__QName interface_; // WSDL 2.0 @xsd__boolean whttp__cookies = false; // WSDL 2.0 @xsd__string wsoap__version; // WSDL 2.0 @xsd__anyURI wsoap__protocol; // WSDL 2.0 @xsd__anyURI wsoap__mepDefault; // WSDL 2.0 @xsd__string whttp__methodDefault; // WSDL 2.0 xsd__string documentation; // ? std::vector wsp__Policy_; // * std::vector wsp__PolicyReference_;// * soap__binding *soap__binding_; // ? http__binding *http__binding_; // ? std::vector wsoap__module_; // * WSDL 2.0 std::vector fault; // * WSDL 2.0 std::vector operation; // * private: wsdl__portType *portTypeRef; // traverse() finds portType/interface public: wsdl__binding(); int traverse(wsdl__definitions&); void portTypePtr(wsdl__portType*); wsdl__portType *portTypePtr() const; }; class wsdl__port // ... and WSDL 2.0 endpoint { public: @xsd__NMTOKEN name; @xsd__QName binding; @xsd__anyURI address; // WSDL 2.0 @xsd__NMTOKEN whttp__authenticationScheme; // WSDL 2.0 @xsd__NMTOKEN whttp__authenticationRealm; // WSDL 2.0 xsd__string documentation; // ? wsp__Policy *wsp__Policy_; // ? wsp__PolicyReference *wsp__PolicyReference_; // ? wsa__EndpointReferenceType *wsa__EndpointReference;// ? xsd__string *wsaw__UsingAddressing; // ? soap__address *soap__address_; // ? http__address *http__address_; // ? private: wsdl__binding *bindingRef; // traverse() finds binding public: wsdl__port(); int traverse(wsdl__definitions&); void bindingPtr(wsdl__binding*); wsdl__binding *bindingPtr() const; }; class wsdl__service { public: @xsd__NMTOKEN name; @xsd__QName interface_; // WSDL 2.0 xsd__string documentation; // ? std::vector wsp__Policy_; // * std::vector wsp__PolicyReference_;// * std::vector port; // * WSDL 1.1 std::vector endpoint; // * WSDL 2.0 public: int traverse(wsdl__definitions&); }; class wsdl__definitions { public: @xsd__NMTOKEN name; @xsd__anyURI targetNamespace = ""; @xsd__NMTOKEN version; std::vector import; // * xsd__string documentation; // ? wsdl__types *types; // ? std::vector message; // * std::vector portType; // * WSDL 1.1 std::vector interface_; // * WSDL 2.0 std::vector binding; // * std::vector service; // * xsd__string wsp__UsingPolicy; // ? WS-Policy 1.2/1.5 std::vector wsp__Policy_; // * WS-Policy 1.2/1.5 std::vector plnk__partnerLinkType; // * BPEL 2.0 std::vector vprop__property; // * BPEL 2.0 std::vector vprop__propertyAlias; // * BPEL 2.0 std::vector gwsdl__portType_; // * struct soap *soap; private: bool soap12; bool updated; char* location; int redirs; SetOfString builtinTypeSet; SetOfString builtinElementSet; SetOfString builtinAttributeSet; public: wsdl__definitions(); wsdl__definitions(struct soap*); wsdl__definitions(struct soap*, const char*, const char*); virtual ~wsdl__definitions(); int get(struct soap*); // gSOAP getter is triggered after parsing int preprocess(); int traverse(); int read(int, char**); int read(const char *cwd, const char*); const char* sourceLocation(); int error(); bool is_updated(); void print_fault(); void builtinType(const char*); void builtinTypes(const SetOfString&); void builtinElement(const char*); void builtinElements(const SetOfString&); void builtinAttribute(const char*); void builtinAttributes(const SetOfString&); const SetOfString& builtinTypes() const; const SetOfString& builtinElements() const; const SetOfString& builtinAttributes() const; friend ostream& operator<<(ostream&, const wsdl__definitions&); friend istream& operator>>(istream&, wsdl__definitions&); }; extern ostream &operator<<(ostream &o, const wsdl__definitions &e); extern istream &operator>>(istream &i, wsdl__definitions &e);