1 mike 1.1 //BEGIN_LICENSE
2 //
3 // Copyright (c) 2000 The Open Group, BMC Software, Tivoli Systems, IBM
4 //
5 // Permission is hereby granted, free of charge, to any person obtaining a
6 // copy of this software and associated documentation files (the "Software"),
7 // to deal in the Software without restriction, including without limitation
8 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 // and/or sell copies of the Software, and to permit persons to whom the
10 // Software is furnished to do so, subject to the following conditions:
11 //
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
15 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
17 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
18 // DEALINGS IN THE SOFTWARE.
19 //
20 //END_LICENSE
21 //BEGIN_HISTORY
22 mike 1.1 //
23 // Author:
24 //
|
25 mike 1.2 // $Log: XmlReader.h,v $
|
26 karl 1.7 // Revision 1.6 2001/04/08 01:13:22 mike
27 // Changed "ConstCIM" to "CIMConst"
28 //
|
29 mike 1.5 // Revision 1.4 2001/02/20 07:25:57 mike
30 // Added basic create-instance in repository and in client.
31 //
|
32 mike 1.4 // Revision 1.3 2001/02/19 01:47:16 mike
|
33 mike 1.6 // Renamed names of the form CIMConst to CIMConst.
|
34 mike 1.4 //
|
35 mike 1.3 // Revision 1.2 2001/02/16 02:06:07 mike
36 // Renamed many classes and headers.
37 //
|
38 mike 1.2 // Revision 1.1.1.1 2001/01/14 19:53:33 mike
39 // Pegasus import
40 //
|
41 mike 1.1 //
42 //END_HISTORY
43
44 ////////////////////////////////////////////////////////////////////////////////
45 //
46 // XmlReader.h
47 //
48 ////////////////////////////////////////////////////////////////////////////////
49
50 #ifndef Pegasus_XmlReader_h
51 #define Pegasus_XmlReader_h
52
53 #include <Pegasus/Common/Config.h>
54 #include <Pegasus/Common/XmlParser.h>
|
55 mike 1.2 #include <Pegasus/Common/CIMFlavor.h>
56 #include <Pegasus/Common/CIMScope.h>
57 #include <Pegasus/Common/CIMReference.h>
|
58 mike 1.1
59 PEGASUS_NAMESPACE_BEGIN
60
|
61 mike 1.2 class CIMQualifier;
62 class CIMQualifierDecl;
63 class CIMClass;
64 class CIMInstance;
65 class CIMProperty;
66 class CIMParameter;
67 class CIMMethod;
|
68 mike 1.1
69 class PEGASUS_COMMON_LINKAGE XmlReader
70 {
71 public:
72
73 static void expectXmlDeclaration(
74 XmlParser& parser,
75 XmlEntry& entry);
76
77 static void expectStartTag(
78 XmlParser& parser,
79 XmlEntry& entry,
80 const char* tagName);
81
82 static void expectEndTag(
83 XmlParser& parser,
84 const char* tagName);
85
86 static void expectStartTagOrEmptyTag(
87 XmlParser& parser,
88 XmlEntry& entry,
89 mike 1.1 const char* tagName);
90
91 static Boolean expectContentOrCData(
92 XmlParser& parser,
93 XmlEntry& entry);
94
95 static Boolean testStartTag(
96 XmlParser& parser,
97 XmlEntry& entry,
98 const char* tagName);
99
100 static Boolean testEndTag(
101 XmlParser& parser,
102 const char* tagName);
103
104 static Boolean testStartTagOrEmptyTag(
105 XmlParser& parser,
106 XmlEntry& entry,
107 const char* tagName);
108
109 static Boolean testContentOrCData(
110 mike 1.1 XmlParser& parser,
111 XmlEntry& entry);
112
113 static void testCimStartTag(XmlParser& parser);
114
115 static Boolean getIsArrayAttribute(
116 Uint32 lineNumber,
117 const XmlEntry& entry,
118 const char* tagName,
119 Boolean& value);
120
121 static String getCimNameAttribute(
122 Uint32 lineNumber,
123 const XmlEntry& entry,
124 const char* elementName,
125 Boolean acceptNull = false);
126
127 static String getClassNameAttribute(
128 Uint32 lineNumber,
129 const XmlEntry& entry,
130 const char* elementName);
131 mike 1.1
132 static String getClassOriginAttribute(
133 Uint32 lineNumber,
134 const XmlEntry& entry,
135 const char* tagName);
136
137 static String getReferenceClassAttribute(
138 Uint32 lineNumber,
139 const XmlEntry& entry,
140 const char* elementName);
141
142 static String getSuperClassAttribute(
143 Uint32 lineNumber,
144 const XmlEntry& entry,
145 const char* tagName);
146
|
147 mike 1.2 static CIMType getCimTypeAttribute(
|
148 mike 1.1 Uint32 lineNumber,
149 const XmlEntry& entry,
150 const char* tagName);
151
152 static Boolean getCimBooleanAttribute(
153 Uint32 lineNumber,
154 const XmlEntry& entry,
155 const char* tagName,
156 const char* attributeName,
157 Boolean defaultValue,
158 Boolean required);
159
160 static Boolean stringToReal(
161 const char* stringValue,
162 Real64& x);
163
164 static Boolean stringToSignedInteger(
165 const char* stringValue,
166 Sint64& x);
167
168 static Boolean stringToUnsignedInteger(
169 mike 1.1 const char* stringValue,
170 Uint64& x);
171
|
172 mike 1.2 static CIMValue stringToValue(
|
173 mike 1.1 Uint32 lineNumber,
174 const char* valueString,
|
175 mike 1.2 CIMType type);
|
176 mike 1.1
177 static Boolean getValueElement(
178 XmlParser& parser,
|
179 mike 1.2 CIMType type,
180 CIMValue& value);
|
181 mike 1.1
|
182 mike 1.2 static CIMValue stringArrayToValue(
|
183 mike 1.1 Uint32 lineNumber,
184 const Array<const char*>& array,
|
185 mike 1.2 CIMType type);
|
186 mike 1.1
187 static Boolean getValueArrayElement(
188 XmlParser& parser,
|
189 mike 1.2 CIMType type,
190 CIMValue& value);
|
191 mike 1.1
192 static Uint32 getFlavor(
193 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 mike 1.2 CIMQualifier& qualifier);
|
203 mike 1.1
204 static Boolean getPropertyElement(
205 XmlParser& parser,
|
206 mike 1.2 CIMProperty& property);
|
207 mike 1.1
208 static Boolean getArraySizeAttribute(
209 Uint32 lineNumber,
210 const XmlEntry& entry,
211 const char* tagName,
212 Uint32& value);
213
214 static Boolean getPropertyArrayElement(
215 XmlParser& parser,
|
216 mike 1.2 CIMProperty& property);
|
217 mike 1.1
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 static Boolean getClassNameElement(
236 XmlParser& parser,
237 String& className,
238 mike 1.1 Boolean required = false);
239
|
240 mike 1.2 static KeyBinding::CIMType getValueTypeAttribute(
|
241 mike 1.1 Uint32 lineNumber,
242 const XmlEntry& entry,
243 const char* elementName);
244
245 static Boolean getKeyValueElement(
246 XmlParser& parser,
|
247 mike 1.2 KeyBinding::CIMType& type,
|
248 mike 1.1 String& value);
249
250 static Boolean getKeyBindingElement(
251 XmlParser& parser,
252 String& name,
253 String& value,
|
254 mike 1.2 KeyBinding::CIMType& type);
|
255 mike 1.1
256 static Boolean getInstanceNameElement(
257 XmlParser& parser,
258 String& className,
259 Array<KeyBinding>& keyBindings);
260
261 static Boolean getInstancePathElement(
262 XmlParser& parser,
|
263 mike 1.2 CIMReference& reference);
|
264 mike 1.1
265 static Boolean getLocalInstancePathElement(
266 XmlParser& parser,
|
267 mike 1.2 CIMReference& reference);
|
268 mike 1.1
269 static Boolean getClassPathElement(
270 XmlParser& parser,
|
271 mike 1.2 CIMReference& reference);
|
272 mike 1.1
273 static Boolean getLocalClassPathElement(
274 XmlParser& parser,
|
275 mike 1.2 CIMReference& reference);
|
276 mike 1.1
277 static Boolean getValueReferenceElement(
278 XmlParser& parser,
|
279 mike 1.2 CIMReference& reference);
|
280 mike 1.1
281 static Boolean getPropertyReferenceElement(
282 XmlParser& parser,
|
283 mike 1.2 CIMProperty& property);
|
284 mike 1.1
285 static Boolean getParameterElement(
286 XmlParser& parser,
|
287 mike 1.2 CIMParameter& parameter);
|
288 mike 1.1
289 static Boolean getParameterArrayElement(
290 XmlParser& parser,
|
291 mike 1.2 CIMParameter& parameter);
|
292 mike 1.1
293 static Boolean getParameterReferenceElement(
294 XmlParser& parser,
|
295 mike 1.2 CIMParameter& parameter);
|
296 mike 1.1
297 static Boolean getQualifierDeclElement(
298 XmlParser& parser,
|
299 mike 1.2 CIMQualifierDecl& qualifierDecl);
|
300 mike 1.1
301 static Boolean getMethodElement(
302 XmlParser& parser,
|
303 mike 1.2 CIMMethod& method);
|
304 mike 1.1
305 static Boolean getClassElement(
306 XmlParser& parser,
|
307 mike 1.3 CIMClass& cimClass);
|
308 mike 1.1
309 static Boolean getInstanceElement(
310 XmlParser& parser,
|
311 mike 1.3 CIMInstance& cimInstance);
|
312 mike 1.1
|
313 mike 1.2 static void getObject(XmlParser& parser, CIMClass& x)
|
314 mike 1.1 {
315 if (!getClassElement(parser, x))
316 {
317 throw XmlValidationError(parser.getLine(),
318 "expected CLASS element");
|
319 mike 1.4 }
320 }
321
322 static void getObject(XmlParser& parser, CIMInstance& x)
323 {
324 if (!getInstanceElement(parser, x))
325 {
326 throw XmlValidationError(parser.getLine(),
327 "expected INSTANCE element");
|
328 mike 1.1 }
329 }
330
|
331 mike 1.2 static void getObject(XmlParser& parser, CIMQualifierDecl& x)
|
332 mike 1.1 {
333 if (!getQualifierDeclElement(parser, x))
334 {
335 throw XmlValidationError(parser.getLine(),
336 "expected QUALIFIER.DECLARATION element");
337 }
338 }
339
340 static Boolean getMessageStartTag(
341 XmlParser& parser,
342 Uint32& id,
343 const char*& protocolVersion);
344
345 static Boolean getIMethodCallStartTag(
346 XmlParser& parser,
347 const char*& name);
348
349 static Boolean getIMethodResponseStartTag(
350 XmlParser& parser,
351 const char*& name);
352
353 mike 1.1 static Boolean getIParamValueTag(
354 XmlParser& parser,
355 const char*& name);
|
356 karl 1.7
357 static Boolean getPropertyValue(
358 XmlParser& parser,
359 CIMValue& cimValue);
|
360 mike 1.1
361 static Boolean getBooleanValueElement(
362 XmlParser& parser,
363 Boolean& result,
364 Boolean required = false);
365
366 static Boolean getErrorElement(
367 XmlParser& parser,
|
368 mike 1.5 CIMException::Code& code,
|
369 mike 1.1 const char*& description,
370 Boolean required = false);
371
372 private:
373
374 XmlReader()
375 {
376
377 }
378 };
379
380 PEGASUS_NAMESPACE_END
381
382 #endif /* Pegasus_XmlReader_h */
|