1 mike 1.18 //%/////////////////////////////////////////////////////////////////////////////
2 //
|
3 mike 1.19 // Copyright (c) 2000, 2001 BMC Software, Hewlett-Packard Company, IBM,
4 // The Open Group, Tivoli Systems
|
5 mike 1.18 //
6 // Permission is hereby granted, free of charge, to any person obtaining a copy
7 // 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 // 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 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
14 // 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 // 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 // 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.28 #include <Pegasus/Common/CIMObjectPath.h>
|
41 mike 1.18
42 PEGASUS_NAMESPACE_BEGIN
43
44 class CIMQualifier;
45 class CIMQualifierDecl;
46 class CIMClass;
47 class CIMInstance;
48 class CIMProperty;
49 class CIMParameter;
50 class CIMMethod;
51 class CIMObject;
|
52 mike 1.19 class CIMNamedInstance;
|
53 mike 1.18 class CIMObjectWithPath;
|
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 static String getClassOriginAttribute(
123 Uint32 lineNumber,
124 const XmlEntry& entry,
125 const char* tagName);
126
127 static String getReferenceClassAttribute(
128 Uint32 lineNumber,
129 const XmlEntry& entry,
130 const char* elementName);
131 mike 1.18
132 static String getSuperClassAttribute(
133 Uint32 lineNumber,
134 const XmlEntry& entry,
135 const char* tagName);
136
137 static CIMType getCimTypeAttribute(
138 Uint32 lineNumber,
139 const XmlEntry& entry,
|
140 kumpf 1.21 const char* tagName,
141 const char* attributeName = "TYPE",
142 Boolean required = true);
|
143 mike 1.18
144 static Boolean getCimBooleanAttribute(
145 Uint32 lineNumber,
146 const XmlEntry& entry,
147 const char* tagName,
148 const char* attributeName,
149 Boolean defaultValue,
150 Boolean required);
151
152 static Boolean stringToReal(
153 const char* stringValue,
154 Real64& x);
155
156 static Boolean stringToSignedInteger(
157 const char* stringValue,
158 Sint64& x);
159
160 static Boolean stringToUnsignedInteger(
161 const char* stringValue,
162 Uint64& x);
163
164 mike 1.18 static CIMValue stringToValue(
165 Uint32 lineNumber,
166 const char* valueString,
167 CIMType type);
168
|
169 karl 1.20 /* getValueElement - Gets the CIMType and CIMValue for a single
170 XML Value element. It expects <VALUE> as the start tag.
171 @return Returns True if the value element exists
172 */
|
173 mike 1.18 static Boolean getValueElement(
174 XmlParser& parser,
175 CIMType type,
176 CIMValue& value);
177
178 static Boolean getStringValueElement(
179 XmlParser& parser,
180 String& str,
181 Boolean required);
182
183 static CIMValue stringArrayToValue(
184 Uint32 lineNumber,
185 const Array<const char*>& array,
186 CIMType type);
187
188 static Boolean getValueArrayElement(
189 XmlParser& parser,
190 CIMType type,
191 CIMValue& value);
192
193 static Uint32 getFlavor(
194 mike 1.18 XmlEntry& entry,
195 Uint32 lineNumber,
196 const char* tagName);
197
198 static Uint32 getOptionalScope(
199 XmlParser& parser);
200
201 static Boolean getQualifierElement(
202 XmlParser& parser,
203 CIMQualifier& qualifier);
204
205 static Boolean getPropertyElement(
206 XmlParser& parser,
207 CIMProperty& property);
208
209 static Boolean getArraySizeAttribute(
210 Uint32 lineNumber,
211 const XmlEntry& entry,
212 const char* tagName,
213 Uint32& value);
214
215 mike 1.18 static Boolean getPropertyArrayElement(
216 XmlParser& parser,
217 CIMProperty& property);
218
219 static Boolean getHostElement(
220 XmlParser& parser,
221 String& host);
222
223 static Boolean getNameSpaceElement(
224 XmlParser& parser,
225 String& nameSpaceComponent);
226
227 static Boolean getLocalNameSpacePathElement(
228 XmlParser& parser,
229 String& nameSpace);
230
231 static Boolean getNameSpacePathElement(
232 XmlParser& parser,
233 String& host,
234 String& nameSpace);
235
236 mike 1.18 static Boolean getClassNameElement(
237 XmlParser& parser,
238 String& className,
239 Boolean required = false);
240
241 static KeyBinding::Type getValueTypeAttribute(
242 Uint32 lineNumber,
243 const XmlEntry& entry,
244 const char* elementName);
245
246 static Boolean getKeyValueElement(
247 XmlParser& parser,
248 KeyBinding::Type& type,
249 String& value);
250
251 static Boolean getKeyBindingElement(
252 XmlParser& parser,
253 String& name,
254 String& value,
255 KeyBinding::Type& type);
256
257 mike 1.18 static Boolean getInstanceNameElement(
258 XmlParser& parser,
259 String& className,
260 Array<KeyBinding>& keyBindings);
261
262 static Boolean getInstanceNameElement(
263 XmlParser& parser,
|
264 kumpf 1.28 CIMObjectPath& instanceName);
|
265 mike 1.18
266 static Boolean getInstancePathElement(
267 XmlParser& parser,
|
268 kumpf 1.28 CIMObjectPath& reference);
|
269 mike 1.18
270 static Boolean getLocalInstancePathElement(
271 XmlParser& parser,
|
272 kumpf 1.28 CIMObjectPath& reference);
|
273 mike 1.18
274 static Boolean getClassPathElement(
275 XmlParser& parser,
|
276 kumpf 1.28 CIMObjectPath& reference);
|
277 mike 1.18
278 static Boolean getLocalClassPathElement(
279 XmlParser& parser,
|
280 kumpf 1.28 CIMObjectPath& reference);
|
281 mike 1.18
282 static Boolean getValueReferenceElement(
283 XmlParser& parser,
|
284 kumpf 1.28 CIMObjectPath& reference);
|
285 mike 1.18
|
286 kumpf 1.23 static Boolean getValueReferenceArrayElement(
287 XmlParser& parser,
288 CIMValue& value);
289
|
290 mike 1.18 static Boolean getPropertyReferenceElement(
291 XmlParser& parser,
292 CIMProperty& property);
293
294 static Boolean getParameterElement(
295 XmlParser& parser,
296 CIMParameter& parameter);
297
298 static Boolean getParameterArrayElement(
299 XmlParser& parser,
300 CIMParameter& parameter);
301
302 static Boolean getParameterReferenceElement(
303 XmlParser& parser,
304 CIMParameter& parameter);
305
|
306 kumpf 1.21 static Boolean getParameterReferenceArrayElement(
307 XmlParser& parser,
308 CIMParameter& parameter);
309
|
310 mike 1.18 static Boolean getQualifierDeclElement(
311 XmlParser& parser,
312 CIMQualifierDecl& qualifierDecl);
313
314 static Boolean getMethodElement(
315 XmlParser& parser,
316 CIMMethod& method);
317
318 static Boolean getClassElement(
319 XmlParser& parser,
320 CIMClass& cimClass);
321
322 static Boolean getInstanceElement(
323 XmlParser& parser,
324 CIMInstance& cimInstance);
325
|
326 mike 1.19 static Boolean getNamedInstanceElement(
327 XmlParser& parser,
328 CIMNamedInstance& namedInstance);
329
|
330 mike 1.18 static void getObject(XmlParser& parser, CIMClass& x);
331
332 static void getObject(XmlParser& parser, CIMInstance& x);
333
334 static void getObject(XmlParser& parser, CIMQualifierDecl& x);
335
336 static Boolean getMessageStartTag(
337 XmlParser& parser,
338 String& id,
|
339 kumpf 1.24 String& protocolVersion);
|
340 mike 1.18
341 static Boolean getIMethodCallStartTag(
342 XmlParser& parser,
343 const char*& name);
344
345 static Boolean getIMethodResponseStartTag(
346 XmlParser& parser,
347 const char*& name);
348
349 static Boolean getIParamValueTag(
350 XmlParser& parser,
351 const char*& name);
352
353 static Boolean getPropertyValue(
354 XmlParser& parser,
355 CIMValue& cimValue);
356
357 static Boolean getBooleanValueElement(
358 XmlParser& parser,
359 Boolean& result,
360 Boolean required = false);
361 mike 1.18
362 static Boolean getErrorElement(
363 XmlParser& parser,
|
364 kumpf 1.27 CIMException& cimException,
|
365 mike 1.18 Boolean required = false);
366
|
367 kumpf 1.25 static Boolean getValueObjectElement(
368 XmlParser& parser,
369 CIMObject& object);
370
371 static Boolean getValueObjectWithPathElement(
372 XmlParser& parser,
373 CIMObjectWithPath& objectWithPath);
374
375 static Boolean getValueObjectWithLocalPathElement(
|
376 mike 1.18 XmlParser& parser,
377 CIMObjectWithPath& objectWithPath);
|
378 kumpf 1.25
379 static void getObjectArray(
380 XmlParser& parser,
381 Array<CIMObjectWithPath>& objectArray);
|
382 mike 1.18
383 static Boolean getObjectNameElement(
384 XmlParser& parser,
|
385 kumpf 1.28 CIMObjectPath& objectName);
|
386 mike 1.18
387 static Boolean getObjectPathElement(
388 XmlParser& parser,
|
389 kumpf 1.28 CIMObjectPath& objectPath);
|
390 mike 1.19
391 static Boolean getEMethodCallStartTag(
392 XmlParser& parser,
393 const char*& name);
394
395 static Boolean getEMethodResponseStartTag(
396 XmlParser& parser,
397 const char*& name);
398
399 static Boolean getMethodCallStartTag(
400 XmlParser& parser,
401 const char*& name);
402
403 static Boolean getMethodResponseStartTag(
404 XmlParser& parser,
405 const char*& name);
406
|
407 kumpf 1.21 static Boolean getParamValueElement(
|
408 mike 1.19 XmlParser& parser,
|
409 kumpf 1.21 CIMParamValue& paramValue);
|
410 mike 1.18
|
411 kumpf 1.22 static Boolean getReturnValueElement(
412 XmlParser& parser,
413 CIMValue& returnValue);
414
|
415 mike 1.18 private:
416
417 XmlReader()
418 {
419
420 }
421 };
422
423 PEGASUS_NAMESPACE_END
424
425 #endif /* Pegasus_XmlReader_h */
|