version 1.33, 2009/06/30 10:31:32
|
version 1.35, 2010/03/04 17:23:38
|
|
|
#include <Pegasus/Common/SharedPtr.h> | #include <Pegasus/Common/SharedPtr.h> |
#include <Pegasus/Provider/CIMOMHandle.h> | #include <Pegasus/Provider/CIMOMHandle.h> |
#include <Pegasus/Config/ConfigManager.h> | #include <Pegasus/Config/ConfigManager.h> |
|
#include <Pegasus/Common/SCMOClassCache.h> |
| |
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
|
|
_normalizer.processInstance(localInstance)); | _normalizer.processInstance(localInstance)); |
} | } |
| |
|
void GetInstanceResponseHandler::deliver(const SCMOInstance& cimInstance) |
|
{ |
|
if (cimInstance.isUninitialized()) |
|
{ |
|
MessageLoaderParms message( |
|
"Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", |
|
"The object is not initialized."); |
|
|
|
throw CIMException(CIM_ERR_FAILED, message); |
|
} |
|
|
|
if (SimpleInstanceResponseHandler::size() != 0) |
|
{ |
|
MessageLoaderParms message( |
|
"Server.OperationResponseHandler.TOO_MANY_OBJECTS_DELIVERED", |
|
"Too many objects delivered."); |
|
|
|
throw CIMException(CIM_ERR_FAILED, message); |
|
} |
|
|
|
SimpleInstanceResponseHandler::deliver(cimInstance); |
|
} |
|
|
void GetInstanceResponseHandler::complete() | void GetInstanceResponseHandler::complete() |
{ | { |
if (SimpleInstanceResponseHandler::size() == 0) | if (SimpleInstanceResponseHandler::size() == 0) |
|
|
{ | { |
CIMGetInstanceResponseMessage& msg = | CIMGetInstanceResponseMessage& msg = |
*static_cast<CIMGetInstanceResponseMessage*>(getResponse()); | *static_cast<CIMGetInstanceResponseMessage*>(getResponse()); |
|
Array<CIMInstance> cimObjs= getObjects(); |
msg.getResponseData().setCimInstance(getObjects()[0]); |
Array<SCMOInstance> scmoObjs= getSCMOObjects(); |
|
if (cimObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setInstance(cimObjs[0]); |
|
} |
|
else |
|
{ |
|
msg.getResponseData().setSCMO(scmoObjs); |
|
} |
} | } |
} | } |
| |
|
|
_normalizer.processInstance(cimInstance)); | _normalizer.processInstance(cimInstance)); |
} | } |
| |
|
void EnumerateInstancesResponseHandler::deliver( |
|
const SCMOInstance& scmoInstance) |
|
{ |
|
if (scmoInstance.isUninitialized()) |
|
{ |
|
MessageLoaderParms message( |
|
"Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", |
|
"The object is not initialized."); |
|
|
|
throw CIMException(CIM_ERR_FAILED, message); |
|
} |
|
SimpleInstanceResponseHandler::deliver(scmoInstance); |
|
} |
|
|
String EnumerateInstancesResponseHandler::getClass() const | String EnumerateInstancesResponseHandler::getClass() const |
{ | { |
return String("EnumerateInstancesResponseHandler"); | return String("EnumerateInstancesResponseHandler"); |
|
|
CIMEnumerateInstancesResponseMessage& msg = | CIMEnumerateInstancesResponseMessage& msg = |
*static_cast<CIMEnumerateInstancesResponseMessage*>(getResponse()); | *static_cast<CIMEnumerateInstancesResponseMessage*>(getResponse()); |
| |
msg.getResponseData().setNamedInstances(getObjects()); |
Array<CIMInstance> cimObjs= getObjects(); |
|
Array<SCMOInstance> scmoObjs= getSCMOObjects(); |
|
if (cimObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setInstances(cimObjs); |
|
} |
|
if (scmoObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setSCMO(scmoObjs); |
|
} |
} | } |
| |
// | // |
|
|
_normalizer.processInstanceObjectPath(cimObjectPath)); | _normalizer.processInstanceObjectPath(cimObjectPath)); |
} | } |
| |
|
void EnumerateInstanceNamesResponseHandler::deliver( |
|
const SCMOInstance& scmoObjectPath) |
|
{ |
|
if (scmoObjectPath.getClassName()==NULL) |
|
{ |
|
MessageLoaderParms message( |
|
"Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", |
|
"The object is not initialized."); |
|
|
|
throw CIMException(CIM_ERR_FAILED, message); |
|
} |
|
|
|
SimpleObjectPathResponseHandler::deliver(scmoObjectPath); |
|
} |
|
|
String EnumerateInstanceNamesResponseHandler::getClass() const | String EnumerateInstanceNamesResponseHandler::getClass() const |
{ | { |
return String("EnumerateInstanceNamesResponseHandler"); | return String("EnumerateInstanceNamesResponseHandler"); |
|
|
CIMEnumerateInstanceNamesResponseMessage& msg = | CIMEnumerateInstanceNamesResponseMessage& msg = |
*static_cast<CIMEnumerateInstanceNamesResponseMessage*>(getResponse()); | *static_cast<CIMEnumerateInstanceNamesResponseMessage*>(getResponse()); |
| |
msg.instanceNames = getObjects(); |
Array<CIMObjectPath> cimObjs= getObjects(); |
|
Array<SCMOInstance> scmoObjs= getSCMOObjects(); |
|
if (cimObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setInstanceNames(cimObjs); |
|
} |
|
if (scmoObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setSCMO(scmoObjs); |
|
} |
} | } |
| |
// | // |
|
|
CIMCreateInstanceResponseMessage& msg = | CIMCreateInstanceResponseMessage& msg = |
*static_cast<CIMCreateInstanceResponseMessage*>(getResponse()); | *static_cast<CIMCreateInstanceResponseMessage*>(getResponse()); |
| |
msg.instanceName = getObjects()[0]; |
Array<CIMObjectPath> cimObjs= getObjects(); |
|
Array<SCMOInstance> scmoObjs= getSCMOObjects(); |
|
if (cimObjs.size() != 0) |
|
{ |
|
msg.instanceName = cimObjs[0]; |
|
} |
|
else |
|
{ |
|
scmoObjs[0].getCIMObjectPath(msg.instanceName); |
|
} |
} | } |
} | } |
| |
|
|
SimpleInstance2ObjectResponseHandler::deliver(cimInstance); | SimpleInstance2ObjectResponseHandler::deliver(cimInstance); |
} | } |
| |
|
void ExecQueryResponseHandler::deliver(const SCMOInstance& scmoInstance) |
|
{ |
|
if (scmoInstance.isUninitialized()) |
|
{ |
|
MessageLoaderParms message( |
|
"Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", |
|
"The object is not initialized."); |
|
|
|
throw CIMException(CIM_ERR_FAILED, message); |
|
} |
|
|
|
SimpleInstance2ObjectResponseHandler::deliver(scmoInstance); |
|
} |
|
|
String ExecQueryResponseHandler::getClass() const | String ExecQueryResponseHandler::getClass() const |
{ | { |
return String("ExecQueryResponseHandler"); | return String("ExecQueryResponseHandler"); |
|
|
CIMExecQueryResponseMessage& msg = | CIMExecQueryResponseMessage& msg = |
*static_cast<CIMExecQueryResponseMessage*>(getResponse()); | *static_cast<CIMExecQueryResponseMessage*>(getResponse()); |
| |
msg.getResponseData().setCIMObjects(getObjects()); |
Array<CIMObject> cimObjs= getObjects(); |
|
Array<SCMOInstance> scmoObjs= getSCMOObjects(); |
|
if (cimObjs.size() != 0) |
|
{ |
|
// complete keybindings based on set property values |
|
CIMOperationRequestMessage * reqMsg = |
|
(CIMOperationRequestMessage*) _request; |
|
|
|
Boolean clsRead=false; |
|
for (Uint32 j = 0, m = cimObjs.size(); j < m; j++) |
|
{ |
|
CIMObject & co=cimObjs[j]; |
|
CIMObjectPath op=co.getPath(); |
|
const Array<CIMKeyBinding>& kbs=op.getKeyBindings(); |
|
if (kbs.size()==0) |
|
{ // no path set why ? |
|
if (clsRead==false || _cimClass.isUninitialized()) |
|
{ |
|
SCMOClassCache * classCache = SCMOClassCache::getInstance(); |
|
CString nsName = reqMsg->nameSpace.getString().getCString(); |
|
CString clName = reqMsg->className.getString().getCString(); |
|
SCMOClass theClass = classCache->getSCMOClass( |
|
nsName, |
|
strlen(nsName), |
|
clName, |
|
strlen(clName)); |
|
theClass.getCIMClass(_cimClass); |
|
clsRead=true; |
|
} |
|
op = CIMInstance(co).buildPath(_cimClass); |
|
} |
|
op.setNameSpace(reqMsg->nameSpace); |
|
op.setHost(System::getHostName()); |
|
co.setPath(op); |
|
} |
|
msg.getResponseData().setObjects(cimObjs); |
|
} |
|
if (scmoObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setSCMO(scmoObjs); |
|
} |
} | } |
| |
Boolean ExecQueryResponseHandler::isAsync() const | Boolean ExecQueryResponseHandler::isAsync() const |
|
|
SimpleObjectResponseHandler::deliver(cimObject); | SimpleObjectResponseHandler::deliver(cimObject); |
} | } |
| |
|
void AssociatorsResponseHandler::deliver(const CIMInstance& cimInstance) |
|
{ |
|
if (cimInstance.isUninitialized()) |
|
{ |
|
MessageLoaderParms message( |
|
"Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", |
|
"The object is not initialized."); |
|
|
|
throw CIMException(CIM_ERR_FAILED, message); |
|
} |
|
|
|
SimpleObjectResponseHandler::deliver(cimInstance); |
|
} |
|
|
|
void AssociatorsResponseHandler::deliver(const SCMOInstance& scmoObject) |
|
{ |
|
if (scmoObject.isUninitialized()) |
|
{ |
|
MessageLoaderParms message( |
|
"Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", |
|
"The object is not initialized."); |
|
|
|
throw CIMException(CIM_ERR_FAILED, message); |
|
} |
|
SimpleObjectResponseHandler::deliver(scmoObject); |
|
} |
|
|
String AssociatorsResponseHandler::getClass() const | String AssociatorsResponseHandler::getClass() const |
{ | { |
return String("AssociatorsResponseHandler"); | return String("AssociatorsResponseHandler"); |
|
|
CIMAssociatorsResponseMessage& msg = | CIMAssociatorsResponseMessage& msg = |
*static_cast<CIMAssociatorsResponseMessage*>(getResponse()); | *static_cast<CIMAssociatorsResponseMessage*>(getResponse()); |
| |
msg.getResponseData().setCIMObjects(getObjects()); |
Array<CIMObject> cimObjs= getObjects(); |
|
Array<SCMOInstance> scmoObjs= getSCMOObjects(); |
|
if (cimObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setObjects(cimObjs); |
|
} |
|
if (scmoObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setSCMO(scmoObjs); |
|
} |
} | } |
| |
// | // |
|
|
SimpleObjectPathResponseHandler::deliver(cimObjectPath); | SimpleObjectPathResponseHandler::deliver(cimObjectPath); |
} | } |
| |
|
void AssociatorNamesResponseHandler::deliver(const SCMOInstance& scmoObjectPath) |
|
{ |
|
SimpleObjectPathResponseHandler::deliver(scmoObjectPath); |
|
} |
|
|
String AssociatorNamesResponseHandler::getClass() const | String AssociatorNamesResponseHandler::getClass() const |
{ | { |
return String("AssociatorNamesResponseHandler"); | return String("AssociatorNamesResponseHandler"); |
|
|
CIMAssociatorNamesResponseMessage& msg = | CIMAssociatorNamesResponseMessage& msg = |
*static_cast<CIMAssociatorNamesResponseMessage*>(getResponse()); | *static_cast<CIMAssociatorNamesResponseMessage*>(getResponse()); |
| |
msg.objectNames = getObjects(); |
Array<CIMObjectPath> cimObjs= getObjects(); |
|
Array<SCMOInstance> scmoObjs= getSCMOObjects(); |
|
if (cimObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setInstanceNames(cimObjs); |
|
} |
|
if (scmoObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setSCMO(scmoObjs); |
|
} |
} | } |
| |
// | // |
|
|
SimpleObjectResponseHandler::deliver(cimObject); | SimpleObjectResponseHandler::deliver(cimObject); |
} | } |
| |
|
void ReferencesResponseHandler::deliver(const SCMOInstance& scmoObject) |
|
{ |
|
if (scmoObject.isUninitialized()) |
|
{ |
|
MessageLoaderParms message( |
|
"Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", |
|
"The object is not initialized."); |
|
|
|
throw CIMException(CIM_ERR_FAILED, message); |
|
} |
|
SimpleObjectResponseHandler::deliver(scmoObject); |
|
} |
|
|
String ReferencesResponseHandler::getClass() const | String ReferencesResponseHandler::getClass() const |
{ | { |
return String("ReferencesResponseHandler"); | return String("ReferencesResponseHandler"); |
|
|
CIMReferencesResponseMessage& msg = | CIMReferencesResponseMessage& msg = |
*static_cast<CIMReferencesResponseMessage*>(getResponse()); | *static_cast<CIMReferencesResponseMessage*>(getResponse()); |
| |
msg.cimObjects = getObjects(); |
Array<CIMObject> cimObjs= getObjects(); |
|
Array<SCMOInstance> scmoObjs= getSCMOObjects(); |
|
if (cimObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setObjects(cimObjs); |
|
} |
|
if (scmoObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setSCMO(scmoObjs); |
|
} |
} | } |
| |
// | // |
|
|
SimpleObjectPathResponseHandler::deliver(cimObjectPath); | SimpleObjectPathResponseHandler::deliver(cimObjectPath); |
} | } |
| |
|
void ReferenceNamesResponseHandler::deliver(const SCMOInstance& scmoObjectPath) |
|
{ |
|
SimpleObjectPathResponseHandler::deliver(scmoObjectPath); |
|
} |
|
|
String ReferenceNamesResponseHandler::getClass() const | String ReferenceNamesResponseHandler::getClass() const |
{ | { |
return String("ReferenceNamesResponseHandler"); | return String("ReferenceNamesResponseHandler"); |
|
|
CIMReferenceNamesResponseMessage& msg = | CIMReferenceNamesResponseMessage& msg = |
*static_cast<CIMReferenceNamesResponseMessage*>(getResponse()); | *static_cast<CIMReferenceNamesResponseMessage*>(getResponse()); |
| |
msg.objectNames = getObjects(); |
Array<CIMObjectPath> cimObjs= getObjects(); |
|
Array<SCMOInstance> scmoObjs= getSCMOObjects(); |
|
if (cimObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setInstanceNames(cimObjs); |
|
} |
|
if (scmoObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setSCMO(scmoObjs); |
|
} |
} | } |
| |
// | // |