1 martin 1.55 //%LICENSE////////////////////////////////////////////////////////////////
|
2 martin 1.56 //
|
3 martin 1.55 // Licensed to The Open Group (TOG) under one or more contributor license
4 // agreements. Refer to the OpenPegasusNOTICE.txt file distributed with
5 // this work for additional information regarding copyright ownership.
6 // Each contributor licenses this file to you under the OpenPegasus Open
7 // Source License; you may not use this file except in compliance with the
8 // License.
|
9 martin 1.56 //
|
10 martin 1.55 // Permission is hereby granted, free of charge, to any person obtaining a
11 // copy of this software and associated documentation files (the "Software"),
12 // to deal in the Software without restriction, including without limitation
13 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
14 // and/or sell copies of the Software, and to permit persons to whom the
15 // Software is furnished to do so, subject to the following conditions:
|
16 martin 1.56 //
|
17 martin 1.55 // The above copyright notice and this permission notice shall be included
18 // in all copies or substantial portions of the Software.
|
19 martin 1.56 //
|
20 martin 1.55 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
21 martin 1.56 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
22 martin 1.55 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23 // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24 // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25 // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26 // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
27 martin 1.56 //
|
28 martin 1.55 //////////////////////////////////////////////////////////////////////////
|
29 mike 1.18 //
30 //%/////////////////////////////////////////////////////////////////////////////
31
32 #ifndef Pegasus_XmlReader_h
33 #define Pegasus_XmlReader_h
34
35 #include <Pegasus/Common/Config.h>
36 #include <Pegasus/Common/XmlParser.h>
37 #include <Pegasus/Common/CIMFlavor.h>
38 #include <Pegasus/Common/CIMScope.h>
|
39 kumpf 1.30 #include <Pegasus/Common/CIMType.h>
|
40 kumpf 1.28 #include <Pegasus/Common/CIMObjectPath.h>
|
41 kumpf 1.34 #include <Pegasus/Common/Linkage.h>
|
42 karl 1.58.4.4 #include <Pegasus/Common/UintArg.h>
|
43 mike 1.18
44 PEGASUS_NAMESPACE_BEGIN
45
46 class CIMQualifier;
47 class CIMQualifierDecl;
48 class CIMClass;
49 class CIMInstance;
50 class CIMProperty;
51 class CIMParameter;
52 class CIMMethod;
53 class CIMObject;
|
54 mike 1.19 class CIMParamValue;
|
55 kumpf 1.29 class CIMValue;
|
56 mike 1.18
|
57 venkat.puvvada 1.57 struct CharString
58 {
59 const char *value;
60 Uint32 length;
61 CharString(const char *value, Uint32 length) :
62 value(value), length(length)
63 {
64 }
65 };
66
|
67 mike 1.18 class PEGASUS_COMMON_LINKAGE XmlReader
68 {
69 public:
70
|
71 kumpf 1.26 static void getXmlDeclaration(
|
72 kumpf 1.51 XmlParser& parser,
73 const char*& xmlVersion,
74 const char*& xmlEncoding);
75
76 static Boolean testXmlDeclaration(
77 XmlParser& parser,
78 XmlEntry& entry);
|
79 mike 1.18
80 static void expectStartTag(
|
81 kumpf 1.51 XmlParser& parser,
82 XmlEntry& entry,
83 const char* tagName);
|
84 mike 1.18
85 static void expectEndTag(
|
86 kumpf 1.51 XmlParser& parser,
87 const char* tagName);
|
88 mike 1.18
89 static void expectStartTagOrEmptyTag(
|
90 kumpf 1.51 XmlParser& parser,
91 XmlEntry& entry,
92 const char* tagName);
|
93 mike 1.18
|
94 kumpf 1.44 static void skipElement(
|
95 kumpf 1.51 XmlParser& parser,
96 XmlEntry& entry);
|
97 kumpf 1.44
|
98 mike 1.18 static Boolean expectContentOrCData(
|
99 kumpf 1.51 XmlParser& parser,
100 XmlEntry& entry);
|
101 mike 1.19
|
102 mike 1.18 static Boolean testStartTag(
|
103 kumpf 1.51 XmlParser& parser,
104 XmlEntry& entry,
105 const char* tagName);
|
106 mike 1.18
107 static Boolean testEndTag(
|
108 kumpf 1.51 XmlParser& parser,
109 const char* tagName);
|
110 mike 1.18
111 static Boolean testStartTagOrEmptyTag(
|
112 kumpf 1.51 XmlParser& parser,
113 XmlEntry& entry,
114 const char* tagName);
|
115 kumpf 1.44
116 static Boolean testStartTagOrEmptyTag(
|
117 kumpf 1.51 XmlParser& parser,
118 XmlEntry& entry);
|
119 mike 1.18
120 static Boolean testContentOrCData(
|
121 kumpf 1.51 XmlParser& parser,
122 XmlEntry& entry);
|
123 mike 1.18
|
124 kumpf 1.24 static void getCimStartTag(
|
125 kumpf 1.51 XmlParser& parser,
126 const char*& cimVersion,
127 const char*& dtdVersion);
|
128 mike 1.18
|
129 kumpf 1.40 static CIMName getCimNameAttribute(
|
130 kumpf 1.51 Uint32 lineNumber,
131 const XmlEntry& entry,
132 const char* elementName,
133 Boolean acceptNull = false);
|
134 mike 1.18
135 static String getClassNameAttribute(
|
136 kumpf 1.51 Uint32 lineNumber,
137 const XmlEntry& entry,
138 const char* elementName);
|
139 mike 1.18
|
140 kumpf 1.35 static CIMName getClassOriginAttribute(
|
141 kumpf 1.51 Uint32 lineNumber,
142 const XmlEntry& entry,
143 const char* tagName);
|
144 mike 1.18
|
145 thilo.boehm 1.54 typedef enum _embeddedObjectAttributeType
146 {
147 NO_EMBEDDED_OBJECT = 0,
148 EMBEDDED_OBJECT_ATTR = 1,
149 EMBEDDED_INSTANCE_ATTR = 2
150 } EmbeddedObjectAttributeType;
151
152 static EmbeddedObjectAttributeType getEmbeddedObjectAttribute(
|
153 kumpf 1.51 Uint32 lineNumber,
154 const XmlEntry& entry,
155 const char* tagName);
|
156 dave.sudlik 1.49
|
157 kumpf 1.35 static CIMName getReferenceClassAttribute(
|
158 kumpf 1.51 Uint32 lineNumber,
159 const XmlEntry& entry,
160 const char* elementName);
|
161 mike 1.18
|
162 kumpf 1.35 static CIMName getSuperClassAttribute(
|
163 kumpf 1.51 Uint32 lineNumber,
164 const XmlEntry& entry,
165 const char* tagName);
|
166 mike 1.18
|
167 kumpf 1.38 static Boolean getCimTypeAttribute(
|
168 kumpf 1.51 Uint32 lineNumber,
169 const XmlEntry& entry,
|
170 kumpf 1.38 CIMType& cimType, // Output parameter
|
171 kumpf 1.51 const char* tagName,
172 const char* attributeName = "TYPE",
173 Boolean required = true);
|
174 mike 1.18
175 static Boolean getCimBooleanAttribute(
|
176 kumpf 1.51 Uint32 lineNumber,
177 const XmlEntry& entry,
178 const char* tagName,
179 const char* attributeName,
180 Boolean defaultValue,
181 Boolean required);
|
182 mike 1.18
|
183 kumpf 1.41 static String decodeURICharacters(String uriString);
184
|
185 mike 1.18 static CIMValue stringToValue(
|
186 kumpf 1.51 Uint32 lineNumber,
187 const char* valueString,
188 CIMType type);
|
189 mike 1.18
|
190 venkat.puvvada 1.57 static CIMValue stringToValue(
191 Uint32 lineNumber,
192 const char* valueString,
193 Uint32 valueStringLen,
194 CIMType type);
195
196
|
197 karl 1.20 /* getValueElement - Gets the CIMType and CIMValue for a single
198 XML Value element. It expects <VALUE> as the start tag.
|
199 kumpf 1.51 @return Returns True if the value element exists
|
200 karl 1.20 */
|
201 mike 1.18 static Boolean getValueElement(
|
202 kumpf 1.51 XmlParser& parser,
203 CIMType type,
204 CIMValue& value);
|
205 mike 1.18
206 static Boolean getStringValueElement(
|
207 kumpf 1.51 XmlParser& parser,
208 String& str,
209 Boolean required);
|
210 mike 1.18
|
211 karl 1.58.4.2 // KS_PULL_BEGIN
|
212 karl 1.58.4.3 static Boolean getUint32ArgValueElement(
|
213 karl 1.58.4.1 XmlParser& parser,
214 Uint32Arg& val,
215 Boolean required);
216
|
217 karl 1.58.4.3 static Boolean getUint32ValueElement(
218 XmlParser& parser,
219 Uint32& val,
220 Boolean required);
221
|
222 karl 1.58.4.1 static Boolean getUint64ValueElement(
223 XmlParser& parser,
224 Uint64Arg& val,
225 Boolean required);
|
226 karl 1.58.4.2 //KS_PULL_END
|
227 karl 1.58.4.1
|
228 mike 1.18 static CIMValue stringArrayToValue(
|
229 kumpf 1.51 Uint32 lineNumber,
230 const Array<const char*>& array,
231 CIMType type);
|
232 mike 1.18
233 static Boolean getValueArrayElement(
|
234 kumpf 1.51 XmlParser& parser,
235 CIMType type,
236 CIMValue& value);
|
237 mike 1.18
|
238 kumpf 1.37 static CIMFlavor getFlavor(
|
239 kumpf 1.51 XmlEntry& entry,
240 Uint32 lineNumber,
241 const char* tagName);
|
242 mike 1.18
|
243 kumpf 1.36 static CIMScope getOptionalScope(
|
244 kumpf 1.51 XmlParser& parser);
|
245 mike 1.18
246 static Boolean getQualifierElement(
|
247 kumpf 1.51 XmlParser& parser,
248 CIMQualifier& qualifier);
|
249 mike 1.18
250 static Boolean getPropertyElement(
|
251 kumpf 1.51 XmlParser& parser,
252 CIMProperty& property);
|
253 mike 1.18
254 static Boolean getArraySizeAttribute(
|
255 kumpf 1.51 Uint32 lineNumber,
256 const XmlEntry& entry,
257 const char* tagName,
258 Uint32& value);
|
259 mike 1.18
260 static Boolean getPropertyArrayElement(
|
261 kumpf 1.51 XmlParser& parser,
262 CIMProperty& property);
|
263 mike 1.18
264 static Boolean getHostElement(
|
265 kumpf 1.51 XmlParser& parser,
266 String& host);
|
267 mike 1.18
268 static Boolean getNameSpaceElement(
|
269 kumpf 1.51 XmlParser& parser,
270 CIMName& nameSpaceComponent);
|
271 mike 1.18
272 static Boolean getLocalNameSpacePathElement(
|
273 kumpf 1.51 XmlParser& parser,
274 String& nameSpace);
|
275 mike 1.18
276 static Boolean getNameSpacePathElement(
|
277 kumpf 1.51 XmlParser& parser,
278 String& host,
279 String& nameSpace);
|
280 mike 1.18
281 static Boolean getClassNameElement(
|
282 kumpf 1.51 XmlParser& parser,
283 CIMName& className,
284 Boolean required = false);
|
285 mike 1.18
|
286 kumpf 1.39 static CIMKeyBinding::Type getValueTypeAttribute(
|
287 kumpf 1.51 Uint32 lineNumber,
288 const XmlEntry& entry,
289 const char* elementName);
|
290 mike 1.18
291 static Boolean getKeyValueElement(
|
292 kumpf 1.51 XmlParser& parser,
293 CIMKeyBinding::Type& type,
294 String& value);
|
295 mike 1.18
296 static Boolean getKeyBindingElement(
|
297 kumpf 1.51 XmlParser& parser,
298 CIMName& name,
299 String& value,
300 CIMKeyBinding::Type& type);
|
301 mike 1.18
302 static Boolean getInstanceNameElement(
|
303 kumpf 1.51 XmlParser& parser,
304 String& className,
305 Array<CIMKeyBinding>& keyBindings);
|
306 mike 1.18
307 static Boolean getInstanceNameElement(
|
308 kumpf 1.51 XmlParser& parser,
309 CIMObjectPath& instanceName);
|
310 mike 1.18
311 static Boolean getInstancePathElement(
|
312 kumpf 1.51 XmlParser& parser,
313 CIMObjectPath& reference);
|
314 mike 1.18
315 static Boolean getLocalInstancePathElement(
|
316 kumpf 1.51 XmlParser& parser,
317 CIMObjectPath& reference);
|
318 mike 1.18
319 static Boolean getClassPathElement(
|
320 kumpf 1.51 XmlParser& parser,
321 CIMObjectPath& reference);
|
322 mike 1.18
323 static Boolean getLocalClassPathElement(
|
324 kumpf 1.51 XmlParser& parser,
325 CIMObjectPath& reference);
|
326 mike 1.18
327 static Boolean getValueReferenceElement(
|
328 kumpf 1.51 XmlParser& parser,
329 CIMObjectPath& reference);
|
330 mike 1.18
|
331 kumpf 1.23 static Boolean getValueReferenceArrayElement(
|
332 kumpf 1.51 XmlParser& parser,
333 CIMValue& value);
|
334 kumpf 1.23
|
335 mike 1.18 static Boolean getPropertyReferenceElement(
|
336 kumpf 1.51 XmlParser& parser,
337 CIMProperty& property);
|
338 mike 1.18
339 static Boolean getParameterElement(
|
340 kumpf 1.51 XmlParser& parser,
341 CIMParameter& parameter);
|
342 mike 1.18
343 static Boolean getParameterArrayElement(
|
344 kumpf 1.51 XmlParser& parser,
345 CIMParameter& parameter);
|
346 mike 1.18
347 static Boolean getParameterReferenceElement(
|
348 kumpf 1.51 XmlParser& parser,
349 CIMParameter& parameter);
|
350 mike 1.18
|
351 kumpf 1.21 static Boolean getParameterReferenceArrayElement(
|
352 kumpf 1.51 XmlParser& parser,
353 CIMParameter& parameter);
|
354 kumpf 1.21
|
355 mike 1.18 static Boolean getQualifierDeclElement(
|
356 kumpf 1.51 XmlParser& parser,
357 CIMQualifierDecl& qualifierDecl);
|
358 mike 1.18
359 static Boolean getMethodElement(
|
360 kumpf 1.51 XmlParser& parser,
361 CIMMethod& method);
|
362 mike 1.18
363 static Boolean getClassElement(
|
364 kumpf 1.51 XmlParser& parser,
365 CIMClass& cimClass);
|
366 mike 1.18
367 static Boolean getInstanceElement(
|
368 kumpf 1.51 XmlParser& parser,
369 CIMInstance& cimInstance);
|
370 mike 1.18
|
371 mike 1.19 static Boolean getNamedInstanceElement(
|
372 kumpf 1.51 XmlParser& parser,
373 CIMInstance& namedInstance);
|
374 mike 1.19
|
375 karl 1.58.4.2 //EXP_PULL_BEGIN
|
376 karl 1.58.4.1 static Boolean getInstanceWithPathElement(
377 XmlParser& parser,
378 CIMInstance& namedInstance);
379 //EXP_PULL_END
380
|
381 mike 1.18 static void getObject(XmlParser& parser, CIMClass& x);
382
383 static void getObject(XmlParser& parser, CIMInstance& x);
384
385 static void getObject(XmlParser& parser, CIMQualifierDecl& x);
386
387 static Boolean getMessageStartTag(
|
388 kumpf 1.51 XmlParser& parser,
389 String& id,
390 String& protocolVersion);
|
391 mike 1.18
392 static Boolean getIMethodCallStartTag(
|
393 kumpf 1.51 XmlParser& parser,
394 const char*& name);
|
395 mike 1.18
396 static Boolean getIMethodResponseStartTag(
|
397 kumpf 1.46 XmlParser& parser,
398 const char*& name,
399 Boolean& isEmptyTag);
|
400 mike 1.18
401 static Boolean getIParamValueTag(
|
402 kumpf 1.51 XmlParser& parser,
403 const char*& name,
404 Boolean& isEmptyTag);
|
405 kumpf 1.45
|
406 karl 1.58.4.1 // EXP_PULL_BEGIN
407
408 static Boolean getParamValueTag(
409 XmlParser& parser,
410 const char*& name,
411 Boolean& isEmptyTag);
412
413 static Boolean getIReturnValueTag(
414 XmlParser& parser,
415 const char*& name,
416 Boolean& isEmptyTag);
417 // EXP_PULL_END
|
418 kumpf 1.45 static void rejectNullIParamValue(
419 XmlParser& parser,
420 Boolean isEmptyTag,
421 const char* paramName);
|
422 mike 1.18
|
423 karl 1.58.4.1 // EXP_PULL_BEGIN
424 static void rejectNullParamValue(
425 XmlParser& parser,
426 Boolean isEmptyTag,
427 const char* paramName);
428 static void rejectNullIReturnValue(
429 XmlParser& parser,
430 Boolean isEmptyTag,
431 const char* paramName);
432 // EXP_PULL_END
|
433 mike 1.18 static Boolean getPropertyValue(
|
434 kumpf 1.51 XmlParser& parser,
435 CIMValue& cimValue);
|
436 mike 1.18
437 static Boolean getBooleanValueElement(
|
438 kumpf 1.51 XmlParser& parser,
439 Boolean& result,
440 Boolean required = false);
|
441 mike 1.18
442 static Boolean getErrorElement(
|
443 kumpf 1.51 XmlParser& parser,
444 CIMException& cimException,
445 Boolean required = false);
|
446 mike 1.18
|
447 kumpf 1.25 static Boolean getValueObjectElement(
|
448 kumpf 1.51 XmlParser& parser,
449 CIMObject& object);
|
450 kumpf 1.25
451 static Boolean getValueObjectWithPathElement(
|
452 kumpf 1.51 XmlParser& parser,
453 CIMObject& objectWithPath);
|
454 kumpf 1.25
455 static Boolean getValueObjectWithLocalPathElement(
|
456 kumpf 1.51 XmlParser& parser,
457 CIMObject& objectWithPath);
|
458 kumpf 1.25
459 static void getObjectArray(
|
460 kumpf 1.51 XmlParser& parser,
461 Array<CIMObject>& objectArray);
|
462 mike 1.18
463 static Boolean getObjectNameElement(
|
464 kumpf 1.51 XmlParser& parser,
465 CIMObjectPath& objectName);
|
466 mike 1.18
467 static Boolean getObjectPathElement(
|
468 kumpf 1.51 XmlParser& parser,
469 CIMObjectPath& objectPath);
|
470 mike 1.19
471 static Boolean getEMethodCallStartTag(
|
472 kumpf 1.51 XmlParser& parser,
473 const char*& name);
|
474 mike 1.19
475 static Boolean getEMethodResponseStartTag(
|
476 kumpf 1.46 XmlParser& parser,
477 const char*& name,
478 Boolean& isEmptyTag);
|
479 mike 1.19
|
480 kumpf 1.42 static Boolean getEParamValueTag(
|
481 kumpf 1.51 XmlParser& parser,
482 const char*& name);
|
483 kumpf 1.42
|
484 mike 1.19 static Boolean getMethodCallStartTag(
|
485 kumpf 1.51 XmlParser& parser,
486 const char*& name);
|
487 mike 1.19
488 static Boolean getMethodResponseStartTag(
|
489 kumpf 1.46 XmlParser& parser,
490 const char*& name,
491 Boolean& isEmptyTag);
|
492 mike 1.19
|
493 kumpf 1.21 static Boolean getParamValueElement(
|
494 kumpf 1.51 XmlParser& parser,
495 CIMParamValue& paramValue);
|
496 mike 1.18
|
497 kumpf 1.22 static Boolean getReturnValueElement(
|
498 kumpf 1.51 XmlParser& parser,
499 CIMValue& returnValue);
|
500 kumpf 1.22
|
501 karl 1.52 static Boolean isSupportedCIMVersion(
502 const char* cimVersion);
503
504 static Boolean isSupportedProtocolVersion(
505 const String& protocolVersion);
506
507 static Boolean isSupportedDTDVersion(
508 const char* dtdVersion);
|
509 mike 1.18 private:
510
|
511 venkat.puvvada 1.57 static CIMValue _stringArrayToValue(
512 Uint32 lineNumber,
513 const Array<CharString>& array,
514 CIMType type);
515
|
516 kumpf 1.51 XmlReader()
517 {
|
518 mike 1.18
519 }
520 };
521
522 PEGASUS_NAMESPACE_END
523
524 #endif /* Pegasus_XmlReader_h */
|