version 1.59, 2006/11/02 16:58:29
|
version 1.65, 2008/01/08 20:15:14
|
|
|
//============================================================================== | //============================================================================== |
// | // |
//%///////////////////////////////////////////////////////////////////////////// | //%///////////////////////////////////////////////////////////////////////////// |
|
// NOCHKSRC |
| |
#include "JMPIProviderManager.h" | #include "JMPIProviderManager.h" |
| |
|
|
Boolean JMPIProviderManager::insertProvider(const ProviderName & name, | Boolean JMPIProviderManager::insertProvider(const ProviderName & name, |
const String &ns, const String &cn) | const String &ns, const String &cn) |
{ | { |
String key(ns+String("::")+cn+String("::")+CIMValue(name.getCapabilitiesMask()).toString()); |
String key(ns + String("::") + cn); |
| |
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::insertProvider: "<<key<<PEGASUS_STD(endl)); | DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::insertProvider: "<<key<<PEGASUS_STD(endl)); |
| |
|
|
break; | break; |
| |
default: | default: |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2, |
PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL2, |
"*** Unsupported Request "+request->getType()); |
"*** Unsupported Request %d", |
|
request->getType() |
|
)); |
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::processMessage: Unsupported request "<<request->getType ()<<PEGASUS_STD(endl)); | DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::processMessage: Unsupported request "<<request->getType ()<<PEGASUS_STD(endl)); |
| |
response = handleUnsupportedRequest(request); | response = handleUnsupportedRequest(request); |
|
|
handler.setStatus(CIM_ERR_FAILED, e.getContentLanguages(), e.getMessage()); \ | handler.setStatus(CIM_ERR_FAILED, e.getContentLanguages(), e.getMessage()); \ |
} \ | } \ |
catch(...) \ | catch(...) \ |
{ PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, \ |
{ PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, \ |
"Exception: Unknown"); \ | "Exception: Unknown"); \ |
handler.setStatus(CIM_ERR_FAILED, "Unknown error."); \ | handler.setStatus(CIM_ERR_FAILED, "Unknown error."); \ |
} | } |
|
|
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
| |
throw PEGASUS_CIM_EXCEPTION_L (CIM_ERR_FAILED, | throw PEGASUS_CIM_EXCEPTION_L (CIM_ERR_FAILED, |
MessageLoaderParms ("ProviderManager.JMPI.METHOD_NOT_FOUND", |
MessageLoaderParms( |
"Could not find a method for the provider based on InterfaceType.")); |
"ProviderManager.JMPI.JMPIProviderManager.METHOD_NOT_FOUND", |
|
"Could not find a method for the provider based on " |
|
"InterfaceType.")); |
} | } |
| |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
|
|
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
| |
throw PEGASUS_CIM_EXCEPTION_L (CIM_ERR_FAILED, | throw PEGASUS_CIM_EXCEPTION_L (CIM_ERR_FAILED, |
MessageLoaderParms("ProviderManager.JMPI.INIT_JVM_FAILED", |
MessageLoaderParms( |
"Could not initialize the JVM (Java Virtual Machine) runtime environment.")); |
"ProviderManager.JMPI.JMPIProviderManager.INIT_JVM_FAILED", |
|
"Could not initialize the JVM (Java Virtual Machine) " |
|
"runtime environment.")); |
} | } |
| |
JMPIProvider::pm_service_op_lock op_lock(&pr); | JMPIProvider::pm_service_op_lock op_lock(&pr); |
|
|
*pr._cimom_handle); | *pr._cimom_handle); |
srec->qContext = qContext; | srec->qContext = qContext; |
| |
CIMObjectPath sPath (request->subscriptionInstance.getPath ().getClassName ().getString ()); |
CIMObjectPath sPath = request->subscriptionInstance.getPath (); |
|
Array<CIMKeyBinding> kb; |
|
|
|
// Technically we only need Name and Handler for uniqueness |
|
kb = sPath.getKeyBindings (); |
| |
sPath.setNameSpace (request->subscriptionInstance.getPath ().getNameSpace ()); |
// Add an entry for every provider. |
|
kb.append (CIMKeyBinding ("Provider", |
|
pr.getName (), |
|
CIMKeyBinding::STRING)); |
|
|
|
sPath.setKeyBindings (kb); |
| |
AutoMutex lock (mutexSelxTab); | AutoMutex lock (mutexSelxTab); |
| |
|
|
} | } |
| |
{ | { |
CIMObjectPath sPath (request->subscriptionInstance.getPath ().getClassName ().getString ()); |
CIMObjectPath sPath = request->subscriptionInstance.getPath (); |
|
Array<CIMKeyBinding> kb; |
|
|
|
// Technically we only need Name and Handler for uniqueness |
|
kb = sPath.getKeyBindings (); |
| |
sPath.setNameSpace (request->subscriptionInstance.getPath ().getNameSpace ()); |
// Add an entry for every provider. |
|
kb.append (CIMKeyBinding ("Provider", |
|
pr.getName (), |
|
CIMKeyBinding::STRING)); |
|
|
|
sPath.setKeyBindings (kb); |
| |
String sPathString = sPath.toString (); | String sPathString = sPath.toString (); |
| |
|
|
| |
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteSubscriptionRequest: Removing selxTab "<<sPathString<<PEGASUS_STD(endl)); | DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteSubscriptionRequest: Removing selxTab "<<sPathString<<PEGASUS_STD(endl)); |
| |
selxTab.lookup (sPathString, srec); |
if (!selxTab.lookup (sPathString, srec)) |
|
{ |
|
PEGASUS_ASSERT(0); |
|
} |
| |
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteSubscriptionRequest: For selxTab "<<sPathString<<", srec = "<<PEGASUS_STD(hex)<<(long)srec<<PEGASUS_STD(dec)<<", qContext = "<<PEGASUS_STD(hex)<<(long)srec->qContext<<PEGASUS_STD(dec)<<PEGASUS_STD(endl)); | DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteSubscriptionRequest: For selxTab "<<sPathString<<", srec = "<<PEGASUS_STD(hex)<<(long)srec<<PEGASUS_STD(dec)<<", qContext = "<<PEGASUS_STD(hex)<<(long)srec->qContext<<PEGASUS_STD(dec)<<PEGASUS_STD(endl)); |
| |
|
|
} | } |
catch(...) | catch(...) |
{ | { |
PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2, |
PEG_TRACE_CSTRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2, |
"Unknown error in handleSubscriptionInitCompleteRequest"); | "Unknown error in handleSubscriptionInitCompleteRequest"); |
} | } |
} | } |
|
|
{ | { |
String providerName; | String providerName; |
String fileName; | String fileName; |
String interfaceName; |
String moduleName; |
CIMValue genericValue; | CIMValue genericValue; |
| |
|
genericValue = providerId.getModule().getProperty( |
|
providerId.getModule().findProperty("Name")).getValue(); |
|
genericValue.get(moduleName); |
|
|
genericValue = providerId.getProvider().getProperty( | genericValue = providerId.getProvider().getProperty( |
providerId.getProvider().findProperty("Name")).getValue(); | providerId.getProvider().findProperty("Name")).getValue(); |
genericValue.get(providerName); | genericValue.get(providerName); |
|
|
genericValue.get(fileName); | genericValue.get(fileName); |
fileName = resolveFileName(fileName); | fileName = resolveFileName(fileName); |
| |
// ATTN: This attribute is probably not required |
return ProviderName(moduleName, providerName, fileName); |
genericValue = providerId.getModule().getProperty( |
|
providerId.getModule().findProperty("InterfaceType")).getValue(); |
|
genericValue.get(interfaceName); |
|
|
|
return ProviderName(providerName, fileName, interfaceName, 0); |
|
} | } |
| |
String JMPIProviderManager::resolveFileName(String fileName) | String JMPIProviderManager::resolveFileName(String fileName) |