1 karl 1.50 //%2006////////////////////////////////////////////////////////////////////////
|
2 mike 1.18 //
|
3 karl 1.47 // 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.43 // IBM Corp.; EMC Corporation, The Open Group.
|
7 karl 1.47 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
8 // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
|
9 karl 1.48 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
10 // EMC Corporation; VERITAS Software Corporation; The Open Group.
|
11 karl 1.50 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
12 // EMC Corporation; Symantec Corporation; The Open Group.
|
13 mike 1.18 //
14 // Permission is hereby granted, free of charge, to any person obtaining a copy
|
15 kumpf 1.33 // of this software and associated documentation files (the "Software"), to
16 // deal in the Software without restriction, including without limitation the
17 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
18 mike 1.18 // sell copies of the Software, and to permit persons to whom the Software is
19 // furnished to do so, subject to the following conditions:
20 //
|
21 kumpf 1.33 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
|
22 mike 1.18 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
23 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
24 kumpf 1.33 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
25 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
26 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
27 mike 1.18 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 //
30 //==============================================================================
31 //
32 // Author: Mike Brasher (mbrasher@bmc.com)
33 //
|
34 mike 1.19 // Modified By: Carol Ann Krug Graves, Hewlett-Packard Company
35 // (carolann_graves@hp.com)
36 // Nitin Upasani, Hewlett-Packard Company (Nitin_Upasani@hp.com)
37 // Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
|
38 mike 1.18 //
39 //%/////////////////////////////////////////////////////////////////////////////
40
41 #ifndef Pegasus_XmlReader_h
42 #define Pegasus_XmlReader_h
43
44 #include <Pegasus/Common/Config.h>
45 #include <Pegasus/Common/XmlParser.h>
46 #include <Pegasus/Common/CIMFlavor.h>
47 #include <Pegasus/Common/CIMScope.h>
|
48 kumpf 1.30 #include <Pegasus/Common/CIMType.h>
|
49 kumpf 1.28 #include <Pegasus/Common/CIMObjectPath.h>
|
50 kumpf 1.34 #include <Pegasus/Common/Linkage.h>
|
51 mike 1.18
52 PEGASUS_NAMESPACE_BEGIN
53
54 class CIMQualifier;
55 class CIMQualifierDecl;
56 class CIMClass;
57 class CIMInstance;
58 class CIMProperty;
59 class CIMParameter;
60 class CIMMethod;
61 class CIMObject;
|
62 mike 1.19 class CIMParamValue;
|
63 kumpf 1.29 class CIMValue;
|
64 mike 1.18
65 class PEGASUS_COMMON_LINKAGE XmlReader
66 {
67 public:
68
|
69 kumpf 1.26 static void getXmlDeclaration(
|
70 mike 1.18 XmlParser& parser,
|
71 kumpf 1.26 const char*& xmlVersion,
72 const char*& xmlEncoding);
73
74 static Boolean testXmlDeclaration (
75 XmlParser& parser,
|
76 mike 1.18 XmlEntry& entry);
77
78 static void expectStartTag(
79 XmlParser& parser,
80 XmlEntry& entry,
81 const char* tagName);
82
83 static void expectEndTag(
84 XmlParser& parser,
85 const char* tagName);
86
87 static void expectStartTagOrEmptyTag(
88 XmlParser& parser,
89 XmlEntry& entry,
90 const char* tagName);
91
|
92 kumpf 1.44 static void skipElement(
93 XmlParser& parser,
94 XmlEntry& entry);
95
|
96 mike 1.18 static Boolean expectContentOrCData(
97 XmlParser& parser,
98 XmlEntry& entry);
|
99 mike 1.19
|
100 mike 1.18 static Boolean testStartTag(
101 XmlParser& parser,
102 XmlEntry& entry,
103 const char* tagName);
104
105 static Boolean testEndTag(
106 XmlParser& parser,
107 const char* tagName);
108
109 static Boolean testStartTagOrEmptyTag(
110 XmlParser& parser,
111 XmlEntry& entry,
112 const char* tagName);
|
113 kumpf 1.44
114 static Boolean testStartTagOrEmptyTag(
115 XmlParser& parser,
116 XmlEntry& entry);
|
117 mike 1.18
118 static Boolean testContentOrCData(
119 XmlParser& parser,
120 XmlEntry& entry);
121
|
122 kumpf 1.24 static void getCimStartTag(
123 XmlParser& parser,
124 const char*& cimVersion,
125 const char*& dtdVersion);
|
126 mike 1.18
|
127 kumpf 1.40 static CIMName getCimNameAttribute(
|
128 mike 1.18 Uint32 lineNumber,
129 const XmlEntry& entry,
130 const char* elementName,
131 Boolean acceptNull = false);
132
133 static String getClassNameAttribute(
134 Uint32 lineNumber,
135 const XmlEntry& entry,
136 const char* elementName);
137
|
138 kumpf 1.35 static CIMName getClassOriginAttribute(
|
139 mike 1.18 Uint32 lineNumber,
140 const XmlEntry& entry,
141 const char* tagName);
142
|
143 dave.sudlik 1.49 static String getEmbeddedObjectAttribute(
144 Uint32 lineNumber,
145 const XmlEntry& entry,
146 const char* tagName);
147
|
148 kumpf 1.35 static CIMName getReferenceClassAttribute(
|
149 mike 1.18 Uint32 lineNumber,
150 const XmlEntry& entry,
151 const char* elementName);
152
|
153 kumpf 1.35 static CIMName getSuperClassAttribute(
|
154 mike 1.18 Uint32 lineNumber,
155 const XmlEntry& entry,
156 const char* tagName);
157
|
158 kumpf 1.38 static Boolean getCimTypeAttribute(
|
159 mike 1.18 Uint32 lineNumber,
160 const XmlEntry& entry,
|
161 kumpf 1.38 CIMType& cimType, // Output parameter
|
162 kumpf 1.21 const char* tagName,
163 const char* attributeName = "TYPE",
164 Boolean required = true);
|
165 mike 1.18
166 static Boolean getCimBooleanAttribute(
167 Uint32 lineNumber,
168 const XmlEntry& entry,
169 const char* tagName,
170 const char* attributeName,
171 Boolean defaultValue,
172 Boolean required);
173
|
174 kumpf 1.41 static String decodeURICharacters(String uriString);
175
|
176 mike 1.18 static Boolean stringToReal(
177 const char* stringValue,
178 Real64& x);
179
180 static Boolean stringToSignedInteger(
181 const char* stringValue,
182 Sint64& x);
183
184 static Boolean stringToUnsignedInteger(
185 const char* stringValue,
186 Uint64& x);
187
188 static CIMValue stringToValue(
189 Uint32 lineNumber,
190 const char* valueString,
191 CIMType type);
192
|
193 karl 1.20 /* getValueElement - Gets the CIMType and CIMValue for a single
194 XML Value element. It expects <VALUE> as the start tag.
195 @return Returns True if the value element exists
196 */
|
197 mike 1.18 static Boolean getValueElement(
198 XmlParser& parser,
199 CIMType type,
200 CIMValue& value);
201
202 static Boolean getStringValueElement(
203 XmlParser& parser,
204 String& str,
205 Boolean required);
206
207 static CIMValue stringArrayToValue(
208 Uint32 lineNumber,
209 const Array<const char*>& array,
210 CIMType type);
211
212 static Boolean getValueArrayElement(
213 XmlParser& parser,
214 CIMType type,
215 CIMValue& value);
216
|
217 kumpf 1.37 static CIMFlavor getFlavor(
|
218 mike 1.18 XmlEntry& entry,
219 Uint32 lineNumber,
220 const char* tagName);
221
|
222 kumpf 1.36 static CIMScope getOptionalScope(
|
223 mike 1.18 XmlParser& parser);
224
225 static Boolean getQualifierElement(
226 XmlParser& parser,
227 CIMQualifier& qualifier);
228
229 static Boolean getPropertyElement(
230 XmlParser& parser,
231 CIMProperty& property);
232
233 static Boolean getArraySizeAttribute(
234 Uint32 lineNumber,
235 const XmlEntry& entry,
236 const char* tagName,
237 Uint32& value);
238
239 static Boolean getPropertyArrayElement(
240 XmlParser& parser,
241 CIMProperty& property);
242
243 static Boolean getHostElement(
244 mike 1.18 XmlParser& parser,
245 String& host);
246
247 static Boolean getNameSpaceElement(
248 XmlParser& parser,
|
249 kumpf 1.40 CIMName& nameSpaceComponent);
|
250 mike 1.18
251 static Boolean getLocalNameSpacePathElement(
252 XmlParser& parser,
253 String& nameSpace);
254
255 static Boolean getNameSpacePathElement(
256 XmlParser& parser,
257 String& host,
258 String& nameSpace);
259
260 static Boolean getClassNameElement(
261 XmlParser& parser,
|
262 kumpf 1.40 CIMName& className,
|
263 mike 1.18 Boolean required = false);
264
|
265 kumpf 1.39 static CIMKeyBinding::Type getValueTypeAttribute(
|
266 mike 1.18 Uint32 lineNumber,
267 const XmlEntry& entry,
268 const char* elementName);
269
270 static Boolean getKeyValueElement(
271 XmlParser& parser,
|
272 kumpf 1.39 CIMKeyBinding::Type& type,
|
273 mike 1.18 String& value);
274
275 static Boolean getKeyBindingElement(
276 XmlParser& parser,
|
277 kumpf 1.40 CIMName& name,
|
278 mike 1.18 String& value,
|
279 kumpf 1.39 CIMKeyBinding::Type& type);
|
280 mike 1.18
281 static Boolean getInstanceNameElement(
282 XmlParser& parser,
283 String& className,
|
284 kumpf 1.39 Array<CIMKeyBinding>& keyBindings);
|
285 mike 1.18
286 static Boolean getInstanceNameElement(
287 XmlParser& parser,
|
288 kumpf 1.28 CIMObjectPath& instanceName);
|
289 mike 1.18
290 static Boolean getInstancePathElement(
291 XmlParser& parser,
|
292 kumpf 1.28 CIMObjectPath& reference);
|
293 mike 1.18
294 static Boolean getLocalInstancePathElement(
295 XmlParser& parser,
|
296 kumpf 1.28 CIMObjectPath& reference);
|
297 mike 1.18
298 static Boolean getClassPathElement(
299 XmlParser& parser,
|
300 kumpf 1.28 CIMObjectPath& reference);
|
301 mike 1.18
302 static Boolean getLocalClassPathElement(
303 XmlParser& parser,
|
304 kumpf 1.28 CIMObjectPath& reference);
|
305 mike 1.18
306 static Boolean getValueReferenceElement(
307 XmlParser& parser,
|
308 kumpf 1.28 CIMObjectPath& reference);
|
309 mike 1.18
|
310 kumpf 1.23 static Boolean getValueReferenceArrayElement(
311 XmlParser& parser,
312 CIMValue& value);
313
|
314 mike 1.18 static Boolean getPropertyReferenceElement(
315 XmlParser& parser,
316 CIMProperty& property);
317
318 static Boolean getParameterElement(
319 XmlParser& parser,
320 CIMParameter& parameter);
321
322 static Boolean getParameterArrayElement(
323 XmlParser& parser,
324 CIMParameter& parameter);
325
326 static Boolean getParameterReferenceElement(
327 XmlParser& parser,
328 CIMParameter& parameter);
329
|
330 kumpf 1.21 static Boolean getParameterReferenceArrayElement(
331 XmlParser& parser,
332 CIMParameter& parameter);
333
|
334 mike 1.18 static Boolean getQualifierDeclElement(
335 XmlParser& parser,
336 CIMQualifierDecl& qualifierDecl);
337
338 static Boolean getMethodElement(
339 XmlParser& parser,
340 CIMMethod& method);
341
342 static Boolean getClassElement(
343 XmlParser& parser,
344 CIMClass& cimClass);
345
346 static Boolean getInstanceElement(
347 XmlParser& parser,
348 CIMInstance& cimInstance);
349
|
350 mike 1.19 static Boolean getNamedInstanceElement(
351 XmlParser& parser,
|
352 kumpf 1.31 CIMInstance& namedInstance);
|
353 mike 1.19
|
354 mike 1.18 static void getObject(XmlParser& parser, CIMClass& x);
355
356 static void getObject(XmlParser& parser, CIMInstance& x);
357
358 static void getObject(XmlParser& parser, CIMQualifierDecl& x);
359
360 static Boolean getMessageStartTag(
361 XmlParser& parser,
362 String& id,
|
363 kumpf 1.24 String& protocolVersion);
|
364 mike 1.18
365 static Boolean getIMethodCallStartTag(
366 XmlParser& parser,
367 const char*& name);
368
369 static Boolean getIMethodResponseStartTag(
|
370 kumpf 1.46 XmlParser& parser,
371 const char*& name,
372 Boolean& isEmptyTag);
|
373 mike 1.18
374 static Boolean getIParamValueTag(
375 XmlParser& parser,
|
376 kumpf 1.45 const char*& name,
377 Boolean& isEmptyTag);
378
379 static void rejectNullIParamValue(
380 XmlParser& parser,
381 Boolean isEmptyTag,
382 const char* paramName);
|
383 mike 1.18
384 static Boolean getPropertyValue(
385 XmlParser& parser,
386 CIMValue& cimValue);
387
388 static Boolean getBooleanValueElement(
389 XmlParser& parser,
390 Boolean& result,
391 Boolean required = false);
392
393 static Boolean getErrorElement(
394 XmlParser& parser,
|
395 kumpf 1.27 CIMException& cimException,
|
396 mike 1.18 Boolean required = false);
397
|
398 kumpf 1.25 static Boolean getValueObjectElement(
399 XmlParser& parser,
400 CIMObject& object);
401
402 static Boolean getValueObjectWithPathElement(
403 XmlParser& parser,
|
404 kumpf 1.32 CIMObject& objectWithPath);
|
405 kumpf 1.25
406 static Boolean getValueObjectWithLocalPathElement(
|
407 mike 1.18 XmlParser& parser,
|
408 kumpf 1.32 CIMObject& objectWithPath);
|
409 kumpf 1.25
410 static void getObjectArray(
411 XmlParser& parser,
|
412 kumpf 1.32 Array<CIMObject>& objectArray);
|
413 mike 1.18
414 static Boolean getObjectNameElement(
415 XmlParser& parser,
|
416 kumpf 1.28 CIMObjectPath& objectName);
|
417 mike 1.18
418 static Boolean getObjectPathElement(
419 XmlParser& parser,
|
420 kumpf 1.28 CIMObjectPath& objectPath);
|
421 mike 1.19
422 static Boolean getEMethodCallStartTag(
423 XmlParser& parser,
424 const char*& name);
425
426 static Boolean getEMethodResponseStartTag(
|
427 kumpf 1.46 XmlParser& parser,
428 const char*& name,
429 Boolean& isEmptyTag);
|
430 mike 1.19
|
431 kumpf 1.42 static Boolean getEParamValueTag(
432 XmlParser& parser,
433 const char*& name);
434
|
435 mike 1.19 static Boolean getMethodCallStartTag(
436 XmlParser& parser,
437 const char*& name);
438
439 static Boolean getMethodResponseStartTag(
|
440 kumpf 1.46 XmlParser& parser,
441 const char*& name,
442 Boolean& isEmptyTag);
|
443 mike 1.19
|
444 kumpf 1.21 static Boolean getParamValueElement(
|
445 mike 1.19 XmlParser& parser,
|
446 kumpf 1.21 CIMParamValue& paramValue);
|
447 mike 1.18
|
448 kumpf 1.22 static Boolean getReturnValueElement(
449 XmlParser& parser,
450 CIMValue& returnValue);
451
|
452 mike 1.18 private:
453
454 XmlReader()
455 {
456
457 }
458 };
459
460 PEGASUS_NAMESPACE_END
461
462 #endif /* Pegasus_XmlReader_h */
|