1 martin 1.55 //%LICENSE////////////////////////////////////////////////////////////////
|
2 martin 1.56 //
|
3 martin 1.55 // Licensed to The Open Group (TOG) under one or more contributor license
4 // agreements. Refer to the OpenPegasusNOTICE.txt file distributed with
5 // this work for additional information regarding copyright ownership.
6 // Each contributor licenses this file to you under the OpenPegasus Open
7 // Source License; you may not use this file except in compliance with the
8 // License.
|
9 martin 1.56 //
|
10 martin 1.55 // Permission is hereby granted, free of charge, to any person obtaining a
11 // copy of this software and associated documentation files (the "Software"),
12 // to deal in the Software without restriction, including without limitation
13 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
14 // and/or sell copies of the Software, and to permit persons to whom the
15 // Software is furnished to do so, subject to the following conditions:
|
16 martin 1.56 //
|
17 martin 1.55 // The above copyright notice and this permission notice shall be included
18 // in all copies or substantial portions of the Software.
|
19 martin 1.56 //
|
20 martin 1.55 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
21 martin 1.56 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
22 martin 1.55 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23 // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24 // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25 // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26 // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
27 martin 1.56 //
|
28 martin 1.55 //////////////////////////////////////////////////////////////////////////
|
29 mike 1.18 //
30 //%/////////////////////////////////////////////////////////////////////////////
31
32 #ifndef Pegasus_XmlReader_h
33 #define Pegasus_XmlReader_h
34
35 #include <Pegasus/Common/Config.h>
36 #include <Pegasus/Common/XmlParser.h>
37 #include <Pegasus/Common/CIMFlavor.h>
38 #include <Pegasus/Common/CIMScope.h>
|
39 kumpf 1.30 #include <Pegasus/Common/CIMType.h>
|
40 kumpf 1.28 #include <Pegasus/Common/CIMObjectPath.h>
|
41 kumpf 1.34 #include <Pegasus/Common/Linkage.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 venkat.puvvada 1.57 struct CharString
57 {
58 const char *value;
59 Uint32 length;
60 CharString(const char *value, Uint32 length) :
61 value(value), length(length)
62 {
63 }
64 };
65
|
66 mike 1.18 class PEGASUS_COMMON_LINKAGE XmlReader
67 {
68 public:
69
|
70 kumpf 1.26 static void getXmlDeclaration(
|
71 kumpf 1.51 XmlParser& parser,
72 const char*& xmlVersion,
73 const char*& xmlEncoding);
74
75 static Boolean testXmlDeclaration(
76 XmlParser& parser,
77 XmlEntry& entry);
|
78 mike 1.18
79 static void expectStartTag(
|
80 kumpf 1.51 XmlParser& parser,
81 XmlEntry& entry,
82 const char* tagName);
|
83 mike 1.18
84 static void expectEndTag(
|
85 kumpf 1.51 XmlParser& parser,
86 const char* tagName);
|
87 mike 1.18
88 static void expectStartTagOrEmptyTag(
|
89 kumpf 1.51 XmlParser& parser,
90 XmlEntry& entry,
91 const char* tagName);
|
92 mike 1.18
|
93 kumpf 1.44 static void skipElement(
|
94 kumpf 1.51 XmlParser& parser,
95 XmlEntry& entry);
|
96 kumpf 1.44
|
97 mike 1.18 static Boolean expectContentOrCData(
|
98 kumpf 1.51 XmlParser& parser,
99 XmlEntry& entry);
|
100 mike 1.19
|
101 mike 1.18 static Boolean testStartTag(
|
102 kumpf 1.51 XmlParser& parser,
103 XmlEntry& entry,
104 const char* tagName);
|
105 mike 1.18
106 static Boolean testEndTag(
|
107 kumpf 1.51 XmlParser& parser,
108 const char* tagName);
|
109 mike 1.18
110 static Boolean testStartTagOrEmptyTag(
|
111 kumpf 1.51 XmlParser& parser,
112 XmlEntry& entry,
113 const char* tagName);
|
114 kumpf 1.44
115 static Boolean testStartTagOrEmptyTag(
|
116 kumpf 1.51 XmlParser& parser,
117 XmlEntry& entry);
|
118 mike 1.18
119 static Boolean testContentOrCData(
|
120 kumpf 1.51 XmlParser& parser,
121 XmlEntry& entry);
|
122 mike 1.18
|
123 kumpf 1.24 static void getCimStartTag(
|
124 kumpf 1.51 XmlParser& parser,
125 const char*& cimVersion,
126 const char*& dtdVersion);
|
127 mike 1.18
|
128 kumpf 1.40 static CIMName getCimNameAttribute(
|
129 kumpf 1.51 Uint32 lineNumber,
130 const XmlEntry& entry,
131 const char* elementName,
132 Boolean acceptNull = false);
|
133 mike 1.18
134 static String getClassNameAttribute(
|
135 kumpf 1.51 Uint32 lineNumber,
136 const XmlEntry& entry,
137 const char* elementName);
|
138 mike 1.18
|
139 kumpf 1.35 static CIMName getClassOriginAttribute(
|
140 kumpf 1.51 Uint32 lineNumber,
141 const XmlEntry& entry,
142 const char* tagName);
|
143 mike 1.18
|
144 thilo.boehm 1.54 typedef enum _embeddedObjectAttributeType
145 {
146 NO_EMBEDDED_OBJECT = 0,
147 EMBEDDED_OBJECT_ATTR = 1,
148 EMBEDDED_INSTANCE_ATTR = 2
149 } EmbeddedObjectAttributeType;
150
151 static EmbeddedObjectAttributeType getEmbeddedObjectAttribute(
|
152 kumpf 1.51 Uint32 lineNumber,
153 const XmlEntry& entry,
154 const char* tagName);
|
155 dave.sudlik 1.49
|
156 kumpf 1.35 static CIMName getReferenceClassAttribute(
|
157 kumpf 1.51 Uint32 lineNumber,
158 const XmlEntry& entry,
159 const char* elementName);
|
160 mike 1.18
|
161 kumpf 1.35 static CIMName getSuperClassAttribute(
|
162 kumpf 1.51 Uint32 lineNumber,
163 const XmlEntry& entry,
164 const char* tagName);
|
165 mike 1.18
|
166 kumpf 1.38 static Boolean getCimTypeAttribute(
|
167 kumpf 1.51 Uint32 lineNumber,
168 const XmlEntry& entry,
|
169 kumpf 1.38 CIMType& cimType, // Output parameter
|
170 kumpf 1.51 const char* tagName,
171 const char* attributeName = "TYPE",
172 Boolean required = true);
|
173 mike 1.18
174 static Boolean getCimBooleanAttribute(
|
175 kumpf 1.51 Uint32 lineNumber,
176 const XmlEntry& entry,
177 const char* tagName,
178 const char* attributeName,
179 Boolean defaultValue,
180 Boolean required);
|
181 mike 1.18
|
182 kumpf 1.41 static String decodeURICharacters(String uriString);
183
|
184 mike 1.18 static CIMValue stringToValue(
|
185 kumpf 1.51 Uint32 lineNumber,
186 const char* valueString,
187 CIMType type);
|
188 mike 1.18
|
189 venkat.puvvada 1.57 static CIMValue stringToValue(
190 Uint32 lineNumber,
191 const char* valueString,
192 Uint32 valueStringLen,
193 CIMType type);
194
195
|
196 karl 1.20 /* getValueElement - Gets the CIMType and CIMValue for a single
197 XML Value element. It expects <VALUE> as the start tag.
|
198 kumpf 1.51 @return Returns True if the value element exists
|
199 karl 1.20 */
|
200 mike 1.18 static Boolean getValueElement(
|
201 kumpf 1.51 XmlParser& parser,
202 CIMType type,
203 CIMValue& value);
|
204 mike 1.18
205 static Boolean getStringValueElement(
|
206 kumpf 1.51 XmlParser& parser,
207 String& str,
208 Boolean required);
|
209 mike 1.18
210 static CIMValue stringArrayToValue(
|
211 kumpf 1.51 Uint32 lineNumber,
212 const Array<const char*>& array,
213 CIMType type);
|
214 mike 1.18
215 static Boolean getValueArrayElement(
|
216 kumpf 1.51 XmlParser& parser,
217 CIMType type,
218 CIMValue& value);
|
219 mike 1.18
|
220 kumpf 1.37 static CIMFlavor getFlavor(
|
221 kumpf 1.51 XmlEntry& entry,
222 Uint32 lineNumber,
223 const char* tagName);
|
224 mike 1.18
|
225 kumpf 1.36 static CIMScope getOptionalScope(
|
226 kumpf 1.51 XmlParser& parser);
|
227 mike 1.18
228 static Boolean getQualifierElement(
|
229 kumpf 1.51 XmlParser& parser,
230 CIMQualifier& qualifier);
|
231 mike 1.18
232 static Boolean getPropertyElement(
|
233 kumpf 1.51 XmlParser& parser,
234 CIMProperty& property);
|
235 mike 1.18
236 static Boolean getArraySizeAttribute(
|
237 kumpf 1.51 Uint32 lineNumber,
238 const XmlEntry& entry,
239 const char* tagName,
240 Uint32& value);
|
241 mike 1.18
242 static Boolean getPropertyArrayElement(
|
243 kumpf 1.51 XmlParser& parser,
244 CIMProperty& property);
|
245 mike 1.18
246 static Boolean getHostElement(
|
247 kumpf 1.51 XmlParser& parser,
248 String& host);
|
249 mike 1.18
250 static Boolean getNameSpaceElement(
|
251 kumpf 1.51 XmlParser& parser,
252 CIMName& nameSpaceComponent);
|
253 mike 1.18
254 static Boolean getLocalNameSpacePathElement(
|
255 kumpf 1.51 XmlParser& parser,
256 String& nameSpace);
|
257 mike 1.18
258 static Boolean getNameSpacePathElement(
|
259 kumpf 1.51 XmlParser& parser,
260 String& host,
261 String& nameSpace);
|
262 mike 1.18
263 static Boolean getClassNameElement(
|
264 kumpf 1.51 XmlParser& parser,
265 CIMName& className,
266 Boolean required = false);
|
267 mike 1.18
|
268 kumpf 1.39 static CIMKeyBinding::Type getValueTypeAttribute(
|
269 kumpf 1.51 Uint32 lineNumber,
270 const XmlEntry& entry,
271 const char* elementName);
|
272 mike 1.18
273 static Boolean getKeyValueElement(
|
274 kumpf 1.51 XmlParser& parser,
275 CIMKeyBinding::Type& type,
276 String& value);
|
277 mike 1.18
278 static Boolean getKeyBindingElement(
|
279 kumpf 1.51 XmlParser& parser,
280 CIMName& name,
281 String& value,
282 CIMKeyBinding::Type& type);
|
283 mike 1.18
284 static Boolean getInstanceNameElement(
|
285 kumpf 1.51 XmlParser& parser,
286 String& className,
287 Array<CIMKeyBinding>& keyBindings);
|
288 mike 1.18
289 static Boolean getInstanceNameElement(
|
290 kumpf 1.51 XmlParser& parser,
291 CIMObjectPath& instanceName);
|
292 mike 1.18
293 static Boolean getInstancePathElement(
|
294 kumpf 1.51 XmlParser& parser,
295 CIMObjectPath& reference);
|
296 mike 1.18
297 static Boolean getLocalInstancePathElement(
|
298 kumpf 1.51 XmlParser& parser,
299 CIMObjectPath& reference);
|
300 mike 1.18
301 static Boolean getClassPathElement(
|
302 kumpf 1.51 XmlParser& parser,
303 CIMObjectPath& reference);
|
304 mike 1.18
305 static Boolean getLocalClassPathElement(
|
306 kumpf 1.51 XmlParser& parser,
307 CIMObjectPath& reference);
|
308 mike 1.18
309 static Boolean getValueReferenceElement(
|
310 kumpf 1.51 XmlParser& parser,
311 CIMObjectPath& reference);
|
312 mike 1.18
|
313 kumpf 1.23 static Boolean getValueReferenceArrayElement(
|
314 kumpf 1.51 XmlParser& parser,
315 CIMValue& value);
|
316 kumpf 1.23
|
317 mike 1.18 static Boolean getPropertyReferenceElement(
|
318 kumpf 1.51 XmlParser& parser,
319 CIMProperty& property);
|
320 mike 1.18
321 static Boolean getParameterElement(
|
322 kumpf 1.51 XmlParser& parser,
323 CIMParameter& parameter);
|
324 mike 1.18
325 static Boolean getParameterArrayElement(
|
326 kumpf 1.51 XmlParser& parser,
327 CIMParameter& parameter);
|
328 mike 1.18
329 static Boolean getParameterReferenceElement(
|
330 kumpf 1.51 XmlParser& parser,
331 CIMParameter& parameter);
|
332 mike 1.18
|
333 kumpf 1.21 static Boolean getParameterReferenceArrayElement(
|
334 kumpf 1.51 XmlParser& parser,
335 CIMParameter& parameter);
|
336 kumpf 1.21
|
337 mike 1.18 static Boolean getQualifierDeclElement(
|
338 kumpf 1.51 XmlParser& parser,
339 CIMQualifierDecl& qualifierDecl);
|
340 mike 1.18
341 static Boolean getMethodElement(
|
342 kumpf 1.51 XmlParser& parser,
343 CIMMethod& method);
|
344 mike 1.18
345 static Boolean getClassElement(
|
346 kumpf 1.51 XmlParser& parser,
347 CIMClass& cimClass);
|
348 mike 1.18
349 static Boolean getInstanceElement(
|
350 kumpf 1.51 XmlParser& parser,
351 CIMInstance& cimInstance);
|
352 mike 1.18
|
353 mike 1.19 static Boolean getNamedInstanceElement(
|
354 kumpf 1.51 XmlParser& parser,
355 CIMInstance& namedInstance);
|
356 mike 1.19
|
357 mike 1.18 static void getObject(XmlParser& parser, CIMClass& x);
358
359 static void getObject(XmlParser& parser, CIMInstance& x);
360
361 static void getObject(XmlParser& parser, CIMQualifierDecl& x);
362
363 static Boolean getMessageStartTag(
|
364 kumpf 1.51 XmlParser& parser,
365 String& id,
366 String& protocolVersion);
|
367 mike 1.18
368 static Boolean getIMethodCallStartTag(
|
369 kumpf 1.51 XmlParser& parser,
370 const char*& name);
|
371 mike 1.18
372 static Boolean getIMethodResponseStartTag(
|
373 kumpf 1.46 XmlParser& parser,
374 const char*& name,
375 Boolean& isEmptyTag);
|
376 mike 1.18
377 static Boolean getIParamValueTag(
|
378 kumpf 1.51 XmlParser& parser,
379 const char*& name,
380 Boolean& isEmptyTag);
|
381 kumpf 1.45
382 static void rejectNullIParamValue(
383 XmlParser& parser,
384 Boolean isEmptyTag,
385 const char* paramName);
|
386 mike 1.18
387 static Boolean getPropertyValue(
|
388 kumpf 1.51 XmlParser& parser,
389 CIMValue& cimValue);
|
390 mike 1.18
391 static Boolean getBooleanValueElement(
|
392 kumpf 1.51 XmlParser& parser,
393 Boolean& result,
394 Boolean required = false);
|
395 mike 1.18
396 static Boolean getErrorElement(
|
397 kumpf 1.51 XmlParser& parser,
398 CIMException& cimException,
399 Boolean required = false);
|
400 mike 1.18
|
401 kumpf 1.25 static Boolean getValueObjectElement(
|
402 kumpf 1.51 XmlParser& parser,
403 CIMObject& object);
|
404 kumpf 1.25
405 static Boolean getValueObjectWithPathElement(
|
406 kumpf 1.51 XmlParser& parser,
407 CIMObject& objectWithPath);
|
408 kumpf 1.25
409 static Boolean getValueObjectWithLocalPathElement(
|
410 kumpf 1.51 XmlParser& parser,
411 CIMObject& objectWithPath);
|
412 kumpf 1.25
413 static void getObjectArray(
|
414 kumpf 1.51 XmlParser& parser,
415 Array<CIMObject>& objectArray);
|
416 mike 1.18
417 static Boolean getObjectNameElement(
|
418 kumpf 1.51 XmlParser& parser,
419 CIMObjectPath& objectName);
|
420 mike 1.18
421 static Boolean getObjectPathElement(
|
422 kumpf 1.51 XmlParser& parser,
423 CIMObjectPath& objectPath);
|
424 mike 1.19
425 static Boolean getEMethodCallStartTag(
|
426 kumpf 1.51 XmlParser& parser,
427 const char*& name);
|
428 mike 1.19
429 static Boolean getEMethodResponseStartTag(
|
430 kumpf 1.46 XmlParser& parser,
431 const char*& name,
432 Boolean& isEmptyTag);
|
433 mike 1.19
|
434 kumpf 1.42 static Boolean getEParamValueTag(
|
435 kumpf 1.51 XmlParser& parser,
436 const char*& name);
|
437 kumpf 1.42
|
438 mike 1.19 static Boolean getMethodCallStartTag(
|
439 kumpf 1.51 XmlParser& parser,
440 const char*& name);
|
441 mike 1.19
442 static Boolean getMethodResponseStartTag(
|
443 kumpf 1.46 XmlParser& parser,
444 const char*& name,
445 Boolean& isEmptyTag);
|
446 mike 1.19
|
447 kumpf 1.21 static Boolean getParamValueElement(
|
448 kumpf 1.51 XmlParser& parser,
449 CIMParamValue& paramValue);
|
450 mike 1.18
|
451 kumpf 1.22 static Boolean getReturnValueElement(
|
452 kumpf 1.51 XmlParser& parser,
453 CIMValue& returnValue);
|
454 kumpf 1.22
|
455 karl 1.52 static Boolean isSupportedCIMVersion(
456 const char* cimVersion);
457
458 static Boolean isSupportedProtocolVersion(
459 const String& protocolVersion);
460
461 static Boolean isSupportedDTDVersion(
462 const char* dtdVersion);
|
463 mike 1.18 private:
464
|
465 venkat.puvvada 1.57 static CIMValue _stringArrayToValue(
466 Uint32 lineNumber,
467 const Array<CharString>& array,
468 CIMType type);
469
|
470 kumpf 1.51 XmlReader()
471 {
|
472 mike 1.18
473 }
474 };
475
476 PEGASUS_NAMESPACE_END
477
478 #endif /* Pegasus_XmlReader_h */
|