1 karl 1.22 //%2004////////////////////////////////////////////////////////////////////////
|
2 mike 1.2 //
|
3 karl 1.22 // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
4 // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
5 // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
|
6 karl 1.19 // IBM Corp.; EMC Corporation, The Open Group.
|
7 karl 1.22 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
8 // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
|
9 mike 1.2 //
10 // Permission is hereby granted, free of charge, to any person obtaining a copy
11 // of this software and associated documentation files (the "Software"), to
12 // deal in the Software without restriction, including without limitation the
13 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
14 // sell copies of the Software, and to permit persons to whom the Software is
15 // furnished to do so, subject to the following conditions:
|
16 kumpf 1.11 //
|
17 mike 1.2 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
18 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
19 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
20 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
21 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
22 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
23 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25 //
26 //==============================================================================
27 //
28 // Author: Mike Brasher (mbrasher@bmc.com)
29 //
30 // Modified By: Nitin Upasani, Hewlett-Packard Company (Nitin_Upasani@hp.com)
31 // Nag Boranna, Hewlett-Packard Company (nagaraja_boranna@hp.com)
32 // Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
|
33 kumpf 1.13 // Carol Ann Krug Graves, Hewlett-Packard Company
34 // (carolann_graves@hp.com)
|
35 se.gupta 1.20 // Seema Gupta (gseema@in.ibm.com) for PEP135
|
36 mike 1.2 //
37 //%/////////////////////////////////////////////////////////////////////////////
38
39 #include <Pegasus/Common/Config.h>
40 #include <iostream>
|
41 kumpf 1.10 #include <Pegasus/Common/Constants.h>
|
42 mike 1.2 #include <Pegasus/Common/XmlWriter.h>
43 #include <Pegasus/Common/HTTPMessage.h>
44 #include "CIMOperationRequestEncoder.h"
45
46 PEGASUS_USING_STD;
47
48 PEGASUS_NAMESPACE_BEGIN
49
|
50 karl 1.18
|
51 mike 1.2 CIMOperationRequestEncoder::CIMOperationRequestEncoder(
|
52 kumpf 1.21 MessageQueue* outputQueue,
53 const String& hostName,
54 ClientAuthenticator* authenticator,
55 Uint32 showOutput)
|
56 mike 1.2 :
|
57 kumpf 1.10 MessageQueue(PEGASUS_QUEUENAME_OPREQENCODER),
|
58 mike 1.2 _outputQueue(outputQueue),
|
59 kumpf 1.21 _hostName(hostName.getCString()),
|
60 karl 1.18 _authenticator(authenticator),
|
61 kumpf 1.21 _showOutput(showOutput)
|
62 mike 1.2 {
63 }
64
65 CIMOperationRequestEncoder::~CIMOperationRequestEncoder()
66 {
67 }
68
69 void CIMOperationRequestEncoder::handleEnqueue()
70 {
71 Message* message = dequeue();
72
73 if (!message)
74 return;
75
76 _authenticator->setRequestMessage(message);
77
78 switch (message->getType())
79 {
80 case CIM_CREATE_CLASS_REQUEST_MESSAGE:
81 _encodeCreateClassRequest(
82 (CIMCreateClassRequestMessage*)message);
83 mike 1.2 break;
84
85 case CIM_GET_CLASS_REQUEST_MESSAGE:
86 _encodeGetClassRequest((CIMGetClassRequestMessage*)message);
87 break;
88
89 case CIM_MODIFY_CLASS_REQUEST_MESSAGE:
90 _encodeModifyClassRequest(
91 (CIMModifyClassRequestMessage*)message);
92 break;
93
94 case CIM_ENUMERATE_CLASS_NAMES_REQUEST_MESSAGE:
95 _encodeEnumerateClassNamesRequest(
96 (CIMEnumerateClassNamesRequestMessage*)message);
97 break;
98
99 case CIM_ENUMERATE_CLASSES_REQUEST_MESSAGE:
100 _encodeEnumerateClassesRequest(
101 (CIMEnumerateClassesRequestMessage*)message);
102 break;
103
104 mike 1.2 case CIM_DELETE_CLASS_REQUEST_MESSAGE:
105 _encodeDeleteClassRequest(
106 (CIMDeleteClassRequestMessage*)message);
107 break;
108
109 case CIM_CREATE_INSTANCE_REQUEST_MESSAGE:
110 _encodeCreateInstanceRequest(
111 (CIMCreateInstanceRequestMessage*)message);
112 break;
113
114 case CIM_GET_INSTANCE_REQUEST_MESSAGE:
115 _encodeGetInstanceRequest((CIMGetInstanceRequestMessage*)message);
116 break;
117
118 case CIM_MODIFY_INSTANCE_REQUEST_MESSAGE:
119 _encodeModifyInstanceRequest(
120 (CIMModifyInstanceRequestMessage*)message);
121 break;
122
123 case CIM_ENUMERATE_INSTANCE_NAMES_REQUEST_MESSAGE:
124 _encodeEnumerateInstanceNamesRequest(
125 mike 1.2 (CIMEnumerateInstanceNamesRequestMessage*)message);
126 break;
127
128 case CIM_ENUMERATE_INSTANCES_REQUEST_MESSAGE:
129 _encodeEnumerateInstancesRequest(
130 (CIMEnumerateInstancesRequestMessage*)message);
131 break;
132
133 case CIM_DELETE_INSTANCE_REQUEST_MESSAGE:
134 _encodeDeleteInstanceRequest(
135 (CIMDeleteInstanceRequestMessage*)message);
136 break;
137
138 case CIM_SET_QUALIFIER_REQUEST_MESSAGE:
139 _encodeSetQualifierRequest(
140 (CIMSetQualifierRequestMessage*)message);
141 break;
142
143 case CIM_GET_QUALIFIER_REQUEST_MESSAGE:
144 _encodeGetQualifierRequest(
145 (CIMGetQualifierRequestMessage*)message);
146 mike 1.2 break;
147
148 case CIM_ENUMERATE_QUALIFIERS_REQUEST_MESSAGE:
149 _encodeEnumerateQualifiersRequest(
150 (CIMEnumerateQualifiersRequestMessage*)message);
151 break;
152
153 case CIM_DELETE_QUALIFIER_REQUEST_MESSAGE:
154 _encodeDeleteQualifierRequest(
155 (CIMDeleteQualifierRequestMessage*)message);
156 break;
157
158 case CIM_REFERENCE_NAMES_REQUEST_MESSAGE:
159 _encodeReferenceNamesRequest(
160 (CIMReferenceNamesRequestMessage*)message);
161 break;
162
163 case CIM_REFERENCES_REQUEST_MESSAGE:
164 _encodeReferencesRequest(
165 (CIMReferencesRequestMessage*)message);
166 break;
167 mike 1.2
168 case CIM_ASSOCIATOR_NAMES_REQUEST_MESSAGE:
169 _encodeAssociatorNamesRequest(
170 (CIMAssociatorNamesRequestMessage*)message);
171 break;
172
173 case CIM_ASSOCIATORS_REQUEST_MESSAGE:
174 _encodeAssociatorsRequest(
175 (CIMAssociatorsRequestMessage*)message);
176 break;
177
178 case CIM_EXEC_QUERY_REQUEST_MESSAGE:
|
179 kumpf 1.9 _encodeExecQueryRequest(
180 (CIMExecQueryRequestMessage*)message);
|
181 mike 1.2 break;
182
183 case CIM_GET_PROPERTY_REQUEST_MESSAGE:
184 _encodeGetPropertyRequest((CIMGetPropertyRequestMessage*)message);
185 break;
186
187 case CIM_SET_PROPERTY_REQUEST_MESSAGE:
188 _encodeSetPropertyRequest((CIMSetPropertyRequestMessage*)message);
189 break;
190
191 case CIM_INVOKE_METHOD_REQUEST_MESSAGE:
192 _encodeInvokeMethodRequest(
193 (CIMInvokeMethodRequestMessage*)message);
194 break;
195 }
196
197 //ATTN: Do not delete the message here.
198 //
199 // ClientAuthenticator needs this message for resending the request on
200 // authentication challenge from the server. The message is deleted in
201 // the decoder after receiving the valid response from thr server.
202 mike 1.2 //
203 //delete message;
204 }
205
|
206 chuck 1.17 // l10n Added accept language and content language support starting here
207
|
208 mike 1.2 void CIMOperationRequestEncoder::_encodeCreateClassRequest(
209 CIMCreateClassRequestMessage* message)
210 {
211 Array<Sint8> params;
|
212 kumpf 1.4 XmlWriter::appendClassIParameter(params, "NewClass", message->newClass);
|
213 mike 1.2
|
214 se.gupta 1.20 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
215 kumpf 1.13 message->nameSpace, CIMName ("CreateClass"), message->messageId,
|
216 kumpf 1.14 message->getHttpMethod(),
|
217 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
218 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
219 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
220 chuck 1.17 params);
|
221 karl 1.18 _sendRequest(buffer);
|
222 mike 1.2 }
223
224 void CIMOperationRequestEncoder::_encodeGetClassRequest(
225 CIMGetClassRequestMessage* message)
226 {
227 Array<Sint8> params;
228
|
229 kumpf 1.4 XmlWriter::appendClassNameIParameter(
|
230 mike 1.2 params, "ClassName", message->className);
231
232 if (message->localOnly != true)
|
233 kumpf 1.4 XmlWriter::appendBooleanIParameter(params, "LocalOnly", false);
|
234 mike 1.2
235 if (message->includeQualifiers != true)
|
236 kumpf 1.4 XmlWriter::appendBooleanIParameter(params, "IncludeQualifiers", false);
|
237 mike 1.2
238 if (message->includeClassOrigin != false)
|
239 kumpf 1.4 XmlWriter::appendBooleanIParameter(params, "IncludeClassOrigin", true);
|
240 mike 1.2
241 if (!message->propertyList.isNull())
|
242 kumpf 1.4 XmlWriter::appendPropertyListIParameter(
|
243 mike 1.2 params, message->propertyList);
244
245 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(
|
246 kumpf 1.13 _hostName, message->nameSpace, CIMName ("GetClass"), message->messageId,
|
247 kumpf 1.14 message->getHttpMethod(),
|
248 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
249 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
250 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
251 chuck 1.17 params);
|
252 mike 1.2
|
253 karl 1.18 _sendRequest(buffer);
|
254 mike 1.2 }
255
256 void CIMOperationRequestEncoder::_encodeModifyClassRequest(
257 CIMModifyClassRequestMessage* message)
258 {
259 Array<Sint8> params;
260
|
261 kumpf 1.4 XmlWriter::appendClassIParameter(
|
262 mike 1.2 params, "ModifiedClass", message->modifiedClass);
263
264 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
265 kumpf 1.13 message->nameSpace, CIMName ("ModifyClass"), message->messageId,
|
266 kumpf 1.14 message->getHttpMethod(),
|
267 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
268 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
269 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
270 chuck 1.17 params);
|
271 mike 1.2
|
272 karl 1.18 _sendRequest(buffer);
|
273 mike 1.2 }
274
275 void CIMOperationRequestEncoder::_encodeEnumerateClassNamesRequest(
276 CIMEnumerateClassNamesRequestMessage* message)
277 {
278 Array<Sint8> params;
279
|
280 kumpf 1.13 if (!message->className.isNull())
|
281 kumpf 1.4 XmlWriter::appendClassNameIParameter(
|
282 mike 1.2 params, "ClassName", message->className);
283
284 if (message->deepInheritance != false)
|
285 kumpf 1.4 XmlWriter::appendBooleanIParameter(params, "DeepInheritance", true);
|
286 mike 1.2
287 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
288 kumpf 1.13 message->nameSpace, CIMName ("EnumerateClassNames"), message->messageId,
|
289 kumpf 1.14 message->getHttpMethod(),
|
290 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
291 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
292 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
293 chuck 1.17 params);
|
294 mike 1.2
|
295 karl 1.18 _sendRequest(buffer);
|
296 mike 1.2 }
297
298 void CIMOperationRequestEncoder::_encodeEnumerateClassesRequest(
299 CIMEnumerateClassesRequestMessage* message)
300 {
301 Array<Sint8> params;
302
|
303 kumpf 1.13 if (!message->className.isNull())
|
304 kumpf 1.4 XmlWriter::appendClassNameIParameter(
|
305 mike 1.2 params, "ClassName", message->className);
306
307 if (message->deepInheritance != false)
|
308 kumpf 1.4 XmlWriter::appendBooleanIParameter(params, "DeepInheritance", true);
|
309 mike 1.2
310 if (message->localOnly != true)
|
311 kumpf 1.4 XmlWriter::appendBooleanIParameter(params, "LocalOnly", false);
|
312 mike 1.2
313 if (message->includeQualifiers != true)
|
314 kumpf 1.4 XmlWriter::appendBooleanIParameter(
|
315 mike 1.2 params, "IncludeQualifiers", false);
316
317 if (message->includeClassOrigin != false)
|
318 kumpf 1.4 XmlWriter::appendBooleanIParameter(
|
319 mike 1.2 params, "IncludeClassOrigin", true);
320
321 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
322 kumpf 1.13 message->nameSpace, CIMName ("EnumerateClasses"), message->messageId,
|
323 kumpf 1.14 message->getHttpMethod(),
|
324 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
325 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
326 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
327 chuck 1.17 params);
|
328 mike 1.2
|
329 karl 1.18 _sendRequest(buffer);
|
330 mike 1.2 }
331
332 void CIMOperationRequestEncoder::_encodeDeleteClassRequest(
333 CIMDeleteClassRequestMessage* message)
334 {
335 Array<Sint8> params;
336
|
337 kumpf 1.13 if (!message->className.isNull())
|
338 kumpf 1.4 XmlWriter::appendClassNameIParameter(
|
339 mike 1.2 params, "ClassName", message->className);
340
341 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
342 kumpf 1.13 message->nameSpace, CIMName ("DeleteClass"), message->messageId,
|
343 kumpf 1.14 message->getHttpMethod(),
|
344 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
345 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
346 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
347 chuck 1.17 params);
|
348 mike 1.2
|
349 karl 1.18 _sendRequest(buffer);
|
350 mike 1.2 }
351
352 void CIMOperationRequestEncoder::_encodeCreateInstanceRequest(
353 CIMCreateInstanceRequestMessage* message)
354 {
355 Array<Sint8> params;
356
|
357 kumpf 1.4 XmlWriter::appendInstanceIParameter(
|
358 mike 1.2 params, "NewInstance", message->newInstance);
359
360 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
361 kumpf 1.13 message->nameSpace, CIMName ("CreateInstance"), message->messageId,
|
362 kumpf 1.14 message->getHttpMethod(),
|
363 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
364 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
365 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
366 chuck 1.17 params);
|
367 mike 1.2
|
368 karl 1.18 _sendRequest(buffer);
|
369 mike 1.2 }
370
371 void CIMOperationRequestEncoder::_encodeGetInstanceRequest(
372 CIMGetInstanceRequestMessage* message)
373 {
374 Array<Sint8> params;
375
|
376 kumpf 1.4 XmlWriter::appendInstanceNameIParameter(
|
377 mike 1.2 params, "InstanceName", message->instanceName);
378
379 if (message->localOnly != true)
|
380 kumpf 1.4 XmlWriter::appendBooleanIParameter(
|
381 mike 1.2 params, "LocalOnly", false);
382
383 if (message->includeQualifiers != false)
|
384 kumpf 1.4 XmlWriter::appendBooleanIParameter(
|
385 mike 1.2 params, "IncludeQualifiers", true);
386
387 if (message->includeClassOrigin != false)
|
388 kumpf 1.4 XmlWriter::appendBooleanIParameter(
|
389 mike 1.2 params, "IncludeClassOrigin", true);
390
391 if (!message->propertyList.isNull())
|
392 kumpf 1.4 XmlWriter::appendPropertyListIParameter(
|
393 mike 1.2 params, message->propertyList);
394
|
395 se.gupta 1.20 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
396 kumpf 1.13 message->nameSpace, CIMName ("GetInstance"), message->messageId,
|
397 kumpf 1.14 message->getHttpMethod(),
|
398 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
399 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
400 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
401 chuck 1.17 params);
|
402 mike 1.2
|
403 karl 1.18 _sendRequest(buffer);
|
404 mike 1.2 }
405
406 void CIMOperationRequestEncoder::_encodeModifyInstanceRequest(
407 CIMModifyInstanceRequestMessage* message)
408 {
409 Array<Sint8> params;
|
410 kumpf 1.4 XmlWriter::appendNamedInstanceIParameter(
|
411 mike 1.2 params, "ModifiedInstance", message->modifiedInstance);
412
413 if (message->includeQualifiers != true)
|
414 kumpf 1.4 XmlWriter::appendBooleanIParameter(
|
415 mike 1.2 params, "IncludeQualifiers", false);
416
417 if (!message->propertyList.isNull())
|
418 kumpf 1.4 XmlWriter::appendPropertyListIParameter(
|
419 mike 1.2 params, message->propertyList);
420
421 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
422 kumpf 1.13 message->nameSpace, CIMName ("ModifyInstance"), message->messageId,
|
423 kumpf 1.14 message->getHttpMethod(),
|
424 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
425 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
426 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
427 chuck 1.17 params);
|
428 mike 1.2
|
429 karl 1.18 _sendRequest(buffer);
|
430 mike 1.2 }
431
432 void CIMOperationRequestEncoder::_encodeEnumerateInstanceNamesRequest(
433 CIMEnumerateInstanceNamesRequestMessage* message)
434 {
435 Array<Sint8> params;
436
|
437 kumpf 1.4 XmlWriter::appendClassNameIParameter(
|
438 mike 1.2 params, "ClassName", message->className);
|
439 chuck 1.17
440
|
441 mike 1.2 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
442 kumpf 1.13 message->nameSpace, CIMName ("EnumerateInstanceNames"),
|
443 kumpf 1.14 message->messageId, message->getHttpMethod(),
|
444 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
445 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
446 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
447 chuck 1.17 params);
448
|
449 karl 1.18 _sendRequest(buffer);
|
450 mike 1.2 }
451
452 void CIMOperationRequestEncoder::_encodeEnumerateInstancesRequest(
453 CIMEnumerateInstancesRequestMessage* message)
454 {
455 Array<Sint8> params;
456
|
457 kumpf 1.4 XmlWriter::appendClassNameIParameter(
|
458 mike 1.2 params, "ClassName", message->className);
459
460 if (message->localOnly != true)
|
461 kumpf 1.4 XmlWriter::appendBooleanIParameter(params, "LocalOnly", false);
|
462 mike 1.2
463 if (message->deepInheritance != true)
|
464 kumpf 1.4 XmlWriter::appendBooleanIParameter(params, "DeepInheritance", false);
|
465 mike 1.2
466 if (message->includeQualifiers != false)
|
467 kumpf 1.4 XmlWriter::appendBooleanIParameter(
|
468 mike 1.2 params, "IncludeQualifiers", true);
469
470 if (message->includeClassOrigin != false)
|
471 kumpf 1.4 XmlWriter::appendBooleanIParameter(
|
472 mike 1.2 params, "IncludeClassOrigin", true);
473
474 if (!message->propertyList.isNull())
|
475 kumpf 1.4 XmlWriter::appendPropertyListIParameter(
|
476 mike 1.2 params, message->propertyList);
477
478 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
479 kumpf 1.13 message->nameSpace, CIMName ("EnumerateInstances"), message->messageId,
|
480 kumpf 1.14 message->getHttpMethod(),
|
481 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
482 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
483 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
484 chuck 1.17 params);
|
485 mike 1.2
|
486 karl 1.18 _sendRequest(buffer);
|
487 mike 1.2 }
488
489 void CIMOperationRequestEncoder::_encodeDeleteInstanceRequest(
490 CIMDeleteInstanceRequestMessage* message)
491 {
492 Array<Sint8> params;
493
|
494 kumpf 1.4 XmlWriter::appendInstanceNameIParameter(
|
495 mike 1.2 params, "InstanceName", message->instanceName);
496
497 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
498 kumpf 1.13 message->nameSpace, CIMName ("DeleteInstance"), message->messageId,
|
499 kumpf 1.14 message->getHttpMethod(),
|
500 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
501 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
502 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
503 chuck 1.17 params);
|
504 mike 1.2
|
505 karl 1.18 _sendRequest(buffer);
|
506 mike 1.2 }
507
508 void CIMOperationRequestEncoder::_encodeGetPropertyRequest(
509 CIMGetPropertyRequestMessage* message)
510 {
511 Array<Sint8> params;
512
|
513 kumpf 1.4 XmlWriter::appendInstanceNameIParameter(
|
514 mike 1.2 params, "InstanceName", message->instanceName);
515
|
516 kumpf 1.4 XmlWriter::appendPropertyNameIParameter(
|
517 mike 1.2 params, message->propertyName);
518
519 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
520 kumpf 1.13 message->nameSpace, CIMName ("GetProperty"), message->messageId,
|
521 kumpf 1.14 message->getHttpMethod(),
|
522 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
523 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
524 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
525 chuck 1.17 params);
|
526 mike 1.2
|
527 karl 1.18 _sendRequest(buffer);
|
528 mike 1.2 }
529
530 void CIMOperationRequestEncoder::_encodeSetPropertyRequest(
531 CIMSetPropertyRequestMessage* message)
532 {
533 Array<Sint8> params;
534
|
535 kumpf 1.4 XmlWriter::appendInstanceNameIParameter(
|
536 mike 1.2 params, "InstanceName", message->instanceName);
537
|
538 kumpf 1.4 XmlWriter::appendPropertyNameIParameter(
|
539 mike 1.2 params, message->propertyName);
540
541 if (!message->newValue.isNull())
|
542 kumpf 1.4 XmlWriter::appendPropertyValueIParameter(
|
543 mike 1.2 params, "NewValue", message->newValue);
544
545 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
546 kumpf 1.13 message->nameSpace, CIMName ("SetProperty"), message->messageId,
|
547 kumpf 1.14 message->getHttpMethod(),
|
548 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
549 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
550 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
551 chuck 1.17 params);
|
552 mike 1.2
|
553 karl 1.18 _sendRequest(buffer);
|
554 mike 1.2 }
555
556 void CIMOperationRequestEncoder::_encodeSetQualifierRequest(
557 CIMSetQualifierRequestMessage* message)
558 {
559 Array<Sint8> params;
|
560 kumpf 1.4 XmlWriter::appendQualifierDeclarationIParameter(
|
561 mike 1.2 params, "QualifierDeclaration", message->qualifierDeclaration);
562
563 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
564 kumpf 1.13 message->nameSpace, CIMName ("SetQualifier"), message->messageId,
|
565 kumpf 1.14 message->getHttpMethod(),
|
566 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
567 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
568 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
569 chuck 1.17 params);
|
570 mike 1.2
|
571 karl 1.18 _sendRequest(buffer);
|
572 mike 1.2 }
573
574 void CIMOperationRequestEncoder::_encodeGetQualifierRequest(
575 CIMGetQualifierRequestMessage* message)
576 {
577 Array<Sint8> params;
578
|
579 kumpf 1.13 if (!message->qualifierName.isNull())
|
580 kumpf 1.15 XmlWriter::appendStringIParameter(
581 params, "QualifierName", message->qualifierName.getString());
|
582 mike 1.2
583 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
584 kumpf 1.13 message->nameSpace, CIMName ("GetQualifier"), message->messageId,
|
585 kumpf 1.14 message->getHttpMethod(),
|
586 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
587 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
588 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
589 chuck 1.17 params);
|
590 mike 1.2
|
591 karl 1.18 _sendRequest(buffer);
|
592 mike 1.2 }
593
594 void CIMOperationRequestEncoder::_encodeEnumerateQualifiersRequest(
595 CIMEnumerateQualifiersRequestMessage* message)
596 {
597 Array<Sint8> params;
598
599 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
600 kumpf 1.13 message->nameSpace, CIMName ("EnumerateQualifiers"), message->messageId,
|
601 kumpf 1.14 message->getHttpMethod(),
|
602 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
603 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
604 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
605 chuck 1.17 params);
|
606 mike 1.2
|
607 karl 1.18 _sendRequest(buffer);
|
608 mike 1.2 }
609
610 void CIMOperationRequestEncoder::_encodeDeleteQualifierRequest(
611 CIMDeleteQualifierRequestMessage* message)
612 {
613 Array<Sint8> params;
614
|
615 kumpf 1.13 if (!message->qualifierName.isNull())
|
616 kumpf 1.15 XmlWriter::appendStringIParameter(
617 params, "QualifierName", message->qualifierName.getString());
|
618 mike 1.2
619 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
620 kumpf 1.13 message->nameSpace, CIMName ("DeleteQualifier"), message->messageId,
|
621 kumpf 1.14 message->getHttpMethod(),
|
622 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
623 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
624 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
625 chuck 1.17 params);
|
626 mike 1.2
|
627 karl 1.18 _sendRequest(buffer);
|
628 mike 1.2 }
629
630 void CIMOperationRequestEncoder::_encodeReferenceNamesRequest(
631 CIMReferenceNamesRequestMessage* message)
632 {
633 Array<Sint8> params;
634
|
635 kumpf 1.4 XmlWriter::appendObjectNameIParameter(
|
636 mike 1.2 params, "ObjectName", message->objectName);
637
|
638 kumpf 1.4 XmlWriter::appendClassNameIParameter(
|
639 mike 1.2 params, "ResultClass", message->resultClass);
640
|
641 kumpf 1.16 //
642 // The Client API has no way to represent a NULL role;
643 // An empty string is interpreted as NULL
644 //
645 if (message->role != String::EMPTY)
646 {
647 XmlWriter::appendStringIParameter(
648 params, "Role", message->role);
649 }
|
650 mike 1.2
651 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
652 kumpf 1.13 message->nameSpace, CIMName ("ReferenceNames"), message->messageId,
|
653 kumpf 1.14 message->getHttpMethod(),
|
654 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
655 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
656 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
657 chuck 1.17 params);
|
658 mike 1.2
|
659 karl 1.18 _sendRequest(buffer);
|
660 mike 1.2 }
661
662 void CIMOperationRequestEncoder::_encodeReferencesRequest(
663 CIMReferencesRequestMessage* message)
664 {
665 Array<Sint8> params;
666
|
667 kumpf 1.4 XmlWriter::appendObjectNameIParameter(
|
668 mike 1.2 params, "ObjectName", message->objectName);
669
|
670 kumpf 1.4 XmlWriter::appendClassNameIParameter(
|
671 mike 1.2 params, "ResultClass", message->resultClass);
672
|
673 kumpf 1.16 //
674 // The Client API has no way to represent a NULL role;
675 // An empty string is interpreted as NULL
676 //
677 if (message->role != String::EMPTY)
678 {
679 XmlWriter::appendStringIParameter(
680 params, "Role", message->role);
681 }
|
682 mike 1.2
683 if (message->includeQualifiers != false)
|
684 kumpf 1.4 XmlWriter::appendBooleanIParameter(params, "IncludeQualifiers", true);
|
685 mike 1.2
686 if (message->includeClassOrigin != false)
|
687 kumpf 1.4 XmlWriter::appendBooleanIParameter(params, "IncludeClassOrigin", true);
|
688 mike 1.2
689 if (!message->propertyList.isNull())
|
690 kumpf 1.4 XmlWriter::appendPropertyListIParameter(
|
691 mike 1.2 params, message->propertyList);
692
693 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
694 kumpf 1.13 message->nameSpace, CIMName ("References"), message->messageId,
|
695 kumpf 1.14 message->getHttpMethod(),
|
696 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
697 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
698 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
699 chuck 1.17 params);
|
700 mike 1.2
|
701 karl 1.18 _sendRequest(buffer);
|
702 mike 1.2 }
703
704 void CIMOperationRequestEncoder::_encodeAssociatorNamesRequest(
705 CIMAssociatorNamesRequestMessage* message)
706 {
707 Array<Sint8> params;
708
|
709 kumpf 1.4 XmlWriter::appendObjectNameIParameter(
|
710 mike 1.2 params, "ObjectName", message->objectName);
711
|
712 kumpf 1.4 XmlWriter::appendClassNameIParameter(
|
713 mike 1.2 params, "AssocClass", message->assocClass);
714
|
715 kumpf 1.4 XmlWriter::appendClassNameIParameter(
|
716 mike 1.2 params, "ResultClass", message->resultClass);
717
|
718 kumpf 1.16 //
719 // The Client API has no way to represent a NULL role;
720 // An empty string is interpreted as NULL
721 //
722 if (message->role != String::EMPTY)
723 {
724 XmlWriter::appendStringIParameter(
725 params, "Role", message->role);
726 }
727
728 //
729 // The Client API has no way to represent a NULL resultRole;
730 // An empty string is interpreted as NULL
731 //
732 if (message->resultRole != String::EMPTY)
733 {
734 XmlWriter::appendStringIParameter(
735 params, "ResultRole", message->resultRole);
736 }
|
737 mike 1.2
738 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
739 kumpf 1.13 message->nameSpace, CIMName ("AssociatorNames"), message->messageId,
|
740 kumpf 1.14 message->getHttpMethod(),
|
741 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
742 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
743 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
744 chuck 1.17 params);
|
745 mike 1.2
|
746 karl 1.18 _sendRequest(buffer);
|
747 mike 1.2 }
748
749 void CIMOperationRequestEncoder::_encodeAssociatorsRequest(
750 CIMAssociatorsRequestMessage* message)
751 {
752 Array<Sint8> params;
753
|
754 kumpf 1.4 XmlWriter::appendObjectNameIParameter(
|
755 mike 1.2 params, "ObjectName", message->objectName);
756
|
757 kumpf 1.4 XmlWriter::appendClassNameIParameter(
|
758 mike 1.2 params, "AssocClass", message->assocClass);
759
|
760 kumpf 1.4 XmlWriter::appendClassNameIParameter(
|
761 mike 1.2 params, "ResultClass", message->resultClass);
762
|
763 kumpf 1.16 //
764 // The Client API has no way to represent a NULL role;
765 // An empty string is interpreted as NULL
766 //
767 if (message->role != String::EMPTY)
768 {
769 XmlWriter::appendStringIParameter(
770 params, "Role", message->role);
771 }
772
773 //
774 // The Client API has no way to represent a NULL resultRole;
775 // An empty string is interpreted as NULL
776 //
777 if (message->resultRole != String::EMPTY)
778 {
779 XmlWriter::appendStringIParameter(
780 params, "ResultRole", message->resultRole);
781 }
|
782 mike 1.2
783 if (message->includeQualifiers != false)
|
784 kumpf 1.4 XmlWriter::appendBooleanIParameter(params, "IncludeQualifiers", true);
|
785 mike 1.2
786 if (message->includeClassOrigin != false)
|
787 kumpf 1.4 XmlWriter::appendBooleanIParameter(params, "IncludeClassOrigin", true);
|
788 mike 1.2
789 if (!message->propertyList.isNull())
|
790 kumpf 1.4 XmlWriter::appendPropertyListIParameter(
|
791 mike 1.2 params, message->propertyList);
792
793 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
794 kumpf 1.13 message->nameSpace, CIMName ("Associators"), message->messageId,
|
795 kumpf 1.14 message->getHttpMethod(),
|
796 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
797 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
798 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
799 chuck 1.17 params);
|
800 kumpf 1.9
|
801 karl 1.18 _sendRequest(buffer);
|
802 kumpf 1.9 }
803
804 void CIMOperationRequestEncoder::_encodeExecQueryRequest(
805 CIMExecQueryRequestMessage* message)
806 {
807 Array<Sint8> params;
808
809 XmlWriter::appendStringIParameter(
810 params, "QueryLanguage", message->queryLanguage);
811
812 XmlWriter::appendStringIParameter(
813 params, "Query", message->query);
814
815 Array<Sint8> buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
816 kumpf 1.13 message->nameSpace, CIMName ("ExecQuery"), message->messageId,
|
817 kumpf 1.14 message->getHttpMethod(),
|
818 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
819 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
820 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages(),
|
821 chuck 1.17 params);
|
822 mike 1.2
|
823 karl 1.18 _sendRequest(buffer);
|
824 mike 1.2 }
825
826 void CIMOperationRequestEncoder::_encodeInvokeMethodRequest(
827 CIMInvokeMethodRequestMessage* message)
828 {
829 Array<Sint8> buffer = XmlWriter::formatSimpleMethodReqMessage(_hostName,
|
830 kumpf 1.13 message->nameSpace, message->instanceName, message->methodName,
|
831 kumpf 1.14 message->inParameters, message->messageId,
|
832 chuck 1.17 message->getHttpMethod(), _authenticator->buildRequestAuthHeader(),
|
833 se.gupta 1.20 ((AcceptLanguageListContainer)message->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages(),
834 ((ContentLanguageListContainer)message->operationContext.get(ContentLanguageListContainer::NAME)).getLanguages());
835
|
836 karl 1.18 _sendRequest(buffer);
837 }
838
839 // Enqueue the buffer to the ouptut queue with a conditional display.
840 // This function is only enabled if the Pegasus Client trace is enabled.
841 // Uses parameter to determine whether to send to console to log.
842 void CIMOperationRequestEncoder::_sendRequest(Array<Sint8>& buffer)
843 {
844 #ifdef PEGASUS_CLIENT_TRACE_ENABLE
845 if (_showOutput & 1)
846 {
847 buffer.append('\0');
848 XmlWriter::indentedPrint(cout, buffer.getData());
849 cout << endl;
850 buffer.remove(buffer.size() - 1);
851 }
852 if (_showOutput & 2)
853 {
854 buffer.append('\0');
855 Logger::put(Logger::STANDARD_LOG,
856 "CIMCLIENT",
857 karl 1.18 Logger::TRACE,
858 "CIMOperationRequestEncoder::SendRequest, XML content: $1",
859 buffer.getData());
860 buffer.remove(buffer.size() - 1);
861 }
862 #endif
|
863 mike 1.2 _outputQueue->enqueue(new HTTPMessage(buffer));
864 }
|
865 karl 1.18
|
866 mike 1.2
867 PEGASUS_NAMESPACE_END
|