1 mike 1.21 //%/////////////////////////////////////////////////////////////////////////////
2 //
|
3 mike 1.22 // Copyright (c) 2000, 2001 BMC Software, Hewlett-Packard Company, IBM,
4 // The Open Group, Tivoli Systems
|
5 mike 1.21 //
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.22 // Modified By:
27 // Nitin Upasani, Hewlett-Packard Company (Nitin_Upasani@hp.com)
28 // Nag Boranna, Hewlett-Packard Company (nagaraja_boranna@hp.com)
29 // Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
|
30 mike 1.21 //
31 //%/////////////////////////////////////////////////////////////////////////////
32
33 #ifndef Pegasus_XmlWriter_h
34 #define Pegasus_XmlWriter_h
35
36 #include <iostream>
37 #include <Pegasus/Common/Config.h>
38 #include <Pegasus/Common/Exception.h>
39 #include <Pegasus/Common/Array.h>
40 #include <Pegasus/Common/String.h>
41 #include <Pegasus/Common/Indentor.h>
42 #include <Pegasus/Common/CIMReference.h>
|
43 mike 1.22 #include <Pegasus/Common/CIMPropertyList.h>
44 #include <Pegasus/Common/CIMNamedInstance.h>
|
45 mike 1.21
46 PEGASUS_NAMESPACE_BEGIN
47
48 class CIMConstQualifierDecl;
49 class CIMConstClass;
50 class CIMConstInstance;
51
|
52 mike 1.23 // REVIEW: Restructure parser so that multiple nested allocations are not
53 // REVIEW: required to build a message.
54
|
55 mike 1.21 class PEGASUS_COMMON_LINKAGE XmlWriter
56 {
57 public:
58
59 static void append(Array<Sint8>& out, Char16 x);
60
61 static void append(Array<Sint8>& out, char x)
62 {
63 append(out, Char16(x));
64 }
65
66 static void append(Array<Sint8>& out, const char* x);
67
68 static void append(Array<Sint8>& out, const String& x);
69
70 static void append(Array<Sint8>& out, Uint32 x);
71
72 static void appendSpecial(Array<Sint8>& out, Char16 x);
73
74 static void appendSpecial(Array<Sint8>& out, char x);
75
76 mike 1.21 static void appendSpecial(Array<Sint8>& out, const char* x);
77
78 static void appendSpecial(Array<Sint8>& out, const String& x);
79
80 static void append(Array<Sint8>& out, const Indentor& x);
81
82 static void appendLocalNameSpaceElement(
83 Array<Sint8>& out,
84 const String& nameSpace);
85
86 static void appendNameSpaceElement(
87 Array<Sint8>& out,
88 const String& nameSpace);
89
90 static Array<Sint8> formatGetHeader(
91 const char* documentPath);
92
93 static Array<Sint8> formatMPostHeader(
94 const char* host,
95 const char* cimOperation,
96 const char* cimMethod,
97 mike 1.21 const String& cimObject,
|
98 mike 1.22 const String& authenticationHeader,
|
99 mike 1.21 const Array<Sint8>& content);
100
101 static Array<Sint8> formatMethodResponseHeader(
102 const Array<Sint8>& content);
103
104 static Array<Sint8> formatMessageElement(
105 const String& messageId,
106 const Array<Sint8>& body);
107
108 static Array<Sint8> formatSimpleReqElement(
109 const Array<Sint8>& body);
110
111 static Array<Sint8> formatSimpleRspElement(
112 const Array<Sint8>& body);
113
114 static Array<Sint8> formatIMethodCallElement(
115 const char* name,
116 const String& nameSpace,
117 const Array<Sint8>& iParamValues);
118
119 static Array<Sint8> formatIReturnValueElement(
120 mike 1.21 const Array<Sint8>& body);
121
122 static Array<Sint8> formatIMethodResponseElement(
123 const char* name,
124 const Array<Sint8>& iParamValues);
125
126 static Array<Sint8>& formatIParamValueElement(
127 Array<Sint8>& out,
128 const char* name,
129 const Array<Sint8>& body);
130
131 static Array<Sint8> formatErrorElement(
132 CIMStatusCode code,
133 const char* description);
134
135 static Array<Sint8>& appendBooleanParameter(
136 Array<Sint8>& out,
137 const char* parameterName,
138 Boolean flag);
139
|
140 mike 1.22 static Array<Sint8>& appendStringIParameter(
|
141 mike 1.21 Array<Sint8>& out,
142 const char* parameterName,
143 const String& str);
144
145 static Array<Sint8>& appendClassNameParameter(
146 Array<Sint8>& out,
147 const char* parameterName,
148 const String& className);
149
150 static Array<Sint8>& appendQualifierNameParameter(
151 Array<Sint8>& out,
152 const char* parameterName,
153 const String& qualifierName);
154
155 static Array<Sint8>& appendClassParameter(
156 Array<Sint8>& out,
157 const char* parameterName,
158 const CIMConstClass& cimClass);
159
160 static Array<Sint8>& appendInstanceNameParameter(
161 Array<Sint8>& out,
162 mike 1.21 const char* parameterName,
163 const CIMReference& instanceName);
164
165 static Array<Sint8>& appendInstanceParameter(
166 Array<Sint8>& out,
167 const char* parameterName,
168 const CIMConstInstance& instance);
169
|
170 mike 1.22 static Array<Sint8>& appendNamedInstanceParameter(
171 Array<Sint8>& out,
172 const char* parameterName,
173 const CIMNamedInstance& namedInstance);
174
|
175 mike 1.21 static Array<Sint8>& appendQualifierDeclarationParameter(
176 Array<Sint8>& out,
177 const char* parameterName,
178 const CIMConstQualifierDecl& qualifierDecl);
179
180 static Array<Sint8>& appendClassNameElement(
181 Array<Sint8>& out,
182 const String& className);
183
184 static Array<Sint8>& appendInstanceNameElement(
185 Array<Sint8>& out,
186 const CIMReference& instanceName);
187
188 static Array<Sint8>& appendPropertyNameParameter(
189 Array<Sint8>& out,
190 const String& propertyName);
191
|
192 mike 1.22 static Array<Sint8>& appendPropertyValueParameter(
193 Array<Sint8>& out,
194 const char* parameterName,
195 const CIMValue& value);
196
197 static Array<Sint8>& appendPropertyListParameter(
198 Array<Sint8>& out,
199 const CIMPropertyList& propertyList);
200
|
201 mike 1.21 static Array<Sint8>& appendObjectNameParameter(
202 Array<Sint8>& out,
203 const char* name,
204 const CIMReference& objectName);
205
206 static void indentedPrint(
207 PEGASUS_STD(ostream)& os,
208 const char* text,
209 Uint32 indentChars = 2);
210
|
211 mike 1.22 static Array<Sint8> formatSimpleIMethodReqMessage(
|
212 mike 1.21 const char* host,
213 const String& nameSpace,
214 const char* iMethodName,
|
215 mike 1.22 const String& messageId,
216 const String& authenticationHeader,
|
217 mike 1.21 const Array<Sint8>& body);
218
219 static Array<Sint8> formatSimpleRspMessage(
220 const char* iMethodName,
221 const String& messageId,
222 const Array<Sint8>& body);
223
224 static String getNextMessageId();
|
225 mike 1.22
226 static Array<Sint8> formatSimpleIndicationReqMessage(
227 const char* host,
228 const char* iMethodName,
229 const String& messageId,
230 const String& authenticationHeader,
231 const Array<Sint8>& body);
232
233 static Array<Sint8> formatEMethodCallElement(
234 const char* name,
235 const Array<Sint8>& iParamValues);
236
237 static Array<Sint8> formatMPostIndicationHeader(
238 const char* host,
239 const char* cimOperation,
240 const char* cimMethod,
241 const String& authenticationHeader,
242 const Array<Sint8>& content);
243
244 static Array<Sint8> formatSimpleExportReqElement(
245 const Array<Sint8>& body);
246 mike 1.22
247 static Array<Sint8> formatSimpleExportRspElement(
248 const Array<Sint8>& body);
249
250 static Array<Sint8> formatSimpleIndicationRspMessage(
251 const char* iMethodName,
252 const String& messageId,
253 const Array<Sint8>& body);
254
255 static Array<Sint8> formatEMethodResponseElement(
256 const char* name,
257 const Array<Sint8>& iParamValues);
258
259 static Array<Sint8> formatEMethodResponseHeader(
260 const Array<Sint8>& content);
261
262 static Array<Sint8> formatSimpleMethodReqMessage(
263 const char* host,
264 const String& nameSpace,
265 const char* iMethodName,
266 const String& messageId,
267 mike 1.22 const String& authenticationHeader,
268 const Array<Sint8>& body);
269
270 static Array<Sint8> formatMethodCallElement(
271 const char* name,
272 const String& nameSpace,
273 const Array<Sint8>& iParamValues);
274
275 static Array<Sint8> formatSimpleMethodRspMessage(
276 const char* iMethodName,
277 const String& messageId,
278 const Array<Sint8>& body);
279
280 static Array<Sint8> formatMethodResponseElement(
281 const char* name,
282 const Array<Sint8>& iParamValues);
283
284 static Array<Sint8>& appendStringParameter(
285 Array<Sint8>& out,
286 const char* parameterName,
287 const String& str);
288 mike 1.22
289 static Array<Sint8>& formatParamValueElement(
290 Array<Sint8>& out,
291 const char* name,
292 const Array<Sint8>& body);
293
294 static Array<Sint8> formatReturnValueElement(
295 const Array<Sint8>& body);
296
297 static Array<Sint8> formatUnauthorizedResponseHeader(
298 const String& content);
|
299 mike 1.21
300 private:
301
302 XmlWriter() { }
303 };
304
305 PEGASUS_COMMON_LINKAGE Array<Sint8>& operator<<(
306 Array<Sint8>& out,
307 const char* x);
308
309 PEGASUS_COMMON_LINKAGE Array<Sint8>& operator<<(Array<Sint8>& out, char x);
310
311 PEGASUS_COMMON_LINKAGE Array<Sint8>& operator<<(Array<Sint8>& out, Char16 x);
312
313 PEGASUS_COMMON_LINKAGE Array<Sint8>& operator<<(
314 Array<Sint8>& out,
315 const String& x);
316
317 PEGASUS_COMMON_LINKAGE Array<Sint8>& operator<<(
318 Array<Sint8>& out,
319 const Indentor& x);
320 mike 1.21
321 PEGASUS_COMMON_LINKAGE Array<Sint8>& operator<<(
322 Array<Sint8>& out,
323 const Array<Sint8>& x);
324
325 PEGASUS_COMMON_LINKAGE Array<Sint8>& operator<<(
326 Array<Sint8>& out,
327 Uint32 x);
328
329 PEGASUS_NAMESPACE_END
330
331 #endif /* Pegasus_XmlWriter_h */
|