void CIMObjectPath::set(const String& objectName) { clear(); //-------------------------------------------------------------------------- // We will extract components from an object name. Here is an sample // object name: // // //atp:9999/root/cimv25:TennisPlayer.first="Patrick",last="Rafter" //-------------------------------------------------------------------------- // Convert to a C String first: CString pCString = objectName.getCString(); char* p = const_cast<char*>((const char*) pCString); Boolean gotHost; Boolean gotNamespace; gotHost = _parseHostElement(objectName, p, _rep->_host); gotNamespace = _parseNamespaceElement(objectName, p, _rep->_nameSpace); if (gotHost && !gotNamespace) { throw MalformedObjectNameException(objectName); } // Extract the class name: char* dot = strchr(p, '.'); if (!dot) { if (!CIMName::legal(p)) { throw MalformedObjectNameException(objectName); } // ATTN: remove this later: a reference should only be able to hold // an instance name. _rep->_className = CIMName (p); return; } String className = String(p, (Uint32)(dot - p)); if (!CIMName::legal(className)) { throw MalformedObjectNameException(objectName); } _rep->_className = className; // Advance past dot: p = dot + 1; _parseKeyBindingPairs(objectName, p, _rep->_keyBindings); }
void CIMObjectPath::set(const String& objectName) { // the clear automatically ensures // we have our own copy of the representation clear(); //-------------------------------------------------------------------------- // We will extract components from an object name. Here is an sample // object name: // // //atp:9999/root/cimv25:TennisPlayer.first="Patrick",last="Rafter" //-------------------------------------------------------------------------- // Convert to a C String first: CString pCString = objectName.getCString(); char* p = const_cast<char*>((const char*) pCString); Boolean gotHost; Boolean gotNamespace; gotHost = _parseHostElement(objectName, p, _rep->_host); gotNamespace = _parseNamespaceElement(objectName, p, _rep->_nameSpace); if (gotHost && !gotNamespace) { MessageLoaderParms mlParms( "Common.CIMObjectPath.MISSING_NAMESPACE", "$0, reason:\"host specified, missing namespace\"", objectName); throw MalformedObjectNameException(mlParms); } // Extract the class name: char* dot = strchr(p, '.'); if (!dot) { if (!CIMName::legal(p)) { MessageLoaderParms mlParms( "Common.CIMObjectPath.INVALID_CLASSNAME", "$0, reason:\"class name $1 not a legal CIM name\"", objectName, p); throw MalformedObjectNameException(mlParms); } // ATTN: remove this later: a reference should only be able to hold // an instance name. _rep->_className = CIMName (p); return; } String className = String(p, (Uint32)(dot - p)); if (!CIMName::legal(className)) { MessageLoaderParms mlParms( "Common.CIMObjectPath.INVALID_CLASSNAME", "$0, reason:\"class name $1 not a legal CIM name\"", objectName, className); throw MalformedObjectNameException(mlParms); } _rep->_className = className; // Advance past dot: p = dot + 1; _parseKeyBindingPairs(objectName, p, _rep->_keyBindings); }