wsdlpull
1.23
Toggle main menu visibility
Loading...
Searching...
No Matches
src
wsdlparser
Operation.h
Go to the documentation of this file.
1
/*
2
* wsdlpull - A C++ parser for Wsdl (Web services description language)
3
* Copyright (C) 2005-2007 Vivek Krishna
4
*
5
* This library is free software; you can redistribute it and/or
6
* modify it under the terms of the GNU Library General Public
7
* License as published by the Free Software Foundation; either
8
* version 2 of the License, or (at your option) any later version.
9
*
10
* This library is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
* Library General Public License for more details.
14
*
15
* You should have received a copy of the GNU Library General Public
16
* License along with this library; if not, write to the Free
17
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18
*
19
*
20
*/
21
#ifndef _OPERATIONH
22
#define _OPERATIONH
23
24
#include "
xmlpull/Qname.h
"
25
26
#include "
wsdlparser/WsdlException.h
"
27
#include "
wsdlparser/WsdlElement.h
"
28
#include "
wsdlparser/Message.h
"
29
#include "
xmlpull/wsdlpull_export.h
"
30
31
32
namespace
WsdlPull
{
33
34
enum
Optype
{
35
OP_NONE
,
36
OP_IN
,
37
OP_OUT
,
38
OP_IN_OUT
,
39
OP_OUT_IN
40
};
41
42
enum
MessageType
{
43
44
Input
,
45
Output
,
46
Fault
47
};
48
49
typedef
std::list<const Message*>
MessageList
;
50
typedef
std::map<const Message *, std::string>
MessageNameList
;
51
class
PortType
;
52
//class for Wsdl operation element
53
class
WSDLPULL_EXPORT
Operation
:
public
WsdlElement
54
{
55
public
:
56
typedef
std::vector<Operation*>::iterator
OpIterator
;
57
typedef
std::vector<Operation*>::const_iterator
cOpIterator
;
58
59
Operation
(
WsdlParser
& w,
PortType
* pt);
60
~Operation
();
63
69
const
Message
*
getMessage
(
WsdlPull::MessageType
type)
const
;
70
//get the input/output/fault element's name
71
std::string
getMessageName
(
WsdlPull::MessageType
type)
const
;
72
std::list<const Message*>*
getFaults
()
const
;
73
const
Message
*
getFault
(
const
std::string& name)
const
;
78
Optype
getType
()
const
;
79
84
const
PortType
*
portType
()
const
;
85
87
void
setMessage
(
const
Message
* message,
WsdlPull::MessageType
type,
88
const
std::string & name =
""
);
89
void
addMessageExtensibility
(
WsdlPull::MessageType
m,
int
ext);
90
int
getMessageExtension
(
WsdlPull::MessageType
m);
91
93
void
print
(std::ostream & out);
94
95
private
:
96
PortType
* pt_;
97
Optype
type_;
98
const
Message
*inMessage_, *outMessage_;
99
std::list<const Message*> *faultMessages_;
100
MessageNameList
messageNames_;
101
int
in_e,out_e,fault_e;
//extensibility elements for <input>,<output>,<fault> elements
102
103
};
104
105
106
107
inline
108
Operation::Operation
(
WsdlParser
& w,
PortType
* p)
109
:
WsdlElement
(w),
110
pt_(p),
111
type_(
OP_NONE
),
112
inMessage_(0),
113
outMessage_(0),
114
faultMessages_(0),
115
in_e(0),out_e(0),fault_e(0)
116
{
117
}
118
119
inline
120
Operation::~Operation
()
121
{
122
123
delete
faultMessages_;
124
}
125
126
inline
127
const
PortType
*
128
Operation::portType
()
const
129
{
130
return
pt_;
131
}
132
133
inline
134
const
Message
*
135
Operation::getMessage
(
WsdlPull::MessageType
type)
const
136
{
137
if
(type ==
Input
)
138
return
inMessage_;
139
140
else
if
(type ==
Output
)
141
return
outMessage_;
142
143
else
if
(type ==
Fault
&& faultMessages_)
144
return
faultMessages_->front();
145
146
else
147
return
0;
148
}
149
150
inline
151
void
152
Operation::addMessageExtensibility
(
WsdlPull::MessageType
type,
int
ext)
153
{
154
if
(type ==
Input
)
155
in_e = ext;
156
157
else
if
(type ==
Output
)
158
out_e = ext;
159
160
else
if
(type ==
Fault
)
161
fault_e = ext;
162
163
return
;
164
}
165
inline
166
int
167
Operation::getMessageExtension
(
WsdlPull::MessageType
type)
168
{
169
if
(type ==
Input
)
170
return
in_e ;
171
172
else
if
(type ==
Output
)
173
return
out_e;
174
175
else
if
(type ==
Fault
)
176
return
fault_e;
177
178
return
0;
179
}
180
inline
181
Optype
182
Operation::getType
()
const
183
{
184
return
type_;
185
}
186
187
188
inline
189
void
190
Operation::setMessage
(
const
Message
* message,
191
WsdlPull::MessageType
type,
192
const
std::string &name)
193
{
194
if
(message == 0)
195
throw
WsdlException
(
"Invalid message name"
);
196
if
(type ==
Input
) {
197
198
inMessage_ = message;
199
if
(type_ ==
OP_NONE
)
200
type_ =
OP_IN
;
201
202
else
if
(type_ ==
OP_OUT
)
203
type_ =
OP_OUT_IN
;
204
205
else
206
type_ =
OP_NONE
;
207
}
208
else
if
(type ==
Output
){
209
210
outMessage_ = message;
211
if
(type_ ==
OP_NONE
)
212
type_ =
OP_OUT
;
213
214
else
if
(type_ ==
OP_IN
)
215
type_ =
OP_IN_OUT
;
216
217
else
218
type_ =
OP_NONE
;
219
}
220
else
if
(type ==
Fault
) {
221
222
if
(!faultMessages_)
223
faultMessages_ =
new
std::list<const Message*>();
224
225
faultMessages_->push_back(message);
226
}
227
//Save mesasge name
228
messageNames_[message]=name;
229
}
230
231
inline
232
void
233
Operation::print
(std::ostream & out)
234
{
235
out <<
id_
<<
XmlUtils::dbsp
<<
name_
<< std::endl;
236
out << type_ << std::endl;
237
out << inMessage_ <<
XmlUtils::dbsp
<< outMessage_ <<
XmlUtils::dbsp
<<std::endl;
238
out <<
XmlUtils::blk
;
239
}
240
241
inline
242
std::list<const Message*>*
243
Operation::getFaults
()
const
244
{
245
246
return
faultMessages_;
247
}
248
inline
249
const
Message
*
250
Operation::getFault
(
const
std::string& name)
const
251
{
252
for
( std::list<const Message*>::iterator mli = faultMessages_->begin();
253
mli != faultMessages_->end();
254
mli++) {
255
256
if
((*mli)->getName() == name)
257
return
(*mli);
258
}
259
return
0;
260
}
261
262
inline
263
std::string
264
Operation::getMessageName
(
WsdlPull::MessageType
type)
const
265
{
266
std::string name(
""
);
267
const
Message
* pMessage = 0;
268
MessageNameList::const_iterator it;
269
270
if
(type ==
Input
) {
271
272
pMessage = inMessage_;
273
}
274
else
if
(type ==
Output
) {
275
276
pMessage = outMessage_;
277
}
278
else
if
(type ==
Fault
&& faultMessages_) {
279
280
pMessage = faultMessages_->front();
281
}
282
283
it = messageNames_.find(pMessage);
284
285
if
(messageNames_.end() != it)
286
name = it->second;
287
288
return
name;
289
}
290
291
}
292
293
#endif
/* */
Message.h
Qname.h
WsdlElement.h
WsdlException.h
WsdlPull::Message
Definition
Message.h:64
WsdlPull::Operation::cOpIterator
std::vector< Operation * >::const_iterator cOpIterator
Definition
Operation.h:57
WsdlPull::Operation::OpIterator
std::vector< Operation * >::iterator OpIterator
Definition
Operation.h:56
WsdlPull::Operation::getMessageName
std::string getMessageName(WsdlPull::MessageType type) const
Definition
Operation.h:264
WsdlPull::Operation::getFault
const Message * getFault(const std::string &name) const
Definition
Operation.h:250
WsdlPull::Operation::Operation
Operation(WsdlParser &w, PortType *pt)
Definition
Operation.h:108
WsdlPull::Operation::getMessageExtension
int getMessageExtension(WsdlPull::MessageType m)
Definition
Operation.h:167
WsdlPull::Operation::setMessage
void setMessage(const Message *message, WsdlPull::MessageType type, const std::string &name="")
Definition
Operation.h:190
WsdlPull::Operation::getMessage
const Message * getMessage(WsdlPull::MessageType type) const
Definition
Operation.h:135
WsdlPull::Operation::getFaults
std::list< const Message * > * getFaults() const
Definition
Operation.h:243
WsdlPull::Operation::getType
Optype getType() const
Definition
Operation.h:182
WsdlPull::Operation::addMessageExtensibility
void addMessageExtensibility(WsdlPull::MessageType m, int ext)
Definition
Operation.h:152
WsdlPull::Operation::print
void print(std::ostream &out)
Definition
Operation.h:233
WsdlPull::Operation::portType
const PortType * portType() const
Definition
Operation.h:128
WsdlPull::Operation::~Operation
~Operation()
Definition
Operation.h:120
WsdlPull::PortType
Definition
PortType.h:31
WsdlPull::WsdlElement::id_
int id_
Definition
WsdlElement.h:86
WsdlPull::WsdlElement::WsdlElement
WsdlElement(WsdlParser &w)
Definition
WsdlElement.h:95
WsdlPull::WsdlElement::name_
std::string name_
Definition
WsdlElement.h:85
WsdlPull::WsdlException
Definition
WsdlException.h:31
WsdlPull::WsdlParser
Definition
WsdlParser.h:44
WsdlPull
Definition
Binding.h:27
WsdlPull::MessageType
MessageType
Definition
Operation.h:42
WsdlPull::Output
@ Output
Definition
Operation.h:45
WsdlPull::Input
@ Input
Definition
Operation.h:44
WsdlPull::Fault
@ Fault
Definition
Operation.h:46
WsdlPull::MessageNameList
std::map< const Message *, std::string > MessageNameList
Definition
Operation.h:50
WsdlPull::MessageList
std::list< const Message * > MessageList
Definition
Operation.h:49
WsdlPull::Optype
Optype
Definition
Operation.h:34
WsdlPull::OP_IN
@ OP_IN
Definition
Operation.h:36
WsdlPull::OP_NONE
@ OP_NONE
Definition
Operation.h:35
WsdlPull::OP_IN_OUT
@ OP_IN_OUT
Definition
Operation.h:38
WsdlPull::OP_OUT_IN
@ OP_OUT_IN
Definition
Operation.h:39
WsdlPull::OP_OUT
@ OP_OUT
Definition
Operation.h:37
XmlUtils::blk
std::ostream & blk(std::ostream &str)
Definition
XmlUtils.cpp:97
XmlUtils::dbsp
std::ostream & dbsp(std::ostream &str)
Definition
XmlUtils.cpp:90
wsdlpull_export.h
WSDLPULL_EXPORT
#define WSDLPULL_EXPORT
Definition
wsdlpull_export.h:30
Generated by
1.17.0