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