(file) Return to XmlWriter.h CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

  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 */

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2