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