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

Diff for /pegasus/src/Pegasus/Common/XmlReader.cpp between version 1.84.6.1 and 1.116.2.1

version 1.84.6.1, 2003/08/13 19:39:51 version 1.116.2.1, 2006/03/10 20:43:44
Line 1 
Line 1 
 //%/////////////////////////////////////////////////////////////////////////////  //%2006////////////////////////////////////////////////////////////////////////
 // //
 // Copyright (c) 2000, 2001, 2002 BMC Software, Hewlett-Packard Company, IBM,  // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
 // The Open Group, Tivoli Systems  // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
   // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
   // IBM Corp.; EMC Corporation, The Open Group.
   // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
   // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
   // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
   // EMC Corporation; VERITAS Software Corporation; The Open Group.
   // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
   // EMC Corporation; Symantec Corporation; The Open Group.
 // //
 // Permission is hereby granted, free of charge, to any person obtaining a copy // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to // of this software and associated documentation files (the "Software"), to
Line 27 
Line 35 
 //                  (carolann_graves@hp.com) //                  (carolann_graves@hp.com)
 //              Nitin Upasani, Hewlett-Packard Company (Nitin_Upasani@hp.com) //              Nitin Upasani, Hewlett-Packard Company (Nitin_Upasani@hp.com)
 //              Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com) //              Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
   //              Sean Keenan, Hewlett-Packard Company (sean.keenan@hp.com)
   //              Josephine Eskaline Joyce, IBM (jojustin@in.ibm.com) for Bug#3103
 // //
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
 #include <Pegasus/Common/Config.h> #include <Pegasus/Common/Config.h>
 #include <cctype> #include <cctype>
 #include <cstdio> #include <cstdio>
 #include <cstdlib> #include <cstdlib>
 #if defined(PEGASUS_OS_TYPE_UNIX)  #if defined(PEGASUS_OS_TYPE_UNIX) || defined(PEGASUS_OS_VMS)
 #include <errno.h> #include <errno.h>
 #endif #endif
 #include "CIMName.h" #include "CIMName.h"
Line 46 
Line 56 
 #include "CIMObject.h" #include "CIMObject.h"
 #include "CIMParamValue.h" #include "CIMParamValue.h"
 #include "System.h" #include "System.h"
   #include "XmlConstants.h"
 #ifdef PEGASUS_PLATFORM_OS400_ISERIES_IBM #ifdef PEGASUS_PLATFORM_OS400_ISERIES_IBM
 #include "OS400ConvertChar.h" #include "OS400ConvertChar.h"
 #endif #endif
 // l10n // l10n
 #include <Pegasus/Common/MessageLoader.h> #include <Pegasus/Common/MessageLoader.h>
   #include <Pegasus/Common/AutoPtr.h>
   #include "CIMNameUnchecked.h"
  
 #define PEGASUS_SINT64_MIN (PEGASUS_SINT64_LITERAL(0x8000000000000000)) #define PEGASUS_SINT64_MIN (PEGASUS_SINT64_LITERAL(0x8000000000000000))
 #define PEGASUS_UINT64_MAX PEGASUS_UINT64_LITERAL(0xFFFFFFFFFFFFFFFF) #define PEGASUS_UINT64_MAX PEGASUS_UINT64_LITERAL(0xFFFFFFFFFFFFFFFF)
Line 86 
Line 99 
       //   "Expected <?xml ... ?> style declaration");       //   "Expected <?xml ... ?> style declaration");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_XML_STYLE",       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_XML_STYLE",
                                  "Expected $0 style declaration",                                   "Expected <?xml ... ?> style declaration");
                                  "<?xml ... ?>");  
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
  
Line 100 
Line 112 
       // throw XmlValidationError(       // throw XmlValidationError(
       //   parser.getLine(), "missing xml.version attribute");       //   parser.getLine(), "missing xml.version attribute");
  
       MessageLoaderParms mlParms("Common.XmlReader.MISSING_ATTRIBUTE",        MessageLoaderParms mlParms("Common.XmlReader.MISSING_XML_ATTRIBUTE",
                                  "missing $0 attribute",                                   "missing xml.version attribute");
                                  "xml.version");  
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
     }     }
Line 244 
Line 255 
       //               "Expected content of CDATA");       //               "Expected content of CDATA");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_CDATA",       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_CDATA",
                                  "Expected content of $0", "CDATA");                                   "Expected content of CDATA");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
  
Line 321 
Line 332 
  
 //------------------------------------------------------------------------------ //------------------------------------------------------------------------------
 // //
   // testStartTagOrEmptyTag()
   //
   //------------------------------------------------------------------------------
   
   Boolean XmlReader::testStartTagOrEmptyTag(
       XmlParser& parser,
       XmlEntry& entry)
   {
       if (!parser.next(entry) ||
           (entry.type != XmlEntry::START_TAG &&
            entry.type != XmlEntry::EMPTY_TAG))
       {
           parser.putBack(entry);
           return false;
       }
   
       return true;
   }
   
   //------------------------------------------------------------------------------
   //
 // testContentOrCData() // testContentOrCData()
 // //
 //------------------------------------------------------------------------------ //------------------------------------------------------------------------------
Line 366 
Line 398 
       // throw XmlValidationError(       // throw XmlValidationError(
       //   parser.getLine(), "missing CIM.CIMVERSION attribute");       //   parser.getLine(), "missing CIM.CIMVERSION attribute");
  
       MessageLoaderParms mlParms("Common.XmlReader.MISSING_ATTRIBUTE",        MessageLoaderParms mlParms("Common.XmlReader.MISSING_CIMVERSION_ATTRIBUTE",
                                  "missing $0 attribute",                                   "missing CIM.CIMVERSION attribute");
                                  "CIM.CIMVERSION");  
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
     }     }
Line 380 
Line 411 
       // throw XmlValidationError(       // throw XmlValidationError(
       //   parser.getLine(), "missing CIM.DTDVERSION attribute");       //   parser.getLine(), "missing CIM.DTDVERSION attribute");
  
       MessageLoaderParms mlParms("Common.XmlReader.MISSING_ATTRIBUTE",        MessageLoaderParms mlParms("Common.XmlReader.MISSING_DTDVERSION_ATTRIBUTE",
                                  "missing $0 attribute",                                   "missing CIM.DTDVERSION attribute");
                                  "CIM.DTDVERSION");  
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
     }     }
Line 450 
Line 480 
  
 #endif #endif
     }     }
     return CIMName (name);      return CIMNameUnchecked(name);
 } }
  
 //------------------------------------------------------------------------------ //------------------------------------------------------------------------------
Line 530 
Line 560 
     if (!entry.getAttributeValue("CLASSORIGIN", name))     if (!entry.getAttributeValue("CLASSORIGIN", name))
         return CIMName();         return CIMName();
  
     // KS 200209 This may be temp but we are adding test for form  
     // CLASSNAME = "" for Wbemservices interoperability.  Returns same  
     // as if attribute did not exist.  
     if (name.size() == 0)  
         return CIMName();  
   
     if (!CIMName::legal(name))     if (!CIMName::legal(name))
     {     {
       // l10n       // l10n
Line 560 
Line 584 
  
 //------------------------------------------------------------------------------ //------------------------------------------------------------------------------
 // //
   // getEmbeddedObjectAttribute()
   //
   //     <!ENTITY % EmbeddedObject "EMBEDDEDOBJECT (object | instance) #IMPLIED">
   //
   //------------------------------------------------------------------------------
   
   String XmlReader::getEmbeddedObjectAttribute(
       Uint32 lineNumber,
       const XmlEntry& entry,
       const char* elementName)
   {
       String embeddedObject;
   
       if (!entry.getAttributeValue("EMBEDDEDOBJECT", embeddedObject))
           return String();
   
       // The embeddedObject attribute, if present, must have the string
       // value "object" or "instance".
       if (!(String::equal(embeddedObject, "object") ||
             String::equal(embeddedObject, "instance")
             )
           )
       {
         // l10n
   
         // char buffer[MESSAGE_SIZE];
         // sprintf(buffer,
         //   "Illegal value for %s.EMBEDDEDOBJECT attribute", elementName);
         // throw XmlSemanticError(lineNumber, buffer);
   
         char buffer[MESSAGE_SIZE];
         sprintf(buffer, "%s.EMBEDDEDOBJECT", elementName);
   
         MessageLoaderParms mlParms("Common.XmlReader.ILLEGAL_VALUE_FOR_ATTRIBUTE",
                                    "Illegal value for $0 attribute",
                                    buffer);
   
         throw XmlSemanticError(lineNumber, mlParms);
   
       }
   
       return embeddedObject;
   }
   
   //------------------------------------------------------------------------------
   //
 // getReferenceClassAttribute() // getReferenceClassAttribute()
 // //
 //     <!ENTITY % ReferenceClass "REFERENCECLASS CDATA #IMPLIED"> //     <!ENTITY % ReferenceClass "REFERENCECLASS CDATA #IMPLIED">
Line 732 
Line 802 
         type = CIMTYPE_REAL64;         type = CIMTYPE_REAL64;
     else if (strcmp(typeName, "reference") == 0)     else if (strcmp(typeName, "reference") == 0)
         type = CIMTYPE_REFERENCE;         type = CIMTYPE_REFERENCE;
   //  PEP 194:
   //  Note that "object" (ie. CIMTYPE_OBJECT) is not a real CIM datatype, just a
   //  Pegasus internal representation of an embedded object, so it won't be found here.
     else unrecognizedType = true;     else unrecognizedType = true;
  
     if (unrecognizedType ||     if (unrecognizedType ||
Line 905 
Line 978 
     return true;     return true;
 } }
  
 inline Uint8 _hexCharToNumeric(const char c)  inline Uint8 _xmlReader_hexCharToNumeric(const char c)
 { {
     Uint8 n;     Uint8 n;
  
Line 920 
Line 993 
 } }
  
 // See http://www.ietf.org/rfc/rfc2396.txt section 2 // See http://www.ietf.org/rfc/rfc2396.txt section 2
   //
   // Also see the "CIM Operations over HTTP" spec, section 3.3.2 and
   // 3.3.3, for the treatment of non US-ASCII chars (UTF-8)
 String XmlReader::decodeURICharacters(String uriString) String XmlReader::decodeURICharacters(String uriString)
 { {
     String decodedString;  
     Uint32 i;     Uint32 i;
  
       Array<Uint8> utf8Chars;
   
     for (i=0; i<uriString.size(); i++)     for (i=0; i<uriString.size(); i++)
     {     {
         if (uriString[i] == '%')         if (uriString[i] == '%')
Line 935 
Line 1012 
  
               // throw ParseError("Invalid URI encoding");               // throw ParseError("Invalid URI encoding");
  
               MessageLoaderParms mlParms("Common.XmlReader.INVALID_ENCODING",                MessageLoaderParms mlParms("Common.XmlReader.INVALID_URI_ENCODING",
                                          "Invalid $0 encoding", "URI");                                           "Invalid URI encoding");
  
               throw ParseError(MessageLoader::getMessage(mlParms));               throw ParseError(MessageLoader::getMessage(mlParms));
  
             }             }
  
             Uint8 digit1 = _hexCharToNumeric(char(uriString[++i]));              Uint8 digit1 = _xmlReader_hexCharToNumeric(char(uriString[++i]));
             Uint8 digit2 = _hexCharToNumeric(char(uriString[++i]));              Uint8 digit2 = _xmlReader_hexCharToNumeric(char(uriString[++i]));
             if ( (digit1 > 15) || (digit2 > 15) )             if ( (digit1 > 15) || (digit2 > 15) )
             {             {
               // l10n               // l10n
  
               // throw ParseError("Invalid URI encoding");               // throw ParseError("Invalid URI encoding");
  
               MessageLoaderParms mlParms("Common.XmlReader.INVALID_ENCODING",                MessageLoaderParms mlParms("Common.XmlReader.INVALID_URI_ENCODING",
                                          "Invalid $0 encoding", "URI");                                           "Invalid URI encoding");
  
               throw ParseError(MessageLoader::getMessage(mlParms));               throw ParseError(MessageLoader::getMessage(mlParms));
             }             }
  
             // ATTN: Handle non-UTF-8 character sets  
             Uint16 decodedChar = Uint16(digit1<<4) + Uint16(digit2);             Uint16 decodedChar = Uint16(digit1<<4) + Uint16(digit2);
             decodedString.append(Char16(decodedChar));              utf8Chars.append((Uint8)decodedChar);
         }         }
         else         else
         {         {
             decodedString.append(uriString[i]);              utf8Chars.append((Uint8)uriString[i]);
         }         }
     }     }
  
     return decodedString;      // If there was a string to decode...
       if (uriString.size() > 0)
       {
           // Convert UTF-8 to UTF-16 and return the String
           utf8Chars.append('\0');
           return String((char *)utf8Chars.getData());
       }
       else
       {
           return String();
       }
 } }
  
 //------------------------------------------------------------------------------ //------------------------------------------------------------------------------
Line 1023 
Line 1109 
                 x = x << 4;                 x = x << 4;
  
                 // Make sure we don't overflow when we add the next digit                 // Make sure we don't overflow when we add the next digit
                 Sint64 newDigit = Sint64(_hexCharToNumeric(*p++));                  Sint64 newDigit = Sint64(_xmlReader_hexCharToNumeric(*p++));
                 if (PEGASUS_SINT64_MIN - x > -newDigit)                 if (PEGASUS_SINT64_MIN - x > -newDigit)
                 {                 {
                     return false;                     return false;
Line 1143 
Line 1229 
                 x = x << 4;                 x = x << 4;
  
                 // We can't overflow when we add the next digit                 // We can't overflow when we add the next digit
                 Uint64 newDigit = Uint64(_hexCharToNumeric(*p++));                  Uint64 newDigit = Uint64(_xmlReader_hexCharToNumeric(*p++));
                 if (PEGASUS_UINT64_MAX - x < newDigit)                 if (PEGASUS_UINT64_MAX - x < newDigit)
                 {                 {
                     return false;                     return false;
Line 1226 
Line 1312 
               //  throw XmlSemanticError(               //  throw XmlSemanticError(
               //             lineNumber, "Invalid boolean value");               //             lineNumber, "Invalid boolean value");
  
               MessageLoaderParms mlParms("Common.XmlReader.INVALID_VALUE",                MessageLoaderParms mlParms("Common.XmlReader.INVALID_BOOLEAN_VALUE",
                                          "Invalid $0 value",                                           "Invalid boolean value");
                                          "boolean");  
  
               throw XmlSemanticError(lineNumber, mlParms);               throw XmlSemanticError(lineNumber, mlParms);
  
Line 1237 
Line 1322 
  
         case CIMTYPE_STRING:         case CIMTYPE_STRING:
         {         {
             return CIMValue(String(valueString, STRING_FLAG_UTF8));              return CIMValue(String(valueString));
         }         }
  
         case CIMTYPE_CHAR16:         case CIMTYPE_CHAR16:
         {         {
   
   // remove this test, utf-8 can be up to 6 bytes per char
   /*
           if (strlen(valueString) != 1) {           if (strlen(valueString) != 1) {
               // l10n
  
               // throw XmlSemanticError(lineNumber, "Invalid char16 value");
   
               MessageLoaderParms mlParms("Common.XmlReader.INVALID_CHAR16_VALUE",
                                          "Invalid char16 value");
   
               throw XmlSemanticError(lineNumber, mlParms);
             }
   */
             // Converts UTF-8 to UTF-16
             String tmp(valueString);
             if (tmp.size() != 1)
             {
             // l10n             // l10n
  
             // throw XmlSemanticError(lineNumber, "Invalid char16 value");             // throw XmlSemanticError(lineNumber, "Invalid char16 value");
  
             MessageLoaderParms mlParms("Common.XmlReader.INVALID_VALUE",              MessageLoaderParms mlParms("Common.XmlReader.INVALID_CHAR16_VALUE",
                                        "Invalid $0 value",                                         "Invalid char16 value");
                                        "char16");  
  
             throw XmlSemanticError(lineNumber, mlParms);             throw XmlSemanticError(lineNumber, mlParms);
           }           }
  
             return CIMValue(Char16(valueString[0]));              return CIMValue(tmp[0]);
         }         }
  
         case CIMTYPE_UINT8:         case CIMTYPE_UINT8:
Line 1273 
Line 1373 
               // throw XmlSemanticError(               // throw XmlSemanticError(
               //   lineNumber, "Invalid unsigned integer value");               //   lineNumber, "Invalid unsigned integer value");
  
               MessageLoaderParms mlParms("Common.XmlReader.INVALID_VALUE",                MessageLoaderParms mlParms("Common.XmlReader.INVALID_UI_VALUE",
                                          "Invalid $0 value",                                           "Invalid unsigned integer value");
                                          "unsigned integer");  
  
               throw XmlSemanticError(lineNumber, mlParms);               throw XmlSemanticError(lineNumber, mlParms);
  
Line 1293 
Line 1392 
                       // throw XmlSemanticError(                       // throw XmlSemanticError(
                       //   lineNumber, "Uint8 value out of range");                       //   lineNumber, "Uint8 value out of range");
  
                       MessageLoaderParms mlParms("Common.XmlReader.VALUE_OUT_OF_RANGE",                        MessageLoaderParms mlParms("Common.XmlReader.U8_VALUE_OUT_OF_RANGE",
                                                  "$0 value out of range",                                                   "Uint8 value out of range");
                                                  "Uint8");  
  
                       throw XmlSemanticError(lineNumber, mlParms);                       throw XmlSemanticError(lineNumber, mlParms);
                     }                     }
Line 1311 
Line 1409 
                       // throw XmlSemanticError(                       // throw XmlSemanticError(
                       //             lineNumber, "Uint16 value out of range");                       //             lineNumber, "Uint16 value out of range");
  
                       MessageLoaderParms mlParms("Common.XmlReader.VALUE_OUT_OF_RANGE",                        MessageLoaderParms mlParms("Common.XmlReader.U16_VALUE_OUT_OF_RANGE",
                                                  "$0 value out of range",                                                   "Uint16 value out of range");
                                                  "Uint16");  
  
                       throw XmlSemanticError(lineNumber, mlParms);                       throw XmlSemanticError(lineNumber, mlParms);
  
Line 1330 
Line 1427 
                       // throw XmlSemanticError(                       // throw XmlSemanticError(
                       //   lineNumber, "Uint32 value out of range");                       //   lineNumber, "Uint32 value out of range");
  
                       MessageLoaderParms mlParms("Common.XmlReader.VALUE_OUT_OF_RANGE",                        MessageLoaderParms mlParms("Common.XmlReader.U32_VALUE_OUT_OF_RANGE",
                                                  "$0 value out of range",                                                   "Uint32 value out of range");
                                                  "Uint32");  
  
                       throw XmlSemanticError(lineNumber, mlParms);                       throw XmlSemanticError(lineNumber, mlParms);
                     }                     }
Line 1358 
Line 1454 
               // throw XmlSemanticError(               // throw XmlSemanticError(
               //   lineNumber, "Invalid signed integer value");               //   lineNumber, "Invalid signed integer value");
  
               MessageLoaderParms mlParms("Common.XmlReader.INVALID_VALUE",                MessageLoaderParms mlParms("Common.XmlReader.INVALID_SI_VALUE",
                                          "Invalid $0 value",                                           "Invalid signed integer value");
                                          "signed integer");  
  
               throw XmlSemanticError(lineNumber, mlParms);               throw XmlSemanticError(lineNumber, mlParms);
  
Line 1378 
Line 1473 
                       // throw XmlSemanticError(                       // throw XmlSemanticError(
                       //   lineNumber, "Sint8 value out of range");                       //   lineNumber, "Sint8 value out of range");
  
                       MessageLoaderParms mlParms("Common.XmlReader.VALUE_OUT_OF_RANGE",                        MessageLoaderParms mlParms("Common.XmlReader.S8_VALUE_OUT_OF_RANGE",
                                                  "$0 value out of range",                                                   "Sint8 value out of range");
                                                  "Sint8");  
  
                       throw XmlSemanticError(lineNumber, mlParms);                       throw XmlSemanticError(lineNumber, mlParms);
                     }                     }
Line 1396 
Line 1490 
                       // throw XmlSemanticError(                       // throw XmlSemanticError(
                       //   lineNumber, "Sint16 value out of range");                       //   lineNumber, "Sint16 value out of range");
  
                       MessageLoaderParms mlParms("Common.XmlReader.VALUE_OUT_OF_RANGE",                        MessageLoaderParms mlParms("Common.XmlReader.S16_VALUE_OUT_OF_RANGE",
                                                  "$0 value out of range",                                                   "Sint16 value out of range");
                                                  "Sint16");  
  
                       throw XmlSemanticError(lineNumber, mlParms);                       throw XmlSemanticError(lineNumber, mlParms);
                     }                     }
Line 1414 
Line 1507 
                       // throw XmlSemanticError(                       // throw XmlSemanticError(
                       //   lineNumber, "Sint32 value out of range");                       //   lineNumber, "Sint32 value out of range");
  
                       MessageLoaderParms mlParms("Common.XmlReader.VALUE_OUT_OF_RANGE",                        MessageLoaderParms mlParms("Common.XmlReader.S32_VALUE_OUT_OF_RANGE",
                                                  "$0 value out of range",                                                   "Sint32 value out of range");
                                                  "Sint32");  
  
                       throw XmlSemanticError(lineNumber, mlParms);                       throw XmlSemanticError(lineNumber, mlParms);
                     }                     }
Line 1449 
Line 1541 
  
               // throw XmlSemanticError(lineNumber, "Invalid datetime value");               // throw XmlSemanticError(lineNumber, "Invalid datetime value");
  
               MessageLoaderParms mlParms("Common.XmlReader.INVALID_VALUE",                MessageLoaderParms mlParms("Common.XmlReader.INVALID_DATETIME_VALUE",
                                          "Invalid $0 value",                                           "Invalid datetime value");
                                          "datetime");  
  
               throw XmlSemanticError(lineNumber, mlParms);               throw XmlSemanticError(lineNumber, mlParms);
             }             }
Line 1469 
Line 1560 
  
               // throw XmlSemanticError(lineNumber, "Invalid real number value");               // throw XmlSemanticError(lineNumber, "Invalid real number value");
  
               MessageLoaderParms mlParms("Common.XmlReader.INVALID_VALUE",                MessageLoaderParms mlParms("Common.XmlReader.INVALID_RN_VALUE",
                                          "Invalid $0 value",                                           "Invalid real number value");
                                          "real number");  
  
               throw XmlSemanticError(lineNumber, mlParms);               throw XmlSemanticError(lineNumber, mlParms);
             }             }
Line 1488 
Line 1578 
  
               // throw XmlSemanticError(lineNumber, "Invalid real number value");               // throw XmlSemanticError(lineNumber, "Invalid real number value");
  
               MessageLoaderParms mlParms("Common.XmlReader.INVALID_VALUE",                MessageLoaderParms mlParms("Common.XmlReader.INVALID_RN_VALUE",
                                          "Invalid $0 value",                                           "Invalid real number value");
                                          "real number");  
  
               throw XmlSemanticError(lineNumber, mlParms);               throw XmlSemanticError(lineNumber, mlParms);
             }             }
             return CIMValue(x);             return CIMValue(x);
         }         }
  
   //  PEP 194:
   //  Note that "object" (ie. CIMTYPE_OBJECT) is not a real CIM datatype, but just a
   //  Pegasus internal representation of an embedded object. However, this case is
   //  used when decoding string representations of embedded objects.
       case CIMTYPE_OBJECT:
       {
           CIMObject x;
   
           if (*valueString == '\0')
           {
               return CIMValue(CIMTYPE_OBJECT, false, 0);
           }
           else
           {
               // Convert the non-NULL string to a CIMObject (containing either a
               // CIMInstance or a CIMClass).
   
               // First we need to create a new "temporary" XmlParser that is
               // just the value of the Embedded Object in String representation.
               AutoArrayPtr<char> tmp_buffer(new char[strlen(valueString) + 1]);
               strcpy(tmp_buffer.get(), valueString);
               XmlParser tmp_parser(tmp_buffer.get());
   
               // The next bit of logic constructs a CIMObject from the Embedded Object String.
               // It is similar to the method XmlReader::getValueObjectElement().
               CIMInstance cimInstance;
               CIMClass cimClass;
   
               if (XmlReader::getInstanceElement(tmp_parser, cimInstance))
               {
                   x = CIMObject(cimInstance);
               }
               else if (XmlReader::getClassElement(tmp_parser, cimClass))
               {
                   x = CIMObject(cimClass);
               }
               else
               {
                   // l10n
   
                   // throw XmlValidationError(parser.getLine(),
                   //   "Expected INSTANCE or CLASS element");
   
                   MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_INSTANCE_OR_CLASS_ELEMENT",
                              "Expected INSTANCE or CLASS element"); // change "element" to "embedded object"
   
                   throw XmlValidationError(lineNumber, mlParms);
   
               }
               // Ok, now we can delete the storage for the temporary XmlParser.
               tmp_buffer.reset();
           }
           return CIMValue(x);
       }
   
         default:         default:
             break;             break;
     }     }
Line 1515 
Line 1659 
  
 //------------------------------------------------------------------------------ //------------------------------------------------------------------------------
 // //
   // skipElement()
   //
   //------------------------------------------------------------------------------
   void XmlReader::skipElement(
       XmlParser& parser,
       XmlEntry& entry)
   {
       const char * tag_name = entry.text;
   
       if (entry.type == XmlEntry::EMPTY_TAG)
       {
           return;
       }
   
       while (testStartTagOrEmptyTag(parser, entry))
       {
           skipElement(parser, entry);
       }
   
       if (testContentOrCData(parser, entry))
       {
           ; // skip
       }
   
       expectEndTag(parser, tag_name);
       return;
   }
   
   //------------------------------------------------------------------------------
   //
 // getValueElement() // getValueElement()
 // //
 //     <!ELEMENT VALUE (#PCDATA)> //     <!ELEMENT VALUE (#PCDATA)>
Line 1532 
Line 1706 
  
     XmlEntry entry;     XmlEntry entry;
     if (!testStartTagOrEmptyTag(parser, entry, "VALUE"))     if (!testStartTagOrEmptyTag(parser, entry, "VALUE"))
       {
         return false;         return false;
       }
  
     Boolean empty = entry.type == XmlEntry::EMPTY_TAG;     Boolean empty = entry.type == XmlEntry::EMPTY_TAG;
  
Line 1541 
Line 1717 
     if (!empty)     if (!empty)
     {     {
         if (testContentOrCData(parser, entry))         if (testContentOrCData(parser, entry))
           {
             valueString = entry.text;             valueString = entry.text;
           }
  
         expectEndTag(parser, "VALUE");         expectEndTag(parser, "VALUE");
     }     }
Line 1580 
Line 1758 
  
         // throw XmlValidationError(parser.getLine(),"Expected VALUE element");         // throw XmlValidationError(parser.getLine(),"Expected VALUE element");
  
         MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",          MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_VALUE_ELEMENT",
                                    "Expected $0 element", "VALUE");                                     "Expected VALUE element");
  
         throw XmlValidationError(parser.getLine(), mlParms);         throw XmlValidationError(parser.getLine(), mlParms);
  
Line 1602 
Line 1780 
         expectEndTag(parser, "VALUE");         expectEndTag(parser, "VALUE");
     }     }
  
     str = String(valueString,STRING_FLAG_UTF8);      str = String(valueString);
     return true;     return true;
 } }
  
Line 1739 
Line 1917 
         case CIMTYPE_REAL64:         case CIMTYPE_REAL64:
             return StringArrayToValueAux(lineNumber, array, type, (Real64*)0);             return StringArrayToValueAux(lineNumber, array, type, (Real64*)0);
  
   //  PEP 194:
   //  Note that "object" (ie. CIMTYPE_OBJECT) is not a real CIM datatype, but just a
   //  Pegasus internal representation of an embedded object. However, this case is
   //  used when decoding string representations of embedded objects.
       case CIMTYPE_OBJECT:
               return StringArrayToValueAux(lineNumber, array, type, (CIMObject*)0);
   
         default:         default:
             break;             break;
     }     }
Line 1948 
Line 2133 
     // Get QUALIFIER element:     // Get QUALIFIER element:
  
     XmlEntry entry;     XmlEntry entry;
     if (!testStartTag(parser, entry, "QUALIFIER"))      if (!testStartTagOrEmptyTag(parser, entry, "QUALIFIER"))
         return false;         return false;
  
       Boolean empty = entry.type == XmlEntry::EMPTY_TAG;
   
     // Get QUALIFIER.NAME attribute:     // Get QUALIFIER.NAME attribute:
  
     CIMName name = getCimNameAttribute(parser.getLine(), entry, "QUALIFIER");     CIMName name = getCimNameAttribute(parser.getLine(), entry, "QUALIFIER");
Line 1973 
Line 2160 
  
     CIMValue value;     CIMValue value;
  
       if (empty)
       {
           value.setNullValue(type, false);
       }
       else
       {
     if (!getValueElement(parser, type, value) &&     if (!getValueElement(parser, type, value) &&
         !getValueArrayElement(parser, type, value))         !getValueArrayElement(parser, type, value))
     {     {
Line 1982 
Line 2175 
     // Expect </QUALIFIER>:     // Expect </QUALIFIER>:
  
     expectEndTag(parser, "QUALIFIER");     expectEndTag(parser, "QUALIFIER");
       }
  
     // Build qualifier:     // Build qualifier:
  
Line 2013 
Line 2207 
  
           // throw XmlSemanticError(parser.getLine(), "duplicate qualifier");           // throw XmlSemanticError(parser.getLine(), "duplicate qualifier");
  
           MessageLoaderParms mlParms("Common.XmlReader.DUPLICATE",            MessageLoaderParms mlParms("Common.XmlReader.DUPLICATE_QUALIFIER",
                                      "duplicate $0", "qualifier");                                       "duplicate qualifier");
  
           throw XmlSemanticError(parser.getLine(), mlParms);           throw XmlSemanticError(parser.getLine(), mlParms);
         }         }
Line 2030 
Line 2224 
 //         %CIMName; //         %CIMName;
 //         %ClassOrigin; //         %ClassOrigin;
 //         %Propagated; //         %Propagated;
   //         %EmbeddedObject; #IMPLIED
 //         %CIMType; #REQUIRED> //         %CIMType; #REQUIRED>
 // //
 //------------------------------------------------------------------------------ //------------------------------------------------------------------------------
Line 2057 
Line 2252 
     Boolean propagated = getCimBooleanAttribute(     Boolean propagated = getCimBooleanAttribute(
         parser.getLine(), entry, "PROPERTY", "PROPAGATED", false, false);         parser.getLine(), entry, "PROPERTY", "PROPAGATED", false, false);
  
       // Get PROPERTY.EMBEDDEDOBJECT attribute:
   
       String embeddedObject = getEmbeddedObjectAttribute(
           parser.getLine(), entry, "PROPERTY");
   
     // Get PROPERTY.TYPE attribute:     // Get PROPERTY.TYPE attribute:
  
     CIMType type;     CIMType type;
Line 2069 
Line 2269 
  
     if (!empty)     if (!empty)
     {     {
         // Get qualifiers:              // Get qualifiers. We need to do this before checking for the property as an
           // embedded object, because we need to also check for the EmbeddedObject qualifier.
         getQualifierElements(parser, property);         getQualifierElements(parser, property);
       }
   
       Boolean embeddedObjectQualifierValue = false;
       Uint32 ix = property.findQualifier(CIMName("EmbeddedObject"));
       if (ix != PEG_NOT_FOUND)
       {
           property.getQualifier(ix).getValue().get(embeddedObjectQualifierValue);
       }
   
       // If the EMBEDDEDOBJECT attribute is present with value "object"
       // or the EmbeddedObject qualifier exists on this property with value "true"
       // then
       //     Convert the EmbeddedObject-encoded string into a CIMObject
       if (String::equal(embeddedObject, "object") || embeddedObjectQualifierValue)
       {
           // The EMBEDDEDOBJECT attribute is only valid on Properties of type string
           if (type == CIMTYPE_STRING)
           {
               type = CIMTYPE_OBJECT;
               CIMValue new_value(type, false);
               CIMProperty new_property = CIMProperty(name, new_value, 0, CIMName(), classOrigin, propagated);
  
         // Get value:  Insert value if getValueElement exists (returns True)              // Copy the qualifiers from the String property to the CIMObject property.
               for (Uint32 ix = 0; ix < property.getQualifierCount(); ++ix)
               {
                   // All properties are copied, including the EmbeddedObject qualifier.
                   // This way we don't have to keep track to know that the EmbeddedObject
                   // qualifier needs to be added back during the encode step.
                   new_property.addQualifier(property.getQualifier(ix));
               }
  
               value = new_value;
               property = new_property;
           }
           else
           {
               // Error -- throw exception
               // (the EmbeddedObject attribute may be applied only to entities that have the type String)
   
               // l10n
   
               // throw XmlValidationError(parser.getLine(),
               //   "expected string type");
   
               MessageLoaderParms mlParms("Common.XmlReader.INVALID_EMBEDDEDOBJECT_TYPE",
                                "The EMBEDDEDOBJECT attribute is only valid on string types.");
   
               throw XmlValidationError(parser.getLine(), mlParms);
           }
       }
   
       // Continue on to get property value, if not empty.
       if (!empty)
       {
         if (getValueElement(parser, type, value))         if (getValueElement(parser, type, value))
             property.setValue(value);             property.setValue(value);
   
         expectEndTag(parser, "PROPERTY");         expectEndTag(parser, "PROPERTY");
     }     }
  
Line 2140 
Line 2390 
 //             %CIMType; #REQUIRED //             %CIMType; #REQUIRED
 //             %ArraySize; //             %ArraySize;
 //             %ClassOrigin; //             %ClassOrigin;
 //             %Propagated;>  //             %Propagated;
   //             %EmbeddedObject; #IMPLIED>
 // //
 //------------------------------------------------------------------------------ //------------------------------------------------------------------------------
  
Line 2174 
Line 2425 
  
     // Get PROPERTY.CLASSORIGIN attribute:     // Get PROPERTY.CLASSORIGIN attribute:
  
     CIMName classOrigin      CIMName classOrigin = getClassOriginAttribute(parser.getLine(), entry, "PROPERTY.ARRAY");
         = getClassOriginAttribute(parser.getLine(), entry, "PROPERTY.ARRAY");  
  
     // Get PROPERTY.ARRAY.PROPAGATED     // Get PROPERTY.ARRAY.PROPAGATED
  
     Boolean propagated = getCimBooleanAttribute(      Boolean propagated = getCimBooleanAttribute(parser.getLine()
         parser.getLine(), entry, "PROPERTY.ARRAY", "PROPAGATED", false, false);                                                  ,entry
                                                   ,"PROPERTY.ARRAY"
                                                   ,"PROPAGATED"
                                                   ,false
                                                   ,false);
   
       // Get PROPERTY.EMBEDDEDOBJECT attribute:
   
       String embeddedObject = getEmbeddedObjectAttribute(parser.getLine()
                                                          ,entry
                                                          ,"PROPERTY.ARRAY");
  
     // Create property:     // Create property:
  
     CIMValue value(type, true, arraySize);     CIMValue value(type, true, arraySize);
     property = CIMProperty(      property = CIMProperty(name, value, arraySize, CIMName(), classOrigin, propagated);
         name, value, arraySize, CIMName(), classOrigin, propagated);  
  
     if (!empty)     if (!empty)
     {     {
         // Get qualifiers:         // Get qualifiers:
   
         getQualifierElements(parser, property);         getQualifierElements(parser, property);
       }
  
         // Get value:      Boolean embeddedObjectQualifierValue = false;
       Uint32 ix = property.findQualifier(CIMName("EmbeddedObject"));
       if (ix != PEG_NOT_FOUND)
       {
           property.getQualifier(ix).getValue().get(embeddedObjectQualifierValue);
       }
   
       // If the EMBEDDEDOBJECT attribute is present with value "object"
       // or the EmbeddedObject qualifier exists on this property with value "true"
       // then
       //     Convert the EmbeddedObject-encoded string into a CIMObject
       if (String::equal(embeddedObject, "object") || embeddedObjectQualifierValue)
       {
           // The EMBEDDEDOBJECT attribute is only valid on Properties of type string
           if (type == CIMTYPE_STRING)
           {
               type = CIMTYPE_OBJECT;
               CIMValue new_value(type, true, arraySize);
               CIMProperty new_property = CIMProperty(name, new_value, arraySize, CIMName(), classOrigin, propagated);
   
               // Copy the qualifiers from the String property to the CIMObject property.
               for (Uint32 ix = 0; ix < property.getQualifierCount(); ++ix)
               {
                   // All properties are copied, including the EmbeddedObject qualifier.
                   // This way we don't have to keep track to know that the EmbeddedObject
                   // qualifier needs to be added back during the encode step.
                   new_property.addQualifier(property.getQualifier(ix));
               }
  
               value = new_value;
               property = new_property;
           }
           else
           {
               // Error -- throw exception
               // (the EmbeddedObject attribute may be applied only to entities that have the type String)
   
               // l10n
   
               // throw XmlValidationError(parser.getLine(),
               //   "expected string type");
   
               MessageLoaderParms mlParms("Common.XmlReader.INVALID_EMBEDDEDOBJECT_TYPE",
                                "The EMBEDDEDOBJECT attribute is only valid on string types.");
   
               throw XmlValidationError(parser.getLine(), mlParms);
           }
       }
   
       // Continue on to get property array value, if not empty.
       // Else not an embedded object, if not empty, get the property array value.
       if (!empty)
       {
         if (getValueArrayElement(parser, type, value))         if (getValueArrayElement(parser, type, value))
         {         {
             if (arraySize && arraySize != value.getArraySize())             if (arraySize && arraySize != value.getArraySize())
Line 2207 
Line 2517 
               //   "ARRAYSIZE attribute and value-array size are different");               //   "ARRAYSIZE attribute and value-array size are different");
  
               MessageLoaderParms mlParms("Common.XmlReader.ARRAY_SIZE_DIFFERENT",               MessageLoaderParms mlParms("Common.XmlReader.ARRAY_SIZE_DIFFERENT",
                                          "$0 attribute and $1 size are different",                           "ARRAYSIZE attribute and value-array size are different");
                                          "ARRAYSIZE", "value-array");  
  
               throw XmlSemanticError(parser.getLine(), mlParms);               throw XmlSemanticError(parser.getLine(), mlParms);
             }             }
  
             property.setValue(value);             property.setValue(value);
         }         }
   
         expectEndTag(parser, "PROPERTY.ARRAY");         expectEndTag(parser, "PROPERTY.ARRAY");
     }     }
  
Line 2246 
Line 2554 
             throw XmlException(XmlException::UNCLOSED_TAGS, parser.getLine());             throw XmlException(XmlException::UNCLOSED_TAGS, parser.getLine());
  
         if (entry.type == XmlEntry::CONTENT)         if (entry.type == XmlEntry::CONTENT)
             host = String(entry.text,STRING_FLAG_UTF8);              host = String(entry.text);
         else         else
     {     {
             parser.putBack(entry);             parser.putBack(entry);
Line 2264 
Line 2572 
       //               "expected content of HOST element");       //               "expected content of HOST element");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_CONTENT_ELEMENT",       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_CONTENT_ELEMENT",
                                  "expected content of $0 element", "HOST");                                   "expected content of HOST element");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
  
     }     }
  
     host = String(entry.text,STRING_FLAG_UTF8);      host = String(entry.text);
 #endif #endif
     expectEndTag(parser, "HOST");     expectEndTag(parser, "HOST");
     return true;     return true;
Line 2342 
Line 2650 
       //   "LOCALNAMESPACEPATH element");       //   "LOCALNAMESPACEPATH element");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_NAMESPACE_ELEMENTS",       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_NAMESPACE_ELEMENTS",
                                  "Expected one or more $0 elements within $1 element",                                   "Expected one or more NAMESPACE elements within LOCALNAMESPACEPATH element");
                                  "NAMESPACE", "LOCALNAMESPACEPATH");  
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
  
Line 2381 
Line 2688 
  
       // throw XmlValidationError(parser.getLine(), "expected HOST element");       // throw XmlValidationError(parser.getLine(), "expected HOST element");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",        MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_HOST_ELEMENT",
                                  "expected $0 element", "HOST");                                   "expected HOST element");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
     }     }
Line 2395 
Line 2702 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //   "expected LOCALNAMESPACEPATH element");       //   "expected LOCALNAMESPACEPATH element");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",        MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_LOCALNAMESPACEPATH_ELEMENT",
                                  "expected $0 element", "LOCALNAMESPACEPATH");                                   "expected LOCALNAMESPACEPATH element");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
     }     }
Line 2432 
Line 2739 
           // throw XmlValidationError(parser.getLine(),           // throw XmlValidationError(parser.getLine(),
           // "expected CLASSNAME element");           // "expected CLASSNAME element");
  
           MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",            MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_CLASSNAME_ELEMENT",
                                      "expected $0 element", "CLASSNAME");                                       "expected CLASSNAME element");
  
           throw XmlValidationError(parser.getLine(), mlParms);           throw XmlValidationError(parser.getLine(), mlParms);
         }         }
Line 2490 
Line 2797 
     sprintf(buffer, "%s.VALUETYPE", elementName);     sprintf(buffer, "%s.VALUETYPE", elementName);
  
     MessageLoaderParms mlParms("Common.XmlReader.ILLEGAL_VALUE_FOR_CIMVALUE_ATTRIBUTE",     MessageLoaderParms mlParms("Common.XmlReader.ILLEGAL_VALUE_FOR_CIMVALUE_ATTRIBUTE",
                                "Illegal value for $0 attribute; $1 must be one of $2, $3, or $4",                                 "Illegal value for $0 attribute; CIMValue must be one of \"string\", \"boolean\", or \"numeric\"", buffer);
                                buffer, "CIMValue", "\"string\"", "\"boolean\"", "\"numeric\"");  
  
     throw XmlSemanticError(lineNumber, mlParms);     throw XmlSemanticError(lineNumber, mlParms);
  
Line 2530 
Line 2836 
             throw XmlException(XmlException::UNCLOSED_TAGS, parser.getLine());             throw XmlException(XmlException::UNCLOSED_TAGS, parser.getLine());
  
         if (entry.type == XmlEntry::CONTENT)         if (entry.type == XmlEntry::CONTENT)
             value = String(entry.text,STRING_FLAG_UTF8);              value = String(entry.text);
         else         else
             parser.putBack(entry);             parser.putBack(entry);
  
Line 2575 
Line 2881 
           // throw XmlValidationError(parser.getLine(),           // throw XmlValidationError(parser.getLine(),
           //          "Expected KEYVALUE or VALUE.REFERENCE element");           //          "Expected KEYVALUE or VALUE.REFERENCE element");
  
           MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_OR_ELEMENT",            MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_KEYVALUE_OR_REFERENCE_ELEMENT",
                                      "Expected $0 or $1 element", "KEYVALUE", "VALUE.REFERENCE");                                       "Expected KEYVALUE or VALUE.REFERENCE element");
  
           throw XmlValidationError(parser.getLine(), mlParms);           throw XmlValidationError(parser.getLine(), mlParms);
         }         }
Line 2694 
Line 3000 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //   "expected NAMESPACEPATH element");       //   "expected NAMESPACEPATH element");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",        MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_NAMESPACEPATH_ELEMENT",
                                  "expected $0 element", "NAMESPACEPATH");                                   "expected NAMESPACEPATH element");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
  
Line 2713 
Line 3019 
       //   "expected INSTANCENAME element");       //   "expected INSTANCENAME element");
  
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",        MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_INSTANCENAME_ELEMENT",
                                  "expected $0 element", "INSTANCENAME");                                   "expected INSTANCENAME element");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
  
Line 2753 
Line 3059 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //   "expected LOCALNAMESPACEPATH element");       //   "expected LOCALNAMESPACEPATH element");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",        MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_LOCALNAMESPACEPATH_ELEMENT",
                                  "expected $0 element", "LOCALNAMESPACEPATH");                                   "expected LOCALNAMESPACEPATH element");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
  
Line 2771 
Line 3077 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //   "expected INSTANCENAME element");       //   "expected INSTANCENAME element");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",        MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_INSTANCENAME_ELEMENT",
                                  "expected $0 element", "INSTANCENAME");                                   "expected INSTANCENAME element");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
  
Line 2812 
Line 3118 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //    "expected NAMESPACEPATH element");       //    "expected NAMESPACEPATH element");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",        MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_NAMESPACEPATH_ELEMENT",
                                  "expected $0 element", "NAMESPACEPATH");                                   "expected NAMESPACEPATH element");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
  
Line 2829 
Line 3135 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //   "expected CLASSNAME element");       //   "expected CLASSNAME element");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",        MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_CLASSNAME_ELEMENT",
                                  "expected $0 element", "CLASSNAME");                                   "expected CLASSNAME element");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
  
Line 2869 
Line 3175 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //    "expected LOCALNAMESPACEPATH element");       //    "expected LOCALNAMESPACEPATH element");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",        MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_LOCALNAMESPACEPATH_ELEMENT",
                                  "expected $0 element", "LOCALNAMESPACEPATH");                                   "expected LOCALNAMESPACEPATH element");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
  
Line 2886 
Line 3192 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //   "expected CLASSNAME element");       //   "expected CLASSNAME element");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",        MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_CLASSNAME_ELEMENT",
                                  "expected $0 element", "CLASSNAME");                                   "expected CLASSNAME element");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
  
Line 2934 
Line 3240 
       //    "LOCALINSTANCEPATH, INSTANCENAME");       //    "LOCALINSTANCEPATH, INSTANCENAME");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_START_TAGS",       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_START_TAGS",
                                  "Expected one of the following start tags: $0", "CLASSPATH, LOCALCLASSPATH, CLASSNAME, INSTANCEPATH, LOCALINSTANCEPATH, INSTANCENAME");                                   "Expected one of the following start tags: CLASSPATH, LOCALCLASSPATH, CLASSNAME, INSTANCEPATH, LOCALINSTANCEPATH, INSTANCENAME");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
  
Line 3111 
Line 3417 
  
           // throw XmlSemanticError(parser.getLine(), "duplicate property");           // throw XmlSemanticError(parser.getLine(), "duplicate property");
  
           MessageLoaderParms mlParms("Common.XmlReader.DUPLICATE",            MessageLoaderParms mlParms("Common.XmlReader.DUPLICATE_PROPERTY",
                                      "duplicate $0", "property");                                       "duplicate property");
  
           throw XmlSemanticError(parser.getLine(), mlParms);           throw XmlSemanticError(parser.getLine(), mlParms);
         }         }
Line 3341 
Line 3647 
  
           // throw XmlSemanticError(parser.getLine(), "duplicate parameter");           // throw XmlSemanticError(parser.getLine(), "duplicate parameter");
  
           MessageLoaderParms mlParms("Common.XmlReader.DUPLICATE",            MessageLoaderParms mlParms("Common.XmlReader.DUPLICATE_PARAMETER",
                                      "duplicate $0", "parameter");                                       "duplicate parameter");
  
           throw XmlSemanticError(parser.getLine(), mlParms);           throw XmlSemanticError(parser.getLine(), mlParms);
         }         }
Line 3427 
Line 3733 
               //    "ISARRAY attribute");               //    "ISARRAY attribute");
  
               MessageLoaderParms mlParms("Common.XmlReader.ARRAY_WITHOUT_ISARRAY",               MessageLoaderParms mlParms("Common.XmlReader.ARRAY_WITHOUT_ISARRAY",
                                          "$0 element encountered without $1 attribute",                                           "VALUE.ARRAY element encountered without ISARRAY attribute");
                                          "VALUE.ARRAY", "ISARRAY");  
  
               throw XmlSemanticError(parser.getLine(), mlParms);               throw XmlSemanticError(parser.getLine(), mlParms);
             }             }
Line 3443 
Line 3748 
               //    "ARRAYSIZE attribute");               //    "ARRAYSIZE attribute");
  
               MessageLoaderParms mlParms("Common.XmlReader.ARRAY_SIZE_NOT_SAME",               MessageLoaderParms mlParms("Common.XmlReader.ARRAY_SIZE_NOT_SAME",
                                          "$0 size is not the same as $1 attribute",                                           "VALUE.ARRAY size is not the same as ARRAYSIZE attribute");
                                          "VALUE.ARRAY", "ARRAYSIZE");  
  
               throw XmlSemanticError(parser.getLine(), mlParms);               throw XmlSemanticError(parser.getLine(), mlParms);
             }             }
Line 3462 
Line 3766 
               //    "ISARRAY attribute used but VALUE element encountered");               //    "ISARRAY attribute used but VALUE element encountered");
  
               MessageLoaderParms mlParms("Common.XmlReader.ARRAY_ATTRIBUTE_DIFFERENT",               MessageLoaderParms mlParms("Common.XmlReader.ARRAY_ATTRIBUTE_DIFFERENT",
                                          "$0 attribute used but $1 element encountered",                                           "ISARRAY attribute used but VALUE element encountered");
                                          "ISARRAY", "VALUE");  
  
               throw XmlSemanticError(parser.getLine(), mlParms);               throw XmlSemanticError(parser.getLine(), mlParms);
             }             }
Line 3551 
Line 3854 
 { {
     XmlEntry entry;     XmlEntry entry;
  
     if (!testStartTag(parser, entry, "CLASS"))      if (!testStartTagOrEmptyTag(parser, entry, "CLASS"))
         return false;         return false;
  
     CIMName name = getCimNameAttribute(parser.getLine(), entry, "CLASS");     CIMName name = getCimNameAttribute(parser.getLine(), entry, "CLASS");
Line 3560 
Line 3863 
  
     cimClass = CIMClass(name, superClass);     cimClass = CIMClass(name, superClass);
  
           if(entry.type != XmlEntry::EMPTY_TAG)
           {
   
     // Get QUALIFIER elements:     // Get QUALIFIER elements:
  
     getQualifierElements(parser, cimClass);     getQualifierElements(parser, cimClass);
Line 3578 
Line 3884 
     // Get CLASS end tag:     // Get CLASS end tag:
  
     expectEndTag(parser, "CLASS");     expectEndTag(parser, "CLASS");
           }
  
     return true;     return true;
 } }
Line 3598 
Line 3905 
 { {
     XmlEntry entry;     XmlEntry entry;
  
     if (!testStartTag(parser, entry, "INSTANCE"))      if (!testStartTagOrEmptyTag(parser, entry, "INSTANCE"))
         return false;         return false;
  
       Boolean empty = entry.type == XmlEntry::EMPTY_TAG;
   
     String className = getClassNameAttribute(     String className = getClassNameAttribute(
         parser.getLine(), entry, "INSTANCE");         parser.getLine(), entry, "INSTANCE");
  
     cimInstance = CIMInstance(className);     cimInstance = CIMInstance(className);
  
       if (!empty)
       {
     // Get QUALIFIER elements:     // Get QUALIFIER elements:
   
     getQualifierElements(parser, cimInstance);     getQualifierElements(parser, cimInstance);
  
     // Get PROPERTY elements:     // Get PROPERTY elements:
   
     GetPropertyElements(parser, cimInstance);     GetPropertyElements(parser, cimInstance);
  
     // Get INSTANCE end tag:     // Get INSTANCE end tag:
   
     expectEndTag(parser, "INSTANCE");     expectEndTag(parser, "INSTANCE");
       }
  
     return true;     return true;
 } }
Line 3649 
Line 3958 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //    "expected INSTANCENAME element");       //    "expected INSTANCENAME element");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",        MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_INSTANCENAME_ELEMENT",
                                  "expected $0 element", "INSTANCENAME");                                   "expected INSTANCENAME element");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
     }     }
Line 3666 
Line 3975 
       //   "expected INSTANCE element");       //   "expected INSTANCE element");
  
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",        MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_INSTANCE_ELEMENT",
                                  "expected $0 element", "INSTANCE");                                   "expected INSTANCE element");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
     }     }
Line 3697 
Line 4006 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //   "expected CLASS element");       //   "expected CLASS element");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",        MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_CLASS_ELEMENT",
                                  "expected $0 element", "CLASS");                                   "expected CLASS element");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
     }     }
Line 3720 
Line 4029 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //   "expected INSTANCE element");       //   "expected INSTANCE element");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",        MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_INSTANCE_ELEMENT",
                                  "expected $0 element", "INSTANCE");                                   "expected INSTANCE element");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
     }     }
Line 3743 
Line 4052 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //   "expected QUALIFIER.DECLARATION element");       //   "expected QUALIFIER.DECLARATION element");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",        MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_QUALIFIER_DECLARATION_ELEMENT",
                                  "expected $0 element", "QUALIFIER.DECLARATION");                                   "expected QUALIFIER.DECLARATION element");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
     }     }
Line 3775 
Line 4084 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //   "Invalid or missing MESSAGE.ID attribute");       //   "Invalid or missing MESSAGE.ID attribute");
  
       MessageLoaderParms mlParms("Common.XmlReader.INVALID_MISSING_ATTRIBUTE",        MessageLoaderParms mlParms("Common.XmlReader.INVALID_MISSING_MESSAGE_ID_ATTRIBUTE",
                                  "Invalid or missing $0 attribute", "MESSAGE.ID");                                   "Invalid or missing MESSAGE.ID attribute");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
     }     }
Line 3791 
Line 4100 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //   "Invalid or missing MESSAGE.PROTOCOLVERSION attribute");       //   "Invalid or missing MESSAGE.PROTOCOLVERSION attribute");
  
       MessageLoaderParms mlParms("Common.XmlReader.INVALID_MISSING_ATTRIBUTE",        MessageLoaderParms mlParms("Common.XmlReader.INVALID_MISSING_PROTOCOLVERSION_ATTRIBUTE",
                                  "Invalid or missing $0 attribute", "MESSAGE.PROTOCOLVERSION");                                   "Invalid or missing MESSAGE.PROTOCOLVERSION attribute");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
     }     }
Line 3825 
Line 4134 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //   "Missing IMETHODCALL.NAME attribute");       //   "Missing IMETHODCALL.NAME attribute");
  
       MessageLoaderParms mlParms("Common.XmlReader.MISSING_ATTRIBUTE",        MessageLoaderParms mlParms("Common.XmlReader.MISSING_IMETHODCALL_ATTRIBUTE",
                                  "Missing $0 attribute",                                   "Missing IMETHODCALL.NAME attribute");
                                  "IMETHODCALL.NAME");  
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
     }     }
Line 3844 
Line 4152 
  
 Boolean XmlReader::getIMethodResponseStartTag( Boolean XmlReader::getIMethodResponseStartTag(
     XmlParser& parser,     XmlParser& parser,
     const char*& name)      const char*& name,
       Boolean& isEmptyTag)
 { {
     XmlEntry entry;     XmlEntry entry;
  
     if (!testStartTag(parser, entry, "IMETHODRESPONSE"))      if (!testStartTagOrEmptyTag(parser, entry, "IMETHODRESPONSE"))
         return false;         return false;
  
       isEmptyTag = (entry.type == XmlEntry::EMPTY_TAG);
   
     // Get IMETHODRESPONSE.NAME attribute:     // Get IMETHODRESPONSE.NAME attribute:
  
     if (!entry.getAttributeValue("NAME", name)) {     if (!entry.getAttributeValue("NAME", name)) {
Line 3860 
Line 4171 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //   "Missing IMETHODRESPONSE.NAME attribute");       //   "Missing IMETHODRESPONSE.NAME attribute");
  
       MessageLoaderParms mlParms("Common.XmlReader.MISSING_ATTRIBUTE",        MessageLoaderParms mlParms("Common.XmlReader.MISSING_IMETHODRESPONSE_ATTRIBUTE",
                                  "Missing $0 attribute",                                   "Missing IMETHODRESPONSE.NAME attribute");
                                  "IMETHODRESPONSE.NAME");  
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
     }     }
Line 3879 
Line 4189 
  
 Boolean XmlReader::getIParamValueTag( Boolean XmlReader::getIParamValueTag(
     XmlParser& parser,     XmlParser& parser,
     const char*& name)      const char*& name,
       Boolean& isEmptyTag)
 { {
     XmlEntry entry;     XmlEntry entry;
  
     if (!testStartTag(parser, entry, "IPARAMVALUE"))      if (!testStartTagOrEmptyTag(parser, entry, "IPARAMVALUE"))
         return false;         return false;
  
       isEmptyTag = (entry.type == XmlEntry::EMPTY_TAG);
   
     // Get IPARAMVALUE.NAME attribute:     // Get IPARAMVALUE.NAME attribute:
  
     if (!entry.getAttributeValue("NAME", name)) {     if (!entry.getAttributeValue("NAME", name)) {
Line 3895 
Line 4208 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //   "Missing IPARAMVALUE.NAME attribute");       //   "Missing IPARAMVALUE.NAME attribute");
  
       MessageLoaderParms mlParms("Common.XmlReader.MISSING_ATTRIBUTE",        MessageLoaderParms mlParms("Common.XmlReader.MISSING_IPARAMVALUE_ATTRIBUTE",
                                  "Missing $0 attribute",                                   "Missing IPARAMVALUE.NAME attribute");
                                  "IPARAMVALUE.NAME");  
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
     }     }
Line 3907 
Line 4219 
  
 //------------------------------------------------------------------------------ //------------------------------------------------------------------------------
 // //
   // rejectNullIParamValue()
   //
   //------------------------------------------------------------------------------
   
   void XmlReader::rejectNullIParamValue(
       XmlParser& parser,
       Boolean isEmptyTag,
       const char* paramName)
   {
       if (isEmptyTag)
       {
           MessageLoaderParms mlParms("Common.XmlReader.INVALID_NULL_IPARAMVALUE",
               "A null value is not valid for IPARAMVALUE \"$0\".",
               paramName);
           throw XmlValidationError(parser.getLine(), mlParms);
       }
   }
   
   //------------------------------------------------------------------------------
   //
 // getBooleanValueElement() // getBooleanValueElement()
 // //
 //     Get an elements like: "<VALUE>FALSE</VALUE>" //     Get an elements like: "<VALUE>FALSE</VALUE>"
Line 3930 
Line 4262 
           // throw XmlValidationError(parser.getLine(),           // throw XmlValidationError(parser.getLine(),
           // "Expected VALUE element");           // "Expected VALUE element");
  
           MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",            MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_VALUE_ELEMENT",
                                      "Expected $0 element", "VALUE");                                       "Expected VALUE element");
  
           throw XmlValidationError(parser.getLine(), mlParms);           throw XmlValidationError(parser.getLine(), mlParms);
         }         }
Line 3952 
Line 4284 
       //   "Invalid value for VALUE element: must be \"TRUE\" or \"FALSE\"");       //   "Invalid value for VALUE element: must be \"TRUE\" or \"FALSE\"");
  
       MessageLoaderParms mlParms("Common.XmlReader.INVALID_VALUE_FOR_VALUE_ELEMENT",       MessageLoaderParms mlParms("Common.XmlReader.INVALID_VALUE_FOR_VALUE_ELEMENT",
                                  "Invalid value for $0 element: must be $1 or $2",                                   "Invalid value for VALUE element: must be \"TRUE\" or \"FALSE\"");
                                  "VALUE", "\"TRUE\"", "\"FALSE\"");  
  
       throw XmlSemanticError(parser.getLine(), mlParms);       throw XmlSemanticError(parser.getLine(), mlParms);
     }     }
Line 3965 
Line 4296 
  
 //------------------------------------------------------------------------------ //------------------------------------------------------------------------------
 // //
 // getErrorElement()  //     DMTF CR Pending
 // //
 //     <!ELEMENT ERROR EMPTY>  //     <!ELEMENT ERROR (INSTANCE*)>
 //     <!ATTLIST ERROR //     <!ATTLIST ERROR
 //         CODE CDATA #REQUIRED //         CODE CDATA #REQUIRED
 //         DESCRIPTION CDATA #IMPLIED> //         DESCRIPTION CDATA #IMPLIED>
Line 3989 
Line 4320 
  
         // throw XmlValidationError(parser.getLine(),"Expected ERROR element");         // throw XmlValidationError(parser.getLine(),"Expected ERROR element");
  
         MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",          MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ERROR_ELEMENT",
                                    "Expected $0 element", "ERROR");                                     "Expected ERROR element");
  
         throw XmlValidationError(parser.getLine(), mlParms);         throw XmlValidationError(parser.getLine(), mlParms);
  
Line 4012 
Line 4343 
       // throw XmlValidationError(       // throw XmlValidationError(
       //       parser.getLine(), "missing ERROR.CODE attribute");       //       parser.getLine(), "missing ERROR.CODE attribute");
  
       MessageLoaderParms mlParms("Common.XmlReader.MISSING_ATTRIBUTE",        MessageLoaderParms mlParms("Common.XmlReader.MISSING_ERROR_CODE_ATTRIBUTE",
                                  "missing $0 attribute",                                   "missing ERROR.CODE attribute");
                                  "ERROR.CODE");  
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
  
Line 4027 
Line 4357 
     entry.getAttributeValue("DESCRIPTION", tmpDescription);     entry.getAttributeValue("DESCRIPTION", tmpDescription);
  
     if (!empty)     if (!empty)
       {
           while (testStartTagOrEmptyTag(parser, entry))
           {
               skipElement(parser, entry);
           }
   
         expectEndTag(parser, "ERROR");         expectEndTag(parser, "ERROR");
       }
  
     cimException = PEGASUS_CIM_EXCEPTION(CIMStatusCode(tmpCode), tmpDescription);     cimException = PEGASUS_CIM_EXCEPTION(CIMStatusCode(tmpCode), tmpDescription);
     return true;     return true;
Line 4057 
Line 4394 
     {     {
         object = CIMObject(cimInstance);         object = CIMObject(cimInstance);
     }     }
     else if (!XmlReader::getClassElement(parser, cimClass))      else if (XmlReader::getClassElement(parser, cimClass))
     {     {
         object = CIMObject(cimClass);         object = CIMObject(cimClass);
     }     }
Line 4069 
Line 4406 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //   "Expected INSTANCE or CLASS element");       //   "Expected INSTANCE or CLASS element");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_OR_ELEMENT",        MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_INSTANCE_OR_CLASS_ELEMENT",
                                  "Expected $0 or $1 element", "INSTANCE", "CLASS");                                   "Expected INSTANCE or CLASS element");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
  
Line 4105 
Line 4442 
     else if (!XmlReader::getClassPathElement(parser, reference))     else if (!XmlReader::getClassPathElement(parser, reference))
     {     {
  
       // l10n        // l10n 485
  
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //    "Expected INSTANCEPATH or CLASSPATH element");       //    "Expected INSTANCEPATH or CLASSPATH element");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_OR_ELEMENT",        MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_INSTANCEPATH_OR_CLASSPATH_ELEMENT",
                                  "Expected $0 or $1 element", "INSTANCEPATH", "CLASSPATH");                                   "Expected INSTANCEPATH or CLASSPATH element");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
     }     }
Line 4128 
Line 4465 
           // throw XmlValidationError(parser.getLine(),           // throw XmlValidationError(parser.getLine(),
           //               "Expected INSTANCE element");           //               "Expected INSTANCE element");
  
           MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",            MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_INSTANCE_ELEMENT",
                                      "Expected $0 element", "INSTANCE");                                       "Expected INSTANCE element");
  
           throw XmlValidationError(parser.getLine(), mlParms);           throw XmlValidationError(parser.getLine(), mlParms);
         }         }
Line 4148 
Line 4485 
           // throw XmlValidationError(parser.getLine(),           // throw XmlValidationError(parser.getLine(),
           // "Expected CLASS element");           // "Expected CLASS element");
  
           MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",            MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_CLASS_ELEMENT",
                                      "Expected $0 element", "CLASS");                                       "Expected CLASS element");
  
           throw XmlValidationError(parser.getLine(), mlParms);           throw XmlValidationError(parser.getLine(), mlParms);
         }         }
Line 4192 
Line 4529 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //   "Expected LOCALINSTANCEPATH or LOCALCLASSPATH element");       //   "Expected LOCALINSTANCEPATH or LOCALCLASSPATH element");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_OR_ELEMENT",        //l10n updated
                                  "Expected $0 or $1 element", "LOCALINSTANCEPATH", "LOCALCLASSPATH");        MessageLoaderParms mlParms("Common.XmlConstants.MISSING_ELEMENT_LOCALPATH",
                                                                                                                   MISSING_ELEMENT_LOCALPATH);
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
  
Line 4211 
Line 4549 
           // throw XmlValidationError(parser.getLine(),           // throw XmlValidationError(parser.getLine(),
           //               "Expected INSTANCE element");           //               "Expected INSTANCE element");
  
           MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",            MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_INSTANCE_ELEMENT",
                                      "Expected $0 element", "INSTANCE");                                       "Expected INSTANCE element");
  
           throw XmlValidationError(parser.getLine(), mlParms);           throw XmlValidationError(parser.getLine(), mlParms);
  
Line 4232 
Line 4570 
           // throw XmlValidationError(parser.getLine(),           // throw XmlValidationError(parser.getLine(),
           // "Expected CLASS element");           // "Expected CLASS element");
  
           MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",            MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_CLASS_ELEMENT",
                                      "Expected $0 element", "CLASS");                                       "Expected CLASS element");
  
           throw XmlValidationError(parser.getLine(), mlParms);           throw XmlValidationError(parser.getLine(), mlParms);
  
Line 4312 
Line 4650 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //   "expected CLASSNAME or INSTANCENAME element");       //   "expected CLASSNAME or INSTANCENAME element");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_OR_ELEMENT",        MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_CLASSNAME_OR_INSTANCENAME_ELEMENT",
                                  "Expected $0 or $1 element", "CLASSNAME", "INSTANCENAME");                                   "Expected CLASSNAME or INSTANCENAME element");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
  
     }     }
  
     return false;      PEGASUS_UNREACHABLE( return false; )
 } }
  
 //------------------------------------------------------------------------------ //------------------------------------------------------------------------------
Line 4355 
Line 4693 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //   "expected INSTANCEPATH or CLASSPATH element");       //   "expected INSTANCEPATH or CLASSPATH element");
  
       MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_OR_ELEMENT",        MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_INSTANCEPATH_OR_CLASSPATH_ELEMENT",
                                  "expected $0 or $1 element", "INSTANCEPATH", "CLASSPATH");                                   "expected INSTANCEPATH or CLASSPATH element");
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
     }     }
Line 4389 
Line 4727 
         // throw XmlValidationError(parser.getLine(),         // throw XmlValidationError(parser.getLine(),
         // "Missing EXPMETHODCALL.NAME attribute");         // "Missing EXPMETHODCALL.NAME attribute");
  
         MessageLoaderParms mlParms("Common.XmlReader.MISSING_ATTRIBUTE",          MessageLoaderParms mlParms("Common.XmlReader.MISSING_EXPMETHODCALL_ATTRIBUTE",
                                    "Missing $0 attribute",                                     "Missing EXPMETHODCALL.NAME attribute");
                                    "EXPMETHODCALL.NAME");  
  
         throw XmlValidationError(parser.getLine(), mlParms);         throw XmlValidationError(parser.getLine(), mlParms);
       }       }
Line 4407 
Line 4744 
  
 Boolean XmlReader::getEMethodResponseStartTag( Boolean XmlReader::getEMethodResponseStartTag(
     XmlParser& parser,     XmlParser& parser,
     const char*& name)      const char*& name,
       Boolean& isEmptyTag)
 { {
     XmlEntry entry;     XmlEntry entry;
  
     if (!testStartTag(parser, entry, "EXPMETHODRESPONSE"))      if (!testStartTagOrEmptyTag(parser, entry, "EXPMETHODRESPONSE"))
         return false;         return false;
  
       isEmptyTag = (entry.type == XmlEntry::EMPTY_TAG);
   
     // Get EXPMETHODRESPONSE.NAME attribute:     // Get EXPMETHODRESPONSE.NAME attribute:
  
  
Line 4423 
Line 4763 
         // throw XmlValidationError(         // throw XmlValidationError(
         //   parser.getLine(), "Missing EXPMETHODRESPONSE.NAME attribute");         //   parser.getLine(), "Missing EXPMETHODRESPONSE.NAME attribute");
  
         MessageLoaderParms mlParms("Common.XmlReader.MISSING_ATTRIBUTE",          MessageLoaderParms mlParms("Common.XmlReader.MISSING_EXPMETHODRESPONSE_ATTRIBUTE",
                                    "Missing $0 attribute",                                     "Missing EXPMETHODRESPONSE.NAME attribute");
                                    "EXPMETHODRESPONSE.NAME");  
  
         throw XmlValidationError(parser.getLine(), mlParms);         throw XmlValidationError(parser.getLine(), mlParms);
       }       }
Line 4458 
Line 4797 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //   "Missing EXPPARAMVALUE.NAME attribute");       //   "Missing EXPPARAMVALUE.NAME attribute");
  
       MessageLoaderParms mlParms("Common.XmlReader.MISSING_ATTRIBUTE",        MessageLoaderParms mlParms("Common.XmlReader.MISSING_EXPPARAMVALUE_ATTRIBUTE",
                                  "Missing $0 attribute",                                   "Missing EXPPARAMVALUE.NAME attribute");
                                  "EXPPARAMVALUE.NAME");  
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
     }     }
Line 4495 
Line 4833 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //               "Missing METHODCALL.NAME attribute");       //               "Missing METHODCALL.NAME attribute");
  
       MessageLoaderParms mlParms("Common.XmlReader.MISSING_ATTRIBUTE",        MessageLoaderParms mlParms("Common.XmlReader.MISSING_METHODCALL_ATTRIBUTE",
                                  "Missing $0 attribute",                                   "Missing METHODCALL.NAME attribute");
                                  "METHODCALL.NAME");  
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
     }     }
Line 4514 
Line 4851 
  
 Boolean XmlReader::getMethodResponseStartTag( Boolean XmlReader::getMethodResponseStartTag(
     XmlParser& parser,     XmlParser& parser,
     const char*& name)      const char*& name,
       Boolean& isEmptyTag)
 { {
     XmlEntry entry;     XmlEntry entry;
  
     if (!testStartTag(parser, entry, "METHODRESPONSE"))      if (!testStartTagOrEmptyTag(parser, entry, "METHODRESPONSE"))
         return false;         return false;
  
       isEmptyTag = (entry.type == XmlEntry::EMPTY_TAG);
   
     // Get METHODRESPONSE.NAME attribute:     // Get METHODRESPONSE.NAME attribute:
  
  
Line 4531 
Line 4871 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //   "Missing METHODRESPONSE.NAME attribute");       //   "Missing METHODRESPONSE.NAME attribute");
  
       MessageLoaderParms mlParms("Common.XmlReader.MISSING_ATTRIBUTE",        MessageLoaderParms mlParms("Common.XmlReader.MISSING_METHODRESPONSE_ATTRIBUTE",
                                  "Missing $0 attribute",                                   "Missing METHODRESPONSE.NAME attribute");
                                  "METHODRESPONSE.NAME");  
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
     }     }
Line 4548 
Line 4887 
 // <!ELEMENT PARAMVALUE (VALUE|VALUE.REFERENCE|VALUE.ARRAY|VALUE.REFARRAY)?> // <!ELEMENT PARAMVALUE (VALUE|VALUE.REFERENCE|VALUE.ARRAY|VALUE.REFARRAY)?>
 // <!ATTLIST PARAMVALUE // <!ATTLIST PARAMVALUE
 //      %CIMName; //      %CIMName;
   //      %EmbeddedObject; #IMPLIED
 //      %ParamType;> //      %ParamType;>
 // //
 //------------------------------------------------------------------------------ //------------------------------------------------------------------------------
Line 4558 
Line 4898 
 { {
     XmlEntry entry;     XmlEntry entry;
     const char* name;     const char* name;
     CIMType type;      CIMType type=CIMTYPE_BOOLEAN;
     CIMValue value;     CIMValue value;
  
     if (!testStartTagOrEmptyTag(parser, entry, "PARAMVALUE"))     if (!testStartTagOrEmptyTag(parser, entry, "PARAMVALUE"))
Line 4575 
Line 4915 
       // throw XmlValidationError(parser.getLine(),       // throw XmlValidationError(parser.getLine(),
       //   "Missing PARAMVALUE.NAME attribute");       //   "Missing PARAMVALUE.NAME attribute");
  
       MessageLoaderParms mlParms("Common.XmlReader.MISSING_ATTRIBUTE",        MessageLoaderParms mlParms("Common.XmlReader.MISSING_PARAMVALUE_ATTRIBUTE",
                                  "Missing $0 attribute",                                   "Missing PARAMVALUE.NAME attribute");
                                  "PARAMVALUE.NAME");  
  
       throw XmlValidationError(parser.getLine(), mlParms);       throw XmlValidationError(parser.getLine(), mlParms);
     }     }
  
       // Get PROPERTY.EMBEDDEDOBJECT
   
       String embeddedObject = getEmbeddedObjectAttribute(
           parser.getLine(), entry, "PARAMVALUE");
  
     // Get PARAMVALUE.PARAMTYPE attribute:     // Get PARAMVALUE.PARAMTYPE attribute:
  
     Boolean gotType = getCimTypeAttribute(parser.getLine(), entry, type,     Boolean gotType = getCimTypeAttribute(parser.getLine(), entry, type,
                                           "PARAMVALUE", "PARAMTYPE", false);                                           "PARAMVALUE", "PARAMTYPE", false);
  
     if (!empty)      if (empty)
       {
           gotType = false; // Can't distinguish array and non-array types
       }
       else
     {     {
         // Parse VALUE.REFERENCE and VALUE.REFARRAY type         // Parse VALUE.REFERENCE and VALUE.REFARRAY type
         if ( (type == CIMTYPE_REFERENCE) || !gotType )         if ( (type == CIMTYPE_REFERENCE) || !gotType )
Line 4622 
Line 4969 
                 effectiveType = type;                 effectiveType = type;
             }             }
  
               // If the EMBEDDEDOBJECT attribute is present with value "object"
               // then
               //     Convert the EmbeddedObject-encoded string into a CIMObject
               if (String::equal(embeddedObject, "object"))
               {
                   // The EMBEDDEDOBJECT attribute is only valid on Parameters of type string
                   // The type must have been specified.
                   if (gotType && (type == CIMTYPE_STRING))
                   {
                       // Used below by getValueElement() or getValueArrayElement()
                       effectiveType = CIMTYPE_OBJECT;
                   }
                   else
                   {
                       // Error -- throw exception
                       // (the EmbeddedObject attribute may be applied only to entities that have the type String)
   
                       // l10n
   
                       // throw XmlValidationError(parser.getLine(),
                       //   "expected string type");
   
                       MessageLoaderParms mlParms("Common.XmlReader.INVALID_EMBEDDEDOBJECT_TYPE",
                                        "The EMBEDDEDOBJECT attribute is only valid on string types.");
   
                       throw XmlValidationError(parser.getLine(), mlParms);
                   }
               }
   
             if ( !XmlReader::getValueArrayElement(parser, effectiveType, value) &&             if ( !XmlReader::getValueArrayElement(parser, effectiveType, value) &&
                  !XmlReader::getValueElement(parser, effectiveType, value) )                  !XmlReader::getValueElement(parser, effectiveType, value) )
             {             {
                   gotType = false; // Can't distinguish array and non-array types
                 value.clear();    // Isn't necessary; should already be cleared                 value.clear();    // Isn't necessary; should already be cleared
             }             }
   
         }         }
  
         expectEndTag(parser, "PARAMVALUE");         expectEndTag(parser, "PARAMVALUE");
     }     }
  
   
     paramValue = CIMParamValue(name, value, gotType);     paramValue = CIMParamValue(name, value, gotType);
  
     return true;     return true;
Line 4643 
Line 5022 
 // //
 // <!ELEMENT RETURNVALUE (VALUE|VALUE.REFERENCE)> // <!ELEMENT RETURNVALUE (VALUE|VALUE.REFERENCE)>
 // <!ATTLIST RETURNVALUE // <!ATTLIST RETURNVALUE
   //      %EmbeddedObject; #IMPLIED
 //      %ParamType;> //      %ParamType;>
 // //
 //------------------------------------------------------------------------------ //------------------------------------------------------------------------------
Line 4658 
Line 5038 
     if (!testStartTag(parser, entry, "RETURNVALUE"))     if (!testStartTag(parser, entry, "RETURNVALUE"))
         return false;         return false;
  
       // Get PROPERTY.EMBEDDEDOBJECT
   
       String embeddedObject = getEmbeddedObjectAttribute(
           parser.getLine(), entry, "RETURNVALUE");
   
     // Get RETURNVALUE.PARAMTYPE attribute:     // Get RETURNVALUE.PARAMTYPE attribute:
     // NOTE: Array type return values are not allowed (2/20/02)     // NOTE: Array type return values are not allowed (2/20/02)
  
Line 4682 
Line 5067 
           // throw XmlValidationError(parser.getLine(),           // throw XmlValidationError(parser.getLine(),
           //   "expected VALUE.REFERENCE element");           //   "expected VALUE.REFERENCE element");
  
           MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",            MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_VALUE_REFERENCE_ELEMENT",
                                      "expected $0 element", "VALUE.REFERENCE");                                       "expected VALUE.REFERENCE element");
  
           throw XmlValidationError(parser.getLine(), mlParms);           throw XmlValidationError(parser.getLine(), mlParms);
         }         }
Line 4698 
Line 5083 
             type = CIMTYPE_STRING;             type = CIMTYPE_STRING;
         }         }
  
           if (String::equal(embeddedObject, "object"))
           {
               if (gotType && (type == CIMTYPE_STRING))
               {
                   type = CIMTYPE_OBJECT;  // Used below by getValueElement()
               }
               else
               {
                   // Error -- throw exception
                   // (the EmbeddedObject attribute may be applied only to entities that have the type String)
   
                   // l10n
   
                   // throw XmlValidationError(parser.getLine(),
                   //   "expected string type");
   
                   MessageLoaderParms mlParms("Common.XmlReader.INVALID_EMBEDDEDOBJECT_TYPE",
                                    "The EMBEDDEDOBJECT attribute is only valid on string types.");
   
                   throw XmlValidationError(parser.getLine(), mlParms);
               }
           }
   
         if ( !XmlReader::getValueElement(parser, type, returnValue) )         if ( !XmlReader::getValueElement(parser, type, returnValue) )
         {         {
  
Line 4706 
Line 5114 
           // throw XmlValidationError(parser.getLine(),           // throw XmlValidationError(parser.getLine(),
           //   "expected VALUE element");           //   "expected VALUE element");
  
           MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_ELEMENT",                  MessageLoaderParms mlParms("Common.XmlReader.EXPECTED_VALUE_ELEMENT",
                                      "expected $0 element", "VALUE");                                       "expected VALUE element");
  
           throw XmlValidationError(parser.getLine(), mlParms);           throw XmlValidationError(parser.getLine(), mlParms);
         }         }
Line 4719 
Line 5127 
 } }
  
 PEGASUS_NAMESPACE_END PEGASUS_NAMESPACE_END
   


Legend:
Removed from v.1.84.6.1  
changed lines
  Added in v.1.116.2.1

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2