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