(file) Return to CIMOperationResponseDecoder.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Client

   1 mike  1.2 //%/////////////////////////////////////////////////////////////////////////////
   2           //
   3 kumpf 1.25 // Copyright (c) 2000, 2001, 2002 BMC Software, Hewlett-Packard Company, IBM,
   4 mike  1.2  // The Open Group, Tivoli Systems
   5            //
   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 kumpf 1.25 // 
  13 mike  1.2  // 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            // Modified By: Nitin Upasani, Hewlett-Packard Company (Nitin_Upasani@hp.com)
  27            //              Yi Zhou, Hewlett-Packard Company (yi_zhou@hp.com)
  28            //              Nag Boranna, Hewlett-Packard Company (nagaraja_boranna@hp.com)
  29            //              Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
  30 kumpf 1.23 //              Carol Ann Krug Graves, Hewlett-Packard Company
  31            //                  (carolann_graves@hp.com)
  32 kumpf 1.36 //              Sushma Fernandes, Hewlett-Packard Company
  33            //                  (sushma_fernandes@hp.com)
  34 david 1.38 //              Dave Rosckes (rosckes@us.ibm.com)
  35 mike  1.2  //
  36            //%/////////////////////////////////////////////////////////////////////////////
  37            
  38            #include <Pegasus/Common/Config.h>
  39            #include <iostream>
  40 kumpf 1.15 #include <Pegasus/Common/Constants.h>
  41 mike  1.2  #include <Pegasus/Common/XmlParser.h>
  42            #include <Pegasus/Common/XmlReader.h>
  43            #include <Pegasus/Common/System.h>
  44            #include <Pegasus/Common/XmlWriter.h>
  45            #include <Pegasus/Common/HTTPMessage.h>
  46            #include <Pegasus/Common/CIMMessage.h>
  47 chuck 1.29 #include <Pegasus/Common/Exception.h> 
  48 mike  1.2  #include "CIMOperationResponseDecoder.h"
  49            
  50 humberto 1.43 // l10n
  51               #include <Pegasus/Common/MessageLoader.h>
  52               
  53 mike     1.2  PEGASUS_USING_STD;
  54               
  55               PEGASUS_NAMESPACE_BEGIN
  56               
  57               CIMOperationResponseDecoder::CIMOperationResponseDecoder(
  58                   MessageQueue* outputQueue,
  59                   MessageQueue* encoderQueue,
  60 karl     1.41     ClientAuthenticator* authenticator,
  61                   Uint32 showInput)
  62 mike     1.2      :
  63 kumpf    1.16     MessageQueue(PEGASUS_QUEUENAME_OPRESPDECODER),
  64 mike     1.2      _outputQueue(outputQueue),
  65                   _encoderQueue(encoderQueue),
  66 karl     1.41     _authenticator(authenticator),
  67                   _showInput(showInput)
  68 mike     1.2  {
  69               }
  70               
  71               CIMOperationResponseDecoder::~CIMOperationResponseDecoder()
  72               {
  73               
  74               }
  75               
  76               void  CIMOperationResponseDecoder::setEncoderQueue(MessageQueue* encoderQueue)
  77               {
  78                   _encoderQueue = encoderQueue;
  79               }
  80               
  81               void CIMOperationResponseDecoder::handleEnqueue()
  82               {
  83                   Message* message = dequeue();
  84               
  85                   if (!message)
  86               	return;
  87               
  88                   switch (message->getType())
  89 mike     1.2      {
  90               	case HTTP_MESSAGE:
  91               	{
  92 mday     1.3  
  93 mike     1.2  	    HTTPMessage* httpMessage = (HTTPMessage*)message;
  94               	    _handleHTTPMessage(httpMessage);
  95               	    break;
  96               	}
  97               
  98               	default:
  99 kumpf    1.17             PEGASUS_ASSERT(0);
 100 mike     1.2  	    break;
 101                   }
 102               
 103                   delete message;
 104               }
 105               
 106               void CIMOperationResponseDecoder::_handleHTTPMessage(HTTPMessage* httpMessage)
 107               {
 108                   //
 109                   // Parse the HTTP message:
 110                   //
 111               
 112                   String startLine;
 113                   Array<HTTPHeader> headers;
 114                   Sint8* content;
 115                   Uint32 contentLength;
 116               
 117 kumpf    1.19     if (httpMessage->message.size() == 0)
 118 humberto 1.43       {
 119               	
 120               	// l10n
 121               	
 122               	// CIMClientMalformedHTTPException* malformedHTTPException =
 123               	//   new CIMClientMalformedHTTPException("Empty HTTP response message.");
 124               	
 125               	MessageLoaderParms mlParms("Client.CIMOperationResponseDecoder.EMPTY_RESPONSE", "Empty HTTP response message.");
 126               	String mlString(MessageLoader::getMessage(mlParms));
 127               	
 128               	CIMClientMalformedHTTPException* malformedHTTPException =
 129               	  new CIMClientMalformedHTTPException(mlString);
 130               	
 131               	ClientExceptionMessage * response =
 132               	  new ClientExceptionMessage(malformedHTTPException);
 133               	
 134               	_outputQueue->enqueue(response);
 135               	return;
 136                     }
 137 kumpf    1.19 
 138 mike     1.2      httpMessage->parse(startLine, headers, contentLength);
 139               
 140 kumpf    1.19     //
 141                   // Get the status line info
 142                   //
 143                   String httpVersion;
 144                   Uint32 statusCode;
 145                   String reasonPhrase;
 146               
 147                   Boolean parsableMessage = HTTPMessage::parseStatusLine(
 148                       startLine, httpVersion, statusCode, reasonPhrase);
 149                   if (!parsableMessage)
 150                   {
 151               
 152 humberto 1.43       // l10n
 153               
 154                     // CIMClientMalformedHTTPException* malformedHTTPException = new
 155                     //   CIMClientMalformedHTTPException("Malformed HTTP response message.");
 156                    
 157                     MessageLoaderParms mlParms("Client.CIMOperationResponseDecoder.MALFORMED_RESPONSE", "Malformed HTTP response message.");
 158                     String mlString(MessageLoader::getMessage(mlParms));
 159                    
 160                     CIMClientMalformedHTTPException* malformedHTTPException =
 161               	new CIMClientMalformedHTTPException(mlString);
 162                     
 163                     ClientExceptionMessage * response =
 164               	new ClientExceptionMessage(malformedHTTPException);
 165                     
 166                     _outputQueue->enqueue(response);
 167                     return;
 168 kumpf    1.19     }
 169               
 170 karl     1.41 #ifdef PEGASUS_CLIENT_TRACE_ENABLE
 171                   if (_showInput & 1)
 172                   {
 173                       cout << "CIMOperatonResponseDecoder";
 174                       httpMessage->printAll(cout);
 175                   }
 176                   if (_showInput & 2)
 177                   {
 178                       Uint32 size = httpMessage->message.size();
 179                       char* tmpBuf = new char[size+1];
 180               
 181                       strncpy( tmpBuf, httpMessage->message.getData(), size );
 182                       tmpBuf[size] = '\0';
 183                       Logger::put(Logger::STANDARD_LOG,
 184               					"CIMCLIENT",
 185               					Logger::TRACE,
 186               					"CIMOperationRequestDecoder::Response, XML content: $1",
 187               					tmpBuf);
 188                       delete []tmpBuf;
 189                   }
 190               #endif
 191 karl     1.41 
 192 kumpf    1.8      try
 193 mike     1.2      {
 194 kumpf    1.8          if (_authenticator->checkResponseHeaderForChallenge(headers))
 195                       {
 196                           //
 197                           // Get the original request, put that in the encoder's queue for
 198                           // re-sending with authentication challenge response.
 199                           //
 200                           Message* reqMessage = _authenticator->getRequestMessage();
 201                           _encoderQueue->enqueue(reqMessage);
 202 mike     1.2  
 203 kumpf    1.8              return;
 204                       }
 205                       else
 206                       {
 207                           //
 208                           // Received a valid/error response from the server.
 209                           // We do not need the original request message anymore, hence delete
 210                           // the request message by getting the handle from the ClientAuthenticator.
 211                           //
 212                           Message* reqMessage = _authenticator->getRequestMessage();
 213                           _authenticator->clearRequest();
 214                           if (reqMessage)
 215                           {
 216                               delete reqMessage;
 217                           }
 218                       }
 219 mike     1.2      }
 220 kumpf    1.8      catch(InvalidAuthHeader& e)
 221 mike     1.2      {
 222 kumpf    1.20         CIMClientMalformedHTTPException* malformedHTTPException =
 223                           new CIMClientMalformedHTTPException(e.getMessage());
 224 kumpf    1.17         ClientExceptionMessage * response =
 225                           new ClientExceptionMessage(malformedHTTPException);
 226 mike     1.2  
 227 kumpf    1.17         _outputQueue->enqueue(response);
 228 kumpf    1.15         return;
 229                   }
 230 kumpf    1.22     catch(UnauthorizedAccess& e)
 231                   {
 232 kumpf    1.36          // ATTN-SF-P3-20030115: Need to create a specific exception
 233                        // to indicate Authentication failure. See JAGae53944.
 234               
 235 humberto 1.43       // l10n
 236                     // const String ERROR_MESSAGE = "Authentication failed.";
 237                 
 238                     MessageLoaderParms mlParms("Client.CIMOperationResponseDecoder.AUTHENTICATION_FAILED", "Authentication failed.");
 239                     String ERROR_MESSAGE(MessageLoader::getMessage(mlParms));
 240                     
 241                     CannotConnectException* cannotConnectException =
 242               	new CannotConnectException(ERROR_MESSAGE);
 243                     ClientExceptionMessage * response =
 244               	new ClientExceptionMessage(cannotConnectException);
 245                     
 246                     _outputQueue->enqueue(response);
 247                     return;
 248 kumpf    1.22     }
 249 kumpf    1.15 
 250                   //
 251                   // Check for a success (200 OK) response
 252                   //
 253 kumpf    1.17     if (statusCode != HTTP_STATUSCODE_OK)
 254 kumpf    1.15     {
 255                       String cimError;
 256                       String pegasusError;
 257               
 258                       HTTPMessage::lookupHeader(headers, "CIMError", cimError);
 259                       HTTPMessage::lookupHeader(headers, PEGASUS_HTTPHEADERTAG_ERRORDETAIL, pegasusError);
 260 kumpf    1.35         try
 261                       {
 262                           pegasusError = XmlReader::decodeURICharacters(pegasusError);
 263                       }
 264                       catch (ParseError& e)
 265                       {
 266                           // Ignore this exception.  We're more interested in having the
 267                           // message in encoded form than knowing that the format is invalid.
 268                       }
 269 kumpf    1.15 
 270 kumpf    1.32         CIMClientHTTPErrorException* httpError =
 271                           new CIMClientHTTPErrorException(statusCode, cimError, pegasusError);
 272 kumpf    1.17         ClientExceptionMessage * response =
 273                           new ClientExceptionMessage(httpError);
 274 kumpf    1.15 
 275                       _outputQueue->enqueue(response);
 276 kumpf    1.8          return;
 277 mike     1.2      }
 278               
 279                   //
 280                   // Search for "CIMOperation" header:
 281                   //
 282                   String cimOperation;
 283               
 284                   if (!HTTPMessage::lookupHeader(
 285 kumpf    1.18 	headers, "CIMOperation", cimOperation, true))
 286 mike     1.2      {
 287 humberto 1.43       // l10n
 288               
 289                     // CIMClientMalformedHTTPException* malformedHTTPException = new
 290                     //   CIMClientMalformedHTTPException("Missing CIMOperation HTTP header");
 291               
 292 humberto 1.44       MessageLoaderParms mlParms("Client.CIMOperationResponseDecoder.MISSING_CIMOP_HEADER", "Missing CIMOperation HTTP header");
 293 humberto 1.43       String mlString(MessageLoader::getMessage(mlParms));
 294                     
 295                     CIMClientMalformedHTTPException* malformedHTTPException = new
 296               	CIMClientMalformedHTTPException(mlString);
 297                     
 298 kumpf    1.17         ClientExceptionMessage * response =
 299                           new ClientExceptionMessage(malformedHTTPException);
 300               
 301                       _outputQueue->enqueue(response);
 302                       return;
 303 mike     1.2      }
 304               
 305 chuck    1.39 
 306               // l10n start
 307                  ContentLanguages contentLanguages  = ContentLanguages::EMPTY;
 308                  try 
 309                  { 
 310               		// Get and validate the Content-Language header, if set 	
 311               		String contentLanguageHeader;
 312               		if (HTTPMessage::lookupHeader(
 313               		      headers, 
 314               	    	  "Content-Language", 
 315               		      contentLanguageHeader,
 316               	    	  false) == true)
 317               	    {						
 318               			contentLanguages = ContentLanguages(contentLanguageHeader);      
 319               	    }   	
 320                  }			
 321                  catch (Exception &e)
 322                  {
 323 humberto 1.43 
 324                    // l10n
 325               
 326                    // CIMClientMalformedHTTPException* malformedHTTPException = new
 327                    //  CIMClientMalformedHTTPException("Malformed Content-Language header.");
 328               
 329                     MessageLoaderParms mlParms("Client.CIMOperationResponseDecoder.MALFORMED_CONTENT", "Malformed Content-Language header.");
 330                     String mlString(MessageLoader::getMessage(mlParms));
 331               
 332                     CIMClientMalformedHTTPException* malformedHTTPException =
 333               	new CIMClientMalformedHTTPException(mlString);
 334               
 335                    ClientExceptionMessage * response =
 336                      new ClientExceptionMessage(malformedHTTPException);
 337                    
 338                    _outputQueue->enqueue(response);
 339                    return;    	
 340 chuck    1.39    }        
 341               // l10n end   
 342 david    1.42     //
 343                   // Search for "Content-Type" header:
 344                   //
 345 karl     1.47    // BUG 572, Use of Content-Type header and change error msg.
 346                  // If header exists, test type.  If not, ignore. We will find
 347                  // content type errors in text analysis.
 348                  // content-type header  value format:
 349                  //              type "/" subtype *( ";" parameter )
 350                  // ex. text/xml;Charset="utf8"
 351 david    1.42    String cimContentType;
 352 karl     1.47    
 353                  if (HTTPMessage::lookupHeader(
 354 david    1.42 				  headers, "Content-Type", cimContentType, true))
 355                  {
 356 karl     1.47 		Uint32 len;
 357               		String contentTypeValue;
 358               		if ((len = cimContentType.find(';')) != PEG_NOT_FOUND)
 359               			contentTypeValue = cimContentType.subString(0,len);
 360               		else
 361               			contentTypeValue = cimContentType;
 362               		
 363               		if (!String::equalNoCase(contentTypeValue, "text/xml") && 
 364               			!String::equalNoCase(contentTypeValue, "application/xml"))
 365               		{
 366               			CIMClientMalformedHTTPException* malformedHTTPException = new
 367               				CIMClientMalformedHTTPException
 368               					("Bad Content-Type HTTP header; " + contentTypeValue);
 369               			ClientExceptionMessage * response =
 370               				new ClientExceptionMessage(malformedHTTPException);
 371               			
 372               			_outputQueue->enqueue(response);
 373               			return;
 374               		}
 375 david    1.42    }
 376 karl     1.47    
 377 mike     1.2      //
 378                   // Zero-terminate the message:
 379                   //
 380                   httpMessage->message.append('\0');
 381 keith.petley 1.40 
 382 mike         1.2      // Calculate the beginning of the content from the message size and
 383                       // the content length.  Subtract 1 to take into account the null
 384                       // character we just added to the end of the message.
 385                   
 386                       content = (Sint8*) httpMessage->message.getData() +
 387 karl         1.41         httpMessage->message.size() - contentLength - 1;
 388 mike         1.2  
 389                       //
 390                       // If it is a method response, then dispatch it to be handled:
 391                       //
 392                   
 393                       if (!String::equalNoCase(cimOperation, "MethodResponse"))
 394                       {
 395 humberto     1.43 
 396                         // l10n
 397                   
 398                         // CIMClientMalformedHTTPException* malformedHTTPException =
 399                         //   new CIMClientMalformedHTTPException(
 400                         //        String("Received CIMOperation HTTP header value \"") +
 401                         //        cimOperation + "\", expected \"MethodResponse\"");
 402                   
 403                   
 404 humberto     1.44       MessageLoaderParms mlParms("Client.CIMOperationResponseDecoder.EXPECTED_METHODRESPONSE", "Received CIMOperation HTTP header value \"$1\", expected \"MethodResponse\"", cimOperation);
 405 humberto     1.43       String mlString(MessageLoader::getMessage(mlParms));
 406                   
 407                         CIMClientMalformedHTTPException* malformedHTTPException =
 408                   	new CIMClientMalformedHTTPException(mlString);
 409                   
 410                         ClientExceptionMessage * response =
 411                   	new ClientExceptionMessage(malformedHTTPException);
 412 kumpf        1.17 
 413                           _outputQueue->enqueue(response);
 414                           return;
 415 mike         1.2      }
 416                   
 417 chuck        1.39     _handleMethodResponse(content,
 418                      						contentLanguages);  // l10n
 419 mike         1.2  }
 420                   
 421 chuck        1.39 void CIMOperationResponseDecoder::_handleMethodResponse(char* content,
 422                   								const ContentLanguages& contentLanguages) //l10n
 423 mike         1.2  {
 424                       Message* response = 0;
 425                   
 426                       //
 427                       // Create and initialize XML parser:
 428                       //
 429                   
 430                       XmlParser parser((char*)content);
 431                       XmlEntry entry;
 432                   
 433                       try
 434                       {
 435                   	//
 436                   	// Process <?xml ... >
 437                   	//
 438                   
 439 kumpf        1.11         const char* xmlVersion = 0;
 440                           const char* xmlEncoding = 0;
 441                   
 442                   	XmlReader::getXmlDeclaration(parser, xmlVersion, xmlEncoding);
 443 mike         1.2  
 444                   	//
 445                   	// Process <CIM ... >
 446                   	//
 447                   
 448 kumpf        1.9          const char* cimVersion = 0;
 449                           const char* dtdVersion = 0;
 450                   
 451 kumpf        1.17         // ATTN-RK-P3-20020416: Need to validate these versions?
 452 kumpf        1.9  	XmlReader::getCimStartTag(parser, cimVersion, dtdVersion);
 453 mike         1.2  
 454                   	//
 455                   	// Expect <MESSAGE ... >
 456                   	//
 457                   
 458                   	String messageId;
 459 kumpf        1.9  	String protocolVersion;
 460 mike         1.2  
 461 humberto     1.43 	if (!XmlReader::getMessageStartTag(parser, messageId, protocolVersion)) {
 462                   
 463                   	  // l10n
 464                   
 465                   	  // throw XmlValidationError(
 466                   	  // parser.getLine(), "expected MESSAGE element");
 467                   
 468 humberto     1.44 	  MessageLoaderParms mlParms("Client.CIMOperationResponseDecoder.EXPECTED_MESSAGE_ELEMENT",
 469                   				     "expected MESSAGE element");
 470 humberto     1.43 
 471                   	  throw XmlValidationError(parser.getLine(), mlParms);
 472                   	}
 473                   
 474 mike         1.2  
 475 kumpf        1.9          if (!String::equalNoCase(protocolVersion, "1.0"))
 476 mike         1.2  	{
 477 humberto     1.43 
 478                   	  // l10n
 479                   
 480                   	  // CIMClientResponseException* responseException =
 481                   	  //   new CIMClientResponseException(
 482                   	  //        String("Received unsupported protocol version \"") +
 483                   	  //        protocolVersion + "\", expected \"1.0\"");
 484                   
 485                   	MessageLoaderParms mlParms("Client.CIMOperationResponseDecoder.UNSUPPORTED_PROTOCOL", "Received unsupported protocol version \"$0\", expected \"1.0\"", protocolVersion);
 486                   	String mlString(MessageLoader::getMessage(mlParms));
 487                   	
 488                   	CIMClientResponseException* responseException =
 489                   	  new CIMClientResponseException(mlString);
 490                   
 491 kumpf        1.17             ClientExceptionMessage * response =
 492                                   new ClientExceptionMessage(responseException);
 493 mike         1.2  
 494 kumpf        1.17             _outputQueue->enqueue(response);
 495                               return;
 496 mike         1.2  	}
 497                   
 498                   	//
 499                   	// Expect <SIMPLERSP ... >
 500                   	//
 501                   
 502                   	XmlReader::expectStartTag(parser, entry, "SIMPLERSP");
 503                   
 504                   	//
 505                   	// Expect <IMETHODRESPONSE ... >
 506                   	//
 507                   
 508                   	const char* iMethodResponseName = 0;
 509                   
 510                   	if (XmlReader::getIMethodResponseStartTag(parser, iMethodResponseName))
 511                   	{
 512                   	    //
 513                   	    // Dispatch the method:
 514                   	    //
 515                   
 516 kumpf        1.31 	    if (System::strcasecmp(iMethodResponseName, "GetClass") == 0)
 517 mike         1.2  		response = _decodeGetClassResponse(parser, messageId);
 518 kumpf        1.31 	    else if (System::strcasecmp(iMethodResponseName, "GetInstance") == 0)
 519 mike         1.2  		response = _decodeGetInstanceResponse(parser, messageId);
 520 kumpf        1.31 	    else if (System::strcasecmp(iMethodResponseName, "EnumerateClassNames") == 0)
 521 mike         1.2  		response = _decodeEnumerateClassNamesResponse(parser,messageId);
 522 kumpf        1.31 	    else if (System::strcasecmp(iMethodResponseName, "References") == 0)
 523 mike         1.2  		response = _decodeReferencesResponse(parser, messageId);
 524 kumpf        1.31 	    else if (System::strcasecmp(iMethodResponseName, "ReferenceNames") == 0)
 525 mike         1.2  		response = _decodeReferenceNamesResponse(parser, messageId);
 526 kumpf        1.31 	    else if (System::strcasecmp(iMethodResponseName, "AssociatorNames") == 0)
 527 mike         1.2  		response = _decodeAssociatorNamesResponse(parser, messageId);
 528 kumpf        1.31 	    else if (System::strcasecmp(iMethodResponseName, "Associators") == 0)
 529 mike         1.2  		response = _decodeAssociatorsResponse(parser, messageId);
 530 kumpf        1.31 	    else if (System::strcasecmp(iMethodResponseName, "CreateInstance") == 0)
 531 mike         1.2  		response = _decodeCreateInstanceResponse(parser, messageId);
 532 kumpf        1.31 	    else if (System::strcasecmp(iMethodResponseName,"EnumerateInstanceNames") == 0)
 533 mike         1.2  		response = _decodeEnumerateInstanceNamesResponse(
 534                                     parser, messageId);
 535 kumpf        1.31 	    else if (System::strcasecmp(iMethodResponseName,"EnumerateInstances") == 0)
 536 mike         1.2  		response = _decodeEnumerateInstancesResponse(parser, messageId);
 537 kumpf        1.31 	    else if (System::strcasecmp(iMethodResponseName, "GetProperty") == 0)
 538 mike         1.2  		response = _decodeGetPropertyResponse(parser, messageId);
 539 kumpf        1.31 	    else if (System::strcasecmp(iMethodResponseName, "SetProperty") == 0)
 540 mike         1.2  		response = _decodeSetPropertyResponse(parser, messageId);
 541 kumpf        1.31 	    else if (System::strcasecmp(iMethodResponseName, "DeleteQualifier") == 0)
 542 mike         1.2  		response = _decodeDeleteQualifierResponse(parser, messageId);
 543 kumpf        1.31 	    else if (System::strcasecmp(iMethodResponseName, "GetQualifier") == 0)
 544 mike         1.2  		response = _decodeGetQualifierResponse(parser, messageId);
 545 kumpf        1.31 	    else if (System::strcasecmp(iMethodResponseName, "SetQualifier") == 0)
 546 mike         1.2  		response = _decodeSetQualifierResponse(parser, messageId);
 547 kumpf        1.31 	    else if (System::strcasecmp(iMethodResponseName, "EnumerateQualifiers") == 0)
 548 mike         1.2  		response = _decodeEnumerateQualifiersResponse(parser,messageId);
 549 kumpf        1.31 	    else if (System::strcasecmp(iMethodResponseName, "EnumerateClasses") == 0)
 550 mike         1.2  		response = _decodeEnumerateClassesResponse(parser, messageId);
 551 kumpf        1.31 	    else if (System::strcasecmp(iMethodResponseName, "CreateClass") == 0)
 552 mike         1.2  		response = _decodeCreateClassResponse(parser, messageId);
 553 kumpf        1.31 	    else if (System::strcasecmp(iMethodResponseName, "ModifyClass") == 0)
 554 mike         1.2  		response = _decodeModifyClassResponse(parser, messageId);
 555 kumpf        1.31 	    else if (System::strcasecmp(iMethodResponseName, "ModifyInstance") == 0)
 556 mike         1.2  		response = _decodeModifyInstanceResponse(parser, messageId);
 557 kumpf        1.31 	    else if (System::strcasecmp(iMethodResponseName, "DeleteClass") == 0)
 558 mike         1.2  		response = _decodeDeleteClassResponse(parser, messageId);
 559 kumpf        1.31 	    else if (System::strcasecmp(iMethodResponseName, "DeleteInstance") == 0)
 560 mike         1.2  		response = _decodeDeleteInstanceResponse(parser, messageId);
 561 kumpf        1.31 	    else if (System::strcasecmp(iMethodResponseName, "ExecQuery") == 0)
 562 kumpf        1.10 		response = _decodeExecQueryResponse(parser, messageId);
 563 mike         1.2  	    else
 564                   	    {
 565 humberto     1.43 
 566                   	      // l10n
 567                   
 568 mike         1.2                  // Unrecognized IMethodResponse name attribute
 569 humberto     1.43 	      // throw XmlValidationError(parser.getLine(),
 570                   	      //   String("Unrecognized IMethodResponse name \"") +
 571                   	      //        iMethodResponseName + "\"");
 572                   
 573                   	      MessageLoaderParms mlParms("Client.CIMOperationResponseDecoder.UNRECOGNIZED_NAME",
 574 humberto     1.44 					 "Unrecognized IMethodResponse name \"$0\"", 
 575 humberto     1.43 					 iMethodResponseName);
 576                   	      
 577                   	      throw XmlValidationError(parser.getLine(), mlParms);
 578 mike         1.2  	    }
 579                   	
 580                   	    //
 581                   	    // Handle end tag:
 582                   	    //
 583                   
 584                   	    XmlReader::expectEndTag(parser, "IMETHODRESPONSE");
 585                   	}
 586                   	else if (XmlReader::getMethodResponseStartTag(parser, 
 587                   	    iMethodResponseName))
 588                   	{
 589                   	    response = _decodeInvokeMethodResponse(
 590                                 parser, messageId, iMethodResponseName);
 591                   
 592                   	    //
 593                   	    // Handle end tag:
 594                   	    //
 595                   	    XmlReader::expectEndTag(parser, "METHODRESPONSE");
 596                   	}
 597                   	else
 598                   	{
 599 humberto     1.43 	  // l10n
 600                   
 601                   	  // throw XmlValidationError(parser.getLine(),
 602                   	  //   "expected METHODRESPONSE or IMETHODRESPONSE element");
 603                   
 604 humberto     1.44 	  MessageLoaderParms mlParms("Client.CIMOperationResponseDecoder.EXPECTED_METHODRESPONSE_OR_IMETHODRESPONSE_ELEMENT",
 605                   				     "expected METHODRESPONSE or IMETHODRESPONSE element");
 606 humberto     1.43 
 607                   	  throw XmlValidationError(parser.getLine(), mlParms);
 608 mike         1.2  	}
 609                   
 610                           //
 611                           // Handle end tags:
 612                           //
 613                   	XmlReader::expectEndTag(parser, "SIMPLERSP");
 614                   	XmlReader::expectEndTag(parser, "MESSAGE");
 615                   	XmlReader::expectEndTag(parser, "CIM");
 616                       }
 617 kumpf        1.17     catch (XmlException& x)
 618                       {
 619 david        1.38 	Logger::put(Logger::ERROR_LOG, System::CIMSERVER, Logger::TRACE,
 620                   		    "CIMOperationResponseDecoder::_handleMethodResponse - XmlException has occurred. Message: $0",x.getMessage());
 621                   
 622 kumpf        1.17         if (response)
 623                           {
 624 karl         1.41 //#ifdef PEGASUS_SNIA_INTEROP_TEST
 625                   //         httpMessage->printAll(cout);
 626                   //#endif
 627                   	
 628 kumpf        1.17             delete response;
 629                           }
 630                   
 631                           response = new ClientExceptionMessage(
 632 kumpf        1.20             new CIMClientXmlException(x.getMessage()));
 633 kumpf        1.17     }
 634 mike         1.2      catch (Exception& x)
 635                       {
 636 kumpf        1.17         // Shouldn't ever get exceptions other than XmlExceptions.
 637                           PEGASUS_ASSERT(0);
 638                   
 639                           if (response)
 640                           {
 641                               delete response;
 642                           }
 643 mike         1.2  
 644 kumpf        1.17         response = new ClientExceptionMessage(
 645 kumpf        1.28             new Exception(x.getMessage()));
 646 mike         1.2      }
 647 chuck        1.39 
 648                   //l10n start
 649                   // l10n TODO - might want to move A-L and C-L to Message
 650                   // to make this more maintainable
 651                   	// Add the language header to the request
 652                   	CIMMessage * cimmsg = dynamic_cast<CIMMessage *>(response);
 653                   	if (cimmsg != NULL)
 654                   	{
 655                   		cimmsg->contentLanguages = contentLanguages;			
 656                   	}
 657                   	else
 658                   	{
 659                   		;	// l10n TODO - error back to client here	
 660                   	}
 661                   // l10n end	
 662                   
 663 mike         1.2  
 664                       _outputQueue->enqueue(response);
 665                   }
 666                   
 667                   CIMCreateClassResponseMessage* CIMOperationResponseDecoder::_decodeCreateClassResponse(
 668                       XmlParser& parser, 
 669                       const String& messageId)
 670                   {
 671                       XmlEntry entry;
 672 kumpf        1.12     CIMException cimException;
 673 mike         1.2  
 674 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
 675 mike         1.2      {
 676                   	return(new CIMCreateClassResponseMessage(
 677                   	    messageId,
 678 kumpf        1.12 	    cimException,
 679 mike         1.2  	    QueueIdStack()));
 680                   
 681                       }
 682 kumpf        1.14     else
 683 mike         1.2      {
 684 kumpf        1.37 	if (XmlReader::testStartTagOrEmptyTag(parser, entry, "IRETURNVALUE"))
 685 kumpf        1.14 	{
 686 kumpf        1.37 	    if (entry.type != XmlEntry::EMPTY_TAG)
 687                   	    {
 688                   	        XmlReader::expectEndTag(parser, "IRETURNVALUE");
 689                   	    }
 690 kumpf        1.14 	}
 691 mike         1.2  
 692                   	return(new CIMCreateClassResponseMessage(
 693                   	    messageId,
 694 kumpf        1.12 	    cimException,
 695 mike         1.2  	    QueueIdStack()));
 696                       }
 697                   }
 698                   
 699                   CIMGetClassResponseMessage* CIMOperationResponseDecoder::_decodeGetClassResponse(
 700                       XmlParser& parser, const String& messageId)
 701                   {
 702                       XmlEntry entry;
 703 kumpf        1.12     CIMException cimException;
 704 mike         1.2  
 705 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
 706 mike         1.2      {
 707                   	return(new CIMGetClassResponseMessage(
 708                   	    messageId,
 709 kumpf        1.12 	    cimException,
 710 mike         1.2  	    QueueIdStack(),
 711                   	    CIMClass()));
 712                       }
 713 kumpf        1.37     else if (XmlReader::testStartTagOrEmptyTag(parser, entry, "IRETURNVALUE"))
 714 mike         1.2      {
 715                   	CIMClass cimClass;
 716                   
 717 kumpf        1.37 	if ((entry.type == XmlEntry::EMPTY_TAG) ||
 718                   	    !XmlReader::getClassElement(parser, cimClass))
 719                   	{
 720 humberto     1.43 
 721                   	  // l10n
 722                   
 723                   	  // throw XmlValidationError(parser.getLine(),"expected CLASS element");
 724                   
 725 humberto     1.44 	  MessageLoaderParms mlParms("Client.CIMOperationResponseDecoder.EXPECTED_CLASS_ELEMENT",
 726                   				     "expected CLASS element");
 727 humberto     1.43 
 728                   	  throw XmlValidationError(parser.getLine(), mlParms);
 729 kumpf        1.37 	}
 730 mike         1.2  
 731 kumpf        1.37 	XmlReader::expectEndTag(parser, "IRETURNVALUE");
 732 mike         1.2  
 733                   	return(new CIMGetClassResponseMessage(
 734                   	    messageId,
 735 kumpf        1.12 	    cimException,
 736 mike         1.2  	    QueueIdStack(),
 737                   	    cimClass));
 738                       }
 739                       else
 740                       {
 741 humberto     1.43 
 742                         // l10n
 743                   
 744                         // throw XmlValidationError(parser.getLine(),
 745                         //   "expected ERROR or IRETURNVALUE element");
 746                   
 747 humberto     1.44       MessageLoaderParms mlParms("Client.CIMOperationResponseDecoder.EXPECTED_ERROR_OR_IRETURNVALUE_ELEMENT",
 748                   				 "expected ERROR or IRETURNVALUE element");
 749 humberto     1.43       
 750                         throw XmlValidationError(parser.getLine(), mlParms);
 751 mike         1.2      }
 752                   }
 753                   
 754                   CIMModifyClassResponseMessage* CIMOperationResponseDecoder::_decodeModifyClassResponse(
 755                       XmlParser& parser, const String& messageId)
 756                   {
 757                       XmlEntry entry;
 758 kumpf        1.12     CIMException cimException;
 759 mike         1.2  
 760 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
 761 mike         1.2      {
 762                   	return(new CIMModifyClassResponseMessage(
 763                   	    messageId,
 764 kumpf        1.12 	    cimException,
 765 mike         1.2  	    QueueIdStack()));
 766                       }
 767 kumpf        1.14     else
 768 mike         1.2      {
 769 kumpf        1.37 	if (XmlReader::testStartTagOrEmptyTag(parser, entry, "IRETURNVALUE"))
 770 kumpf        1.14 	{
 771 kumpf        1.37 	    if (entry.type != XmlEntry::EMPTY_TAG)
 772                   	    {
 773                   	        XmlReader::expectEndTag(parser, "IRETURNVALUE");
 774                   	    }
 775 kumpf        1.14 	}
 776 mike         1.2  
 777                   	return(new CIMModifyClassResponseMessage(
 778                   	    messageId,
 779 kumpf        1.12 	    cimException,
 780 mike         1.2  	    QueueIdStack()));
 781                       }
 782                   }
 783                   
 784                   CIMEnumerateClassNamesResponseMessage* CIMOperationResponseDecoder::_decodeEnumerateClassNamesResponse(
 785                       XmlParser& parser, const String& messageId)
 786                   {
 787                       XmlEntry entry;
 788 kumpf        1.12     CIMException cimException;
 789 mike         1.2  
 790 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
 791 mike         1.2      {
 792                   	return(new CIMEnumerateClassNamesResponseMessage(
 793                   	    messageId,
 794 kumpf        1.12 	    cimException,
 795 mike         1.2  	    QueueIdStack(),
 796 kumpf        1.34 	    Array<CIMName>()));
 797 mike         1.2      }
 798 kumpf        1.14     else
 799 mike         1.2      {
 800 kumpf        1.34 	Array<CIMName> classNames;
 801 mike         1.2  
 802 kumpf        1.37 	if (XmlReader::testStartTagOrEmptyTag(parser, entry, "IRETURNVALUE"))
 803 kumpf        1.14 	{
 804 kumpf        1.37 	    if (entry.type != XmlEntry::EMPTY_TAG)
 805                   	    {
 806                   	        CIMName className;
 807 kumpf        1.14 
 808 kumpf        1.37 	        while (XmlReader::getClassNameElement(parser, className, false))
 809                   	            classNames.append(className);
 810 mike         1.2  
 811 kumpf        1.37 	        XmlReader::expectEndTag(parser, "IRETURNVALUE");
 812                   	    }
 813 kumpf        1.14 	}
 814 mike         1.2  
 815                   	return(new CIMEnumerateClassNamesResponseMessage(
 816                   	    messageId,
 817 kumpf        1.12 	    cimException,
 818 mike         1.2  	    QueueIdStack(),
 819                   	    classNames));
 820                       }
 821                   }
 822                   
 823                   CIMEnumerateClassesResponseMessage* CIMOperationResponseDecoder::_decodeEnumerateClassesResponse(
 824                       XmlParser& parser, const String& messageId)
 825                   {
 826                       XmlEntry entry;
 827 kumpf        1.12     CIMException cimException;
 828 mike         1.2  
 829 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
 830 mike         1.2      {
 831                   	return(new CIMEnumerateClassesResponseMessage(
 832                   	    messageId,
 833 kumpf        1.12 	    cimException,
 834 mike         1.2  	    QueueIdStack(),
 835                   	    Array<CIMClass>()));
 836                       }
 837 kumpf        1.14     else
 838 mike         1.2      {
 839                   	Array<CIMClass> cimClasses;
 840                   
 841 kumpf        1.37 	if (XmlReader::testStartTagOrEmptyTag(parser, entry, "IRETURNVALUE"))
 842 kumpf        1.14 	{
 843 kumpf        1.37 	    if (entry.type != XmlEntry::EMPTY_TAG)
 844                   	    {
 845                   	        CIMClass cimClass;
 846 kumpf        1.14 
 847 kumpf        1.37 	        while (XmlReader::getClassElement(parser, cimClass))
 848                   	            cimClasses.append(cimClass);
 849 mike         1.2  
 850 kumpf        1.37 	        XmlReader::expectEndTag(parser, "IRETURNVALUE");
 851                   	    }
 852 kumpf        1.14 	}
 853 mike         1.2  
 854                   	return(new CIMEnumerateClassesResponseMessage(
 855                   	    messageId,
 856 kumpf        1.12 	    cimException,
 857 mike         1.2  	    QueueIdStack(),
 858                   	    cimClasses));
 859                       }
 860                   }
 861                   
 862                   CIMDeleteClassResponseMessage* CIMOperationResponseDecoder::_decodeDeleteClassResponse(
 863                       XmlParser& parser, const String& messageId)
 864                   {
 865                       XmlEntry entry;
 866 kumpf        1.12     CIMException cimException;
 867 mike         1.2  
 868 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
 869 mike         1.2      {
 870                   	return(new CIMDeleteClassResponseMessage(
 871                   	    messageId,
 872 kumpf        1.12 	    cimException,
 873 mike         1.2  	    QueueIdStack()));
 874                       }
 875 kumpf        1.14     else
 876 mike         1.2      {
 877 kumpf        1.37 	if (XmlReader::testStartTagOrEmptyTag(parser, entry, "IRETURNVALUE"))
 878 kumpf        1.14 	{
 879 kumpf        1.37 	    if (entry.type != XmlEntry::EMPTY_TAG)
 880                   	    {
 881                   	        XmlReader::expectEndTag(parser, "IRETURNVALUE");
 882                   	    }
 883 kumpf        1.14 	}
 884 mike         1.2  
 885                   	return(new CIMDeleteClassResponseMessage(
 886                   	    messageId,
 887 kumpf        1.12 	    cimException,
 888 mike         1.2  	    QueueIdStack()));
 889                       }
 890                   }
 891                   
 892                   CIMCreateInstanceResponseMessage* CIMOperationResponseDecoder::_decodeCreateInstanceResponse(
 893                       XmlParser& parser, const String& messageId)
 894                   {
 895                       XmlEntry entry;
 896 kumpf        1.12     CIMException cimException;
 897 mike         1.2  
 898 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
 899 mike         1.2      {
 900                   	return(new CIMCreateInstanceResponseMessage(
 901                   	    messageId,
 902 kumpf        1.12 	    cimException,
 903 mike         1.2  	    QueueIdStack(),
 904 kumpf        1.21 	    CIMObjectPath()));
 905 mike         1.2      }
 906                       else if (XmlReader::testStartTag(parser, entry, "IRETURNVALUE"))
 907                       {
 908 kumpf        1.21 	CIMObjectPath instanceName;
 909 mike         1.2  	XmlReader::getInstanceNameElement(parser, instanceName);
 910                   
 911 kumpf        1.37 	XmlReader::expectEndTag(parser, "IRETURNVALUE");
 912 mike         1.2  
 913                   	return(new CIMCreateInstanceResponseMessage(
 914                   	    messageId,
 915 kumpf        1.12 	    cimException,
 916 mike         1.2  	    QueueIdStack(),
 917                   	    instanceName));
 918                       }
 919                       else
 920                       {
 921 humberto     1.43 
 922                         // l10n
 923                   
 924                         // throw XmlValidationError(parser.getLine(),
 925                         //   "expected ERROR or IRETURNVALUE element");
 926                   
 927 humberto     1.44       MessageLoaderParms mlParms("Client.CIMOperationResponseDecoder.EXPECTED_ERROR_OR_IRETURNVALUE_ELEMENT",
 928                   				 "expected ERROR or IRETURNVALUE element");
 929 humberto     1.43       
 930                         throw XmlValidationError(parser.getLine(), mlParms);
 931 mike         1.2      }
 932                   }
 933                   
 934                   CIMGetInstanceResponseMessage* CIMOperationResponseDecoder::_decodeGetInstanceResponse(
 935                       XmlParser& parser, const String& messageId)
 936                   {
 937                       XmlEntry entry;
 938 kumpf        1.12     CIMException cimException;
 939 mike         1.2  
 940 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
 941 mike         1.2      {
 942                   	return(new CIMGetInstanceResponseMessage(
 943                   	    messageId,
 944 kumpf        1.12 	    cimException,
 945 mike         1.2  	    QueueIdStack(),
 946                   	    CIMInstance()));
 947                       }
 948 kumpf        1.37     else if (XmlReader::testStartTagOrEmptyTag(parser, entry, "IRETURNVALUE"))
 949 mike         1.2      {
 950                   	CIMInstance cimInstance;
 951                   
 952 kumpf        1.37 	if ((entry.type == XmlEntry::EMPTY_TAG) ||
 953                   	    !XmlReader::getInstanceElement(parser, cimInstance))
 954 mike         1.2  	{
 955 humberto     1.43 
 956                   	  // l10n
 957                   
 958                   	  // throw XmlValidationError(
 959                   	  // parser.getLine(), "expected INSTANCE element");
 960                   
 961 humberto     1.44 	  MessageLoaderParms mlParms("Client.CIMOperationResponseDecoder.EXPECTED_INSTANCE_ELEMENT",
 962                   				     "expected INSTANCE element");
 963 humberto     1.43 
 964                   	  throw XmlValidationError(parser.getLine(), mlParms);
 965 mike         1.2  	}
 966                   
 967 kumpf        1.37 	XmlReader::expectEndTag(parser, "IRETURNVALUE");
 968 mike         1.2  
 969                   	return(new CIMGetInstanceResponseMessage(
 970                   	    messageId,
 971 kumpf        1.12 	    cimException,
 972 mike         1.2  	    QueueIdStack(),
 973                   	    cimInstance));
 974                       }
 975                       else
 976                       {
 977 humberto     1.43 
 978                         // l10n
 979                   
 980                         // throw XmlValidationError(parser.getLine(),
 981                         //   "expected ERROR or IRETURNVALUE element");
 982                   
 983 humberto     1.44       MessageLoaderParms mlParms("Client.CIMOperationResponseDecoder.EXPECTED_ERROR_OR_IRETURNVALUE_ELEMENT",
 984                   				 "expected ERROR or IRETURNVALUE element");
 985 humberto     1.43       
 986                         throw XmlValidationError(parser.getLine(), mlParms);
 987 mike         1.2      }
 988                   }
 989                   
 990                   CIMModifyInstanceResponseMessage* CIMOperationResponseDecoder::_decodeModifyInstanceResponse(
 991                       XmlParser& parser, const String& messageId)
 992                   {
 993                       XmlEntry entry;
 994 kumpf        1.12     CIMException cimException;
 995 mike         1.2  
 996 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
 997 mike         1.2      {
 998                   	return(new CIMModifyInstanceResponseMessage(
 999                   	    messageId,
1000 kumpf        1.12 	    cimException,
1001 mike         1.2  	    QueueIdStack()));
1002                       }
1003 kumpf        1.14     else
1004 mike         1.2      {
1005 kumpf        1.37 	if (XmlReader::testStartTagOrEmptyTag(parser, entry, "IRETURNVALUE"))
1006 kumpf        1.14 	{
1007 kumpf        1.37 	    if (entry.type != XmlEntry::EMPTY_TAG)
1008                   	    {
1009                   	        XmlReader::expectEndTag(parser, "IRETURNVALUE");
1010                   	    }
1011 kumpf        1.14 	}
1012 mike         1.2  
1013                   	return(new CIMModifyInstanceResponseMessage(
1014                   	    messageId,
1015 kumpf        1.12 	    cimException,
1016 mike         1.2  	    QueueIdStack()));
1017                       }
1018                   }
1019                   
1020                   CIMEnumerateInstanceNamesResponseMessage* CIMOperationResponseDecoder::_decodeEnumerateInstanceNamesResponse(
1021                       XmlParser& parser, const String& messageId)
1022                   {
1023                       XmlEntry entry;
1024 kumpf        1.12     CIMException cimException;
1025 mike         1.2  
1026 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
1027 mike         1.2      {
1028                   	return(new CIMEnumerateInstanceNamesResponseMessage(
1029                   	    messageId,
1030 kumpf        1.12 	    cimException,
1031 mike         1.2  	    QueueIdStack(),
1032 kumpf        1.21 	    Array<CIMObjectPath>()));
1033 mike         1.2      }
1034 kumpf        1.14     else
1035 mike         1.2      {
1036 kumpf        1.21 	Array<CIMObjectPath> instanceNames;
1037 mike         1.2  
1038 kumpf        1.37 	if (XmlReader::testStartTagOrEmptyTag(parser, entry, "IRETURNVALUE"))
1039 mike         1.2  	{
1040 kumpf        1.37 	    if (entry.type != XmlEntry::EMPTY_TAG)
1041                   	    {
1042                   	        String className;
1043                   	        Array<CIMKeyBinding> keyBindings;
1044 kumpf        1.14 
1045 kumpf        1.37 	        while (XmlReader::getInstanceNameElement(
1046                   	            parser, className, keyBindings))
1047                   	        {
1048                   	            CIMObjectPath r(
1049                   		        String::EMPTY,
1050 kumpf        1.45 		        CIMNamespaceName(),
1051 kumpf        1.37 		        className,
1052                   		        keyBindings);
1053                   	            instanceNames.append(r);
1054                   	        }
1055                   
1056                   	        XmlReader::expectEndTag(parser, "IRETURNVALUE");
1057 kumpf        1.14 	    }
1058 mike         1.2  	}
1059                   
1060                   	return(new CIMEnumerateInstanceNamesResponseMessage(
1061                   	    messageId,
1062 kumpf        1.12 	    cimException,
1063 mike         1.2  	    QueueIdStack(),
1064                   	    instanceNames));
1065                       }
1066                   }
1067                   
1068                   CIMEnumerateInstancesResponseMessage* CIMOperationResponseDecoder::_decodeEnumerateInstancesResponse(
1069                       XmlParser& parser, const String& messageId)
1070                   {
1071                       XmlEntry entry;
1072 kumpf        1.12     CIMException cimException;
1073 mike         1.2  
1074 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
1075 mike         1.2      {
1076                   	return(new CIMEnumerateInstancesResponseMessage(
1077                   	    messageId,
1078 kumpf        1.12 	    cimException,
1079 mike         1.2  	    QueueIdStack(),
1080 kumpf        1.23 	    Array<CIMInstance>()));
1081 mike         1.2      }
1082 kumpf        1.14     else
1083 mike         1.2      {
1084 kumpf        1.23 	Array<CIMInstance> namedInstances;
1085 mike         1.2  
1086 kumpf        1.37 	if (XmlReader::testStartTagOrEmptyTag(parser, entry, "IRETURNVALUE"))
1087 kumpf        1.14 	{
1088 kumpf        1.37 	    if (entry.type != XmlEntry::EMPTY_TAG)
1089                   	    {
1090                   	        CIMInstance namedInstance;
1091 mike         1.2  
1092 kumpf        1.37 	        while (XmlReader::getNamedInstanceElement(
1093                   	                   parser, namedInstance))
1094                   	        {
1095                   	            namedInstances.append(namedInstance);
1096                   	        }
1097 kumpf        1.14 
1098 kumpf        1.37 	        XmlReader::expectEndTag(parser, "IRETURNVALUE");
1099                   	    }
1100 kumpf        1.14 	}
1101 mike         1.2  
1102                   	return(new CIMEnumerateInstancesResponseMessage(
1103                   	    messageId,
1104 kumpf        1.12 	    cimException,
1105 mike         1.2  	    QueueIdStack(),
1106                   	    namedInstances));
1107                       }
1108                   }
1109                   
1110                   CIMDeleteInstanceResponseMessage* CIMOperationResponseDecoder::_decodeDeleteInstanceResponse(
1111                       XmlParser& parser, const String& messageId)
1112                   {
1113                       XmlEntry entry;
1114 kumpf        1.12     CIMException cimException;
1115 mike         1.2  
1116 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
1117 mike         1.2      {
1118                   	return(new CIMDeleteInstanceResponseMessage(
1119                   	    messageId,
1120 kumpf        1.12 	    cimException,
1121 mike         1.2  	    QueueIdStack()));
1122                       }
1123 kumpf        1.14     else
1124 mike         1.2      {
1125 kumpf        1.37 	if (XmlReader::testStartTagOrEmptyTag(parser, entry, "IRETURNVALUE"))
1126 kumpf        1.14 	{
1127 kumpf        1.37 	    if (entry.type != XmlEntry::EMPTY_TAG)
1128                   	    {
1129                   	        XmlReader::expectEndTag(parser, "IRETURNVALUE");
1130                   	    }
1131 kumpf        1.14 	}
1132 mike         1.2  
1133                   	return(new CIMDeleteInstanceResponseMessage(
1134                   	    messageId,
1135 kumpf        1.12 	    cimException,
1136 mike         1.2  	    QueueIdStack()));
1137                       }
1138                   }
1139                   
1140                   CIMGetPropertyResponseMessage* CIMOperationResponseDecoder::_decodeGetPropertyResponse(
1141                       XmlParser& parser, const String& messageId)
1142                   {
1143                       XmlEntry entry;
1144 kumpf        1.12     CIMException cimException;
1145 mike         1.2  
1146 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
1147 mike         1.2      {
1148                   	return(new CIMGetPropertyResponseMessage(
1149                   	    messageId,
1150 kumpf        1.12 	    cimException,
1151 mike         1.2  	    QueueIdStack(),
1152                   	    CIMValue()));
1153                       }
1154 kumpf        1.14     else
1155 mike         1.2      {
1156 kumpf        1.26 	CIMValue cimValue(CIMTYPE_STRING, false);
1157 kumpf        1.14 
1158 kumpf        1.37 	if (XmlReader::testStartTagOrEmptyTag(parser, entry, "IRETURNVALUE"))
1159 kumpf        1.14 	{
1160 kumpf        1.37 	    if (entry.type != XmlEntry::EMPTY_TAG)
1161 kumpf        1.14 	    {
1162 kumpf        1.37 	        if (!XmlReader::getPropertyValue(parser, cimValue))
1163                   	        {
1164                                       // No value given; just return a null String value
1165                   	        }
1166                   
1167                   	        XmlReader::expectEndTag(parser, "IRETURNVALUE");
1168 kumpf        1.14 	    }
1169                   	}
1170                   	else
1171 mike         1.2  	{
1172 kumpf        1.14             // No value given; just return a null String value
1173 mike         1.2  	}
1174                   
1175                   	return(new CIMGetPropertyResponseMessage(
1176                   	    messageId,
1177 kumpf        1.12 	    cimException,
1178 mike         1.2  	    QueueIdStack(),
1179                   	    cimValue));
1180                       }
1181                   }
1182                   
1183                   CIMSetPropertyResponseMessage* CIMOperationResponseDecoder::_decodeSetPropertyResponse(
1184                       XmlParser& parser, const String& messageId)
1185                   {
1186                       XmlEntry entry;
1187 kumpf        1.12     CIMException cimException;
1188 mike         1.2  
1189 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
1190 mike         1.2      {
1191                   	return(new CIMSetPropertyResponseMessage(
1192                   	    messageId,
1193 kumpf        1.12 	    cimException,
1194 mike         1.2  	    QueueIdStack()));
1195                       }
1196 kumpf        1.14     else
1197 mike         1.2      {
1198 kumpf        1.37 	if (XmlReader::testStartTagOrEmptyTag(parser, entry, "IRETURNVALUE"))
1199 kumpf        1.14 	{
1200 kumpf        1.37 	    if (entry.type != XmlEntry::EMPTY_TAG)
1201                   	    {
1202                   	        XmlReader::expectEndTag(parser, "IRETURNVALUE");
1203                   	    }
1204 kumpf        1.14 	}
1205 mike         1.2  
1206                   	return(new CIMSetPropertyResponseMessage(
1207                   	    messageId,
1208 kumpf        1.12 	    cimException,
1209 mike         1.2  	    QueueIdStack()));
1210                       }
1211                   }
1212                   
1213                   CIMSetQualifierResponseMessage* CIMOperationResponseDecoder::_decodeSetQualifierResponse(
1214                       XmlParser& parser, const String& messageId)
1215                   {
1216                       XmlEntry entry;
1217 kumpf        1.12     CIMException cimException;
1218 mike         1.2  
1219 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
1220 mike         1.2      {
1221                   	return(new CIMSetQualifierResponseMessage(
1222                   	    messageId,
1223 kumpf        1.12 	    cimException,
1224 mike         1.2  	    QueueIdStack()));
1225                       }
1226 kumpf        1.14     else
1227 mike         1.2      {
1228 kumpf        1.37 	if (XmlReader::testStartTagOrEmptyTag(parser, entry, "IRETURNVALUE"))
1229 kumpf        1.14 	{
1230 kumpf        1.37 	    if (entry.type != XmlEntry::EMPTY_TAG)
1231                   	    {
1232                   	        XmlReader::expectEndTag(parser, "IRETURNVALUE");
1233                   	    }
1234 kumpf        1.14 	}
1235 mike         1.2  
1236                   	return(new CIMSetQualifierResponseMessage(
1237                   	    messageId,
1238 kumpf        1.12 	    cimException,
1239 mike         1.2  	    QueueIdStack()));
1240                       }
1241                   }
1242                   
1243                   CIMGetQualifierResponseMessage* CIMOperationResponseDecoder::_decodeGetQualifierResponse(
1244                       XmlParser& parser, const String& messageId)
1245                   {
1246                       XmlEntry entry;
1247 kumpf        1.12     CIMException cimException;
1248 mike         1.2  
1249 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
1250 mike         1.2      {
1251                   	return(new CIMGetQualifierResponseMessage(
1252                   	    messageId,
1253 kumpf        1.12 	    cimException,
1254 mike         1.2  	    QueueIdStack(),
1255                   	    CIMQualifierDecl()));
1256                       }
1257                       else if (XmlReader::testStartTag(parser, entry, "IRETURNVALUE"))
1258                       {
1259                   	CIMQualifierDecl qualifierDecl;
1260                   	XmlReader::getQualifierDeclElement(parser, qualifierDecl);
1261                   
1262 kumpf        1.37 	XmlReader::expectEndTag(parser, "IRETURNVALUE");
1263 mike         1.2  
1264                   	return(new CIMGetQualifierResponseMessage(
1265                   	    messageId,
1266 kumpf        1.12 	    cimException,
1267 mike         1.2  	    QueueIdStack(),
1268                   	    qualifierDecl));
1269                       }
1270                       else
1271                       {
1272 humberto     1.43 
1273                         // l10n
1274                   
1275                         // throw XmlValidationError(parser.getLine(),
1276                         //   "expected ERROR or IRETURNVALUE element");
1277                   
1278 humberto     1.44       MessageLoaderParms mlParms("Client.CIMOperationResponseDecoder.EXPECTED_ERROR_OR_IRETURNVALUE_ELEMENT",
1279                   				 "expected ERROR or IRETURNVALUE element");
1280 humberto     1.43       
1281                         throw XmlValidationError(parser.getLine(), mlParms);
1282 mike         1.2      }
1283                   }
1284                   
1285                   CIMEnumerateQualifiersResponseMessage* CIMOperationResponseDecoder::_decodeEnumerateQualifiersResponse(
1286                       XmlParser& parser, const String& messageId)
1287                   {
1288                       XmlEntry entry;
1289 kumpf        1.12     CIMException cimException;
1290 mike         1.2  
1291 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
1292 mike         1.2      {
1293                   	return(new CIMEnumerateQualifiersResponseMessage(
1294                   	    messageId,
1295 kumpf        1.12 	    cimException,
1296 mike         1.2  	    QueueIdStack(),
1297                   	    Array<CIMQualifierDecl>()));
1298                       }
1299 kumpf        1.14     else
1300 mike         1.2      {
1301                   	Array<CIMQualifierDecl> qualifierDecls;
1302                   
1303 kumpf        1.37 	if (XmlReader::testStartTagOrEmptyTag(parser, entry, "IRETURNVALUE"))
1304 kumpf        1.14 	{
1305 kumpf        1.37 	    if (entry.type != XmlEntry::EMPTY_TAG)
1306                   	    {
1307                   	        CIMQualifierDecl qualifierDecl;
1308 kumpf        1.14 
1309 kumpf        1.37 	        while (XmlReader::getQualifierDeclElement(
1310                   	                   parser, qualifierDecl))
1311                   	        {
1312                   	            qualifierDecls.append(qualifierDecl);
1313                   	        }
1314 mike         1.2  
1315 kumpf        1.37 	        XmlReader::expectEndTag(parser, "IRETURNVALUE");
1316                   	    }
1317 kumpf        1.14 	}
1318 mike         1.2  
1319                   	return(new CIMEnumerateQualifiersResponseMessage(
1320                   	    messageId,
1321 kumpf        1.12 	    cimException,
1322 mike         1.2  	    QueueIdStack(),
1323                   	    qualifierDecls));
1324                       }
1325                   }
1326                   
1327                   CIMDeleteQualifierResponseMessage* CIMOperationResponseDecoder::_decodeDeleteQualifierResponse(
1328                       XmlParser& parser, const String& messageId)
1329                   {
1330                       XmlEntry entry;
1331 kumpf        1.12     CIMException cimException;
1332 mike         1.2  
1333 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
1334 mike         1.2      {
1335                   	return(new CIMDeleteQualifierResponseMessage(
1336                   	    messageId,
1337 kumpf        1.12 	    cimException,
1338 mike         1.2  	    QueueIdStack()));
1339                       }
1340 kumpf        1.14     else
1341 mike         1.2      {
1342 kumpf        1.37 	if (XmlReader::testStartTagOrEmptyTag(parser, entry, "IRETURNVALUE"))
1343 kumpf        1.14 	{
1344 kumpf        1.37 	    if (entry.type != XmlEntry::EMPTY_TAG)
1345                   	    {
1346                   	        XmlReader::expectEndTag(parser, "IRETURNVALUE");
1347                   	    }
1348 kumpf        1.14 	}
1349 mike         1.2  
1350                   	return(new CIMDeleteQualifierResponseMessage(
1351                   	    messageId,
1352 kumpf        1.12 	    cimException,
1353 mike         1.2  	    QueueIdStack()));
1354                       }
1355                   }
1356                   
1357                   //MEB:
1358                   
1359                   CIMReferenceNamesResponseMessage* CIMOperationResponseDecoder::_decodeReferenceNamesResponse(
1360                       XmlParser& parser, const String& messageId)
1361                   {
1362                       XmlEntry entry;
1363 kumpf        1.12     CIMException cimException;
1364 mike         1.2  
1365 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
1366 mike         1.2      {
1367                   	return(new CIMReferenceNamesResponseMessage(
1368                   	    messageId,
1369 kumpf        1.12 	    cimException,
1370 mike         1.2  	    QueueIdStack(),
1371 kumpf        1.21 	    Array<CIMObjectPath>()));
1372 mike         1.2      }
1373 kumpf        1.14     else
1374 mike         1.2      {
1375 kumpf        1.21 	Array<CIMObjectPath> objectPaths;
1376 mike         1.2  
1377 kumpf        1.37 	if (XmlReader::testStartTagOrEmptyTag(parser, entry, "IRETURNVALUE"))
1378 kumpf        1.14 	{
1379 kumpf        1.37 	    if (entry.type != XmlEntry::EMPTY_TAG)
1380                   	    {
1381                   	        CIMObjectPath objectPath;
1382 kumpf        1.14 
1383 kumpf        1.37 	        while (XmlReader::getObjectPathElement(parser, objectPath))
1384                   	            objectPaths.append(objectPath);
1385 mike         1.2  
1386 kumpf        1.37 	        XmlReader::expectEndTag(parser, "IRETURNVALUE");
1387                   	    }
1388 kumpf        1.14 	}
1389 mike         1.2  
1390                   	return(new CIMReferenceNamesResponseMessage(
1391                   	    messageId,
1392 kumpf        1.12 	    cimException,
1393 mike         1.2  	    QueueIdStack(),
1394                   	    objectPaths));
1395                       }
1396                   }
1397                   
1398                   CIMReferencesResponseMessage* CIMOperationResponseDecoder::_decodeReferencesResponse(
1399                       XmlParser& parser, const String& messageId)
1400                   {
1401                       XmlEntry entry;
1402 kumpf        1.12     CIMException cimException;
1403 mike         1.2  
1404 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
1405 mike         1.2      {
1406                   	return(new CIMReferencesResponseMessage(
1407                   	    messageId,
1408 kumpf        1.12 	    cimException,
1409 mike         1.2  	    QueueIdStack(),
1410 kumpf        1.24 	    Array<CIMObject>()));
1411 mike         1.2      }
1412 kumpf        1.14     else
1413 mike         1.2      {
1414 kumpf        1.24 	Array<CIMObject> objectWithPathArray;
1415 mike         1.2  
1416 kumpf        1.37 	if (XmlReader::testStartTagOrEmptyTag(parser, entry, "IRETURNVALUE"))
1417 kumpf        1.14 	{
1418 kumpf        1.37 	    if (entry.type != XmlEntry::EMPTY_TAG)
1419                   	    {
1420                   	        CIMObject objectWithPath;
1421 kumpf        1.14 
1422 kumpf        1.37 	        while (XmlReader::getValueObjectWithPathElement(
1423                   	                   parser, objectWithPath))
1424                   	        {
1425                   	            objectWithPathArray.append(objectWithPath);
1426                   	        }
1427 mike         1.2  
1428 kumpf        1.37 	        XmlReader::expectEndTag(parser, "IRETURNVALUE");
1429                   	    }
1430 kumpf        1.14 	}
1431 mike         1.2  
1432                   	return(new CIMReferencesResponseMessage(
1433                   	    messageId,
1434 kumpf        1.12 	    cimException,
1435 mike         1.2  	    QueueIdStack(),
1436                   	    objectWithPathArray));
1437                       }
1438                   }
1439                   
1440                   CIMAssociatorNamesResponseMessage* CIMOperationResponseDecoder::_decodeAssociatorNamesResponse(
1441                       XmlParser& parser, const String& messageId)
1442                   {
1443                       XmlEntry entry;
1444 kumpf        1.12     CIMException cimException;
1445 mike         1.2  
1446 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
1447 mike         1.2      {
1448                   	return(new CIMAssociatorNamesResponseMessage(
1449                   	    messageId,
1450 kumpf        1.12 	    cimException,
1451 mike         1.2  	    QueueIdStack(),
1452 kumpf        1.21 	    Array<CIMObjectPath>()));
1453 mike         1.2      }
1454 kumpf        1.14     else
1455 mike         1.2      {
1456 kumpf        1.21 	Array<CIMObjectPath> objectPaths;
1457 mike         1.2  
1458 kumpf        1.37 	if (XmlReader::testStartTagOrEmptyTag(parser, entry, "IRETURNVALUE"))
1459 kumpf        1.14 	{
1460 kumpf        1.37 	    if (entry.type != XmlEntry::EMPTY_TAG)
1461                   	    {
1462                   	        CIMObjectPath objectPath;
1463 kumpf        1.14 
1464 kumpf        1.37 	        while (XmlReader::getObjectPathElement(parser, objectPath))
1465                   	            objectPaths.append(objectPath);
1466 mike         1.2  
1467 kumpf        1.37 	        XmlReader::expectEndTag(parser, "IRETURNVALUE");
1468                   	    }
1469 kumpf        1.14 	}
1470 mike         1.2  
1471                   	return(new CIMAssociatorNamesResponseMessage(
1472                   	    messageId,
1473 kumpf        1.12 	    cimException,
1474 mike         1.2  	    QueueIdStack(),
1475                   	    objectPaths));
1476                       }
1477                   }
1478                   
1479                   CIMAssociatorsResponseMessage* CIMOperationResponseDecoder::_decodeAssociatorsResponse(
1480                       XmlParser& parser, const String& messageId)
1481                   {
1482                       XmlEntry entry;
1483 kumpf        1.12     CIMException cimException;
1484 mike         1.2  
1485 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
1486 mike         1.2      {
1487                   	return(new CIMAssociatorsResponseMessage(
1488                   	    messageId,
1489 kumpf        1.12 	    cimException,
1490 mike         1.2  	    QueueIdStack(),
1491 kumpf        1.24 	    Array<CIMObject>()));
1492 mike         1.2      }
1493 kumpf        1.14     else
1494 mike         1.2      {
1495 kumpf        1.24 	Array<CIMObject> objectWithPathArray;
1496 mike         1.2  
1497 kumpf        1.37 	if (XmlReader::testStartTagOrEmptyTag(parser, entry, "IRETURNVALUE"))
1498 kumpf        1.14 	{
1499 kumpf        1.37 	    if (entry.type != XmlEntry::EMPTY_TAG)
1500                   	    {
1501                   	        CIMObject objectWithPath;
1502 mike         1.2  
1503 kumpf        1.37 	        while (XmlReader::getValueObjectWithPathElement(
1504                   	                   parser, objectWithPath))
1505                   	        {
1506                   	            objectWithPathArray.append(objectWithPath);
1507                   	        }
1508 kumpf        1.14 
1509 kumpf        1.37 	        XmlReader::expectEndTag(parser, "IRETURNVALUE");
1510                   	    }
1511 kumpf        1.14 	}
1512 mike         1.2  
1513                   	return(new CIMAssociatorsResponseMessage(
1514 kumpf        1.10 	    messageId,
1515 kumpf        1.12 	    cimException,
1516 kumpf        1.10 	    QueueIdStack(),
1517                   	    objectWithPathArray));
1518                       }
1519                   }
1520                   
1521                   CIMExecQueryResponseMessage* CIMOperationResponseDecoder::_decodeExecQueryResponse(
1522                       XmlParser& parser, const String& messageId)
1523                   {
1524                       XmlEntry entry;
1525 kumpf        1.12     CIMException cimException;
1526 kumpf        1.10 
1527 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
1528 kumpf        1.10     {
1529                   	return(new CIMExecQueryResponseMessage(
1530                   	    messageId,
1531 kumpf        1.12 	    cimException,
1532 kumpf        1.10 	    QueueIdStack(),
1533 kumpf        1.24 	    Array<CIMObject>()));
1534 kumpf        1.10     }
1535 kumpf        1.14     else
1536 kumpf        1.10     {
1537 kumpf        1.24 	Array<CIMObject> objectWithPathArray;
1538 kumpf        1.10 
1539 kumpf        1.37 	if (XmlReader::testStartTagOrEmptyTag(parser, entry, "IRETURNVALUE"))
1540 kumpf        1.14 	{
1541 kumpf        1.37 	    if (entry.type != XmlEntry::EMPTY_TAG)
1542                   	    {
1543                                   XmlReader::getObjectArray(parser, objectWithPathArray);
1544 kumpf        1.10 
1545 kumpf        1.37 	        XmlReader::expectEndTag(parser, "IRETURNVALUE");
1546                   	    }
1547 kumpf        1.14 	}
1548 kumpf        1.10 
1549                   	return(new CIMExecQueryResponseMessage(
1550 mike         1.2  	    messageId,
1551 kumpf        1.12 	    cimException,
1552 mike         1.2  	    QueueIdStack(),
1553                   	    objectWithPathArray));
1554                       }
1555                   }
1556                   
1557                   CIMInvokeMethodResponseMessage* CIMOperationResponseDecoder::_decodeInvokeMethodResponse(
1558                       XmlParser& parser, const String& messageId, const String& methodName)
1559                   {
1560                       XmlEntry entry;
1561 kumpf        1.12     CIMException cimException;
1562 mike         1.2  
1563 kumpf        1.5      CIMParamValue paramValue;
1564                       Array<CIMParamValue> outParameters;
1565 kumpf        1.6      CIMValue returnValue;
1566 mike         1.2      const char* paramName;
1567                       String inValue;
1568                   
1569 kumpf        1.12     if (XmlReader::getErrorElement(parser, cimException))
1570 mike         1.2      {
1571                   	return(new CIMInvokeMethodResponseMessage(
1572                   	    messageId,
1573 kumpf        1.12 	    cimException,
1574 mike         1.2  	    QueueIdStack(),
1575 kumpf        1.6  	    returnValue,
1576 mike         1.2  	    outParameters,
1577                   	    methodName));
1578                       }
1579 kumpf        1.4      else
1580 mike         1.2      {
1581 kumpf        1.4          Boolean isReturnValue = false;
1582                           Boolean isParamValue = false;
1583                           Boolean gotReturnValue = false;
1584                   
1585                           while ((isReturnValue =
1586 kumpf        1.6                      XmlReader::getReturnValueElement(parser, returnValue)) ||
1587 kumpf        1.5                 (isParamValue =
1588                   		    XmlReader::getParamValueElement(parser, paramValue)))
1589 kumpf        1.4          {
1590                               if (isReturnValue)
1591                               {
1592                                   if (gotReturnValue)
1593                                   {
1594 humberto     1.43 
1595                   		  // l10n
1596                   
1597                   		  // throw XmlValidationError(parser.getLine(),
1598                   		  //   "unexpected RETURNVALUE element");
1599                   
1600 humberto     1.44 		  MessageLoaderParms mlParms("Client.CIMOperationResponseDecoder.EXPECTED_RETURNVALUE_ELEMENT",
1601 humberto     1.46 					     "unexpected RETURNVALUE element");
1602 humberto     1.43 		  
1603                   		  throw XmlValidationError(parser.getLine(), mlParms);
1604 kumpf        1.4                  }
1605                                   gotReturnValue = true;
1606                               }
1607                               else    // isParamValue == true
1608                               {
1609 kumpf        1.5  	        outParameters.append(paramValue);
1610 kumpf        1.4              }
1611                   
1612                               isReturnValue = false;
1613                               isParamValue = false;
1614                           }
1615                   
1616 mike         1.2  	return(new CIMInvokeMethodResponseMessage(
1617                   	    messageId,
1618 kumpf        1.12 	    cimException,
1619 mike         1.2  	    QueueIdStack(),
1620 kumpf        1.6  	    returnValue,
1621 mike         1.2  	    outParameters,
1622                   	    methodName));
1623                       }
1624                   }
1625                   
1626                   PEGASUS_NAMESPACE_END

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2