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