Logo Search packages:      
Sourcecode: gsoap version File versions

wsdl.h

/*

wsdl.h

WSDL 1.1 binding schema interface

--------------------------------------------------------------------------------
gSOAP XML Web services tools
Copyright (C) 2001-2004, Robert van Engelen, Genivia, Inc. All Rights Reserved.
This software is released under one of the following two 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
--------------------------------------------------------------------------------

*/

//gsoap wsdl schema documentation:  WSDL 1.1 binding schema
//gsoap wsdl schema namespace:            http://schemas.xmlsoap.org/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"

class wsdl__definitions;            // forward declaration

class wsdl__import
{ public:
      @xsd__anyURI                  namespace_;
      @xsd__anyURI                  location;
  private:
      wsdl__definitions       *definitionsRef;
  public:
                              wsdl__import();
                              ~wsdl__import();
      int                     traverse(wsdl__definitions&);
      void                    definitionsPtr(wsdl__definitions*);
      wsdl__definitions       *definitionsPtr() const;
};

class wsdl__types
{ public:
      xsd__string             documentation;          // <wsdl:documentation>?
      std::vector<xs__schema*>      xs__schema_;            // <xs:schema>*
  public:
      int                     traverse(wsdl__definitions&);
};

class wsdl__part
{ public:
      @xsd__NMTOKEN                 name;
      @xsd__QName             element;
      @xsd__QName             type;
      xsd__string             documentation;          // <wsdl:documentation>?
  private:
      xs__element             *elementRef;            // traverse() finds element
      xs__simpleType                *simpleTypeRef;         // traverse() finds simpleType
      xs__complexType               *complexTypeRef;  // traverse() finds complexType
  public:
                              wsdl__part();
                              ~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;          // <wsdl:documentation>?
      std::vector<wsdl__part>       part;             // <wsdl:part>*
  public:
      int                     traverse(wsdl__definitions&);
};

class wsdl__input
{ public:
      @xsd__NMTOKEN                 name;
      @xsd__QName             message;
      xsd__string             documentation;          // <wsdl:documentation>?
  private:
      wsdl__message                 *messageRef;            // traverse() finds message
  public:
                              wsdl__input();
                              ~wsdl__input();
      int                     traverse(wsdl__definitions&);
      void                    messagePtr(wsdl__message*);
      wsdl__message                 *messagePtr() const;
};

class wsdl__output
{ public:
      @xsd__NMTOKEN                 name;
      @xsd__QName             message;
      xsd__string             documentation;          // <wsdl:documentation>?
  private:
      wsdl__message                 *messageRef;            // traverse() finds message
  public:
                              wsdl__output();
                              ~wsdl__output();
      int                     traverse(wsdl__definitions&);
      void                    messagePtr(wsdl__message*);
      wsdl__message                 *messagePtr() const;
};

class wsdl__fault
{ public:
      @xsd__NMTOKEN                 name;
      @xsd__QName             message;
      xsd__string             documentation;          // <wsdl:documentation>?
  private:
      wsdl__message                 *messageRef;            // traverse() finds message
  public:
                              wsdl__fault();
                              ~wsdl__fault();
      int                     traverse(wsdl__definitions&);
      void                    messagePtr(wsdl__message*);
      wsdl__message                 *messagePtr() const;
};

class wsdl__operation
{ public:
      @xsd__NMTOKEN                 name;
      @xsd__string                  parameterOrder;
      xsd__string             documentation;          // <wsdl:documentation>?
      wsdl__input             *input;                 // <wsdl:input>?
      wsdl__output                  *output;          // <wsdl:output>?
      std::vector<wsdl__fault>      fault;                  // <wsdl:fault>*
  public:
      int                     traverse(wsdl__definitions&);
};

class wsdl__portType
{ public:
      @xsd__NMTOKEN                 name;
      xsd__string             documentation;          // <wsdl:documentation>?
      std::vector<wsdl__operation>  operation;        // <wsdl:operation>*
  public:
      int                     traverse(wsdl__definitions&);
};    

class wsdl__ext_input               // extensibility element
{ public:
      xsd__string             documentation;          // <wsdl:documentation>?
      dime__message                 *dime__message_;  // <dime:message>?
      soap__body              *soap__body_;           // <soap:body>?
      mime__multipartRelated        *mime__multipartRelated_;// <mime:multipartRelated>?
      std::vector<soap__header>     soap__header_;          // <soap:header>*
  public:
      int                     traverse(wsdl__definitions&);
};

class wsdl__ext_output              // extensibility element
{ public:
      xsd__string             documentation;          // <wsdl:documentation>?
      dime__message                 *dime__message_;  // <dime:message>?
      soap__body              *soap__body_;           // <soap:body>?
      mime__multipartRelated        *mime__multipartRelated_;// <mime:multipartRelated>?
      std::vector<soap__header>     soap__header_;          // <soap:header>*
  public:
      int                     traverse(wsdl__definitions&);
};

class wsdl__ext_fault               // extensibility element
{ public:
      @xsd__NMTOKEN                 name;
      xsd__string             documentation;          // <wsdl:documentation>?
      soap__fault             *soap__fault_;          // <soap:fault>?
  private:
      wsdl__message                 *messageRef;
  public:
                              wsdl__ext_fault();
                              ~wsdl__ext_fault();
      int                     traverse(wsdl__definitions&);
      void                    messagePtr(wsdl__message*);
      wsdl__message                 *messagePtr() const;
};

class wsdl__binding_operation
{ public:
      @xsd__NMTOKEN                 name;
      xsd__string             documentation;          // <wsdl:documentation>?
      soap__operation               *soap__operation_;      // <soap:operation>?
      http__operation               *http__operation_;      // <http:operation>?
      wsdl__ext_input               *input;                 // <wsdl:input>?
      wsdl__ext_output        *output;          // <wsdl:output>?
      std::vector<wsdl__ext_fault>  fault;                  // <wsdl:fault>*
  private:
      wsdl__operation               *operationRef;          // traverse() finds operation in <wsdl:portType>
  public:
                              wsdl__binding_operation();
                              ~wsdl__binding_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__string             documentation;          // <wsdl:documentation>?
      soap__binding                 *soap__binding_;  // <soap:binding>?
      http__binding                 *http__binding_;  // <http:binding>?
      std::vector<wsdl__binding_operation>
                              operation;        // <wsdl:operation>*
  private:
      wsdl__portType                *portTypeRef;           // traverse() finds portType
  public:
                              wsdl__binding();
                              ~wsdl__binding();
      int                     traverse(wsdl__definitions&);
      void                    portTypePtr(wsdl__portType*);
      wsdl__portType                *portTypePtr() const;
};

class wsdl__port
{ public:
      @xsd__NMTOKEN                 name;
      @xsd__QName             binding;
      xsd__string             documentation;          // <wsdl:documentation>?
      soap__address                 *soap__address_;  // <soap:address>?
      http__address                 *http__address_;  // <http:address>?
  private:
      wsdl__binding                 *bindingRef;            // traverse() finds binding
  public:
                              wsdl__port();
                              ~wsdl__port();
      int                     traverse(wsdl__definitions&);
      void                    bindingPtr(wsdl__binding*);
      wsdl__binding                 *bindingPtr() const;
};

class wsdl__service
{ public:
      @xsd__NMTOKEN                 name;
      xsd__string             documentation;          // <wsdl:documentation>?
      std::vector<wsdl__port>       port;             // <wsdl:port>*
  public:
      int                     traverse(wsdl__definitions&);
};

class wsdl__definitions
{ public:
      @xsd__NMTOKEN                 name;
      @xsd__anyURI                  targetNamespace         = "";
      std::vector<wsdl__import>     import;                 // <wsdl:import>*
      xsd__string             documentation;          // <wsdl:documentation>?
      wsdl__types             *types;                 // <wsdl:types>?
      std::vector<wsdl__message>    message;          // <wsdl:message>*
      std::vector<wsdl__portType>   portType;         // <wsdl:portType>*
      std::vector<wsdl__binding>    binding;          // <wsdl:binding>*
      std::vector<wsdl__service>    service;          // <wsdl:service>*
      std::vector<gwsdl__portType>  gwsdl__portType_; // <gwsdl:portType>* For the moment, we will hardcode this which makes it easier to access. WSDL 1.1 does not allow this to be extended this anyway
      struct soap             *soap;
  private:
      SetOfString             builtinTypeSet;
      SetOfString             builtinElementSet;
      SetOfString             builtinAttributeSet;
  public:
                              wsdl__definitions();
                              wsdl__definitions(struct soap*, const char*);
                              ~wsdl__definitions();
      int                     get(struct soap*);      // gSOAP getter is triggered after parsing
      int                     traverse();
      int                     read(const char*);
      int                     error();
      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);

Generated by  Doxygen 1.6.0   Back to index