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