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