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 mike 1.18
43 PEGASUS_NAMESPACE_BEGIN
44
45 class CIMQualifier;
46 class CIMQualifierDecl;
47 class CIMClass;
48 class CIMInstance;
49 class CIMProperty;
50 class CIMParameter;
51 class CIMMethod;
52 class CIMObject;
|
53 mike 1.19 class CIMParamValue;
|
54 kumpf 1.29 class CIMValue;
|
55 mike 1.18
|
56 venkat.puvvada 1.56.2.1 struct CharString
57 {
58 const char *value;
59 Uint32 length;
60 CharString(const char *value, Uint32 length) :
61 value(value), length(length)
62 {
63 }
64 };
65
|
66 mike 1.18 class PEGASUS_COMMON_LINKAGE XmlReader
67 {
68 public:
69
|
70 kumpf 1.26 static void getXmlDeclaration(
|
71 kumpf 1.51 XmlParser& parser,
72 const char*& xmlVersion,
73 const char*& xmlEncoding);
74
75 static Boolean testXmlDeclaration(
76 XmlParser& parser,
77 XmlEntry& entry);
|
78 mike 1.18
79 static void expectStartTag(
|
80 kumpf 1.51 XmlParser& parser,
81 XmlEntry& entry,
82 const char* tagName);
|
83 mike 1.18
84 static void expectEndTag(
|
85 kumpf 1.51 XmlParser& parser,
86 const char* tagName);
|
87 mike 1.18
88 static void expectStartTagOrEmptyTag(
|
89 kumpf 1.51 XmlParser& parser,
90 XmlEntry& entry,
91 const char* tagName);
|
92 mike 1.18
|
93 kumpf 1.44 static void skipElement(
|
94 kumpf 1.51 XmlParser& parser,
95 XmlEntry& entry);
|
96 kumpf 1.44
|
97 mike 1.18 static Boolean expectContentOrCData(
|
98 kumpf 1.51 XmlParser& parser,
99 XmlEntry& entry);
|
100 mike 1.19
|
101 mike 1.18 static Boolean testStartTag(
|
102 kumpf 1.51 XmlParser& parser,
103 XmlEntry& entry,
104 const char* tagName);
|
105 mike 1.18
106 static Boolean testEndTag(
|
107 kumpf 1.51 XmlParser& parser,
108 const char* tagName);
|
109 mike 1.18
110 static Boolean testStartTagOrEmptyTag(
|
111 kumpf 1.51 XmlParser& parser,
112 XmlEntry& entry,
113 const char* tagName);
|
114 kumpf 1.44
115 static Boolean testStartTagOrEmptyTag(
|
116 kumpf 1.51 XmlParser& parser,
117 XmlEntry& entry);
|
118 mike 1.18
119 static Boolean testContentOrCData(
|
120 kumpf 1.51 XmlParser& parser,
121 XmlEntry& entry);
|
122 mike 1.18
|
123 kumpf 1.24 static void getCimStartTag(
|
124 kumpf 1.51 XmlParser& parser,
125 const char*& cimVersion,
126 const char*& dtdVersion);
|
127 mike 1.18
|
128 kumpf 1.40 static CIMName getCimNameAttribute(
|
129 kumpf 1.51 Uint32 lineNumber,
130 const XmlEntry& entry,
131 const char* elementName,
132 Boolean acceptNull = false);
|
133 mike 1.18
134 static String getClassNameAttribute(
|
135 kumpf 1.51 Uint32 lineNumber,
136 const XmlEntry& entry,
137 const char* elementName);
|
138 mike 1.18
|
139 kumpf 1.35 static CIMName getClassOriginAttribute(
|
140 kumpf 1.51 Uint32 lineNumber,
141 const XmlEntry& entry,
142 const char* tagName);
|
143 mike 1.18
|
144 thilo.boehm 1.54 typedef enum _embeddedObjectAttributeType
145 {
146 NO_EMBEDDED_OBJECT = 0,
147 EMBEDDED_OBJECT_ATTR = 1,
148 EMBEDDED_INSTANCE_ATTR = 2
149 } EmbeddedObjectAttributeType;
150
151 static EmbeddedObjectAttributeType getEmbeddedObjectAttribute(
|
152 kumpf 1.51 Uint32 lineNumber,
153 const XmlEntry& entry,
154 const char* tagName);
|
155 dave.sudlik 1.49
|
156 kumpf 1.35 static CIMName getReferenceClassAttribute(
|
157 kumpf 1.51 Uint32 lineNumber,
158 const XmlEntry& entry,
159 const char* elementName);
|
160 mike 1.18
|
161 kumpf 1.35 static CIMName getSuperClassAttribute(
|
162 kumpf 1.51 Uint32 lineNumber,
163 const XmlEntry& entry,
164 const char* tagName);
|
165 mike 1.18
|
166 kumpf 1.38 static Boolean getCimTypeAttribute(
|
167 kumpf 1.51 Uint32 lineNumber,
168 const XmlEntry& entry,
|
169 kumpf 1.38 CIMType& cimType, // Output parameter
|
170 kumpf 1.51 const char* tagName,
171 const char* attributeName = "TYPE",
172 Boolean required = true);
|
173 mike 1.18
174 static Boolean getCimBooleanAttribute(
|
175 kumpf 1.51 Uint32 lineNumber,
176 const XmlEntry& entry,
177 const char* tagName,
178 const char* attributeName,
179 Boolean defaultValue,
180 Boolean required);
|
181 mike 1.18
|
182 kumpf 1.41 static String decodeURICharacters(String uriString);
183
|
184 mike 1.18 static Boolean stringToSignedInteger(
|
185 kumpf 1.51 const char* stringValue,
186 Sint64& x);
|
187 mike 1.18
188 static Boolean stringToUnsignedInteger(
|
189 kumpf 1.51 const char* stringValue,
190 Uint64& x);
|
191 mike 1.18
192 static CIMValue stringToValue(
|
193 kumpf 1.51 Uint32 lineNumber,
194 const char* valueString,
195 CIMType type);
|
196 mike 1.18
|
197 venkat.puvvada 1.56.2.1 static CIMValue stringToValue(
198 Uint32 lineNumber,
199 const char* valueString,
200 Uint32 valueStringLen,
201 CIMType type);
202
203
|
204 karl 1.20 /* getValueElement - Gets the CIMType and CIMValue for a single
205 XML Value element. It expects <VALUE> as the start tag.
|
206 kumpf 1.51 @return Returns True if the value element exists
|
207 karl 1.20 */
|
208 mike 1.18 static Boolean getValueElement(
|
209 kumpf 1.51 XmlParser& parser,
210 CIMType type,
211 CIMValue& value);
|
212 mike 1.18
213 static Boolean getStringValueElement(
|
214 kumpf 1.51 XmlParser& parser,
215 String& str,
216 Boolean required);
|
217 mike 1.18
218 static CIMValue stringArrayToValue(
|
219 kumpf 1.51 Uint32 lineNumber,
220 const Array<const char*>& array,
221 CIMType type);
|
222 mike 1.18
223 static Boolean getValueArrayElement(
|
224 kumpf 1.51 XmlParser& parser,
225 CIMType type,
226 CIMValue& value);
|
227 mike 1.18
|
228 kumpf 1.37 static CIMFlavor getFlavor(
|
229 kumpf 1.51 XmlEntry& entry,
230 Uint32 lineNumber,
231 const char* tagName);
|
232 mike 1.18
|
233 kumpf 1.36 static CIMScope getOptionalScope(
|
234 kumpf 1.51 XmlParser& parser);
|
235 mike 1.18
236 static Boolean getQualifierElement(
|
237 kumpf 1.51 XmlParser& parser,
238 CIMQualifier& qualifier);
|
239 mike 1.18
240 static Boolean getPropertyElement(
|
241 kumpf 1.51 XmlParser& parser,
242 CIMProperty& property);
|
243 mike 1.18
244 static Boolean getArraySizeAttribute(
|
245 kumpf 1.51 Uint32 lineNumber,
246 const XmlEntry& entry,
247 const char* tagName,
248 Uint32& value);
|
249 mike 1.18
250 static Boolean getPropertyArrayElement(
|
251 kumpf 1.51 XmlParser& parser,
252 CIMProperty& property);
|
253 mike 1.18
254 static Boolean getHostElement(
|
255 kumpf 1.51 XmlParser& parser,
256 String& host);
|
257 mike 1.18
258 static Boolean getNameSpaceElement(
|
259 kumpf 1.51 XmlParser& parser,
260 CIMName& nameSpaceComponent);
|
261 mike 1.18
262 static Boolean getLocalNameSpacePathElement(
|
263 kumpf 1.51 XmlParser& parser,
264 String& nameSpace);
|
265 mike 1.18
266 static Boolean getNameSpacePathElement(
|
267 kumpf 1.51 XmlParser& parser,
268 String& host,
269 String& nameSpace);
|
270 mike 1.18
271 static Boolean getClassNameElement(
|
272 kumpf 1.51 XmlParser& parser,
273 CIMName& className,
274 Boolean required = false);
|
275 mike 1.18
|
276 kumpf 1.39 static CIMKeyBinding::Type getValueTypeAttribute(
|
277 kumpf 1.51 Uint32 lineNumber,
278 const XmlEntry& entry,
279 const char* elementName);
|
280 mike 1.18
281 static Boolean getKeyValueElement(
|
282 kumpf 1.51 XmlParser& parser,
283 CIMKeyBinding::Type& type,
284 String& value);
|
285 mike 1.18
286 static Boolean getKeyBindingElement(
|
287 kumpf 1.51 XmlParser& parser,
288 CIMName& name,
289 String& value,
290 CIMKeyBinding::Type& type);
|
291 mike 1.18
292 static Boolean getInstanceNameElement(
|
293 kumpf 1.51 XmlParser& parser,
294 String& className,
295 Array<CIMKeyBinding>& keyBindings);
|
296 mike 1.18
297 static Boolean getInstanceNameElement(
|
298 kumpf 1.51 XmlParser& parser,
299 CIMObjectPath& instanceName);
|
300 mike 1.18
301 static Boolean getInstancePathElement(
|
302 kumpf 1.51 XmlParser& parser,
303 CIMObjectPath& reference);
|
304 mike 1.18
305 static Boolean getLocalInstancePathElement(
|
306 kumpf 1.51 XmlParser& parser,
307 CIMObjectPath& reference);
|
308 mike 1.18
309 static Boolean getClassPathElement(
|
310 kumpf 1.51 XmlParser& parser,
311 CIMObjectPath& reference);
|
312 mike 1.18
313 static Boolean getLocalClassPathElement(
|
314 kumpf 1.51 XmlParser& parser,
315 CIMObjectPath& reference);
|
316 mike 1.18
317 static Boolean getValueReferenceElement(
|
318 kumpf 1.51 XmlParser& parser,
319 CIMObjectPath& reference);
|
320 mike 1.18
|
321 kumpf 1.23 static Boolean getValueReferenceArrayElement(
|
322 kumpf 1.51 XmlParser& parser,
323 CIMValue& value);
|
324 kumpf 1.23
|
325 mike 1.18 static Boolean getPropertyReferenceElement(
|
326 kumpf 1.51 XmlParser& parser,
327 CIMProperty& property);
|
328 mike 1.18
329 static Boolean getParameterElement(
|
330 kumpf 1.51 XmlParser& parser,
331 CIMParameter& parameter);
|
332 mike 1.18
333 static Boolean getParameterArrayElement(
|
334 kumpf 1.51 XmlParser& parser,
335 CIMParameter& parameter);
|
336 mike 1.18
337 static Boolean getParameterReferenceElement(
|
338 kumpf 1.51 XmlParser& parser,
339 CIMParameter& parameter);
|
340 mike 1.18
|
341 kumpf 1.21 static Boolean getParameterReferenceArrayElement(
|
342 kumpf 1.51 XmlParser& parser,
343 CIMParameter& parameter);
|
344 kumpf 1.21
|
345 mike 1.18 static Boolean getQualifierDeclElement(
|
346 kumpf 1.51 XmlParser& parser,
347 CIMQualifierDecl& qualifierDecl);
|
348 mike 1.18
349 static Boolean getMethodElement(
|
350 kumpf 1.51 XmlParser& parser,
351 CIMMethod& method);
|
352 mike 1.18
353 static Boolean getClassElement(
|
354 kumpf 1.51 XmlParser& parser,
355 CIMClass& cimClass);
|
356 mike 1.18
357 static Boolean getInstanceElement(
|
358 kumpf 1.51 XmlParser& parser,
359 CIMInstance& cimInstance);
|
360 mike 1.18
|
361 mike 1.19 static Boolean getNamedInstanceElement(
|
362 kumpf 1.51 XmlParser& parser,
363 CIMInstance& namedInstance);
|
364 mike 1.19
|
365 mike 1.18 static void getObject(XmlParser& parser, CIMClass& x);
366
367 static void getObject(XmlParser& parser, CIMInstance& x);
368
369 static void getObject(XmlParser& parser, CIMQualifierDecl& x);
370
371 static Boolean getMessageStartTag(
|
372 kumpf 1.51 XmlParser& parser,
373 String& id,
374 String& protocolVersion);
|
375 mike 1.18
376 static Boolean getIMethodCallStartTag(
|
377 kumpf 1.51 XmlParser& parser,
378 const char*& name);
|
379 mike 1.18
380 static Boolean getIMethodResponseStartTag(
|
381 kumpf 1.46 XmlParser& parser,
382 const char*& name,
383 Boolean& isEmptyTag);
|
384 mike 1.18
385 static Boolean getIParamValueTag(
|
386 kumpf 1.51 XmlParser& parser,
387 const char*& name,
388 Boolean& isEmptyTag);
|
389 kumpf 1.45
390 static void rejectNullIParamValue(
391 XmlParser& parser,
392 Boolean isEmptyTag,
393 const char* paramName);
|
394 mike 1.18
395 static Boolean getPropertyValue(
|
396 kumpf 1.51 XmlParser& parser,
397 CIMValue& cimValue);
|
398 mike 1.18
399 static Boolean getBooleanValueElement(
|
400 kumpf 1.51 XmlParser& parser,
401 Boolean& result,
402 Boolean required = false);
|
403 mike 1.18
404 static Boolean getErrorElement(
|
405 kumpf 1.51 XmlParser& parser,
406 CIMException& cimException,
407 Boolean required = false);
|
408 mike 1.18
|
409 kumpf 1.25 static Boolean getValueObjectElement(
|
410 kumpf 1.51 XmlParser& parser,
411 CIMObject& object);
|
412 kumpf 1.25
413 static Boolean getValueObjectWithPathElement(
|
414 kumpf 1.51 XmlParser& parser,
415 CIMObject& objectWithPath);
|
416 kumpf 1.25
417 static Boolean getValueObjectWithLocalPathElement(
|
418 kumpf 1.51 XmlParser& parser,
419 CIMObject& objectWithPath);
|
420 kumpf 1.25
421 static void getObjectArray(
|
422 kumpf 1.51 XmlParser& parser,
423 Array<CIMObject>& objectArray);
|
424 mike 1.18
425 static Boolean getObjectNameElement(
|
426 kumpf 1.51 XmlParser& parser,
427 CIMObjectPath& objectName);
|
428 mike 1.18
429 static Boolean getObjectPathElement(
|
430 kumpf 1.51 XmlParser& parser,
431 CIMObjectPath& objectPath);
|
432 mike 1.19
433 static Boolean getEMethodCallStartTag(
|
434 kumpf 1.51 XmlParser& parser,
435 const char*& name);
|
436 mike 1.19
437 static Boolean getEMethodResponseStartTag(
|
438 kumpf 1.46 XmlParser& parser,
439 const char*& name,
440 Boolean& isEmptyTag);
|
441 mike 1.19
|
442 kumpf 1.42 static Boolean getEParamValueTag(
|
443 kumpf 1.51 XmlParser& parser,
444 const char*& name);
|
445 kumpf 1.42
|
446 mike 1.19 static Boolean getMethodCallStartTag(
|
447 kumpf 1.51 XmlParser& parser,
448 const char*& name);
|
449 mike 1.19
450 static Boolean getMethodResponseStartTag(
|
451 kumpf 1.46 XmlParser& parser,
452 const char*& name,
453 Boolean& isEmptyTag);
|
454 mike 1.19
|
455 kumpf 1.21 static Boolean getParamValueElement(
|
456 kumpf 1.51 XmlParser& parser,
457 CIMParamValue& paramValue);
|
458 mike 1.18
|
459 kumpf 1.22 static Boolean getReturnValueElement(
|
460 kumpf 1.51 XmlParser& parser,
461 CIMValue& returnValue);
|
462 kumpf 1.22
|
463 karl 1.52 static Boolean isSupportedCIMVersion(
464 const char* cimVersion);
465
466 static Boolean isSupportedProtocolVersion(
467 const String& protocolVersion);
468
469 static Boolean isSupportedDTDVersion(
470 const char* dtdVersion);
|
471 mike 1.18 private:
472
|
473 venkat.puvvada 1.56.2.1 static CIMValue _stringArrayToValue(
474 Uint32 lineNumber,
475 const Array<CharString>& array,
476 CIMType type);
477
|
478 kumpf 1.51 XmlReader()
479 {
|
480 mike 1.18
481 }
482 };
483
484 PEGASUS_NAMESPACE_END
485
486 #endif /* Pegasus_XmlReader_h */
|