Mercurial > repos > ktnyt > gembassy
diff GEMBASSY-1.0.3/gsoap/wsdl/soap.cpp @ 2:8947fca5f715 draft default tip
Uploaded
author | ktnyt |
---|---|
date | Fri, 26 Jun 2015 05:21:44 -0400 |
parents | 84a17b3fad1f |
children |
line wrap: on
line diff
--- a/GEMBASSY-1.0.3/gsoap/wsdl/soap.cpp Fri Jun 26 05:20:29 2015 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,231 +0,0 @@ -/* - soap.cpp - - WSDL/SOAP binding schema - --------------------------------------------------------------------------------- -gSOAP XML Web services tools -Copyright (C) 2001-2008, 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 --------------------------------------------------------------------------------- - -*/ - -#include "wsdlH.h" // cannot include "schemaH.h" -#include "includes.h" - -extern const char *qname_token(const char*, const char*); -extern int is_builtin_qname(const char*); - -//////////////////////////////////////////////////////////////////////////////// -// -// soap:header -// -//////////////////////////////////////////////////////////////////////////////// - -int soap__header::traverse(wsdl__definitions& definitions) -{ if (vflag) - cerr << " Analyzing soap header in wsdl namespace '" << (definitions.targetNamespace?definitions.targetNamespace:"") << "'" << endl; - messageRef = NULL; - partRef = NULL; - const char *token = qname_token(message, definitions.targetNamespace); - 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 soap header part '" << (part?part:"") << "' 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 soap header part '" << (part?part:"") << "' message '" << (token?token:"") << "'" << endl; - break; - } - } - } - } - } - } - if (messageRef) - { if (part) - { for (vector<wsdl__part>::iterator pt = messageRef->part.begin(); pt != messageRef->part.end(); ++pt) - if ((*pt).name && !strcmp((*pt).name, part)) - { partRef = &(*pt); - break; - } - } - if (!partRef) - cerr << "Warning: soap header has no matching part in message '" << (message?message:"") << "' in wsdl definitions '" << definitions.name << "' namespace '" << (definitions.targetNamespace?definitions.targetNamespace:"") << "'" << endl; - } - else - cerr << "Warning: could not find soap header part '" << (part?part:"") << "' message '" << (message?message:"") << "' in wsdl definitions '" << definitions.name << "' namespace '" << (definitions.targetNamespace?definitions.targetNamespace:"") << "'" << endl; - for (vector<soap__headerfault>::iterator i = headerfault.begin(); i != headerfault.end(); ++i) - (*i).traverse(definitions); - return SOAP_OK; -} - -void soap__header::messagePtr(wsdl__message *message) -{ messageRef = message; -} - -wsdl__message *soap__header::messagePtr() const -{ return messageRef; -} - -void soap__header::partPtr(wsdl__part *part) -{ partRef = part; -} - -wsdl__part *soap__header::partPtr() const -{ return partRef; -} - -//////////////////////////////////////////////////////////////////////////////// -// -// soap:headerfault -// -//////////////////////////////////////////////////////////////////////////////// - -int soap__headerfault::traverse(wsdl__definitions& definitions) -{ if (vflag) - cerr << " Analyzing soap headerfault in wsdl namespace '" << (definitions.targetNamespace?definitions.targetNamespace:"") << "'" << endl; - messageRef = NULL; - partRef = NULL; - const char *token = qname_token(message, definitions.targetNamespace); - 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 soap headerfault part '" << (part?part:"") << "' message '" << (token?token:"") << "'" << endl; - break; - } - } - } - else - { 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 soap headerfault part '" << (part?part:"") << "' message '" << (token?token:"") << "'" << endl; - break; - } - } - } - } - } - } - if (messageRef) - { if (part) - { for (vector<wsdl__part>::iterator pt = messageRef->part.begin(); pt != messageRef->part.end(); ++pt) - if ((*pt).name && !strcmp((*pt).name, part)) - { partRef = &(*pt); - break; - } - } - if (!partRef) - cerr << "Warning: soap headerfault has no matching part in message '" << (message?message:"") << "' in wsdl definitions '" << definitions.name << "' namespace '" << (definitions.targetNamespace?definitions.targetNamespace:"") << "'" << endl; - } - else - cerr << "Warning: could not find soap headerfault part '" << (part?part:"") << "' message '" << (message?message:"") << "' in wSDL definitions '" << definitions.name << "' namespace '" << (definitions.targetNamespace?definitions.targetNamespace:"") << "'" << endl; - return SOAP_OK; -} - -void soap__headerfault::messagePtr(wsdl__message *message) -{ messageRef = message; -} - -wsdl__message *soap__headerfault::messagePtr() const -{ return messageRef; -} - -void soap__headerfault::partPtr(wsdl__part *part) -{ partRef = part; -} - -wsdl__part *soap__headerfault::partPtr() const -{ return partRef; -} - -//////////////////////////////////////////////////////////////////////////////// -// -// wsoap:header -// -//////////////////////////////////////////////////////////////////////////////// - -int wsoap__header::traverse(wsdl__definitions& definitions) -{ if (vflag) - cerr << " Analyzing soap header in wsdl namespace '" << (definitions.targetNamespace?definitions.targetNamespace:"") << "'" << endl; - elementRef = NULL; - // WSDL 2.0 - if (element) - { if (definitions.types) - { for (vector<xs__schema*>::iterator schema = definitions.types->xs__schema_.begin(); schema != definitions.types->xs__schema_.end(); ++schema) - { const char *token = qname_token(element, (*schema)->targetNamespace); - if (token) - { for (vector<xs__element>::iterator element = (*schema)->element.begin(); element != (*schema)->element.end(); ++element) - { if ((*element).name && !strcmp((*element).name, token)) - { elementRef = &(*element); - if (vflag) - cerr << " Found soap header element '" << (token?token:"") << "'" << endl; - break; - } - } - } - } - } - if (!elementRef) - { if (is_builtin_qname(element)) - definitions.builtinElement(element); - else - if (!Wflag) - cerr << "Warning: no soap header element '" << element << "' in wsdl definitions '" << (definitions.name?definitions.name:"") << "' namespace '" << (definitions.targetNamespace?definitions.targetNamespace:"") << "'" << endl; - } - } - return SOAP_OK; -} - -void wsoap__header::elementPtr(xs__element *element) -{ elementRef = element; -} - -xs__element *wsoap__header::elementPtr() const -{ return elementRef; -}