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