version 1.24, 2005/05/03 19:01:06
|
version 1.25, 2005/05/22 21:50:55
|
|
|
return provReg.insert(key,name); | return provReg.insert(key,name); |
} | } |
| |
|
|
Message * JMPIProviderManager::processMessage(Message * request) throw() | Message * JMPIProviderManager::processMessage(Message * request) throw() |
{ | { |
PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "JMPIProviderManager::processMessage()"); | PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "JMPIProviderManager::processMessage()"); |
|
|
{ | { |
case CIM_GET_INSTANCE_REQUEST_MESSAGE: | case CIM_GET_INSTANCE_REQUEST_MESSAGE: |
response = handleGetInstanceRequest(request); | response = handleGetInstanceRequest(request); |
|
|
break; | break; |
|
|
case CIM_ENUMERATE_INSTANCES_REQUEST_MESSAGE: | case CIM_ENUMERATE_INSTANCES_REQUEST_MESSAGE: |
response = handleEnumerateInstancesRequest(request); | response = handleEnumerateInstancesRequest(request); |
|
|
break; | break; |
|
|
case CIM_ENUMERATE_INSTANCE_NAMES_REQUEST_MESSAGE: | case CIM_ENUMERATE_INSTANCE_NAMES_REQUEST_MESSAGE: |
response = handleEnumerateInstanceNamesRequest(request); | response = handleEnumerateInstanceNamesRequest(request); |
|
|
break; | break; |
|
|
case CIM_CREATE_INSTANCE_REQUEST_MESSAGE: | case CIM_CREATE_INSTANCE_REQUEST_MESSAGE: |
response = handleCreateInstanceRequest(request); | response = handleCreateInstanceRequest(request); |
|
|
break; | break; |
|
|
case CIM_MODIFY_INSTANCE_REQUEST_MESSAGE: | case CIM_MODIFY_INSTANCE_REQUEST_MESSAGE: |
response = handleModifyInstanceRequest(request); | response = handleModifyInstanceRequest(request); |
|
|
break; | break; |
|
|
case CIM_DELETE_INSTANCE_REQUEST_MESSAGE: | case CIM_DELETE_INSTANCE_REQUEST_MESSAGE: |
response = handleDeleteInstanceRequest(request); | response = handleDeleteInstanceRequest(request); |
|
break; |
| |
|
case CIM_EXEC_QUERY_REQUEST_MESSAGE: |
|
response = handleExecQueryRequest(request); |
break; | break; |
/* case CIM_EXEC_QUERY_REQUEST_MESSAGE: |
|
response = handleExecuteQueryRequest(request); |
|
| |
*/ break; |
|
case CIM_ASSOCIATORS_REQUEST_MESSAGE: | case CIM_ASSOCIATORS_REQUEST_MESSAGE: |
response = handleAssociatorsRequest(request); | response = handleAssociatorsRequest(request); |
|
|
break; | break; |
|
|
case CIM_ASSOCIATOR_NAMES_REQUEST_MESSAGE: | case CIM_ASSOCIATOR_NAMES_REQUEST_MESSAGE: |
response = handleAssociatorNamesRequest(request); | response = handleAssociatorNamesRequest(request); |
|
|
break; | break; |
|
|
case CIM_REFERENCES_REQUEST_MESSAGE: | case CIM_REFERENCES_REQUEST_MESSAGE: |
response = handleReferencesRequest(request); | response = handleReferencesRequest(request); |
|
|
break; | break; |
|
|
case CIM_REFERENCE_NAMES_REQUEST_MESSAGE: | case CIM_REFERENCE_NAMES_REQUEST_MESSAGE: |
response = handleReferenceNamesRequest(request); | response = handleReferenceNamesRequest(request); |
|
|
break; | break; |
|
|
case CIM_INVOKE_METHOD_REQUEST_MESSAGE: | case CIM_INVOKE_METHOD_REQUEST_MESSAGE: |
response = handleInvokeMethodRequest(request); | response = handleInvokeMethodRequest(request); |
|
|
break; | break; |
|
|
case CIM_CREATE_SUBSCRIPTION_REQUEST_MESSAGE: | case CIM_CREATE_SUBSCRIPTION_REQUEST_MESSAGE: |
response = handleCreateSubscriptionRequest(request); | response = handleCreateSubscriptionRequest(request); |
|
|
break; | break; |
|
|
/* case CIM_MODIFY_SUBSCRIPTION_REQUEST_MESSAGE: | /* case CIM_MODIFY_SUBSCRIPTION_REQUEST_MESSAGE: |
response = handleModifySubscriptionRequest(request); | response = handleModifySubscriptionRequest(request); |
break; | break; |
*/ | */ |
case CIM_DELETE_SUBSCRIPTION_REQUEST_MESSAGE: | case CIM_DELETE_SUBSCRIPTION_REQUEST_MESSAGE: |
response = handleDeleteSubscriptionRequest(request); | response = handleDeleteSubscriptionRequest(request); |
|
|
break; | break; |
|
|
/* case CIM_EXPORT_INDICATION_REQUEST_MESSAGE: | /* case CIM_EXPORT_INDICATION_REQUEST_MESSAGE: |
response = handleExportIndicationRequest(request); | response = handleExportIndicationRequest(request); |
break; | break; |
*/ | */ |
case CIM_DISABLE_MODULE_REQUEST_MESSAGE: | case CIM_DISABLE_MODULE_REQUEST_MESSAGE: |
response = handleDisableModuleRequest(request); | response = handleDisableModuleRequest(request); |
|
|
break; | break; |
|
|
case CIM_ENABLE_MODULE_REQUEST_MESSAGE: | case CIM_ENABLE_MODULE_REQUEST_MESSAGE: |
response = handleEnableModuleRequest(request); | response = handleEnableModuleRequest(request); |
|
|
break; | break; |
|
|
case CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE: | case CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE: |
response = handleStopAllProvidersRequest(request); | response = handleStopAllProvidersRequest(request); |
|
|
break; | break; |
|
|
case CIM_INITIALIZE_PROVIDER_REQUEST_MESSAGE: | case CIM_INITIALIZE_PROVIDER_REQUEST_MESSAGE: |
response = handleInitializeProviderRequest(request); | response = handleInitializeProviderRequest(request); |
|
|
break; | break; |
|
|
case CIM_SUBSCRIPTION_INIT_COMPLETE_REQUEST_MESSAGE: | case CIM_SUBSCRIPTION_INIT_COMPLETE_REQUEST_MESSAGE: |
response = handleSubscriptionInitCompleteRequest (request); | response = handleSubscriptionInitCompleteRequest (request); |
|
|
break; | break; |
|
|
default: | default: |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2, | PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2, |
"*** Unsupported Request "+request->getType()); | "*** Unsupported Request "+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); |
break; | break; |
} | } |
| |
|
|
| |
HandlerIntro(GetInstance,message,request,response,handler,CIMInstance()); | HandlerIntro(GetInstance,message,request,response,handler,CIMInstance()); |
| |
|
typedef enum { |
|
METHOD_UNKNOWN = 0, |
|
METHOD_PEGASUS_24, |
|
METHOD_SNIA_PROVIDER20, |
|
} METHOD_VERSION; |
|
METHOD_VERSION eMethodFound = METHOD_UNKNOWN; |
JNIEnv *env=NULL; | JNIEnv *env=NULL; |
Boolean mode24=false; |
|
CIMPropertyList propertyList; |
|
jobjectArray pl=NULL; |
|
| |
try { | try { |
Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, | Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
|
|
// forward request | // forward request |
JMPIProvider & pr=ph.GetProvider(); | JMPIProvider & pr=ph.GetProvider(); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.getInstance: " + pr.getName()); |
"Calling provider.getInstance: " + pr.getName()); |
|
| |
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetInstanceRequest: Calling provider getInstance: "<<pr.getName()<<PEGASUS_STD(endl)); | DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetInstanceRequest: Calling provider getInstance: "<<pr.getName()<<PEGASUS_STD(endl)); |
| |
JvmVector *jv; |
JvmVector *jv = 0; |
JNIEnv *env=JMPIjvm::attachThread(&jv); |
|
|
env = JMPIjvm::attachThread(&jv); |
|
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); |
|
|
|
STAT_GETSTARTTIME; |
|
|
|
jmethodID id = NULL; |
|
|
|
// public abstract org.pegasus.jmpi.CIMInstance getInstance (org.pegasus.jmpi.CIMObjectPath cop, |
|
// org.pegasus.jmpi.CIMClass cimClass, |
|
// boolean localOnly) |
|
// throws org.pegasus.jmpi.CIMException |
|
id = env->GetMethodID((jclass)pr.jProviderClass, |
|
"getInstance", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;Z)Lorg/pegasus/jmpi/CIMInstance;"); |
|
|
|
if (id != NULL) |
|
{ |
|
eMethodFound = METHOD_SNIA_PROVIDER20; |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetInstanceRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl)); |
|
} |
|
|
|
if (id == NULL) |
|
{ |
|
env->ExceptionClear(); |
|
|
|
// public org.pegasus.jmpi.CIMInstance getInstance (org.pegasus.jmpi.CIMObjectPath op, |
|
// boolean localOnly, |
|
// boolean includeQualifiers, |
|
// boolean includeClassOrigin, |
|
// java.lang.String[] propertyList, |
|
// org.pegasus.jmpi.CIMClass cc) |
|
// throws org.pegasus.jmpi.CIMException |
|
id = env->GetMethodID((jclass)pr.jProviderClass, |
|
"getInstance", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;ZZZ[Ljava/lang/String;Lorg/pegasus/jmpi/CIMClass;)Lorg/pegasus/jmpi/CIMInstance;"); |
|
|
|
if (id != NULL) |
|
{ |
|
eMethodFound = METHOD_PEGASUS_24; |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetInstanceRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl)); |
|
} |
|
} |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
|
switch (eMethodFound) |
|
{ |
|
case METHOD_PEGASUS_24: |
|
{ |
jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); | jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
|
|
jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); | jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
CIMClass cls=pr._cimom_handle->getClass(context,request->nameSpace, |
CIMClass cls = pr._cimom_handle->getClass(context, |
|
request->nameSpace, |
request->instanceName.getClassName(), | request->instanceName.getClassName(), |
false,true,true,CIMPropertyList()); |
false, |
JMPIjvm::checkException(env); |
true, |
|
true, |
|
CIMPropertyList()); |
| |
jObj = DEBUG_ConvertCToJava (CIMClass*, jint, &cls); | jObj = DEBUG_ConvertCToJava (CIMClass*, jint, &cls); |
| |
jobject jCc=env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jObj); | jobject jCc=env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jObj); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
JMPIProvider::pm_service_op_lock op_lock(&pr); |
jobjectArray jPropertyList = getList(jv,env,request->propertyList); |
| |
jmethodID id=env->GetMethodID((jclass)pr.jProviderClass,"getInstance", |
jobject inst = env->CallObjectMethod((jobject)pr.jProvider, |
"(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;Z)Lorg/pegasus/jmpi/CIMInstance;"); |
id, |
|
jRef, |
|
request->localOnly, |
|
request->includeQualifiers, |
|
request->includeClassOrigin, |
|
jPropertyList, |
|
jCc); |
| |
if (id==NULL) { |
|
env->ExceptionClear(); |
|
id=env->GetMethodID((jclass)pr.jProviderClass,"getInstance", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;ZZZ[Ljava/lang/String;Lorg/pegasus/jmpi/CIMClass;)" |
|
"Lorg/pegasus/jmpi/CIMInstance;"); |
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
mode24=true; |
|
pl=getList(jv,env,request->propertyList); |
STAT_PMS_PROVIDEREND; |
|
|
|
handler.processing(); |
|
|
|
if (inst) { |
|
jint jCi = env->CallIntMethod(inst,JMPIjvm::jv.CIMInstanceCInst); |
|
CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi); |
|
|
|
handler.deliver(*ci); |
} | } |
|
handler.complete(); |
|
break; |
|
} |
|
|
|
case METHOD_SNIA_PROVIDER20: |
|
{ |
|
jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
|
jobject jRef = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
STAT_GETSTARTTIME; |
CIMClass cls = pr._cimom_handle->getClass(context, |
|
request->nameSpace, |
|
request->instanceName.getClassName(), |
|
false, |
|
true, |
|
true, |
|
CIMPropertyList()); |
| |
jobject inst=NULL; |
jObj = DEBUG_ConvertCToJava (CIMClass*, jint, &cls); |
if (mode24) |
|
inst=env->CallObjectMethod((jobject)pr.jProvider,id,jRef, |
|
request->localOnly,request->includeQualifiers,request->includeClassOrigin,pl,jCc); |
|
else |
|
inst=env->CallObjectMethod((jobject)pr.jProvider,id,jRef,jCc,true); |
|
| |
STAT_PMS_PROVIDEREND; |
jobject jCc = env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jObj); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jobject inst = env->CallObjectMethod((jobject)pr.jProvider, |
|
id, |
|
jRef, |
|
jCc, |
|
true); |
| |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
|
|
|
STAT_PMS_PROVIDEREND; |
|
|
handler.processing(); | handler.processing(); |
|
|
if (inst) { | if (inst) { |
jint jCi = env->CallIntMethod(inst,JMPIjvm::jv.CIMInstanceCInst); | jint jCi = env->CallIntMethod(inst,JMPIjvm::jv.CIMInstanceCInst); |
CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi); | CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi); |
|
|
handler.deliver(*ci); | handler.deliver(*ci); |
} | } |
handler.complete(); | handler.complete(); |
|
break; |
|
} |
|
|
|
case METHOD_UNKNOWN: |
|
{ |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetInstanceRequest: should not be here!"<<PEGASUS_STD(endl)); |
|
break; |
|
} |
|
} |
} | } |
HandlerCatch(handler); | HandlerCatch(handler); |
| |
|
|
| |
HandlerIntro(EnumerateInstances,message,request,response,handler,Array<CIMInstance>()); | HandlerIntro(EnumerateInstances,message,request,response,handler,Array<CIMInstance>()); |
| |
|
typedef enum { |
|
METHOD_UNKNOWN = 0, |
|
METHOD_PEGASUS_24, |
|
METHOD_SNIA_PROVIDER20, |
|
} METHOD_VERSION; |
|
METHOD_VERSION eMethodFound = METHOD_UNKNOWN; |
JNIEnv *env=NULL; | JNIEnv *env=NULL; |
Boolean mode24=false; |
|
CIMPropertyList propertyList; |
|
jobjectArray pl=NULL; |
|
| |
try { | try { |
Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, | Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
|
|
context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); | context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); |
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); | context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
| |
CIMPropertyList propertyList(request->propertyList); |
|
|
|
// forward request | // forward request |
JMPIProvider & pr=ph.GetProvider(); | JMPIProvider & pr=ph.GetProvider(); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.enumerateInstances: " + pr.getName()); |
"Calling provider.enumerateInstances: " + pr.getName()); |
|
| |
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: Calling provider enumerateInstances: "<<pr.getName()<<PEGASUS_STD(endl)); | DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: Calling provider enumerateInstances: "<<pr.getName()<<PEGASUS_STD(endl)); |
| |
JvmVector *jv; |
JvmVector *jv = 0; |
|
|
env=JMPIjvm::attachThread(&jv); | env=JMPIjvm::attachThread(&jv); |
| |
jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
JMPIProvider::pm_service_op_lock op_lock(&pr); |
|
|
|
STAT_GETSTARTTIME; |
|
|
|
jmethodID id = NULL; |
|
|
|
// public abstract java.util.Vector enumInstances (org.pegasus.jmpi.CIMObjectPath cop, |
|
// boolean deep, |
|
// org.pegasus.jmpi.CIMClass cimClass, |
|
// boolean localOnly) |
|
// throws org.pegasus.jmpi.CIMException |
|
id = env->GetMethodID((jclass)pr.jProviderClass, |
|
"enumInstances", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;ZLorg/pegasus/jmpi/CIMClass;Z)Ljava/util/Vector;"); |
| |
|
if (id != NULL) |
|
{ |
|
eMethodFound = METHOD_SNIA_PROVIDER20; |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl)); |
|
} |
|
|
|
if (id == NULL) |
|
{ |
|
env->ExceptionClear(); |
|
|
|
// public org.pegasus.jmpi.CIMInstance[] enumerateInstances (org.pegasus.jmpi.CIMObjectPath op, |
|
// boolean localOnly, |
|
// boolean includeQualifiers, |
|
// boolean includeClassOrigin, |
|
// java.lang.String[] propertyList, |
|
// org.pegasus.jmpi.CIMClass cc) |
|
// throws org.pegasus.jmpi.CIMException |
|
id = env->GetMethodID((jclass)pr.jProviderClass, |
|
"enumerateInstances", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;ZZZ[Ljava/lang/String;Lorg/pegasus/jmpi/CIMClass;)[Lorg/pegasus/jmpi/CIMInstance;"); |
|
|
|
if (id != NULL) |
|
{ |
|
eMethodFound = METHOD_PEGASUS_24; |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl)); |
|
} |
|
} |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
switch (eMethodFound) |
|
{ |
|
case METHOD_PEGASUS_24: |
|
{ |
|
jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); | jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
CIMClass cls=pr._cimom_handle->getClass(context,request->nameSpace, |
CIMClass cls = pr._cimom_handle->getClass(context, |
|
request->nameSpace, |
request->className, | request->className, |
false,true,true,CIMPropertyList()); |
false, |
|
true, |
|
true, |
|
CIMPropertyList()); |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
jObj = DEBUG_ConvertCToJava (CIMClass*, jint, &cls); | jObj = DEBUG_ConvertCToJava (CIMClass*, jint, &cls); |
| |
jobject jCc=env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jObj); | jobject jCc=env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jObj); |
JMPIjvm::checkException(env); |
|
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); |
|
| |
STAT_GETSTARTTIME; |
JMPIjvm::checkException(env); |
| |
jmethodID id=env->GetMethodID((jclass)pr.jProviderClass,"enumInstances", |
jobjectArray jPropertyList = getList(jv,env,request->propertyList); |
"(Lorg/pegasus/jmpi/CIMObjectPath;ZLorg/pegasus/jmpi/CIMClass;Z)Ljava/util/Vector;"); |
|
| |
if (id==NULL) { |
jobjectArray jAr = (jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, |
env->ExceptionClear(); |
id, |
id=env->GetMethodID((jclass)pr.jProviderClass,"enumerateInstances", |
jRef, |
"(Lorg/pegasus/jmpi/CIMObjectPath;ZZZ[Ljava/lang/String;Lorg/pegasus/jmpi/CIMClass;)" |
request->localOnly, |
"[Lorg/pegasus/jmpi/CIMInstance;"); |
request->includeQualifiers, |
JMPIjvm::checkException(env); |
request->includeClassOrigin, |
mode24=true; |
jPropertyList, |
pl=getList(jv,env,request->propertyList); |
jCc); |
} |
|
JMPIjvm::checkException(env); |
|
| |
if (!mode24) { |
|
jobject jVec=env->CallObjectMethod((jobject)pr.jProvider,id,jRef,false,jCc,true); |
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
STAT_PMS_PROVIDEREND; | STAT_PMS_PROVIDEREND; |
| |
handler.processing(); | handler.processing(); |
if (jVec) { |
if (jAr) { |
for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<m; i++) { |
for (int i=0,m=env->GetArrayLength(jAr); i<m; i++) { |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
jobject jInst=env->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,i); |
jobject jInst=env->GetObjectArrayElement(jAr,i); |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
jint jCi = env->CallIntMethod(jInst,JMPIjvm::jv.CIMInstanceCInst); | jint jCi = env->CallIntMethod(jInst,JMPIjvm::jv.CIMInstanceCInst); |
|
|
} | } |
} | } |
handler.complete(); | handler.complete(); |
|
break; |
} | } |
else { |
|
jobjectArray jAr=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,id,jRef, |
case METHOD_SNIA_PROVIDER20: |
request->localOnly,request->includeQualifiers,request->includeClassOrigin,pl,jCc); |
{ |
|
jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
|
jobject jRef = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
CIMClass cls = pr._cimom_handle->getClass(context, |
|
request->nameSpace, |
|
request->className, |
|
false, |
|
true, |
|
true, |
|
CIMPropertyList()); |
|
JMPIjvm::checkException(env); |
|
|
|
jObj = DEBUG_ConvertCToJava (CIMClass*, jint, &cls); |
|
|
|
jobject jCc = env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jObj); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jobject jVec = env->CallObjectMethod((jobject)pr.jProvider, |
|
id, |
|
jRef, |
|
false, |
|
jCc, |
|
true); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
STAT_PMS_PROVIDEREND; | STAT_PMS_PROVIDEREND; |
| |
handler.processing(); | handler.processing(); |
if (jAr) { |
if (jVec) { |
for (int i=0,m=env->GetArrayLength(jAr); i<m; i++) { |
for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<m; i++) { |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
jobject jInst=env->GetObjectArrayElement(jAr,i); |
jobject jInst=env->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,i); |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
jint jCi = env->CallIntMethod(jInst,JMPIjvm::jv.CIMInstanceCInst); | jint jCi = env->CallIntMethod(jInst,JMPIjvm::jv.CIMInstanceCInst); |
|
|
} | } |
} | } |
handler.complete(); | handler.complete(); |
|
break; |
|
} |
|
|
|
case METHOD_UNKNOWN: |
|
{ |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: should not be here!"<<PEGASUS_STD(endl)); |
|
break; |
|
} |
} | } |
} | } |
HandlerCatch(handler); | HandlerCatch(handler); |
|
|
| |
HandlerIntro(EnumerateInstanceNames,message,request,response, handler,Array<CIMObjectPath>()); | HandlerIntro(EnumerateInstanceNames,message,request,response, handler,Array<CIMObjectPath>()); |
| |
|
typedef enum { |
|
METHOD_UNKNOWN = 0, |
|
METHOD_PEGASUS_24, |
|
METHOD_SNIA_PROVIDER20, |
|
} METHOD_VERSION; |
|
METHOD_VERSION eMethodFound = METHOD_UNKNOWN; |
JNIEnv *env=NULL; | JNIEnv *env=NULL; |
Boolean mode24=false; |
|
CIMPropertyList propertyList; |
|
jobjectArray pl=NULL; |
|
| |
try { | try { |
Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, | Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
|
|
| |
JMPIProvider & pr=ph.GetProvider(); | JMPIProvider & pr=ph.GetProvider(); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.enumerateInstanceNames: " + pr.getName()); |
"Calling provider.enumerateInstanceNames: " + pr.getName()); |
|
| |
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstanceNamesRequest: Calling provider : enumerateInstanceNames"<<pr.getName()<<PEGASUS_STD(endl)); | DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstanceNamesRequest: Calling provider : enumerateInstanceNames"<<pr.getName()<<PEGASUS_STD(endl)); |
| |
JvmVector *jv; |
JvmVector *jv = 0; |
env=JMPIjvm::attachThread(&jv); |
|
| |
jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
env = JMPIjvm::attachThread(&jv); |
|
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); |
|
|
|
STAT_GETSTARTTIME; |
|
|
|
jmethodID id = NULL; |
|
|
|
// public abstract java.util.Vector enumInstances (org.pegasus.jmpi.CIMObjectPath cop, |
|
// boolean deep, |
|
// org.pegasus.jmpi.CIMClass cimClass) |
|
// throws org.pegasus.jmpi.CIMException |
|
id = env->GetMethodID((jclass)pr.jProviderClass, |
|
"enumInstances", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;ZLorg/pegasus/jmpi/CIMClass;)Ljava/util/Vector;"); |
|
|
|
if (id != NULL) |
|
{ |
|
eMethodFound = METHOD_SNIA_PROVIDER20; |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstanceNamesRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl)); |
|
} |
|
|
|
if (id == NULL) |
|
{ |
|
env->ExceptionClear(); |
|
|
|
// public org.pegasus.jmpi.CIMObjectPath[] enumerateInstanceNames (org.pegasus.jmpi.CIMObjectPath op, |
|
// org.pegasus.jmpi.CIMClass cc) |
|
// throws org.pegasus.jmpi.CIMException |
|
id = env->GetMethodID((jclass)pr.jProviderClass, |
|
"enumerateInstanceNames", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;)[Lorg/pegasus/jmpi/CIMObjectPath;"); |
|
|
|
if (id != NULL) |
|
{ |
|
eMethodFound = METHOD_PEGASUS_24; |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstanceNamesRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl)); |
|
} |
|
} |
|
|
|
JMPIjvm::checkException(env); |
| |
|
switch (eMethodFound) |
|
{ |
|
case METHOD_PEGASUS_24: |
|
{ |
|
jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); | jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
CIMClass cls=pr._cimom_handle->getClass(context,request->nameSpace, |
CIMClass cls = pr._cimom_handle->getClass(context, |
|
request->nameSpace, |
request->className, | request->className, |
false,true,true,CIMPropertyList()); |
false, |
|
true, |
|
true, |
|
CIMPropertyList()); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
jObj = DEBUG_ConvertCToJava (CIMClass*, jint, &cls); | jObj = DEBUG_ConvertCToJava (CIMClass*, jint, &cls); |
| |
jobject jCc=env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jObj); | jobject jCc=env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jObj); |
JMPIjvm::checkException(env); |
|
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); |
|
|
|
STAT_GETSTARTTIME; |
|
| |
jmethodID id=env->GetMethodID((jclass)pr.jProviderClass,"enumInstances", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;ZLorg/pegasus/jmpi/CIMClass;)Ljava/util/Vector;"); |
|
|
|
if (id==NULL) { |
|
env->ExceptionClear(); |
|
id=env->GetMethodID((jclass)pr.jProviderClass,"enumerateInstanceNames", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;)" |
|
"[Lorg/pegasus/jmpi/CIMObjectPath;"); |
|
JMPIjvm::checkException(env); |
|
mode24=true; |
|
} |
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
if (!mode24) { |
jobjectArray jAr = (jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, |
jobject jVec=env->CallObjectMethod((jobject)pr.jProvider,id,jRef,true,jCc); |
id, |
|
jRef, |
|
jCc); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
STAT_PMS_PROVIDEREND; | STAT_PMS_PROVIDEREND; |
| |
handler.processing(); | handler.processing(); |
if (jVec) { |
if (jAr) { |
for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<m; i++) { |
for (int i=0,m=env->GetArrayLength(jAr); i<m; i++) { |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
jobject inst=env->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,i); |
jobject inst=env->GetObjectArrayElement(jAr,i); |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
jint jCop = env->CallIntMethod(inst,JMPIjvm::jv.CIMObjectPathCInst); | jint jCop = env->CallIntMethod(inst,JMPIjvm::jv.CIMObjectPathCInst); |
|
|
} | } |
} | } |
handler.complete(); | handler.complete(); |
|
break; |
} | } |
else { |
|
jobjectArray jAr=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,id,jRef,jCc); |
case METHOD_SNIA_PROVIDER20: |
|
{ |
|
jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
|
jobject jRef = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
CIMClass cls = pr._cimom_handle->getClass(context, |
|
request->nameSpace, |
|
request->className, |
|
false, |
|
true, |
|
true, |
|
CIMPropertyList()); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jObj = DEBUG_ConvertCToJava (CIMClass*, jint, &cls); |
|
|
|
jobject jCc = env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jObj); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jobject jVec = env->CallObjectMethod((jobject)pr.jProvider, |
|
id, |
|
jRef, |
|
true, |
|
jCc); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
STAT_PMS_PROVIDEREND; | STAT_PMS_PROVIDEREND; |
| |
handler.processing(); | handler.processing(); |
if (jAr) { |
if (jVec) { |
for (int i=0,m=env->GetArrayLength(jAr); i<m; i++) { |
for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<m; i++) { |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
jobject inst=env->GetObjectArrayElement(jAr,i); |
jobject inst=env->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,i); |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
jint jCop = env->CallIntMethod(inst,JMPIjvm::jv.CIMObjectPathCInst); | jint jCop = env->CallIntMethod(inst,JMPIjvm::jv.CIMObjectPathCInst); |
|
|
} | } |
} | } |
handler.complete(); | handler.complete(); |
|
break; |
|
} |
|
|
|
case METHOD_UNKNOWN: |
|
{ |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstanceNamesRequest: should not be here!"<<PEGASUS_STD(endl)); |
|
break; |
|
} |
} | } |
} | } |
HandlerCatch(handler); | HandlerCatch(handler); |
|
|
| |
HandlerIntro(CreateInstance,message,request,response,handler,CIMObjectPath()); | HandlerIntro(CreateInstance,message,request,response,handler,CIMObjectPath()); |
| |
|
typedef enum { |
|
METHOD_UNKNOWN = 0, |
|
METHOD_SNIA_PROVIDER20, |
|
} METHOD_VERSION; |
|
METHOD_VERSION eMethodFound = METHOD_UNKNOWN; |
JNIEnv *env=NULL; | JNIEnv *env=NULL; |
|
|
try { | try { |
Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, | Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
"JMPIProviderManager::handleCreateInstanceRequest - Host name: $0 Name space: $1 Class name: $2", | "JMPIProviderManager::handleCreateInstanceRequest - Host name: $0 Name space: $1 Class name: $2", |
|
|
// forward request | // forward request |
JMPIProvider & pr=ph.GetProvider(); | JMPIProvider & pr=ph.GetProvider(); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.createInstance: " + ph.GetProvider().getName()); |
"Calling provider.createInstance: " + |
|
ph.GetProvider().getName()); |
|
| |
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateInstanceRequest: Calling provider createInstance: "<<pr.getName()<<PEGASUS_STD(endl)); | DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateInstanceRequest: Calling provider createInstance: "<<pr.getName()<<PEGASUS_STD(endl)); |
| |
JvmVector *jv; |
JvmVector *jv = 0; |
|
|
env=JMPIjvm::attachThread(&jv); | env=JMPIjvm::attachThread(&jv); |
| |
jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
JMPIProvider::pm_service_op_lock op_lock(&pr); |
|
|
|
STAT_GETSTARTTIME; |
|
|
|
jmethodID id = NULL; |
|
|
|
// public abstract org.pegasus.jmpi.CIMObjectPath createInstance (org.pegasus.jmpi.CIMObjectPath cop, |
|
// org.pegasus.jmpi.CIMInstance cimInstance) |
|
// throws org.pegasus.jmpi.CIMException |
|
id = env->GetMethodID((jclass)pr.jProviderClass, |
|
"createInstance", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMInstance;)Lorg/pegasus/jmpi/CIMObjectPath;"); |
|
|
|
if (id != NULL) |
|
{ |
|
eMethodFound = METHOD_SNIA_PROVIDER20; |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateInstanceRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl)); |
|
} |
| |
jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); |
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
jObj = DEBUG_ConvertCToJava (CIMInstance*, jint, &request->newInstance); |
switch (eMethodFound) |
|
{ |
|
case METHOD_SNIA_PROVIDER20: |
|
{ |
|
jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
|
jobject jRef = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); |
| |
jobject jInst=env->NewObject(jv->CIMInstanceClassRef,jv->CIMInstanceNewI,jObj); |
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
JMPIProvider::pm_service_op_lock op_lock(&pr); |
jObj = DEBUG_ConvertCToJava (CIMInstance*, jint, &request->newInstance); |
| |
STAT_GETSTARTTIME; |
jobject jInst = env->NewObject(jv->CIMInstanceClassRef,jv->CIMInstanceNewI,jObj); |
| |
jmethodID id=env->GetMethodID((jclass)pr.jProviderClass,"createInstance", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMInstance;)Lorg/pegasus/jmpi/CIMObjectPath;"); |
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateInstanceRequest: id = "<<id<<", jRef = "<<jRef<<", jInst = "<<jInst<<PEGASUS_STD(endl)); | DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateInstanceRequest: id = "<<id<<", jRef = "<<jRef<<", jInst = "<<jInst<<PEGASUS_STD(endl)); |
| |
jobject inst=env->CallObjectMethod((jobject)pr.jProvider,id,jRef,jInst); |
jobject inst = env->CallObjectMethod((jobject)pr.jProvider, |
|
id, |
|
jRef, |
|
jInst); |
|
|
|
JMPIjvm::checkException(env); |
| |
STAT_PMS_PROVIDEREND; | STAT_PMS_PROVIDEREND; |
| |
JMPIjvm::checkException(env); |
|
handler.processing(); | handler.processing(); |
|
|
if (inst) { | if (inst) { |
jint jCop = env->CallIntMethod(inst,JMPIjvm::jv.CIMObjectPathCInst); | jint jCop = env->CallIntMethod(inst,JMPIjvm::jv.CIMObjectPathCInst); |
CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); | CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); |
|
|
handler.deliver(*cop); | handler.deliver(*cop); |
} | } |
handler.complete(); | handler.complete(); |
|
break; |
|
} |
|
|
|
case METHOD_UNKNOWN: |
|
{ |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateInstanceRequest: should not be here!"<<PEGASUS_STD(endl)); |
|
break; |
|
} |
|
} |
} | } |
HandlerCatch(handler); | HandlerCatch(handler); |
| |
|
|
| |
HandlerIntroVoid(ModifyInstance,message,request,response,handler); | HandlerIntroVoid(ModifyInstance,message,request,response,handler); |
| |
|
typedef enum { |
|
METHOD_UNKNOWN = 0, |
|
METHOD_PEGASUS_24, |
|
METHOD_SNIA_PROVIDER20, |
|
} METHOD_VERSION; |
|
METHOD_VERSION eMethodFound = METHOD_UNKNOWN; |
JNIEnv *env=NULL; | JNIEnv *env=NULL; |
Boolean mode24=false; |
|
CIMPropertyList propertyList; |
|
jobjectArray pl=NULL; |
|
| |
try { | try { |
Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, | Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
|
|
context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); | context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); |
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); | context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
| |
CIMPropertyList propertyList(request->propertyList); |
|
|
|
// forward request | // forward request |
JMPIProvider & pr=ph.GetProvider(); | JMPIProvider & pr=ph.GetProvider(); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,"Calling provider.modifyInstance: " + pr.getName()); | PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,"Calling provider.modifyInstance: " + pr.getName()); |
| |
JvmVector *jv; |
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleModifyInstanceRequest: Calling provider "<<PEGASUS_STD(hex)<<(int)&pr<<PEGASUS_STD(dec)<<", name = "<<pr.getName ()<<", module = "<<pr.getModule()<<" modifyInstance: "<<pr.getName()<<PEGASUS_STD(endl)); |
|
////////DDD(debugPrintMethodPointers (env, (jclass)pr.jProviderClass)); |
|
|
|
JvmVector *jv = 0; |
|
|
env=JMPIjvm::attachThread(&jv); | env=JMPIjvm::attachThread(&jv); |
| |
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleModifyInstanceRequest: Calling provider "<<PEGASUS_STD(hex)<<(int)&pr<<PEGASUS_STD(dec)<<", name = "<<pr.getName ()<<", module = "<<pr.getModule()<<" modifyInstance: "<<pr.getName()<<PEGASUS_STD(endl)); |
JMPIProvider::pm_service_op_lock op_lock(&pr); |
DDD(debugPrintMethodPointers (env, (jclass)pr.jProviderClass)); |
|
| |
|
STAT_GETSTARTTIME; |
|
|
|
jmethodID id = NULL; |
|
|
|
// public abstract void setInstance (org.pegasus.jmpi.CIMObjectPath cop, |
|
// org.pegasus.jmpi.CIMInstance cimInstance) |
|
// org.pegasus.jmpi.throws CIMException |
|
id = env->GetMethodID((jclass)pr.jProviderClass, |
|
"setInstance", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMInstance;)V"); |
|
|
|
if (id != NULL) |
|
{ |
|
eMethodFound = METHOD_SNIA_PROVIDER20; |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleModifyInstanceRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl)); |
|
} |
|
|
|
if (id == NULL) |
|
{ |
|
env->ExceptionClear(); |
|
|
|
// public void setInstance (org.pegasus.jmpi.CIMObjectPath op, |
|
// org.pegasus.jmpi.CIMInstance ci, |
|
// boolean includeQualifiers, |
|
// java.lang.String[] propertyList) |
|
// throws org.pegasus.jmpi.CIMException |
|
id = env->GetMethodID((jclass)pr.jProviderClass, |
|
"setInstance", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;Z[Ljava/lang/String)V"); |
|
|
|
if (id != NULL) |
|
{ |
|
eMethodFound = METHOD_PEGASUS_24; |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleModifyInstanceRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl)); |
|
} |
|
} |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
switch (eMethodFound) |
|
{ |
|
case METHOD_PEGASUS_24: |
|
{ |
jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); | jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
|
jobject jRef = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jObj = DEBUG_ConvertCToJava (CIMInstance*, jint, &request->modifiedInstance); |
|
|
|
jobject jInst = env->NewObject(jv->CIMInstanceClassRef,jv->CIMInstanceNewI,jObj); |
| |
|
JMPIjvm::checkException(env); |
|
|
|
jobjectArray jPropertyList = getList(jv,env,request->propertyList); |
|
|
|
env->CallVoidMethod((jobject)pr.jProvider, |
|
id, |
|
jRef, |
|
jInst, |
|
jPropertyList); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
STAT_PMS_PROVIDEREND; |
|
break; |
|
} |
|
|
|
case METHOD_SNIA_PROVIDER20: |
|
{ |
|
jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); | jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
jObj = DEBUG_ConvertCToJava (CIMInstance*, jint, &request->modifiedInstance); | jObj = DEBUG_ConvertCToJava (CIMInstance*, jint, &request->modifiedInstance); |
| |
jobject jInst=env->NewObject(jv->CIMInstanceClassRef,jv->CIMInstanceNewI,jObj); | jobject jInst=env->NewObject(jv->CIMInstanceClassRef,jv->CIMInstanceNewI,jObj); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
|
env->CallVoidMethod((jobject)pr.jProvider, |
|
id, |
|
jRef, |
|
jInst); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
STAT_PMS_PROVIDEREND; |
|
break; |
|
} |
|
|
|
case METHOD_UNKNOWN: |
|
{ |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleModifyInstanceRequest: should not be here!"<<PEGASUS_STD(endl)); |
|
break; |
|
} |
|
} |
|
} |
|
HandlerCatch(handler); |
|
|
|
if (env) JMPIjvm::detachThread(); |
|
|
|
PEG_METHOD_EXIT(); |
|
|
|
return(response); |
|
} |
|
|
|
Message * JMPIProviderManager::handleDeleteInstanceRequest(const Message * message) throw() |
|
{ |
|
PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleDeleteInstanceRequest"); |
|
|
|
HandlerIntroVoid(DeleteInstance,message,request,response,handler); |
|
|
|
typedef enum { |
|
METHOD_UNKNOWN = 0, |
|
METHOD_SNIA_PROVIDER20, |
|
} METHOD_VERSION; |
|
METHOD_VERSION eMethodFound = METHOD_UNKNOWN; |
|
JNIEnv *env = NULL; |
|
|
|
try { |
|
Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
|
"JMPIProviderManager::handleDeleteInstanceRequest - Host name: $0 Name space: $1 Class name: $2", |
|
System::getHostName(), |
|
request->nameSpace.getString(), |
|
request->instanceName.getClassName().getString()); |
|
|
|
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteInstanceRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->instanceName.getClassName().getString()<<PEGASUS_STD(endl)); |
|
|
|
// make target object path |
|
CIMObjectPath objectPath( |
|
System::getHostName(), |
|
request->nameSpace, |
|
request->instanceName.getClassName(), |
|
request->instanceName.getKeyBindings()); |
|
|
|
// resolve provider name |
|
ProviderName name = _resolveProviderName( |
|
request->operationContext.get(ProviderIdContainer::NAME)); |
|
|
|
// get cached or load new provider module |
|
JMPIProvider::OpProviderHolder ph = |
|
providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY); |
|
|
|
// convert arguments |
|
OperationContext context; |
|
|
|
context.insert(request->operationContext.get(IdentityContainer::NAME)); |
|
context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); |
|
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
|
|
|
// forward request |
|
JMPIProvider &pr = ph.GetProvider(); |
|
|
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.deleteInstance: " + pr.getName()); |
|
|
|
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteInstanceRequest: Calling provider deleteInstance: "<<pr.getName()<<PEGASUS_STD(endl)); |
|
|
|
JvmVector *jv = 0; |
|
|
|
env = JMPIjvm::attachThread(&jv); |
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); | JMPIProvider::pm_service_op_lock op_lock(&pr); |
| |
STAT_GETSTARTTIME; | STAT_GETSTARTTIME; |
| |
jmethodID id=env->GetMethodID((jclass)pr.jProviderClass,"setInstance", |
jmethodID id = NULL; |
"(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMInstance;)V"); |
|
|
// public abstract void deleteInstance (org.pegasus.jmpi.CIMObjectPath cop) |
|
// throws org.pegasus.jmpi.CIMException |
|
id = env->GetMethodID((jclass)pr.jProviderClass, |
|
"deleteInstance", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;)V"); |
|
|
|
if (id != NULL) |
|
{ |
|
eMethodFound = METHOD_SNIA_PROVIDER20; |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteInstanceRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl)); |
|
} |
| |
if (id==NULL) { |
|
env->ExceptionClear(); |
|
id=env->GetMethodID((jclass)pr.jProviderClass,"setInstance", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;Z[Ljava/lang/String)V"); |
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
mode24=true; |
|
pl=getList(jv,env,request->propertyList); |
switch (eMethodFound) |
|
{ |
|
case METHOD_SNIA_PROVIDER20: |
|
{ |
|
jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
|
jobject jRef = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
env->CallVoidMethod((jobject)pr.jProvider,id,jRef); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
STAT_PMS_PROVIDEREND; |
|
break; |
|
} |
|
|
|
case METHOD_UNKNOWN: |
|
{ |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteInstanceRequest: should not be here!"<<PEGASUS_STD(endl)); |
|
break; |
} | } |
|
} |
|
} |
|
HandlerCatch(handler); |
|
|
|
if (env) JMPIjvm::detachThread(); |
|
|
|
PEG_METHOD_EXIT(); |
|
|
|
return(response); |
|
} |
|
|
|
Message * JMPIProviderManager::handleExecQueryRequest(const Message * message) throw() |
|
{ |
|
PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleExecQueryRequest"); |
|
|
|
HandlerIntro(ExecQuery,message,request,response,handler,Array<CIMObject>()); |
|
|
|
typedef enum { |
|
METHOD_UNKNOWN = 0, |
|
METHOD_PEGASUS_24, |
|
METHOD_SNIA_PROVIDER20, |
|
} METHOD_VERSION; |
|
METHOD_VERSION eMethodFound = METHOD_UNKNOWN; |
|
JNIEnv *env = NULL; |
|
|
|
try { |
|
Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
|
"JMPIProviderManager::handleExecQueryRequest - Host name: $0 Name space: $1 Class name: $2", |
|
System::getHostName(), |
|
request->nameSpace.getString(), |
|
request->className.getString()); |
|
|
|
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleExecQueryRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->className.getString()<<PEGASUS_STD(endl)); |
|
|
|
// make target object path |
|
CIMObjectPath objectPath( |
|
System::getHostName(), |
|
request->nameSpace, |
|
request->className); |
|
|
|
// resolve provider name |
|
ProviderName name = _resolveProviderName( |
|
request->operationContext.get(ProviderIdContainer::NAME)); |
|
|
|
// get cached or load new provider module |
|
JMPIProvider::OpProviderHolder ph = |
|
providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY); |
|
|
|
// convert arguments |
|
OperationContext context; |
|
|
|
context.insert(request->operationContext.get(IdentityContainer::NAME)); |
|
context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); |
|
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
|
|
|
// forward request |
|
JMPIProvider &pr = ph.GetProvider(); |
|
|
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,"Calling provider.execQuery: " + pr.getName()); |
|
|
|
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleExecQueryRequest: Calling provider execQuery: "<<pr.getName()<<", queryLanguage: "<<request->queryLanguage<<", query: "<<request->query<<PEGASUS_STD(endl)); |
|
|
|
JvmVector *jv = 0; |
|
|
|
env = JMPIjvm::attachThread(&jv); |
|
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); |
|
|
|
STAT_GETSTARTTIME; |
|
|
|
jmethodID id = NULL; |
|
|
|
// public abstract java.util.Vector execQuery (org.pegasus.jmpi.CIMObjectPath cop, |
|
// java.lang.String queryStatement, |
|
// int ql, |
|
// org.pegasus.jmpi.CIMClass cimClass) |
|
// throws org.pegasus.jmpi.CIMException |
|
// |
|
id = env->GetMethodID((jclass)pr.jProviderClass, |
|
"execQuery", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ILorg/pegasus/jmpi/CIMClass;)Ljava/util/Vector;"); |
|
|
|
if (id != NULL) |
|
{ |
|
eMethodFound = METHOD_SNIA_PROVIDER20; |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleExecQueryRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl)); |
|
} |
|
|
|
if (id == NULL) |
|
{ |
|
env->ExceptionClear(); |
|
|
|
// public abstract org.pegasus.jmpi.CIMInstance[] execQuery(org.pegasus.jmpi.CIMObjectPath op, |
|
// java.lang.String query, |
|
// java.lang.String ql, |
|
// org.pegasus.jmpi.CIMClass cc) |
|
// throws org.pegasus.jmpi.CIMException |
|
id = env->GetMethodID((jclass)pr.jProviderClass, |
|
"execQuery", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Lorg/pegasus/jmpi/CIMClass;)[Lorg/pegasus/jmpi/CIMInstance;"); |
|
|
|
if (id != NULL) |
|
{ |
|
eMethodFound = METHOD_PEGASUS_24; |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleExecQueryRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl)); |
|
} |
|
} |
|
|
|
if (id == NULL) |
|
{ |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleExecQueryRequest: found no method!"<<PEGASUS_STD(endl)); |
|
} |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
switch (eMethodFound) |
|
{ |
|
case METHOD_PEGASUS_24: |
|
{ |
|
jint jcopref = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
|
jobject jcop = env->NewObject(jv->CIMObjectPathClassRef, jv->CIMObjectPathNewI, jcopref); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
if (!mode24) |
jstring jqueryLanguage = env->NewStringUTF(request->queryLanguage.getCString()); |
env->CallVoidMethod((jobject)pr.jProvider,id,jRef,jInst); |
jstring jquery = env->NewStringUTF(request->query.getCString()); |
else |
|
env->CallVoidMethod((jobject)pr.jProvider,id,jRef,jInst,pl); |
CIMClass cls = pr._cimom_handle->getClass(context, |
|
request->nameSpace, |
|
request->className, |
|
false, |
|
true, |
|
true, |
|
CIMPropertyList()); |
|
JMPIjvm::checkException(env); |
|
|
|
jint jcls = DEBUG_ConvertCToJava (CIMClass*, jint, &cls); |
|
|
|
jobject jCc=env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jcls); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jobjectArray jAr = (jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, |
|
id, |
|
jcop, |
|
jquery, |
|
jqueryLanguage, |
|
jCc); |
|
|
|
JMPIjvm::checkException(env); |
| |
STAT_PMS_PROVIDEREND; | STAT_PMS_PROVIDEREND; |
| |
|
handler.processing(); |
|
if (jAr) { |
|
for (int i=0,m=env->GetArrayLength(jAr); i<m; i++) { |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
} |
|
HandlerCatch(handler); |
|
| |
if (env) JMPIjvm::detachThread(); |
jobject inst=env->GetObjectArrayElement(jAr,i); |
|
JMPIjvm::checkException(env); |
| |
PEG_METHOD_EXIT(); |
jint jCi = env->CallIntMethod(inst,JMPIjvm::jv.CIMInstanceCInst); |
|
CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi); |
| |
return(response); |
JMPIjvm::checkException(env); |
|
|
|
handler.deliver(*ci); |
|
} |
|
} |
|
handler.complete(); |
|
break; |
} | } |
| |
Message * JMPIProviderManager::handleDeleteInstanceRequest(const Message * message) throw() |
case METHOD_SNIA_PROVIDER20: |
{ | { |
PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleDeleteInstanceRequest"); |
jint jcopref = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
|
jobject jcop = env->NewObject(jv->CIMObjectPathClassRef, jv->CIMObjectPathNewI, jcopref); |
HandlerIntroVoid(DeleteInstance,message,request,response,handler); |
|
| |
JNIEnv *env=NULL; |
JMPIjvm::checkException(env); |
try { |
|
Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
|
"JMPIProviderManager::handleDeleteInstanceRequest - Host name: $0 Name space: $1 Class name: $2", |
|
System::getHostName(), |
|
request->nameSpace.getString(), |
|
request->instanceName.getClassName().getString()); |
|
| |
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteInstanceRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->instanceName.getClassName().getString()<<PEGASUS_STD(endl)); |
jstring jqueryLanguage = env->NewStringUTF(request->queryLanguage.getCString()); |
|
jstring jquery = env->NewStringUTF(request->query.getCString()); |
| |
// make target object path |
CIMClass cls = pr._cimom_handle->getClass(context, |
CIMObjectPath objectPath( |
|
System::getHostName(), |
|
request->nameSpace, | request->nameSpace, |
request->instanceName.getClassName(), |
request->className, |
request->instanceName.getKeyBindings()); |
false, |
|
true, |
// resolve provider name |
true, |
ProviderName name = _resolveProviderName( |
CIMPropertyList()); |
request->operationContext.get(ProviderIdContainer::NAME)); |
JMPIjvm::checkException(env); |
|
|
// get cached or load new provider module |
|
JMPIProvider::OpProviderHolder ph = |
|
providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY); |
|
| |
// convert arguments |
jint jcls = DEBUG_ConvertCToJava (CIMClass*, jint, &cls); |
OperationContext context; |
|
| |
context.insert(request->operationContext.get(IdentityContainer::NAME)); |
jobject jCc=env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jcls); |
context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); |
|
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
|
| |
// forward request |
JMPIjvm::checkException(env); |
JMPIProvider & pr=ph.GetProvider(); |
|
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
jint jql = 0; // @BUG - how to convert? |
"Calling provider.deleteInstance: " + pr.getName()); |
|
| |
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteInstanceRequest: Calling provider deleteInstance: "<<pr.getName()<<PEGASUS_STD(endl)); |
jobjectArray jVec = (jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, |
|
id, |
|
jcop, |
|
jquery, |
|
jql, |
|
jCc); |
| |
JvmVector *jv; |
JMPIjvm::checkException(env); |
env=JMPIjvm::attachThread(&jv); |
|
| |
jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
STAT_PMS_PROVIDEREND; |
| |
jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); |
handler.processing(); |
|
if (jVec) { |
|
for (int i=0,m=env->GetArrayLength(jVec); i<m; i++) { |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
JMPIProvider::pm_service_op_lock op_lock(&pr); |
jobject inst=env->GetObjectArrayElement(jVec,i); |
|
JMPIjvm::checkException(env); |
| |
STAT_GETSTARTTIME; |
jint jCi = env->CallIntMethod(inst,JMPIjvm::jv.CIMInstanceCInst); |
|
CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi); |
| |
jmethodID id=env->GetMethodID((jclass)pr.jProviderClass,"deleteInstance", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;)V"); |
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
env->CallVoidMethod((jobject)pr.jProvider,id,jRef); |
handler.deliver(*ci); |
|
} |
STAT_PMS_PROVIDEREND; |
} |
|
handler.complete(); |
|
break; |
|
} |
| |
JMPIjvm::checkException(env); |
case METHOD_UNKNOWN: |
|
{ |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleExecQueryRequest: should not be here!"<<PEGASUS_STD(endl)); |
|
break; |
|
} |
|
} |
} | } |
HandlerCatch(handler); | HandlerCatch(handler); |
| |
|
|
return(response); | return(response); |
} | } |
| |
|
|
Message * JMPIProviderManager::handleAssociatorsRequest(const Message * message) throw() | Message * JMPIProviderManager::handleAssociatorsRequest(const Message * message) throw() |
{ | { |
PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleAssociatorsRequest"); | PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleAssociatorsRequest"); |
|
|
| |
typedef enum { | typedef enum { |
METHOD_UNKNOWN = 0, | METHOD_UNKNOWN = 0, |
METHOD_DIRECTOR, |
METHOD_PEGASUS_24, |
METHOD_SNIA_PROVIDER20, | METHOD_SNIA_PROVIDER20, |
} METHOD_VERSION; | } METHOD_VERSION; |
METHOD_VERSION eMethodFound = METHOD_UNKNOWN; | METHOD_VERSION eMethodFound = METHOD_UNKNOWN; |
JNIEnv *env = NULL; | JNIEnv *env = NULL; |
CIMPropertyList propertyList; |
|
jobjectArray jPropertyList = NULL; |
|
| |
try { | try { |
Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, | Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
|
|
request->nameSpace.getString(), | request->nameSpace.getString(), |
request->objectName.getClassName().getString()); | request->objectName.getClassName().getString()); |
| |
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteInstanceRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->objectName.getClassName().getString()<<PEGASUS_STD(endl)); |
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->objectName.getClassName().getString()<<PEGASUS_STD(endl)); |
| |
// make target object path | // make target object path |
CIMObjectPath objectPath( | CIMObjectPath objectPath( |
|
|
| |
env = JMPIjvm::attachThread(&jv); | env = JMPIjvm::attachThread(&jv); |
| |
jint jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
|
jobject jAssociationName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jstring jResultClass = env->NewStringUTF(request->resultClass.getString().getCString()); |
|
jstring jRole = env->NewStringUTF(request->role.getCString()); |
|
jstring jResultRole = env->NewStringUTF(request->resultRole.getCString()); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); | JMPIProvider::pm_service_op_lock op_lock(&pr); |
| |
STAT_GETSTARTTIME; | STAT_GETSTARTTIME; |
|
|
jmethodID id = NULL; | jmethodID id = NULL; |
| |
// public abstract java.util.Vector associators (org.pegasus.jmpi.CIMObjectPath assocName, | // public abstract java.util.Vector associators (org.pegasus.jmpi.CIMObjectPath assocName, |
|
// org.pegasus.jmpi.CIMObjectPath pathName, |
// java.lang.String resultClass, | // java.lang.String resultClass, |
// java.lang.String role, | // java.lang.String role, |
// java.lang.String resultRole, | // java.lang.String resultRole, |
// boolean includeQualifiers, | // boolean includeQualifiers, |
// boolean includeClassOrigin, | // boolean includeClassOrigin, |
// java.lang.String[] propertyList) | // java.lang.String[] propertyList) |
// throws org.pegasus.jmpi.CIMException; |
// throws org.pegasus.jmpi.CIMException |
// | // |
id = env->GetMethodID((jclass)pr.jProviderClass, | id = env->GetMethodID((jclass)pr.jProviderClass, |
"associators", | "associators", |
"(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;"); |
"(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;"); |
|
//@BUG was: "(Lorg/pegasus/jmpi/CIMObjectPath; Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;" |
| |
if (id != NULL) | if (id != NULL) |
{ | { |
eMethodFound = METHOD_DIRECTOR; |
eMethodFound = METHOD_SNIA_PROVIDER20; |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found METHOD_DIRECTOR."<<PEGASUS_STD(endl)); |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl)); |
} | } |
| |
if (id == NULL) | if (id == NULL) |
|
|
env->ExceptionClear(); | env->ExceptionClear(); |
| |
// public abstract java.util.Vector associators (org.pegasus.jmpi.CIMObjectPath assocName, | // public abstract java.util.Vector associators (org.pegasus.jmpi.CIMObjectPath assocName, |
// org.pegasus.jmpi.CIMObjectPath pathName, |
|
// java.lang.String resultClass, | // java.lang.String resultClass, |
// java.lang.String role, | // java.lang.String role, |
// java.lang.String resultRole, | // java.lang.String resultRole, |
// boolean includeQualifiers, | // boolean includeQualifiers, |
// boolean includeClassOrigin, | // boolean includeClassOrigin, |
// java.lang.String[] propertyList) | // java.lang.String[] propertyList) |
// throws org.pegasus.jmpi.CIMException; |
// throws org.pegasus.jmpi.CIMException |
// | // |
id = env->GetMethodID((jclass)pr.jProviderClass, | id = env->GetMethodID((jclass)pr.jProviderClass, |
"associators", | "associators", |
"(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;"); |
"(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;"); |
|
//@BUG was: "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ[Ljava/lang/String;)[Lorg/pegasus/jmpi/CIMInstance;" |
| |
if (id != NULL) | if (id != NULL) |
{ | { |
eMethodFound = METHOD_SNIA_PROVIDER20; |
eMethodFound = METHOD_PEGASUS_24; |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl)); |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl)); |
} | } |
} | } |
| |
|
|
| |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
jPropertyList = getList(jv,env,request->propertyList); |
|
|
|
switch (eMethodFound) | switch (eMethodFound) |
{ | { |
case METHOD_DIRECTOR: |
case METHOD_PEGASUS_24: |
{ | { |
|
jint jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
|
jobject jAssociationName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jstring jResultClass = env->NewStringUTF(request->resultClass.getString().getCString()); |
|
jstring jRole = env->NewStringUTF(request->role.getCString()); |
|
jstring jResultRole = env->NewStringUTF(request->resultRole.getCString()); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jobjectArray jPropertyList = getList(jv,env,request->propertyList); |
|
|
jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, | jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, |
id, | id, |
jAssociationName, | jAssociationName, |
|
|
false, | false, |
false, | false, |
jPropertyList); | jPropertyList); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
STAT_PMS_PROVIDEREND; | STAT_PMS_PROVIDEREND; |
|
|
| |
case METHOD_SNIA_PROVIDER20: | case METHOD_SNIA_PROVIDER20: |
{ | { |
|
jint jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
|
jobject jAssociationName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef); |
|
|
|
JMPIjvm::checkException(env); |
|
|
jint jPathNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &assocPath); | jint jPathNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &assocPath); |
jobject jPathName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jPathNameRef); | jobject jPathName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jPathNameRef); |
| |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
|
jstring jResultClass = env->NewStringUTF(request->resultClass.getString().getCString()); |
|
jstring jRole = env->NewStringUTF(request->role.getCString()); |
|
jstring jResultRole = env->NewStringUTF(request->resultRole.getCString()); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jobjectArray jPropertyList = getList(jv,env,request->propertyList); |
|
|
jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, | jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, |
id, | id, |
jAssociationName, | jAssociationName, |
|
|
false, | false, |
false, | false, |
jPropertyList); | jPropertyList); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
STAT_PMS_PROVIDEREND; | STAT_PMS_PROVIDEREND; |
|
|
| |
typedef enum { | typedef enum { |
METHOD_UNKNOWN = 0, | METHOD_UNKNOWN = 0, |
METHOD_DIRECTOR, |
METHOD_PEGASUS_24, |
METHOD_SNIA_PROVIDER20 | METHOD_SNIA_PROVIDER20 |
} METHOD_VERSION; | } METHOD_VERSION; |
METHOD_VERSION eMethodFound = METHOD_UNKNOWN; | METHOD_VERSION eMethodFound = METHOD_UNKNOWN; |
|
|
| |
env = JMPIjvm::attachThread(&jv); | env = JMPIjvm::attachThread(&jv); |
| |
jint jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
|
jobject jAssociationName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jstring jResultClass = env->NewStringUTF(request->resultClass.getString().getCString()); |
|
jstring jRole = env->NewStringUTF(request->role.getCString()); |
|
jstring jResultRole = env->NewStringUTF(request->resultRole.getCString()); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); | JMPIProvider::pm_service_op_lock op_lock(&pr); |
| |
STAT_GETSTARTTIME; | STAT_GETSTARTTIME; |
|
|
jmethodID id = NULL; | jmethodID id = NULL; |
| |
// public abstract java.util.Vector associatorNames (org.pegasus.jmpi.CIMObjectPath assocName, | // public abstract java.util.Vector associatorNames (org.pegasus.jmpi.CIMObjectPath assocName, |
|
// org.pegasus.jmpi.CIMObjectPath pathName, |
// java.lang.String resultClass, | // java.lang.String resultClass, |
// java.lang.String role, | // java.lang.String role, |
// java.lang.String resultRole) | // java.lang.String resultRole) |
// throws org.pegasus.jmpi.CIMException | // throws org.pegasus.jmpi.CIMException |
id = env->GetMethodID((jclass)pr.jProviderClass, | id = env->GetMethodID((jclass)pr.jProviderClass, |
"associatorNames", | "associatorNames", |
"(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Vector;"); |
"(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Vector;"); |
|
//@BUG was: "(Lorg/pegasus/jmpi/CIMObjectPath; Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Vector;" |
| |
if (id != NULL) | if (id != NULL) |
{ | { |
eMethodFound = METHOD_DIRECTOR; |
eMethodFound = METHOD_SNIA_PROVIDER20; |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: found METHOD_DIRECTOR."<<PEGASUS_STD(endl)); |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl)); |
} | } |
| |
if (id == NULL) | if (id == NULL) |
|
|
env->ExceptionClear(); | env->ExceptionClear(); |
| |
// public abstract java.util.Vector associatorNames (org.pegasus.jmpi.CIMObjectPath assocName, | // public abstract java.util.Vector associatorNames (org.pegasus.jmpi.CIMObjectPath assocName, |
// org.pegasus.jmpi.CIMObjectPath pathName, |
|
// java.lang.String resultClass, | // java.lang.String resultClass, |
// java.lang.String role, | // java.lang.String role, |
// java.lang.String resultRole) | // java.lang.String resultRole) |
// throws org.pegasus.jmpi.CIMException | // throws org.pegasus.jmpi.CIMException |
id = env->GetMethodID((jclass)pr.jProviderClass, | id = env->GetMethodID((jclass)pr.jProviderClass, |
"associatorNames", | "associatorNames", |
"(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Vector;"); |
"(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Vector;"); |
|
//@BUG was: "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Lorg/pegasus/jmpi/CIMObjectPath;" |
| |
if (id != NULL) | if (id != NULL) |
{ | { |
eMethodFound = METHOD_SNIA_PROVIDER20; |
eMethodFound = METHOD_PEGASUS_24; |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl)); |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl)); |
} | } |
} | } |
| |
|
|
| |
switch (eMethodFound) | switch (eMethodFound) |
{ | { |
case METHOD_DIRECTOR: |
case METHOD_PEGASUS_24: |
{ | { |
|
jint jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
|
jobject jAssociationName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jstring jResultClass = env->NewStringUTF(request->resultClass.getString().getCString()); |
|
jstring jRole = env->NewStringUTF(request->role.getCString()); |
|
jstring jResultRole = env->NewStringUTF(request->resultRole.getCString()); |
|
|
|
JMPIjvm::checkException(env); |
|
|
jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, | jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, |
id, | id, |
jAssociationName, | jAssociationName, |
jResultClass, | jResultClass, |
jRole, | jRole, |
jResultRole); | jResultRole); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
STAT_PMS_PROVIDEREND; | STAT_PMS_PROVIDEREND; |
|
|
| |
case METHOD_SNIA_PROVIDER20: | case METHOD_SNIA_PROVIDER20: |
{ | { |
|
jint jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
|
jobject jAssociationName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef); |
|
|
|
JMPIjvm::checkException(env); |
|
|
jint jPathNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &assocPath); | jint jPathNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &assocPath); |
jobject jPathName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jPathNameRef); | jobject jPathName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jPathNameRef); |
| |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
|
jstring jResultClass = env->NewStringUTF(request->resultClass.getString().getCString()); |
|
jstring jRole = env->NewStringUTF(request->role.getCString()); |
|
jstring jResultRole = env->NewStringUTF(request->resultRole.getCString()); |
|
|
|
JMPIjvm::checkException(env); |
|
|
jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, | jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, |
id, | id, |
jAssociationName, | jAssociationName, |
|
|
jResultClass, | jResultClass, |
jRole, | jRole, |
jResultRole); | jResultRole); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
STAT_PMS_PROVIDEREND; | STAT_PMS_PROVIDEREND; |
|
|
| |
typedef enum { | typedef enum { |
METHOD_UNKNOWN = 0, | METHOD_UNKNOWN = 0, |
METHOD_DIRECTOR, |
METHOD_PEGASUS_24, |
METHOD_SNIA_PROVIDER20, | METHOD_SNIA_PROVIDER20, |
} METHOD_VERSION; | } METHOD_VERSION; |
METHOD_VERSION eMethodFound = METHOD_UNKNOWN; | METHOD_VERSION eMethodFound = METHOD_UNKNOWN; |
JNIEnv *env = NULL; | JNIEnv *env = NULL; |
CIMPropertyList propertyList; |
|
jobjectArray jPropertyList = NULL; |
|
| |
try { | try { |
Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, | Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
|
|
| |
env = JMPIjvm::attachThread(&jv); | env = JMPIjvm::attachThread(&jv); |
| |
jint jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
|
jobject jAssociationName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jstring jRole = env->NewStringUTF(request->role.getCString()); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); | JMPIProvider::pm_service_op_lock op_lock(&pr); |
| |
STAT_GETSTARTTIME; | STAT_GETSTARTTIME; |
|
|
jmethodID id = NULL; | jmethodID id = NULL; |
| |
// public abstract java.util.Vector references (org.pegasus.jmpi.CIMObjectPath assocName, | // public abstract java.util.Vector references (org.pegasus.jmpi.CIMObjectPath assocName, |
|
// org.pegasus.jmpi.CIMObjectPath pathName, |
// java.lang.String role, | // java.lang.String role, |
// boolean includeQualifiers, | // boolean includeQualifiers, |
// boolean includeClassOrigin, | // boolean includeClassOrigin, |
|
|
// throws org.pegasus.jmpi.CIMException | // throws org.pegasus.jmpi.CIMException |
id = env->GetMethodID((jclass)pr.jProviderClass, | id = env->GetMethodID((jclass)pr.jProviderClass, |
"references", | "references", |
"(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;"); |
"(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;"); |
|
//@BUG was: "(Lorg/pegasus/jmpi/CIMObjectPath; Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;" |
| |
if (id != NULL) | if (id != NULL) |
{ | { |
eMethodFound = METHOD_DIRECTOR; |
eMethodFound = METHOD_SNIA_PROVIDER20; |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found METHOD_DIRECTOR."<<PEGASUS_STD(endl)); |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferencesRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl)); |
} | } |
| |
if (id == NULL) | if (id == NULL) |
|
|
env->ExceptionClear(); | env->ExceptionClear(); |
| |
// public abstract java.util.Vector references (org.pegasus.jmpi.CIMObjectPath assocName, | // public abstract java.util.Vector references (org.pegasus.jmpi.CIMObjectPath assocName, |
// org.pegasus.jmpi.CIMObjectPath pathName, |
|
// java.lang.String role, | // java.lang.String role, |
// boolean includeQualifiers, | // boolean includeQualifiers, |
// boolean includeClassOrigin, | // boolean includeClassOrigin, |
|
|
// throws org.pegasus.jmpi.CIMException | // throws org.pegasus.jmpi.CIMException |
id = env->GetMethodID((jclass)pr.jProviderClass, | id = env->GetMethodID((jclass)pr.jProviderClass, |
"references", | "references", |
"(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;"); |
"(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;"); |
|
//@BUG was: "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ZZ[Ljava/lang/String;)[Lorg/pegasus/jmpi/CIMInstance;" |
| |
if (id != NULL) | if (id != NULL) |
{ | { |
eMethodFound = METHOD_SNIA_PROVIDER20; |
eMethodFound = METHOD_PEGASUS_24; |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl)); |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferencesRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl)); |
} | } |
} | } |
| |
if (id == NULL) | if (id == NULL) |
{ | { |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found no method!"<<PEGASUS_STD(endl)); |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferencesRequest: found no method!"<<PEGASUS_STD(endl)); |
} | } |
| |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
jPropertyList = getList(jv,env,request->propertyList); |
|
|
|
switch (eMethodFound) | switch (eMethodFound) |
{ | { |
case METHOD_DIRECTOR: |
case METHOD_PEGASUS_24: |
{ | { |
|
jint jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
|
jobject jAssociationName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jstring jRole = env->NewStringUTF(request->role.getCString()); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jobjectArray jPropertyList = getList(jv,env,request->propertyList); |
|
|
jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, | jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, |
id, | id, |
jAssociationName, | jAssociationName, |
|
|
false, | false, |
false, | false, |
jPropertyList); | jPropertyList); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
STAT_PMS_PROVIDEREND; | STAT_PMS_PROVIDEREND; |
|
|
| |
case METHOD_SNIA_PROVIDER20: | case METHOD_SNIA_PROVIDER20: |
{ | { |
|
jint jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
|
jobject jAssociationName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef); |
|
|
|
JMPIjvm::checkException(env); |
|
|
jint jPathNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &resultPath); | jint jPathNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &resultPath); |
jobject jPathName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jPathNameRef); | jobject jPathName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jPathNameRef); |
| |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
|
jstring jRole = env->NewStringUTF(request->role.getCString()); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jobjectArray jPropertyList = getList(jv,env,request->propertyList); |
|
|
jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, | jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, |
id, | id, |
jAssociationName, | jAssociationName, |
|
|
false, | false, |
false, | false, |
jPropertyList); | jPropertyList); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
STAT_PMS_PROVIDEREND; | STAT_PMS_PROVIDEREND; |
|
|
| |
case METHOD_UNKNOWN: | case METHOD_UNKNOWN: |
{ | { |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: should not be here!"<<PEGASUS_STD(endl)); |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferencesRequest: should not be here!"<<PEGASUS_STD(endl)); |
break; | break; |
} | } |
} | } |
|
|
| |
typedef enum { | typedef enum { |
METHOD_UNKNOWN = 0, | METHOD_UNKNOWN = 0, |
METHOD_DIRECTOR, |
METHOD_PEGASUS_24, |
METHOD_SNIA_PROVIDER20, | METHOD_SNIA_PROVIDER20, |
} METHOD_VERSION; | } METHOD_VERSION; |
METHOD_VERSION eMethodFound = METHOD_UNKNOWN; | METHOD_VERSION eMethodFound = METHOD_UNKNOWN; |
|
|
| |
env = JMPIjvm::attachThread(&jv); | env = JMPIjvm::attachThread(&jv); |
| |
jint jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
|
jobject jAssociationName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jstring jRole = env->NewStringUTF(request->role.getCString()); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); | JMPIProvider::pm_service_op_lock op_lock(&pr); |
| |
STAT_GETSTARTTIME; | STAT_GETSTARTTIME; |
|
|
jmethodID id = NULL; | jmethodID id = NULL; |
| |
// public abstract java.util.Vector referenceNames (org.pegasus.jmpi.CIMObjectPath assocName, | // public abstract java.util.Vector referenceNames (org.pegasus.jmpi.CIMObjectPath assocName, |
|
// org.pegasus.jmpi.CIMObjectPath pathName, |
// java.lang.String role) | // java.lang.String role) |
// throws org/pegasus/jmpi/CIMException |
// throws org.pegasus.jmpi.CIMException |
id = env->GetMethodID((jclass)pr.jProviderClass, | id = env->GetMethodID((jclass)pr.jProviderClass, |
"referenceNames", | "referenceNames", |
"(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;)Ljava/util/Vector;"); |
"(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;)Ljava/util/Vector;"); |
|
//@BUG was: "(Lorg/pegasus/jmpi/CIMObjectPath; Ljava/lang/String;)Ljava/util/Vector;" |
| |
if (id != NULL) | if (id != NULL) |
{ | { |
eMethodFound = METHOD_DIRECTOR; |
eMethodFound = METHOD_SNIA_PROVIDER20; |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found METHOD_DIRECTOR."<<PEGASUS_STD(endl)); |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferenceNamesRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl)); |
} | } |
| |
if (id == NULL) | if (id == NULL) |
|
|
env->ExceptionClear(); | env->ExceptionClear(); |
| |
// public abstract java.util.Vector referenceNames (org.pegasus.jmpi.CIMObjectPath assocName, | // public abstract java.util.Vector referenceNames (org.pegasus.jmpi.CIMObjectPath assocName, |
// org.pegasus.jmpi.CIMObjectPath pathName, |
|
// java.lang.String role) | // java.lang.String role) |
// throws org/pegasus/jmpi/CIMException |
// throws org.pegasus.jmpi.CIMException |
id = env->GetMethodID((jclass)pr.jProviderClass, | id = env->GetMethodID((jclass)pr.jProviderClass, |
"referenceNames", | "referenceNames", |
"(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;)Ljava/util/Vector;"); |
"(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;)Ljava/util/Vector;"); |
|
//@BUG was: "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;)[Lorg/pegasus/jmpi/CIMObjectPath;" |
| |
if (id != NULL) | if (id != NULL) |
{ | { |
eMethodFound = METHOD_SNIA_PROVIDER20; |
eMethodFound = METHOD_PEGASUS_24; |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl)); |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferenceNamesRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl)); |
} | } |
} | } |
| |
if (id == NULL) | if (id == NULL) |
{ | { |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found no method!"<<PEGASUS_STD(endl)); |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferenceNamesRequest: found no method!"<<PEGASUS_STD(endl)); |
} | } |
| |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
switch (eMethodFound) | switch (eMethodFound) |
{ | { |
case METHOD_DIRECTOR: |
case METHOD_PEGASUS_24: |
{ | { |
|
jint jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
|
jobject jAssociationName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jstring jRole = env->NewStringUTF(request->role.getCString()); |
|
|
|
JMPIjvm::checkException(env); |
|
|
jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, | jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, |
id, | id, |
jAssociationName, | jAssociationName, |
jRole); | jRole); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
STAT_PMS_PROVIDEREND; | STAT_PMS_PROVIDEREND; |
|
|
| |
case METHOD_SNIA_PROVIDER20: | case METHOD_SNIA_PROVIDER20: |
{ | { |
|
jint jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
|
jobject jAssociationName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef); |
|
|
|
JMPIjvm::checkException(env); |
|
|
jint jPathNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &resultPath); | jint jPathNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &resultPath); |
jobject jPathName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jPathNameRef); | jobject jPathName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jPathNameRef); |
| |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
|
jstring jRole = env->NewStringUTF(request->role.getCString()); |
|
|
|
JMPIjvm::checkException(env); |
|
|
jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, | jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, |
id, | id, |
jAssociationName, | jAssociationName, |
jPathName, | jPathName, |
jRole); | jRole); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
STAT_PMS_PROVIDEREND; | STAT_PMS_PROVIDEREND; |
|
|
| |
case METHOD_UNKNOWN: | case METHOD_UNKNOWN: |
{ | { |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: should not be here!"<<PEGASUS_STD(endl)); |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferenceNamesRequest: should not be here!"<<PEGASUS_STD(endl)); |
break; | break; |
} | } |
} | } |
|
|
| |
HandlerIntroMethod(InvokeMethod,message,request,response,handler); | HandlerIntroMethod(InvokeMethod,message,request,response,handler); |
| |
|
typedef enum { |
|
METHOD_UNKNOWN = 0, |
|
METHOD_PEGASUS_24, |
|
METHOD_SNIA_PROVIDER20, |
|
} METHOD_VERSION; |
|
METHOD_VERSION eMethodFound = METHOD_UNKNOWN; |
JNIEnv *env=NULL; | JNIEnv *env=NULL; |
Boolean mode24=false; |
|
| |
try { | try { |
Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, | Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
|
|
| |
JMPIProvider & pr=ph.GetProvider(); | JMPIProvider & pr=ph.GetProvider(); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.invokeMethod: " + pr.getName()); |
"Calling provider.invokeMethod: " + pr.getName()); |
|
| |
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleInvokeMethodRequest: Calling provider invokeMethod: "<<pr.getName()<<PEGASUS_STD(endl)); | DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleInvokeMethodRequest: Calling provider invokeMethod: "<<pr.getName()<<PEGASUS_STD(endl)); |
JvmVector *jv; |
|
env=JMPIjvm::attachThread(&jv); |
|
| |
jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
JvmVector *jv = 0; |
| |
jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); |
env = JMPIjvm::attachThread(&jv); |
JMPIjvm::checkException(env); |
|
| |
jstring jMethod=env->NewStringUTF(request->methodName.getString().getCString()); |
JMPIProvider::pm_service_op_lock op_lock(&pr); |
JMPIjvm::checkException(env); |
|
| |
STAT_GETSTARTTIME; | STAT_GETSTARTTIME; |
| |
jmethodID id=env->GetMethodID((jclass)pr.jProviderClass,"invokeMethod", |
jmethodID id = NULL; |
"(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;" |
|
"Ljava/util/Vector;Ljava/util/Vector;)Lorg/pegasus/jmpi/CIMValue;"); |
// public abstract org.pegasus.jmpi.CIMValue invokeMethod (org.pegasus.jmpi.CIMObjectPath cop, |
|
// java.lang.String name, |
|
// java.util.Vector in, |
|
// java.util.Vector out) |
|
// throws org.pegasus.jmpi.CIMException |
|
id = env->GetMethodID((jclass)pr.jProviderClass, |
|
"invokeMethod", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/util/Vector;Ljava/util/Vector;)Lorg/pegasus/jmpi/CIMValue;"); |
|
|
|
if (id != NULL) |
|
{ |
|
eMethodFound = METHOD_SNIA_PROVIDER20; |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleInvokeMethodRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl)); |
|
} |
| |
if (id==NULL) { |
if (id == NULL) |
|
{ |
env->ExceptionClear(); | env->ExceptionClear(); |
id=env->GetMethodID((jclass)pr.jProviderClass,"invokeMethod", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;" |
// public org.pegasus.jmpi.CIMValue invokeMethod (org.pegasus.jmpi.CIMObjectPath op, |
"[Lorg/pegasus/jmpi/CIMArgument;[Lorg/pegasus/jmpi/CIMArgument;)Lorg/pegasus/jmpi/CIMValue;"); |
// java.lang.String methodName, |
JMPIjvm::checkException(env); |
// org.pegasus.jmpi.CIMArgument[] inArgs, |
mode24=true; |
// org.pegasus.jmpi.CIMArgument[] outArgs) |
|
// throws org.pegasus.jmpi.CIMException |
|
id = env->GetMethodID((jclass)pr.jProviderClass, |
|
"invokeMethod", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;[Lorg/pegasus/jmpi/CIMArgument;[Lorg/pegasus/jmpi/CIMArgument;)Lorg/pegasus/jmpi/CIMValue;"); |
|
|
|
if (id != NULL) |
|
{ |
|
eMethodFound = METHOD_PEGASUS_24; |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleInvokeMethodRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl)); |
|
} |
} | } |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
if (!mode24) { |
switch (eMethodFound) |
jobject jVecIn=env->NewObject(jv->VectorClassRef,jv->VectorNew); |
{ |
|
case METHOD_PEGASUS_24: |
|
{ |
|
jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
|
|
|
jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
for (int i=0,m=request->inParameters.size(); i<m; i++) { |
|
const CIMParamValue &parm = request->inParameters[i]; |
|
const CIMValue v = parm.getValue(); |
|
CIMProperty *p = new CIMProperty(parm.getParameterName(),v,v.getArraySize()); |
|
jint jObj = DEBUG_ConvertCToJava (CIMProperty*, jint, p); |
|
| |
jobject prop=env->NewObject(jv->CIMPropertyClassRef,jv->CIMPropertyNewI,jObj); |
jstring jMethod=env->NewStringUTF(request->methodName.getString().getCString()); |
|
JMPIjvm::checkException(env); |
| |
env->CallVoidMethod(jVecIn,jv->VectorAddElement,prop); |
Uint32 m=request->inParameters.size(); |
|
|
|
jobjectArray jArIn=(jobjectArray)env->NewObjectArray(m,jv->CIMArgumentClassRef,NULL); |
|
for (Uint32 i=0; i<m; i++) { |
|
CIMParamValue *parm = new CIMParamValue(request->inParameters[i]); |
|
jint jObj = DEBUG_ConvertCToJava (CIMParamValue*, jint, parm); |
|
jobject jArg = env->NewObject(jv->CIMArgumentClassRef,jv->CIMArgumentNewI,jObj); |
|
|
|
env->SetObjectArrayElement(jArIn,i,jArg); |
} | } |
| |
jobject jVecOut=env->NewObject(jv->VectorClassRef,jv->VectorNew); |
jobjectArray jArOut=(jobjectArray)env->NewObjectArray(24,jv->CIMArgumentClassRef,NULL); |
JMPIjvm::checkException(env); |
|
| |
jobject jValue=env->CallObjectMethod((jobject)pr.jProvider,id,jRef,jMethod,jVecIn,jVecOut); |
jobject jValue=env->CallObjectMethod((jobject)pr.jProvider,id,jRef,jMethod,jArIn,jArOut); |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
STAT_PMS_PROVIDEREND; | STAT_PMS_PROVIDEREND; |
|
|
| |
handler.deliver(*v); | handler.deliver(*v); |
| |
for (int i=0,m=env->CallIntMethod(jVecOut,JMPIjvm::jv.VectorSize); i<m; i++) { |
for (int i=0; i<24; i++) { |
|
jobject jArg=env->GetObjectArrayElement(jArOut,i); |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
jobject jProp=env->CallObjectMethod(jVecOut,JMPIjvm::jv.VectorElementAt,i); |
if (jArg==NULL) break; |
JMPIjvm::checkException(env); |
|
| |
jint jp = env->CallIntMethod(jProp,JMPIjvm::jv.PropertyCInst); |
jint jp = env->CallIntMethod(jArg,JMPIjvm::jv.ArgumentCInst); |
CIMProperty *p = DEBUG_ConvertJavaToC (jint, CIMProperty*, jp); |
CIMParamValue *p = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jp); |
| |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
handler.deliverParamValue(CIMParamValue(p->getName().getString(),p->getValue())); |
handler.deliverParamValue(*p); |
} | } |
| |
handler.complete(); | handler.complete(); |
|
break; |
} | } |
else { |
|
Uint32 m=request->inParameters.size(); |
|
| |
jobjectArray jArIn=(jobjectArray)env->NewObjectArray(m,jv->CIMArgumentClassRef,NULL); |
case METHOD_SNIA_PROVIDER20: |
for (Uint32 i=0; i<m; i++) { |
{ |
CIMParamValue *parm = new CIMParamValue(request->inParameters[i]); |
jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath); |
jint jObj = DEBUG_ConvertCToJava (CIMParamValue*, jint, parm); |
|
jobject jArg = env->NewObject(jv->CIMArgumentClassRef,jv->CIMArgumentNewI,jObj); |
|
| |
env->SetObjectArrayElement(jArIn,i,jArg); |
jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); |
|
JMPIjvm::checkException(env); |
|
|
|
jstring jMethod=env->NewStringUTF(request->methodName.getString().getCString()); |
|
JMPIjvm::checkException(env); |
|
|
|
jobject jVecIn=env->NewObject(jv->VectorClassRef,jv->VectorNew); |
|
JMPIjvm::checkException(env); |
|
for (int i=0,m=request->inParameters.size(); i<m; i++) { |
|
const CIMParamValue &parm = request->inParameters[i]; |
|
const CIMValue v = parm.getValue(); |
|
CIMProperty *p = new CIMProperty(parm.getParameterName(),v,v.getArraySize()); |
|
jint jObj = DEBUG_ConvertCToJava (CIMProperty*, jint, p); |
|
|
|
jobject prop=env->NewObject(jv->CIMPropertyClassRef,jv->CIMPropertyNewI,jObj); |
|
|
|
env->CallVoidMethod(jVecIn,jv->VectorAddElement,prop); |
} | } |
| |
jobjectArray jArOut=(jobjectArray)env->NewObjectArray(24,jv->CIMArgumentClassRef,NULL); |
jobject jVecOut=env->NewObject(jv->VectorClassRef,jv->VectorNew); |
|
JMPIjvm::checkException(env); |
| |
jobject jValue=env->CallObjectMethod((jobject)pr.jProvider,id,jRef,jMethod,jArIn,jArOut); |
jobject jValue=env->CallObjectMethod((jobject)pr.jProvider,id,jRef,jMethod,jVecIn,jVecOut); |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
STAT_PMS_PROVIDEREND; | STAT_PMS_PROVIDEREND; |
|
|
| |
handler.deliver(*v); | handler.deliver(*v); |
| |
for (int i=0; i<24; i++) { |
for (int i=0,m=env->CallIntMethod(jVecOut,JMPIjvm::jv.VectorSize); i<m; i++) { |
jobject jArg=env->GetObjectArrayElement(jArOut,i); |
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
if (jArg==NULL) break; |
jobject jProp=env->CallObjectMethod(jVecOut,JMPIjvm::jv.VectorElementAt,i); |
|
JMPIjvm::checkException(env); |
| |
jint jp = env->CallIntMethod(jArg,JMPIjvm::jv.ArgumentCInst); |
jint jp = env->CallIntMethod(jProp,JMPIjvm::jv.PropertyCInst); |
CIMParamValue *p = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jp); |
CIMProperty *p = DEBUG_ConvertJavaToC (jint, CIMProperty*, jp); |
| |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
handler.deliverParamValue(*p); |
handler.deliverParamValue(CIMParamValue(p->getName().getString(),p->getValue())); |
} | } |
| |
handler.complete(); | handler.complete(); |
|
break; |
|
} |
|
|
|
case METHOD_UNKNOWN: |
|
{ |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleInvokeMethodRequest: should not be here!"<<PEGASUS_STD(endl)); |
|
break; |
|
} |
} | } |
} | } |
HandlerCatch(handler); | HandlerCatch(handler); |
|
|
| |
HandlerIntroInd(CreateSubscription,message,request,response,handler); | HandlerIntroInd(CreateSubscription,message,request,response,handler); |
| |
|
typedef enum { |
|
METHOD_UNKNOWN = 0, |
|
METHOD_SNIA_PROVIDER20, |
|
} METHOD_VERSION; |
|
METHOD_VERSION eMethodFound = METHOD_UNKNOWN; |
JNIEnv *env=NULL; | JNIEnv *env=NULL; |
|
|
try { | try { |
const CIMObjectPath &x=request->subscriptionInstance.getPath(); |
String providerName, |
|
providerLocation; |
|
CIMInstance req_provider, |
|
req_providerModule; |
| |
String providerName,providerLocation; |
|
CIMInstance req_provider, req_providerModule; |
|
ProviderIdContainer pidc = (ProviderIdContainer)request->operationContext.get(ProviderIdContainer::NAME); | ProviderIdContainer pidc = (ProviderIdContainer)request->operationContext.get(ProviderIdContainer::NAME); |
|
|
req_provider = pidc.getProvider(); | req_provider = pidc.getProvider(); |
req_providerModule = pidc.getModule(); | req_providerModule = pidc.getModule(); |
|
|
LocateIndicationProviderNames(req_provider, req_providerModule,providerName,providerLocation); | LocateIndicationProviderNames(req_provider, req_providerModule,providerName,providerLocation); |
| |
Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, | Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
|
|
providerManager.getProvider(fileName, providerName, String::EMPTY); | providerManager.getProvider(fileName, providerName, String::EMPTY); |
| |
indProvRecord *prec=NULL; | indProvRecord *prec=NULL; |
|
|
provTab.lookup(providerName,prec); | provTab.lookup(providerName,prec); |
|
|
if (prec) | if (prec) |
|
{ |
prec->count++; | prec->count++; |
else { |
} |
|
else |
|
{ |
prec=new indProvRecord(); | prec=new indProvRecord(); |
provTab.insert(providerName,prec); | provTab.insert(providerName,prec); |
} | } |
|
|
| |
indSelectRecord *srec=new indSelectRecord(); | indSelectRecord *srec=new indSelectRecord(); |
const CIMObjectPath &sPath=request->subscriptionInstance.getPath(); | const CIMObjectPath &sPath=request->subscriptionInstance.getPath(); |
|
|
selxTab.insert(sPath.toString(),srec); | selxTab.insert(sPath.toString(),srec); |
| |
// convert arguments | // convert arguments |
OperationContext *context=new OperationContext(); | OperationContext *context=new OperationContext(); |
| |
if (prec->ctx==NULL) { |
if (prec->ctx==NULL) |
|
{ |
prec->ctx=context; | prec->ctx=context; |
} | } |
| |
|
|
srec->eSelx=eSelx; | srec->eSelx=eSelx; |
srec->qContext=qcontext; | srec->qContext=qcontext; |
| |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.createSubscriptionRequest: " + pr.getName()); |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.createSubscriptionRequest: " + pr.getName()); |
|
| |
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateSubscriptionRequest: Calling provider createSubscriptionRequest: "<<pr.getName()<<PEGASUS_STD(endl)); | DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateSubscriptionRequest: Calling provider createSubscriptionRequest: "<<pr.getName()<<PEGASUS_STD(endl)); |
| |
|
|
eSelx->props[pCount]=NULL; | eSelx->props[pCount]=NULL; |
} | } |
| |
JvmVector *jv; |
JvmVector *jv = 0; |
|
|
env=JMPIjvm::attachThread(&jv); | env=JMPIjvm::attachThread(&jv); |
| |
jint jObj = DEBUG_ConvertCToJava (CMPI_SelectExp*, jint, eSelx); |
JMPIProvider::pm_service_op_lock op_lock(&pr); |
|
|
|
STAT_GETSTARTTIME; |
|
|
|
jmethodID id = NULL; |
|
|
|
// public void authorizeFilter (org.pegasus.jmpi.SelectExp filter, |
|
// java.lang.String eventType, |
|
// org.pegasus.jmpi.CIMObjectPath classPath, |
|
// java.lang.String owner) |
|
// throws org.pegasus.jmpi.CIMException |
|
id = env->GetMethodID((jclass)pr.jProviderClass, |
|
"activateFilter", |
|
"(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;Lorg/pegasus/jmpi/CIMObjectPath;Z)V"); |
|
|
|
if (id != NULL) |
|
{ |
|
eMethodFound = METHOD_SNIA_PROVIDER20; |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateSubscriptionRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl)); |
|
} |
|
|
|
JMPIjvm::checkException(env); |
| |
|
switch (eMethodFound) |
|
{ |
|
case METHOD_SNIA_PROVIDER20: |
|
{ |
|
jint jObj = DEBUG_ConvertCToJava (CMPI_SelectExp*, jint, eSelx); |
jobject jSel=env->NewObject(jv->SelectExpClassRef,jv->SelectExpNewI,jObj); | jobject jSel=env->NewObject(jv->SelectExpClassRef,jv->SelectExpNewI,jObj); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &eSelx->classNames[0]); | jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &eSelx->classNames[0]); |
| |
jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); | jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); |
JMPIjvm::checkException(env); |
|
| |
jstring jType=env->NewStringUTF(request->nameSpace.getString().getCString()); |
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
JMPIProvider::pm_service_op_lock op_lock(&pr); |
jstring jType = env->NewStringUTF(request->nameSpace.getString().getCString()); |
|
|
STAT_GETSTARTTIME; |
|
| |
jmethodID id=env->GetMethodID((jclass)pr.jProviderClass,"activateFilter", |
|
"(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;" |
|
"Lorg/pegasus/jmpi/CIMObjectPath;Z)V"); |
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
env->CallVoidMethod((jobject)pr.jProvider,id,jSel,jType, |
env->CallVoidMethod((jobject)pr.jProvider, |
jRef,(jboolean)0); |
id, |
|
jSel, |
|
jType, |
|
jRef, |
|
(jboolean)0); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
// | // |
|
|
} | } |
| |
STAT_PMS_PROVIDEREND; | STAT_PMS_PROVIDEREND; |
|
break; |
|
} |
|
|
|
case METHOD_UNKNOWN: |
|
{ |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateSubscriptionRequest: should not be here!"<<PEGASUS_STD(endl)); |
|
break; |
|
} |
|
} |
| |
} | } |
HandlerCatch(handler); | HandlerCatch(handler); |
|
|
| |
HandlerIntroInd(DeleteSubscription,message,request,response,handler); | HandlerIntroInd(DeleteSubscription,message,request,response,handler); |
| |
|
typedef enum { |
|
METHOD_UNKNOWN = 0, |
|
METHOD_SNIA_PROVIDER20, |
|
} METHOD_VERSION; |
|
METHOD_VERSION eMethodFound = METHOD_UNKNOWN; |
JNIEnv *env=NULL; | JNIEnv *env=NULL; |
|
|
try { | try { |
String providerName,providerLocation; |
String providerName, |
CIMInstance req_provider, req_providerModule; |
providerLocation; |
|
CIMInstance req_provider, |
|
req_providerModule; |
ProviderIdContainer pidc = (ProviderIdContainer)request->operationContext.get(ProviderIdContainer::NAME); | ProviderIdContainer pidc = (ProviderIdContainer)request->operationContext.get(ProviderIdContainer::NAME); |
|
|
req_provider = pidc.getProvider(); | req_provider = pidc.getProvider(); |
req_providerModule = pidc.getModule(); | req_providerModule = pidc.getModule(); |
| |
LocateIndicationProviderNames(req_provider, req_providerModule, |
LocateIndicationProviderNames(req_provider, req_providerModule, providerName,providerLocation); |
providerName,providerLocation); |
|
| |
Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, | Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
"JMPIProviderManager::handleDeleteSubscriptionRequest - Host name: $0 Name space: $1 Provider name(s): $2", | "JMPIProviderManager::handleDeleteSubscriptionRequest - Host name: $0 Name space: $1 Provider name(s): $2", |
|
|
providerManager.getProvider(fileName, providerName, String::EMPTY); | providerManager.getProvider(fileName, providerName, String::EMPTY); |
| |
indProvRecord *prec=NULL; | indProvRecord *prec=NULL; |
|
|
provTab.lookup(providerName,prec); | provTab.lookup(providerName,prec); |
if (--prec->count<=0) { |
if (--prec->count <= 0) |
|
{ |
provTab.remove(providerName); | provTab.remove(providerName); |
prec=NULL; | prec=NULL; |
} | } |
|
|
indSelectRecord *srec=NULL; | indSelectRecord *srec=NULL; |
const CIMObjectPath &sPath=request->subscriptionInstance.getPath(); | const CIMObjectPath &sPath=request->subscriptionInstance.getPath(); |
String sPathString=sPath.toString(); | String sPathString=sPath.toString(); |
|
|
selxTab.lookup(sPathString,srec); | selxTab.lookup(sPathString,srec); |
| |
CMPI_SelectExp *eSelx=srec->eSelx; | CMPI_SelectExp *eSelx=srec->eSelx; |
|
|
| |
JMPIProvider & pr=ph.GetProvider(); | JMPIProvider & pr=ph.GetProvider(); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.deleteSubscriptionRequest: " + pr.getName()); |
"Calling provider.deleteSubscriptionRequest: " + pr.getName()); |
|
| |
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteSubscriptionRequest: Calling provider deleteSubscriptionRequest: "<<pr.getName()<<PEGASUS_STD(endl)); | DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteSubscriptionRequest: Calling provider deleteSubscriptionRequest: "<<pr.getName()<<PEGASUS_STD(endl)); |
| |
JvmVector *jv; |
JvmVector *jv = 0; |
|
|
env=JMPIjvm::attachThread(&jv); | env=JMPIjvm::attachThread(&jv); |
| |
jint jObj = DEBUG_ConvertCToJava (CMPI_SelectExp*, jint, eSelx); |
JMPIProvider::pm_service_op_lock op_lock(&pr); |
|
|
|
STAT_GETSTARTTIME; |
|
|
|
jmethodID id = NULL; |
|
|
|
// public void deActivateFilter (org.pegasus.jmpi.SelectExp filter, |
|
// java.lang.String eventType, |
|
// org.pegasus.jmpi.CIMObjectPath classPath, |
|
// boolean lastActivation) |
|
// throws org.pegasus.jmpi.CIMException |
|
id = env->GetMethodID((jclass)pr.jProviderClass, |
|
"deActivateFilter", |
|
"(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;Lorg/pegasus/jmpi/CIMObjectPath;Z)V"); |
|
|
|
if (id != NULL) |
|
{ |
|
eMethodFound = METHOD_SNIA_PROVIDER20; |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteSubscriptionRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl)); |
|
} |
|
|
|
JMPIjvm::checkException(env); |
| |
|
switch (eMethodFound) |
|
{ |
|
case METHOD_SNIA_PROVIDER20: |
|
{ |
|
jint jObj = DEBUG_ConvertCToJava (CMPI_SelectExp*, jint, eSelx); |
jobject jSel=env->NewObject(jv->SelectExpClassRef,jv->SelectExpNewI,jObj); | jobject jSel=env->NewObject(jv->SelectExpClassRef,jv->SelectExpNewI,jObj); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &eSelx->classNames[0]); | jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &eSelx->classNames[0]); |
| |
jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); | jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); |
JMPIjvm::checkException(env); |
|
| |
jstring jType=env->NewStringUTF(request->nameSpace.getString().getCString()); |
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
JMPIProvider::pm_service_op_lock op_lock(&pr); |
jstring jType = env->NewStringUTF(request->nameSpace.getString().getCString()); |
|
|
STAT_GETSTARTTIME; |
|
| |
jmethodID id=env->GetMethodID((jclass)pr.jProviderClass,"deActivateFilter", |
|
"(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;" |
|
"Lorg/pegasus/jmpi/CIMObjectPath;Z)V"); |
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
env->CallVoidMethod((jobject)pr.jProvider,id,jSel,jType, |
env->CallVoidMethod((jobject)pr.jProvider, |
jRef,(jboolean)(prec==NULL)); |
id, |
|
jSel, |
|
jType, |
|
jRef, |
|
(jboolean)(prec==NULL)); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
// | // |
|
|
delete eSelx; | delete eSelx; |
delete qContext; | delete qContext; |
delete srec; | delete srec; |
|
break; |
|
} |
| |
|
case METHOD_UNKNOWN: |
|
{ |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteSubscriptionRequest: should not be here!"<<PEGASUS_STD(endl)); |
|
break; |
|
} |
|
} |
} | } |
HandlerCatch(handler); | HandlerCatch(handler); |
| |
|
|
return(response); | return(response); |
} | } |
| |
Message * JMPIProviderManager::handleSubscriptionInitCompleteRequest |
Message * JMPIProviderManager::handleSubscriptionInitCompleteRequest (const Message * message) |
(const Message * message) |
|
{ | { |
PEG_METHOD_ENTER (TRC_PROVIDERMANAGER, | PEG_METHOD_ENTER (TRC_PROVIDERMANAGER, |
"JMPIProviderManager::handleSubscriptionInitCompleteRequest"); | "JMPIProviderManager::handleSubscriptionInitCompleteRequest"); |