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