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

Diff for /pegasus/src/Pegasus/Common/CIMClassRep.cpp between version 1.49 and 1.76.4.1

version 1.49, 2002/07/30 16:14:53 version 1.76.4.1, 2007/12/19 14:51:11
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 21 
Line 29 
 // //
 //============================================================================== //==============================================================================
 // //
 // Author: Mike Brasher (mbrasher@bmc.com)  
 //  
 // Modified By: Karl Schopmeyer(k.schopmeyer@attglobal.net)  
 //              Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)  
 //              Carol Ann Krug Graves, Hewlett-Packard Company  
 //                (carolann_graves@hp.com)  
 //  
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
 #include "CIMClassRep.h" #include "CIMClassRep.h"
Line 40 
Line 41 
 #include "XmlWriter.h" #include "XmlWriter.h"
 #include "MofWriter.h" #include "MofWriter.h"
 #include <Pegasus/Common/Tracer.h> #include <Pegasus/Common/Tracer.h>
   #include <Pegasus/Common/MessageLoader.h>
   #include "CIMNameUnchecked.h"
   #include "StrLit.h"
   #include "CIMInstanceRep.h"
  
 PEGASUS_NAMESPACE_BEGIN PEGASUS_NAMESPACE_BEGIN
 PEGASUS_USING_STD; PEGASUS_USING_STD;
Line 59 
Line 64 
  
 Boolean CIMClassRep::isAssociation() const Boolean CIMClassRep::isAssociation() const
 { {
     Uint32 pos = findQualifier(CIMQualifierNames::ASSOCIATION);      Uint32 index = findQualifier(CIMQualifierNames::ASSOCIATION);
  
     if (pos == PEG_NOT_FOUND)      if (index == PEG_NOT_FOUND)
         return false;         return false;
  
     Boolean flag;     Boolean flag;
  
     const CIMValue& value = getQualifier(pos).getValue();      const CIMValue& value = getQualifier(index).getValue();
  
     if (value.getType() != CIMTYPE_BOOLEAN)     if (value.getType() != CIMTYPE_BOOLEAN)
         return false;         return false;
Line 77 
Line 82 
  
 Boolean CIMClassRep::isAbstract() const Boolean CIMClassRep::isAbstract() const
 { {
     Uint32 pos = findQualifier(CIMQualifierNames::ABSTRACT);      Uint32 index = findQualifier(CIMQualifierNames::ABSTRACT);
  
     if (pos == PEG_NOT_FOUND)      if (index == PEG_NOT_FOUND)
         return false;         return false;
  
     Boolean flag;     Boolean flag;
     const CIMValue& value = getQualifier(pos).getValue();      const CIMValue& value = getQualifier(index).getValue();
  
     if (value.getType() != CIMTYPE_BOOLEAN)     if (value.getType() != CIMTYPE_BOOLEAN)
         return false;         return false;
Line 91 
Line 96 
     value.get(flag);     value.get(flag);
     return flag;     return flag;
 } }
   
 Boolean CIMClassRep::isTrueQualifier(const CIMName& name) const  
 {  
     Uint32 pos = findQualifier(name);  
   
     if (pos == PEG_NOT_FOUND)  
         return false;  
   
     Boolean flag;  
     const CIMValue& value = getQualifier(pos).getValue();  
   
     if (value.getType() != CIMTYPE_BOOLEAN)  
         return false;  
   
     value.get(flag);  
     return flag;  
 }  
   
 void CIMClassRep::setSuperClassName(const CIMName& superClassName) void CIMClassRep::setSuperClassName(const CIMName& superClassName)
 { {
     _superClassName = superClassName;     _superClassName = superClassName;
Line 116 
Line 103 
  
 void CIMClassRep::addProperty(const CIMProperty& x) void CIMClassRep::addProperty(const CIMProperty& x)
 { {
     if (x.isNull())      if (x.isUninitialized())
         throw UninitializedHandle();          throw UninitializedObjectException();
  
     // Reject addition of duplicate property name:     // Reject addition of duplicate property name:
  
     if (findProperty(x.getName()) != PEG_NOT_FOUND)     if (findProperty(x.getName()) != PEG_NOT_FOUND)
         throw AlreadyExists();      {
           MessageLoaderParms parms(
     // Reject addition of references to non-associations:              "Common.CIMClassRep.PROPERTY",
               "property \"$0\"",
     if (!isAssociation() && x.getValue().getType() == CIMTYPE_REFERENCE)              x.getName().getString());
         throw AddedReferenceToClass(_reference.getClassName());          throw AlreadyExistsException(parms);
       }
  
     // Set the class origin:      // Reject addition of a reference property without a referenceClassName
     // ATTN: put this check in other places:  
  
     if (x.getClassOrigin().isNull())      if ((x.getType() == CIMTYPE_REFERENCE) &&
         CIMProperty(x).setClassOrigin(_reference.getClassName());          (x.getReferenceClassName().isNull()))
       {
           throw TypeMismatchException();
       }
  
     // Add the property:     // Add the property:
  
Line 142 
Line 132 
  
 void CIMClassRep::addMethod(const CIMMethod& x) void CIMClassRep::addMethod(const CIMMethod& x)
 { {
     if (x.isNull())      if (x.isUninitialized())
         throw UninitializedHandle();          throw UninitializedObjectException();
  
     // Reject duplicate method names:     // Reject duplicate method names:
  
     if (findMethod(x.getName()) != PEG_NOT_FOUND)     if (findMethod(x.getName()) != PEG_NOT_FOUND)
         throw AlreadyExists();      {
           MessageLoaderParms parms(
               "Common.CIMClassRep.METHOD",
               "method \"$0\"",
               x.getName().getString());
           throw AlreadyExistsException(parms);
       }
  
     // Add the method:     // Add the method:
  
Line 166 
Line 162 
     return PEG_NOT_FOUND;     return PEG_NOT_FOUND;
 } }
  
 CIMMethod CIMClassRep::getMethod(Uint32 pos)  CIMMethod CIMClassRep::getMethod(Uint32 index)
 { {
     if (pos >= _methods.size())      if (index >= _methods.size())
         throw OutOfBounds();          throw IndexOutOfBoundsException();
  
     return _methods[pos];      return _methods[index];
 } }
  
 Uint32 CIMClassRep::getMethodCount() const Uint32 CIMClassRep::getMethodCount() const
Line 179 
Line 175 
     return _methods.size();     return _methods.size();
 } }
  
 void CIMClassRep::removeMethod(Uint32 pos)  void CIMClassRep::removeMethod(Uint32 index)
 { {
     if (pos >= _methods.size())      if (index >= _methods.size())
         throw OutOfBounds();          throw IndexOutOfBoundsException();
  
     _methods.remove(pos);      _methods.remove(index);
 } }
  
 void CIMClassRep::resolve( void CIMClassRep::resolve(
Line 201 
Line 197 
  
         PEG_TRACE_STRING(TRC_OBJECTRESOLUTION, Tracer::LEVEL3,         PEG_TRACE_STRING(TRC_OBJECTRESOLUTION, Tracer::LEVEL3,
                 String("CIMClassRep::resolve  class = ") +                 String("CIMClassRep::resolve  class = ") +
                 _reference.getClassName() + ", superclass = " +          _reference.getClassName().getString() + ", superclass = " +
                 _superClassName);          _superClassName.getString());
  
     if (!_superClassName.isNull())     if (!_superClassName.isNull())
         {         {
                 //cout << "KSTEST Class Resolve with Super class " << getClassName()  
                 //<< " superClass " << _superClassName << endl;  
                 //----------------------------------------------------------------------                 //----------------------------------------------------------------------
                 // First check to see if the super-class really exists and the subclassing legal:          // First check to see if the super-class really exists and the
           // subclassing legal:
                 //----------------------------------------------------------------------                 //----------------------------------------------------------------------
                 CIMConstClass superClass          CIMConstClass superClass =
                         = context->lookupClass(nameSpace, _superClassName);              context->lookupClass(nameSpace, _superClassName);
  
                 if (superClass.isNull())          if (superClass.isUninitialized())
                         throw PEGASUS_CIM_EXCEPTION(CIM_ERR_INVALID_SUPERCLASS,_superClassName);              throw PEGASUS_CIM_EXCEPTION(CIM_ERR_INVALID_SUPERCLASS,
                   _superClassName.getString());
  
 #if 0 #if 0
                 if (!superClass._rep->_resolved)                 if (!superClass._rep->_resolved)
Line 225 
Line 221 
  
                 /* ATTN:KS-24 Mar 2002 P1 - Test this and confirm that rule is correct                 /* ATTN:KS-24 Mar 2002 P1 - Test this and confirm that rule is correct
                 if isAbstract() && !superclass.isAbstract()                 if isAbstract() && !superclass.isAbstract()
                         throw PEGASUS_CIM_EXCEPTION(CIM_ERR_INVALID_SUPERCLASS,_superClassName);              throw PEGASUS_CIM_EXCEPTION(
                   CIM_ERR_INVALID_SUPERCLASS, _superClassName);
                 */                 */
                 /*if(superclass.isTrueQualifier(CIMQualifierNames::TERMINAL)                 /*if(superclass.isTrueQualifier(CIMQualifierNames::TERMINAL)
                         throw PEGASUS_CIM_EXCEPTION(CIM_ERR_INVALID_SUPERCLASS,_superClassName);              throw PEGASUS_CIM_EXCEPTION(
                   CIM_ERR_INVALID_SUPERCLASS, _superClassName);
                 */                 */
                 //----------------------------------------------------------------------                 //----------------------------------------------------------------------
                 // Iterate all the properties of *this* class. Resolve each one and                 // Iterate all the properties of *this* class. Resolve each one and
                 // set the class-origin:                 // set the class-origin:
                 //----------------------------------------------------------------------                 //----------------------------------------------------------------------
  
           Boolean isAssociationClass = isAssociation();
   
                 for (Uint32 i = 0, n = _properties.size(); i < n; i++)                 for (Uint32 i = 0, n = _properties.size(); i < n; i++)
                 {                 {
                         CIMProperty& property = _properties[i];                         CIMProperty& property = _properties[i];
                         Uint32 pos = superClass.findProperty(property.getName());  
  
                         if (pos == PEG_NOT_FOUND)              if (!isAssociationClass &&
                   property.getValue().getType() == CIMTYPE_REFERENCE)
                         {                         {
                             Resolver::resolveProperty (property, context,                  throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER,
                                 nameSpace, false, true);                      MessageLoaderParms(
                           "Common.CIMClassRep.NON_ASSOCIATION_CLASS_CONTAINS_"
                               "REFERENCE_PROPERTY",
                           "Non-assocation class contains reference property"));
               }
   
   
               Uint32 index = superClass.findProperty(property.getName());
   
               if (index == PEG_NOT_FOUND)
               {
                   Resolver::resolveProperty(
                       property, context, nameSpace, false, true);
                   if (property.getClassOrigin().isNull())
                   {
                       property.setClassOrigin(getClassName());
                   }
                   property.setPropagated(false);
                         }                         }
                         else                         else
                         {                         {
                                 CIMConstProperty superClassProperty =                                 CIMConstProperty superClassProperty =
                                 superClass.getProperty(pos);                      superClass.getProperty(index);
                             Resolver::resolveProperty (property, context,                             Resolver::resolveProperty (property, context,
                                 nameSpace, false, superClassProperty, true);                                 nameSpace, false, superClassProperty, true);
                   if (property.getClassOrigin().isNull())
                   {
                       property.setClassOrigin(
                           superClassProperty.getClassOrigin());
                   }
                         }                         }
                 }                 }
  
Line 269 
Line 291 
                         // insert it (setting the propagated flag). Otherwise, change                         // insert it (setting the propagated flag). Otherwise, change
                         // the class-origin and propagated flag accordingly.                         // the class-origin and propagated flag accordingly.
  
                         Uint32 pos = PEG_NOT_FOUND;              Uint32 index = PEG_NOT_FOUND;
                         /*       ATTN: KS move to simpler version of the find                         /*       ATTN: KS move to simpler version of the find
                         for (Uint32 j = m, n = _properties.size(); j < n; j++)                         for (Uint32 j = m, n = _properties.size(); j < n; j++)
                         {                         {
                                 if (CIMName::equal(_properties[j].getName(),                  if (_properties[j].getName() == superClassProperty.getName())
                                                                    superClassProperty.getName()))  
                                 {                                 {
                                         pos = j;                      index = j;
                                         break;                                         break;
                                 }                                 }
                         }                         }
                         */                         */
                         pos = findProperty(superClassProperty.getName());              index = findProperty(superClassProperty.getName());
  
                         // If property exists in super class but not in this one, then                         // If property exists in super class but not in this one, then
                         // clone and insert it. Otherwise, the properties class                         // clone and insert it. Otherwise, the properties class
                         // origin was set above.                         // origin was set above.
  
                         CIMProperty superproperty = superClassProperty.clone(true);              CIMProperty superproperty = superClassProperty.clone();
  
                         if (pos == PEG_NOT_FOUND)              if (index == PEG_NOT_FOUND)
                         {                         {
                                 superproperty.setPropagated(true);                                 superproperty.setPropagated(true);
                                 _properties.insert(m++, superproperty);                                 _properties.insert(m++, superproperty);
Line 302 
Line 323 
                                 // If a qualifier is defined on the superclass's property                                 // If a qualifier is defined on the superclass's property
                                 // but not on the subclass's, then add it to the subclass's                                 // but not on the subclass's, then add it to the subclass's
                                 // property's qualifier list.                                 // property's qualifier list.
                                 CIMProperty subproperty = _properties[pos];                  CIMProperty subproperty = _properties[index];
                                 for (Uint32 i = 0, n = superproperty.getQualifierCount();                                 for (Uint32 i = 0, n = superproperty.getQualifierCount();
                                         i < n; i++)                                         i < n; i++)
                                 {                                 {
                                         Uint32 pos = PEG_NOT_FOUND;                      Uint32 index = PEG_NOT_FOUND;
                                         CIMQualifier superClassQualifier =                                         CIMQualifier superClassQualifier =
                                                                                         superproperty.getQualifier(i);                                                                                         superproperty.getQualifier(i);
                                         const CIMName name = superClassQualifier.getName();                                         const CIMName name = superClassQualifier.getName();
                                         /* ATTN KS This is replacement find function.                                         /* ATTN KS This is replacement find function.
                                         if((Uint32 j = subproperty.findQualifier(q.getName()) == PEG_NOT_FOUND)                      if (Uint32 j = subproperty.findQualifier(q.getName()) ==
                           PEG_NOT_FOUND)
                                         {                                         {
                                                 subproperty.addQualifier(superClassQualifier);                                                 subproperty.addQualifier(superClassQualifier);
   
                                         }                                         }
                                         */                                         */
                                         for (Uint32 j = 0, m = subproperty.getQualifierCount();                                         for (Uint32 j = 0, m = subproperty.getQualifierCount();
Line 324 
Line 345 
                                                 CIMConstQualifier q = subproperty.getQualifier(j);                                                 CIMConstQualifier q = subproperty.getQualifier(j);
                                                 if (name.equal(q.getName()))                                                 if (name.equal(q.getName()))
                                                 {                                                 {
                                                         pos = j;                              index = j;
                                                         break;                                                         break;
                                                 }                                                 }
                                         }  // end comparison of subclass property's qualifiers                                         }  // end comparison of subclass property's qualifiers
                                         if (pos == PEG_NOT_FOUND)                      if (index == PEG_NOT_FOUND)
                                         {                                         {
                                                 subproperty.addQualifier(superClassQualifier);                                                 subproperty.addQualifier(superClassQualifier);
                                         }                                         }
                                         /*                                         /*
                                         if ((pos = subproperty.findQualifier(name)) == PEG_NOT_FOUND)                      if ((index = subproperty.findQualifier(name)) ==
                           PEG_NOT_FOUND)
                                         {                                         {
                                                 subproperty.addQualifier(superClassQualifier);                                                 subproperty.addQualifier(superClassQualifier);
                                         }                                         }
Line 350 
Line 372 
                 for (Uint32 i = 0, n = _methods.size(); i < n; i++)                 for (Uint32 i = 0, n = _methods.size(); i < n; i++)
                 {                 {
                         CIMMethod& method = _methods[i];                         CIMMethod& method = _methods[i];
                         Uint32 pos = superClass.findMethod(method.getName());              Uint32 index = superClass.findMethod(method.getName());
  
                         if (pos == PEG_NOT_FOUND)              if (index == PEG_NOT_FOUND)
               {
                   Resolver::resolveMethod(method, context, nameSpace);
                   if (method.getClassOrigin().isNull())
                         {                         {
                             Resolver::resolveMethod (method, context,                      method.setClassOrigin(getClassName());
                                 nameSpace);                  }
                   method.setPropagated(false);
                         }                         }
                         else                         else
                         {                         {
                                 CIMConstMethod superClassMethod = superClass.getMethod(pos);                  CIMConstMethod superClassMethod = superClass.getMethod(index);
                             Resolver::resolveMethod (method, context,                  Resolver::resolveMethod(
                                 nameSpace, superClassMethod);                      method, context, nameSpace, superClassMethod);
                         }                         }
                 }                 }
  
Line 378 
Line 404 
                         // insert it (setting the propagated flag). Otherwise, change                         // insert it (setting the propagated flag). Otherwise, change
                         // the class-origin and propagated flag accordingly.                         // the class-origin and propagated flag accordingly.
  
                         Uint32 pos = PEG_NOT_FOUND;              Uint32 index = PEG_NOT_FOUND;
                         /**********************  KS move to simpler version                         /**********************  KS move to simpler version
                         for (Uint32 j = m, n = _methods.size(); j < n; j++)                         for (Uint32 j = m, n = _methods.size(); j < n; j++)
                         {                         {
                                 if (CIMName::equal(_methods[j].getName(),                  if (_methods[j].getName() == superClassMethod.getName())
                                                                         superClassMethod.getName()))  
                                 {                                 {
                                         pos = j;                      index = j;
                                         break;                                         break;
                                 }                                 }
                         }                         }
Line 394 
Line 419 
                         // clone and insert it. Otherwise, the method's class origin                         // clone and insert it. Otherwise, the method's class origin
                         // has already been set above.                         // has already been set above.
  
                         if (pos == PEG_NOT_FOUND)              if (index == PEG_NOT_FOUND)
                         {                         {
                                 CIMMethod method = superClassMethod.clone();                                 CIMMethod method = superClassMethod.clone();
                                 method.setPropagated(true);                                 method.setPropagated(true);
                                 _methods.insert(m++, method);                                 _methods.insert(m++, method);
                         }                         }
                         */                         */
                         if((pos = findMethod(superClassMethod.getName())) == PEG_NOT_FOUND)              if ((index = findMethod(superClassMethod.getName())) ==
                   PEG_NOT_FOUND)
                         {                         {
                                 CIMMethod method = superClassMethod.clone();                                 CIMMethod method = superClassMethod.clone();
                                 method.setPropagated(true);                                 method.setPropagated(true);
                                 _methods.insert(m++, method);                                 _methods.insert(m++, method);
                         }                         }
   
                 }                 }
  
                 //----------------------------------------------------------------------                 //----------------------------------------------------------------------
                 // Validate the qualifiers of this class:                 // Validate the qualifiers of this class:
                 //----------------------------------------------------------------------                 //----------------------------------------------------------------------
                 //cout << "KSTEST Class Qualifiers resolve for class" << getClassName() << endl;  
                 _qualifiers.resolve(                 _qualifiers.resolve(
                         context,                         context,
                         nameSpace,                         nameSpace,
Line 426 
Line 452 
                 //----------------------------------------------------------------------                 //----------------------------------------------------------------------
                 // Resolve each property:                 // Resolve each property:
                 //----------------------------------------------------------------------                 //----------------------------------------------------------------------
                 //cout << "KSTEST Class Resolve, No Super class " << getClassName() << endl;  
  
                 for (Uint32 i = 0, n = _properties.size(); i < n; i++)                 for (Uint32 i = 0, n = _properties.size(); i < n; i++)
                     Resolver::resolveProperty (_properties[i], context,          {
                         nameSpace, false, true);               Resolver::resolveProperty(
                    _properties[i], context, nameSpace, false, true);
                _properties[i].setClassOrigin(getClassName());
                _properties[i].setPropagated(false);
           }
  
                 //----------------------------------------------------------------------                 //----------------------------------------------------------------------
                 // Resolve each method:                 // Resolve each method:
                 //----------------------------------------------------------------------                 //----------------------------------------------------------------------
  
                 for (Uint32 i = 0, n = _methods.size(); i < n; i++)                 for (Uint32 i = 0, n = _methods.size(); i < n; i++)
           {
                     Resolver::resolveMethod (_methods[i], context, nameSpace);                     Resolver::resolveMethod (_methods[i], context, nameSpace);
               _methods[i].setClassOrigin(getClassName());
               _methods[i].setPropagated(false);
           }
  
                 //----------------------------------------------------------------------                 //----------------------------------------------------------------------
                 // Resolve the qualifiers:                 // Resolve the qualifiers:
Line 457 
Line 490 
     // _resolved = true;     // _resolved = true;
 } }
  
 void CIMClassRep::toXml(Array<Sint8>& out) const  CIMInstance CIMClassRep::buildInstance(Boolean includeQualifiers,
       Boolean includeClassOrigin,
       const CIMPropertyList& propertyList) const
   {
   
       // Create the new instance representation
       CIMInstanceRep* newInstanceRep = new CIMInstanceRep(
           CIMObjectPath(String::EMPTY,
                         CIMNamespaceName(),
                         _reference.getClassName()));
   
       // Copy qualifiers if required
       if (includeQualifiers)
       {
           for (Uint32 i = 0 ; i < getQualifierCount() ; i++)
           {
               newInstanceRep->_qualifiers.add(getQualifier(i).clone());
           }
       }
   
       newInstanceRep->_properties.reserveCapacity(_properties.size());
   
       // Copy Properties
       for (Uint32 i = 0 ; i < _properties.size() ; i++)
       {
           CIMConstProperty cp = getProperty(i);
           CIMName name = cp.getName();
           Array<CIMName> pl = propertyList.getPropertyNameArray();
           if (propertyList.isNull() || Contains(pl, name))
           {
               CIMProperty p;
   
               if (includeQualifiers)
               {
                   p = getProperty(i).clone();
               }
               else
               {
                   p = CIMProperty(cp.getName(),
                                   cp.getValue(),
                                   cp.getArraySize(),
                                   cp.getReferenceClassName(),
                                   cp.getClassOrigin());
               }
   
               // Delete class origin attribute if required
               if (!includeClassOrigin)
               {
                   p.setClassOrigin(CIMName());
               }
   
               newInstanceRep->_properties.append(p);
           }
       }
   
       // Create new CIMInstance from CIMInstanceRep
       CIMInstance newInstance(newInstanceRep);
   
       return newInstance;
   }
   
   void CIMClassRep::toXml(Buffer& out) const
 { {
     // Class opening element:     // Class opening element:
  
     out << "<CLASS ";      out << STRLIT("<CLASS ");
     out << " NAME=\"" << _reference.getClassName() << "\" ";      out << STRLIT(" NAME=\"") << _reference.getClassName() << STRLIT("\" ");
  
     if (!_superClassName.isNull())     if (!_superClassName.isNull())
         out << " SUPERCLASS=\"" << _superClassName << "\" ";          out << STRLIT(" SUPERCLASS=\"") << _superClassName << STRLIT("\" ");
  
     out << ">\n";      out << STRLIT(">\n");
  
     // Qualifiers:      // Append Class Qualifiers:
  
     _qualifiers.toXml(out);     _qualifiers.toXml(out);
  
     // Parameters:      // Append Property definitions:
  
     for (Uint32 i = 0, n = _properties.size(); i < n; i++)     for (Uint32 i = 0, n = _properties.size(); i < n; i++)
         XmlWriter::appendPropertyElement(out, _properties[i]);         XmlWriter::appendPropertyElement(out, _properties[i]);
  
     // Methods:      // Append Method definitions:
  
     for (Uint32 i = 0, n = _methods.size(); i < n; i++)     for (Uint32 i = 0, n = _methods.size(); i < n; i++)
         XmlWriter::appendMethodElement(out, _methods[i]);         XmlWriter::appendMethodElement(out, _methods[i]);
  
     // Class closing element:     // Class closing element:
  
     out << "</CLASS>\n";      out << STRLIT("</CLASS>\n");
 } }
   
 /** toMof prepares an 8-bit string with the MOF for the class. /** toMof prepares an 8-bit string with the MOF for the class.
     The BNF for this is:     The BNF for this is:
     <pre>     <pre>
Line 500 
Line 595 
  
 */ */
  
 void CIMClassRep::toMof(Array<Sint8>& out) const  void CIMClassRep::toMof(Buffer& out) const
 { {
     // Get and format the class qualifiers     // Get and format the class qualifiers
     out << "\n//    Class " << _reference.getClassName();      out << STRLIT("\n//    Class ") << _reference.getClassName();
     if (_qualifiers.getCount())     if (_qualifiers.getCount())
         out << "\n";          out.append('\n');
     out << "\n";      out.append('\n');
     _qualifiers.toMof(out);     _qualifiers.toMof(out);
  
     // Separate qualifiers from Class Name     // Separate qualifiers from Class Name
     out << "\n";      out.append('\n');
  
     // output class statement     // output class statement
     out << "class " << _reference.getClassName();      out << STRLIT("class ") << _reference.getClassName();
  
     if (!_superClassName.isNull())     if (!_superClassName.isNull())
         out << " : " << _superClassName;          out << STRLIT(" : ") << _superClassName;
  
     out << "\n{";      out << STRLIT("\n{");
  
     // format the Properties:     // format the Properties:
     for (Uint32 i = 0, n = _properties.size(); i < n; i++)     for (Uint32 i = 0, n = _properties.size(); i < n; i++)
     {     {
         // Generate MOF if this property not propogated          // Generate MOF if this property not propagated
         // Note that the test is required only because         // Note that the test is required only because
         // there is an error in getclass that does not         // there is an error in getclass that does not
         // test the localOnly flag.          // test the localOnly flag
           // The inital "false" indicates to format as property declaration.
         if (!_properties[i].getPropagated())         if (!_properties[i].getPropagated())
             MofWriter::appendPropertyElement(out, _properties[i]);              MofWriter::appendPropertyElement(true, out, _properties[i]);
     }     }
  
     // Format the Methods:  for non-propagated methods     // Format the Methods:  for non-propagated methods
Line 539 
Line 635 
     }     }
  
     // Class closing element:     // Class closing element:
     out << "\n};\n";      out << STRLIT("\n};\n");
 } }
  
  
Line 566 
Line 662 
     if (!tmprep)     if (!tmprep)
         return false;         return false;
  
     if (_superClassName != tmprep->_superClassName)      if (!_superClassName.equal (tmprep->_superClassName))
         return false;         return false;
  
     //     //
Line 585 
Line 681 
             if (!tmp1[i].identical(tmp2[i]))             if (!tmp1[i].identical(tmp2[i]))
                 return false;                 return false;
  
             if (tmp1[i].getClassOrigin() != tmp2[i].getClassOrigin())              if (!tmp1[i].getClassOrigin().equal (tmp2[i].getClassOrigin()))
                 return false;                 return false;
  
             if (tmp1[i].getPropagated() != tmp2[i].getPropagated())             if (tmp1[i].getPropagated() != tmp2[i].getPropagated())
Line 607 
Line 703 
     {     {
         CIMConstProperty property = getProperty(i);         CIMConstProperty property = getProperty(i);
  
         if (property.isKey())          Uint32 index;
           if ((index = property.findQualifier(
               CIMNameUnchecked("key"))) != PEG_NOT_FOUND)
           {
               CIMValue value;
               value = property.getQualifier (index).getValue ();
               if (!value.isNull ())
               {
                   Boolean isKey;
                   value.get (isKey);
                   if (isKey)
             keyNames.append(property.getName());             keyNames.append(property.getName());
     }     }
 } }
       }
   }
  
 Boolean CIMClassRep::hasKeys() const Boolean CIMClassRep::hasKeys() const
 { {
Line 618 
Line 726 
     {     {
         CIMConstProperty property = getProperty(i);         CIMConstProperty property = getProperty(i);
  
         if (getProperty(i).isKey())          Uint32 index;
           if ((index = property.findQualifier(
               CIMNameUnchecked("key"))) != PEG_NOT_FOUND)
           {
               CIMValue value;
               value = property.getQualifier (index).getValue ();
               if (!value.isNull ())
               {
                   Boolean isKey;
                   value.get (isKey);
                   if (isKey)
             return true;             return true;
     }     }
           }
       }
  
     return false;     return false;
 } }


Legend:
Removed from v.1.49  
changed lines
  Added in v.1.76.4.1

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2