version 1.29, 2005/06/07 18:11:17
|
version 1.37, 2005/12/08 21:34:54
|
|
|
#define DDD(x) | #define DDD(x) |
#endif | #endif |
| |
|
// request->localOnly is replaced with JMPI_LOCALONLY for getInstance () and enumerateInstances () |
|
#define JMPI_LOCALONLY false |
|
|
|
/* Fix for 4092 */ |
|
// request->includeQualifiers is replaced with JMPI_INCLUDE_QUALIFIERS for getInstance (), |
|
// setInstance (), enumerateInstances (), associators (), and references () |
|
#define JMPI_INCLUDE_QUALIFIERS false |
|
|
#include "Convert.h" | #include "Convert.h" |
| |
void JMPIProviderManager::debugPrintMethodPointers (JNIEnv *env, jclass jc) | void JMPIProviderManager::debugPrintMethodPointers (JNIEnv *env, jclass jc) |
{ | { |
// cd ${PEGAUSE_HOME}/src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/tests/JMPI_TestPropertyTypes | // cd ${PEGAUSE_HOME}/src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/tests/JMPI_TestPropertyTypes |
// javap -s -p JMPI_TestPropertyTypes | // javap -s -p JMPI_TestPropertyTypes |
static const char *methodNames[][2] = { |
static const char *methodNames[][3] = { |
// CIMProvider | // CIMProvider |
// cimom-2003-11-24/org/snia/wbem/provider/CIMProvider.java | // cimom-2003-11-24/org/snia/wbem/provider/CIMProvider.java |
// src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/CIMProvider.java | // src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/CIMProvider.java |
{"initialize","(Lorg/pegasus/jmpi/CIMOMHandle;)V"}, |
{"snia 2.0","initialize","(Lorg/pegasus/jmpi/CIMOMHandle;)V"}, |
{"cleanup","()V"}, |
{"snia 2.0","cleanup","()V"}, |
// InstanceProvider | // InstanceProvider |
// cimom-2003-11-24/org/snia/wbem/provider/InstanceProvider.java | // cimom-2003-11-24/org/snia/wbem/provider/InstanceProvider.java |
// src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/CIMInstanceProvider.java | // src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/CIMInstanceProvider.java |
{"enumInstances","(Lorg/pegasus/jmpi/CIMObjectPath;ZLorg/pegasus/jmpi/CIMClass;)Ljava/util/Vector;"}, |
{"snia 2.0","enumInstances","(Lorg/pegasus/jmpi/CIMObjectPath;ZLorg/pegasus/jmpi/CIMClass;Z)Ljava/util/Vector;"}, |
{"enumInstances","(Lorg/pegasus/jmpi/CIMObjectPath;ZLorg/pegasus/jmpi/CIMClass;Z)Ljava/util/Vector;"}, |
{"pegasus 2.4","enumInstances","(Lorg/pegasus/jmpi/CIMObjectPath;ZZZ[Ljava/lang/String;Lorg/pegasus/jmpi/CIMClass;)[Lorg/pegasus/jmpi/CIMInstance;"}, |
{"getInstance","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;Z)Lorg/pegasus/jmpi/CIMInstance;"}, |
/* Begin Fix for 4189 */ |
{"createInstance","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMInstance;)Lorg/pegasus/jmpi/CIMObjectPath;"}, |
{"pegasus 2.5","enumerateInstances","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;ZZZZ[Ljava/lang/String;)Ljava/util/Vector;"}, |
{"setInstance","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMInstance;)V"}, |
/* End Fix for 4189 */ |
{"deleteInstance","(Lorg/pegasus/jmpi/CIMObjectPath;)V"}, |
{"snia 2.0","enumInstances","(Lorg/pegasus/jmpi/CIMObjectPath;ZLorg/pegasus/jmpi/CIMClass;)Ljava/util/Vector;"}, |
{"execQuery","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ILorg/pegasus/jmpi/CIMClass;)Ljava/util/Vector;"}, |
{"pegasus 2.4","enumerateInstanceNames","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;)[Lorg/pegasus/jmpi/CIMObjectPath;"}, |
|
{"pegasus 2.5","enumerateInstanceNames","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;)Ljava/util/Vector;"}, |
|
{"snia 2.0","getInstance","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;Z)Lorg/pegasus/jmpi/CIMInstance;"}, |
|
{"pegasus 2.4","getInstance","(Lorg/pegasus/jmpi/CIMObjectPath;ZZZ[Ljava/lang/String;Lorg/pegasus/jmpi/CIMClass;)Lorg/pegasus/jmpi/CIMInstance;"}, |
|
/* Begin Fix for 4238 */ |
|
{"pegasus 2.5","getInstance","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;ZZZ[Ljava/lang/String;)Lorg/pegasus/jmpi/CIMInstance;"}, |
|
/* End Fix for 4238 */ |
|
{"snia 2.0","createInstance","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMInstance;)Lorg/pegasus/jmpi/CIMObjectPath;"}, |
|
{"snia 2.0","setInstance","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMInstance;)V"}, |
|
{"pegasus 2.4","setInstance","(Lorg/pegasus/jmpi/CIMObjectPath;Z[Ljava/lang/String)V"}, |
|
{"snia 2.0","deleteInstance","(Lorg/pegasus/jmpi/CIMObjectPath;)V"}, |
|
{"snia 2.0","execQuery","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ILorg/pegasus/jmpi/CIMClass;)Ljava/util/Vector;"}, |
|
{"pegasus 2.4","execQuery","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Lorg/pegasus/jmpi/CIMClass;)[Lorg/pegasus/jmpi/CIMInstance;"}, |
|
{"pegasus 2.5","execQuery","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Vector;"}, |
// MethodProvider | // MethodProvider |
// cimom-2003-11-24/org/snia/wbem/provider/MethodProvider.java | // cimom-2003-11-24/org/snia/wbem/provider/MethodProvider.java |
// src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/CIMMethodProvider.java | // src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/CIMMethodProvider.java |
{"invokeMethod","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/util/Vector;Ljava/util/Vector;)Lorg/pegasus/jmpi/CIMValue;"}, |
{"snia 2.0","invokeMethod","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/util/Vector;Ljava/util/Vector;)Lorg/pegasus/jmpi/CIMValue;"}, |
|
{"pegasus 2.4","invokeMethod","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;[Lorg/pegasus/jmpi/CIMArgument;[Lorg/pegasus/jmpi/CIMArgument;)Lorg/pegasus/jmpi/CIMValue;"}, |
// PropertyProvider | // PropertyProvider |
// cimom-2003-11-24/org/snia/wbem/provider/PropertyProvider.java | // cimom-2003-11-24/org/snia/wbem/provider/PropertyProvider.java |
|
// src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/PropertyProvider.java |
|
{"snia 2.0","getPropertyValue","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;)Lorg/pegasus/jmpi/CIMValue;"}, |
|
{"snia 2.0","setPropertyValue","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Lorg/pegasus/jmpi/CIMValue;)V"}, |
// AssociatorProvider | // AssociatorProvider |
// cimom-2003-11-24/org/snia/wbem/provider20/AssociatorProvider.java | // cimom-2003-11-24/org/snia/wbem/provider20/AssociatorProvider.java |
// src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/CIMAssociationProvider.java |
// src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/AssociatorProvider.java |
|
{"snia 2.0","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;"}, |
|
{"pegasus 2.4","associators","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;"}, |
|
{"snia 2.0","associatorNames","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Vector;"}, |
|
{"pegasus 2.4","associatorNames","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Vector;"}, |
|
{"snia 2.0","references","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;"}, |
|
{"pegasus 2.4","references","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;"}, |
|
{"snia 2.0","referenceNames","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;)Ljava/util/Vector;"}, |
|
{"pegasus 2.4","referenceNames","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;)Ljava/util/Vector;"}, |
// CIMProviderRouter | // CIMProviderRouter |
// cimom-2003-11-24/org/snia/wbem/provider20/CIMProviderRouter.java | // cimom-2003-11-24/org/snia/wbem/provider20/CIMProviderRouter.java |
// EventProvider | // EventProvider |
// cimom-2003-11-24/org/snia/wbem/provider20/EventProvider.java | // cimom-2003-11-24/org/snia/wbem/provider20/EventProvider.java |
// src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/EventProvider.java | // src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/EventProvider.java |
{"authorizeFilter","(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;)V"}, |
{"snia 2.0","activateFilter","(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;Lorg/pegasus/jmpi/CIMObjectPath;Z)V"}, |
{"mustPoll","(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;Lorg/pegasus/jmpi/CIMObjectPath;)Z"}, |
{"snia 2.0","deActivateFilter","(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;Lorg/pegasus/jmpi/CIMObjectPath;Z)V"}, |
{"activateFilter","(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;Lorg/pegasus/jmpi/CIMObjectPath;Z)V"}, |
|
{"deActivateFilter","(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;Lorg/pegasus/jmpi/CIMObjectPath;Z)V"}, |
|
// IndicationHandler | // IndicationHandler |
// cimom-2003-11-24/org/snia/wbem/provider20/IndicationHandler.java | // cimom-2003-11-24/org/snia/wbem/provider20/IndicationHandler.java |
// ProviderAdapter | // ProviderAdapter |
// cimom-2003-11-24/org/snia/wbem/provider20/ProviderAdapter.java | // cimom-2003-11-24/org/snia/wbem/provider20/ProviderAdapter.java |
// JMPI_TestPropertyTypes | // JMPI_TestPropertyTypes |
{"findObjectPath","(Lorg/pegasus/jmpi/CIMObjectPath;)I"}, |
{"JMPI_TestPropertyTypes","findObjectPath","(Lorg/pegasus/jmpi/CIMObjectPath;)I"}, |
{"testPropertyTypesValue","(Lorg/pegasus/jmpi/CIMInstance;)V"} |
{"JMPI_TestPropertyTypes","testPropertyTypesValue","(Lorg/pegasus/jmpi/CIMInstance;)V"} |
}; | }; |
| |
if (!env) | if (!env) |
|
|
| |
for (int i = 0; i < (int)(sizeof (methodNames)/sizeof (methodNames[0])); i++) | for (int i = 0; i < (int)(sizeof (methodNames)/sizeof (methodNames[0])); i++) |
{ | { |
jmethodID id = env->GetMethodID(jc,methodNames[i][0], methodNames[i][1]); |
jmethodID id = env->GetMethodID(jc,methodNames[i][1], methodNames[i][2]); |
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::debugPrintMethodPointers: "<<methodNames[i][0]<<", id = "<<PEGASUS_STD(hex)<<(int)id<<PEGASUS_STD(dec)<<PEGASUS_STD(endl)); |
DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::debugPrintMethodPointers: "<<methodNames[i][0]<<", "<<methodNames[i][1]<<", id = "<<PEGASUS_STD(hex)<<(int)id<<PEGASUS_STD(dec)<<PEGASUS_STD(endl)); |
env->ExceptionClear(); | env->ExceptionClear(); |
} | } |
| |
|
|
typedef enum { | typedef enum { |
METHOD_UNKNOWN = 0, | METHOD_UNKNOWN = 0, |
METHOD_PEGASUS_24, | METHOD_PEGASUS_24, |
|
METHOD_PEGASUS_25, |
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); |
| |
|
if (!env) |
|
{ |
|
PEG_METHOD_EXIT(); |
|
|
|
STAT_COPYDISPATCHER |
|
|
|
throw PEGASUS_CIM_EXCEPTION_L (CIM_ERR_FAILED, |
|
MessageLoaderParms("ProviderManager.JMPI.INIT_JVM_FAILED", |
|
"Could not initialize the JVM (Java Virtual Machine) runtime environment.")); |
|
} |
|
|
|
////////DDD(debugPrintMethodPointers (env, (jclass)pr.jProviderClass)); |
|
|
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; |
| |
|
/* Fix for 4238 */ |
|
// public abstract org.pegasus.jmpi.CIMInstance getInstance (org.pegasus.jmpi.CIMObjectPath cop, |
|
// org.pegasus.jmpi.CIMClass cimClass, |
|
// boolean localOnly |
|
// boolean includeQualifiers, |
|
// boolean includeClassOrigin, |
|
// String propertyList[]) |
|
// throws org.pegasus.jmpi.CIMException |
|
id = env->GetMethodID((jclass)pr.jProviderClass, |
|
"getInstance", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;ZZZ[Ljava/lang/String;)Lorg/pegasus/jmpi/CIMInstance;"); |
|
|
|
if (id != NULL) |
|
{ |
|
eMethodFound = METHOD_PEGASUS_25; |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetInstanceRequest: found METHOD_PEGASUS_25."<<PEGASUS_STD(endl)); |
|
} |
|
/* Fix for 4238 */ |
|
|
|
if (id == NULL) |
|
{ |
|
env->ExceptionClear(); |
|
|
// public abstract org.pegasus.jmpi.CIMInstance getInstance (org.pegasus.jmpi.CIMObjectPath cop, | // public abstract org.pegasus.jmpi.CIMInstance getInstance (org.pegasus.jmpi.CIMObjectPath cop, |
// org.pegasus.jmpi.CIMClass cimClass, | // org.pegasus.jmpi.CIMClass cimClass, |
// boolean localOnly) | // boolean localOnly) |
|
|
eMethodFound = METHOD_SNIA_PROVIDER20; | eMethodFound = METHOD_SNIA_PROVIDER20; |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetInstanceRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl)); | DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetInstanceRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl)); |
} | } |
|
} |
| |
if (id == NULL) | if (id == NULL) |
{ | { |
|
|
jobject jciRet = env->CallObjectMethod((jobject)pr.jProvider, | jobject jciRet = env->CallObjectMethod((jobject)pr.jProvider, |
id, | id, |
jop, | jop, |
request->localOnly, |
JMPI_LOCALONLY, |
request->includeQualifiers, |
JMPI_INCLUDE_QUALIFIERS, |
request->includeClassOrigin, | request->includeClassOrigin, |
jPropertyList, | jPropertyList, |
jcimClass); | jcimClass); |
|
|
break; | break; |
} | } |
| |
|
/* Fix for 4238 */ |
|
case METHOD_PEGASUS_25: |
|
{ |
|
jint jopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath); |
|
jobject jop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jopRef); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
CIMClass cls = pr._cimom_handle->getClass(context, |
|
request->nameSpace, |
|
request->instanceName.getClassName(), |
|
false, |
|
true, |
|
true, |
|
CIMPropertyList()); |
|
CIMClass *pcls = new CIMClass (cls); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jint jcimClassRef = DEBUG_ConvertCToJava (CIMClass*, jint, pcls); |
|
jobject jcimClass = env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jcimClassRef); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jobjectArray jPropertyList = getList(jv,env,request->propertyList); |
|
jobject jciRet = env->CallObjectMethod((jobject)pr.jProvider, |
|
id, |
|
jop, |
|
jcimClass, |
|
JMPI_LOCALONLY, |
|
JMPI_INCLUDE_QUALIFIERS, |
|
request->includeClassOrigin, |
|
jPropertyList); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
STAT_PMS_PROVIDEREND; |
|
|
|
handler.processing(); |
|
|
|
if (jciRet) { |
|
jint jciRetRef = env->CallIntMethod(jciRet,JMPIjvm::jv.CIMInstanceCInst); |
|
CIMInstance *ciRet = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciRetRef); |
|
|
|
handler.deliver(*ciRet); |
|
} |
|
handler.complete(); |
|
break; |
|
} |
|
/* Fix for 4238 */ |
|
|
case METHOD_SNIA_PROVIDER20: | case METHOD_SNIA_PROVIDER20: |
{ | { |
jint jopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath); | jint jopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath); |
|
|
| |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
|
// Modified for Bugzilla# 3679 |
jobject jciRet = env->CallObjectMethod((jobject)pr.jProvider, | jobject jciRet = env->CallObjectMethod((jobject)pr.jProvider, |
id, | id, |
jop, | jop, |
jcimClass, | jcimClass, |
true); |
JMPI_LOCALONLY); |
| |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
|
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
| |
|
STAT_COPYDISPATCHER |
|
|
return(response); | return(response); |
} | } |
| |
|
|
typedef enum { | typedef enum { |
METHOD_UNKNOWN = 0, | METHOD_UNKNOWN = 0, |
METHOD_PEGASUS_24, | METHOD_PEGASUS_24, |
|
METHOD_PEGASUS_25, |
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); |
| |
|
if (!env) |
|
{ |
|
PEG_METHOD_EXIT(); |
|
|
|
STAT_COPYDISPATCHER |
|
|
|
throw PEGASUS_CIM_EXCEPTION_L (CIM_ERR_FAILED, |
|
MessageLoaderParms("ProviderManager.JMPI.INIT_JVM_FAILED", |
|
"Could not initialize the JVM (Java Virtual Machine) runtime environment.")); |
|
} |
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); | JMPIProvider::pm_service_op_lock op_lock(&pr); |
| |
STAT_GETSTARTTIME; | STAT_GETSTARTTIME; |
| |
jmethodID id = NULL; | jmethodID id = NULL; |
| |
|
/* Fix for 4189 */ |
|
// public java.util.Vector enumerateInstances (org.pegasus.jmpi.CIMObjectPath cop, |
|
// org.pegasus.jmpi.CIMClass cimClass, |
|
// boolean deep, |
|
// boolean localOnly, |
|
// boolean includeQualifiers, |
|
// boolean includeClassOrigin, |
|
// java.lang.String[] propertyList) |
|
// throws org.pegasus.jmpi.CIMException |
|
id = env->GetMethodID((jclass)pr.jProviderClass, |
|
"enumerateInstances", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;ZZZZ[Ljava/lang/String;)Ljava/util/Vector;"); |
|
|
|
if (id != NULL) |
|
{ |
|
eMethodFound = METHOD_PEGASUS_25; |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: found METHOD_PEGASUS_25."<<PEGASUS_STD(endl)); |
|
} |
|
/* Fix for 4189 */ |
|
|
|
if (id == NULL) |
|
{ |
|
env->ExceptionClear(); |
|
|
// public abstract java.util.Vector enumInstances (org.pegasus.jmpi.CIMObjectPath cop, | // public abstract java.util.Vector enumInstances (org.pegasus.jmpi.CIMObjectPath cop, |
// boolean deep, | // boolean deep, |
// org.pegasus.jmpi.CIMClass cimClass, | // org.pegasus.jmpi.CIMClass cimClass, |
|
|
eMethodFound = METHOD_SNIA_PROVIDER20; | eMethodFound = METHOD_SNIA_PROVIDER20; |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl)); | DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl)); |
} | } |
|
} |
| |
if (id == NULL) | if (id == NULL) |
{ | { |
env->ExceptionClear(); | env->ExceptionClear(); |
| |
// public org.pegasus.jmpi.CIMInstance[] enumerateInstances (org.pegasus.jmpi.CIMObjectPath op, |
// public org.pegasus.jmpi.CIMInstance[] enumInstances (org.pegasus.jmpi.CIMObjectPath cop, |
// boolean localOnly, | // boolean localOnly, |
// boolean includeQualifiers, | // boolean includeQualifiers, |
// boolean includeClassOrigin, | // boolean includeClassOrigin, |
// java.lang.String[] propertyList, | // java.lang.String[] propertyList, |
// org.pegasus.jmpi.CIMClass cc) |
// org.pegasus.jmpi.CIMClass cimClass) |
// throws org.pegasus.jmpi.CIMException | // throws org.pegasus.jmpi.CIMException |
id = env->GetMethodID((jclass)pr.jProviderClass, | id = env->GetMethodID((jclass)pr.jProviderClass, |
"enumerateInstances", |
"enumInstances", |
"(Lorg/pegasus/jmpi/CIMObjectPath;ZZZ[Ljava/lang/String;Lorg/pegasus/jmpi/CIMClass;)[Lorg/pegasus/jmpi/CIMInstance;"); | "(Lorg/pegasus/jmpi/CIMObjectPath;ZZZ[Ljava/lang/String;Lorg/pegasus/jmpi/CIMClass;)[Lorg/pegasus/jmpi/CIMInstance;"); |
| |
if (id != NULL) | if (id != NULL) |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
jobjectArray jPropertyList = getList(jv,env,request->propertyList); | jobjectArray jPropertyList = getList(jv,env,request->propertyList); |
|
|
jobjectArray jAr = (jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, | jobjectArray jAr = (jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, |
id, | id, |
jcop, | jcop, |
request->localOnly, |
JMPI_LOCALONLY, |
request->includeQualifiers, |
JMPI_INCLUDE_QUALIFIERS, |
request->includeClassOrigin, | request->includeClassOrigin, |
jPropertyList, | jPropertyList, |
jcc); | jcc); |
|
|
jint jciRetRef = env->CallIntMethod(jciRet,JMPIjvm::jv.CIMInstanceCInst); | jint jciRetRef = env->CallIntMethod(jciRet,JMPIjvm::jv.CIMInstanceCInst); |
CIMInstance *ciRet = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciRetRef); | CIMInstance *ciRet = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciRetRef); |
| |
|
/* Fix for 4237 */ |
|
CIMClass cls = pr._cimom_handle->getClass(context, |
|
request->nameSpace, |
|
ciRet->getClassName(), |
|
false, |
|
true, |
|
true, |
|
CIMPropertyList()); |
|
const CIMObjectPath& op = ciRet->getPath(); |
|
CIMObjectPath iop = ciRet->buildPath(cls); |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
handler.deliver(*ciRet); | handler.deliver(*ciRet); |
|
|
break; | break; |
} | } |
| |
case METHOD_SNIA_PROVIDER20: |
/* Fix for 4189 */ |
|
case METHOD_PEGASUS_25: |
{ | { |
jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath); | jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath); |
jobject jcop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef); | jobject jcop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef); |
|
|
| |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
|
jobjectArray jPropertyList = getList(jv,env,request->propertyList); |
jobject jVec = env->CallObjectMethod((jobject)pr.jProvider, | jobject jVec = env->CallObjectMethod((jobject)pr.jProvider, |
id, | id, |
jcop, | jcop, |
|
jcc, |
|
request->deepInheritance, |
|
JMPI_LOCALONLY, |
|
JMPI_INCLUDE_QUALIFIERS, |
|
request->includeClassOrigin, |
|
jPropertyList); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
STAT_PMS_PROVIDEREND; |
|
|
|
handler.processing(); |
|
if (jVec) { |
|
for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<m; i++) { |
|
JMPIjvm::checkException(env); |
|
|
|
jobject jciRet = env->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,i); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jint jciRetRef = env->CallIntMethod(jciRet,JMPIjvm::jv.CIMInstanceCInst); |
|
CIMInstance *ciRet = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciRetRef); |
|
|
|
/* Fix for 4237 */ |
|
CIMClass cls = pr._cimom_handle->getClass(context, |
|
request->nameSpace, |
|
ciRet->getClassName(), |
|
false, |
|
true, |
|
true, |
|
CIMPropertyList()); |
|
const CIMObjectPath& op = ciRet->getPath(); |
|
CIMObjectPath iop = ciRet->buildPath(cls); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
iop.setNameSpace(op.getNameSpace()); |
|
|
|
ciRet->setPath(iop); |
|
/* Fix for 4237*/ |
|
|
|
handler.deliver(*ciRet); |
|
} |
|
} |
|
handler.complete(); |
|
break; |
|
} |
|
/* Fix for 4189 */ |
|
|
|
case METHOD_SNIA_PROVIDER20: |
|
{ |
|
jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath); |
|
jobject jcop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
CIMClass cls = pr._cimom_handle->getClass(context, |
|
request->nameSpace, |
|
request->className, |
false, | false, |
|
true, |
|
true, |
|
CIMPropertyList()); |
|
CIMClass *pcls = new CIMClass (cls); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jint jccRef = DEBUG_ConvertCToJava (CIMClass*, jint, pcls); |
|
jobject jcc = env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jccRef); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
// Modified for Bugzilla# 3679 |
|
jobject jVec = env->CallObjectMethod((jobject)pr.jProvider, |
|
id, |
|
jcop, |
|
request->deepInheritance, |
jcc, | jcc, |
true); |
JMPI_LOCALONLY); |
| |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
|
|
jint jciRetRef = env->CallIntMethod(jciRet,JMPIjvm::jv.CIMInstanceCInst); | jint jciRetRef = env->CallIntMethod(jciRet,JMPIjvm::jv.CIMInstanceCInst); |
CIMInstance *ciRet = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciRetRef); | CIMInstance *ciRet = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciRetRef); |
| |
|
/* Fix for 4237 */ |
|
CIMClass cls = pr._cimom_handle->getClass(context, |
|
request->nameSpace, |
|
ciRet->getClassName(), |
|
false, |
|
true, |
|
true, |
|
CIMPropertyList()); |
|
const CIMObjectPath& op = ciRet->getPath(); |
|
CIMObjectPath iop = ciRet->buildPath(cls); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
iop.setNameSpace(op.getNameSpace()); |
|
|
|
ciRet->setPath(iop); |
|
/* Fix for 4237*/ |
|
|
handler.deliver(*ciRet); | handler.deliver(*ciRet); |
} | } |
} | } |
|
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
| |
|
STAT_COPYDISPATCHER |
|
|
return(response); | return(response); |
} | } |
| |
|
|
typedef enum { | typedef enum { |
METHOD_UNKNOWN = 0, | METHOD_UNKNOWN = 0, |
METHOD_PEGASUS_24, | METHOD_PEGASUS_24, |
|
METHOD_PEGASUS_25, |
METHOD_SNIA_PROVIDER20, | METHOD_SNIA_PROVIDER20, |
} METHOD_VERSION; | } METHOD_VERSION; |
METHOD_VERSION eMethodFound = METHOD_UNKNOWN; | METHOD_VERSION eMethodFound = METHOD_UNKNOWN; |
|
|
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.enumerateInstanceNames: " + pr.getName()); | PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "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 = 0; | JvmVector *jv = 0; |
| |
env = JMPIjvm::attachThread(&jv); | env = JMPIjvm::attachThread(&jv); |
| |
|
if (!env) |
|
{ |
|
PEG_METHOD_EXIT(); |
|
|
|
STAT_COPYDISPATCHER |
|
|
|
throw PEGASUS_CIM_EXCEPTION_L (CIM_ERR_FAILED, |
|
MessageLoaderParms("ProviderManager.JMPI.INIT_JVM_FAILED", |
|
"Could not initialize the JVM (Java Virtual Machine) runtime environment.")); |
|
} |
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); | JMPIProvider::pm_service_op_lock op_lock(&pr); |
| |
STAT_GETSTARTTIME; | STAT_GETSTARTTIME; |
|
|
{ | { |
env->ExceptionClear(); | env->ExceptionClear(); |
| |
// public org.pegasus.jmpi.CIMObjectPath[] enumerateInstanceNames (org.pegasus.jmpi.CIMObjectPath op, |
// public org.pegasus.jmpi.CIMObjectPath[] enumerateInstanceNames (org.pegasus.jmpi.CIMObjectPath cop, |
// org.pegasus.jmpi.CIMClass cc) |
// org.pegasus.jmpi.CIMClass cimClass) |
// throws org.pegasus.jmpi.CIMException | // throws org.pegasus.jmpi.CIMException |
id = env->GetMethodID((jclass)pr.jProviderClass, | id = env->GetMethodID((jclass)pr.jProviderClass, |
"enumerateInstanceNames", | "enumerateInstanceNames", |
|
|
} | } |
} | } |
| |
|
if (id == NULL) |
|
{ |
|
env->ExceptionClear(); |
|
|
|
// public java.util.Vector enumerateInstanceNames (org.pegasus.jmpi.CIMObjectPath cop, |
|
// org.pegasus.jmpi.CIMClass cimClass) |
|
// throws org.pegasus.jmpi.CIMException |
|
id = env->GetMethodID((jclass)pr.jProviderClass, |
|
"enumerateInstanceNames", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;)Ljava/util/Vector;"); |
|
|
|
if (id != NULL) |
|
{ |
|
eMethodFound = METHOD_PEGASUS_25; |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstanceNamesRequest: found METHOD_PEGASUS_25."<<PEGASUS_STD(endl)); |
|
} |
|
} |
|
|
|
if (id == NULL) |
|
{ |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstanceNamesRequest: No method found!"<<PEGASUS_STD(endl)); |
|
} |
|
|
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
switch (eMethodFound) | switch (eMethodFound) |
|
|
break; | break; |
} | } |
| |
|
case METHOD_PEGASUS_25: |
|
{ |
|
jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath); |
|
jobject jcop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
CIMClass cls = pr._cimom_handle->getClass(context, |
|
request->nameSpace, |
|
request->className, |
|
false, |
|
true, |
|
true, |
|
CIMPropertyList()); |
|
CIMClass *pcls = new CIMClass (cls); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jint jcimClassRef = DEBUG_ConvertCToJava (CIMClass*, jint, pcls); |
|
jobject jcimClass = env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jcimClassRef); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jobject jVec = env->CallObjectMethod((jobject)pr.jProvider, |
|
id, |
|
jcop, |
|
jcimClass); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
STAT_PMS_PROVIDEREND; |
|
|
|
handler.processing(); |
|
if (jVec) { |
|
for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<m; i++) { |
|
JMPIjvm::checkException(env); |
|
|
|
jobject jcopRet = env->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,i); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jint jcopRetRef = env->CallIntMethod(jcopRet,JMPIjvm::jv.CIMObjectPathCInst); |
|
CIMObjectPath *copRet = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jcopRetRef); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
handler.deliver(*copRet); |
|
} |
|
} |
|
handler.complete(); |
|
break; |
|
} |
|
|
case METHOD_SNIA_PROVIDER20: | case METHOD_SNIA_PROVIDER20: |
{ | { |
jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath); | jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath); |
|
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
| |
|
STAT_COPYDISPATCHER |
|
|
return(response); | return(response); |
} | } |
| |
|
|
| |
env = JMPIjvm::attachThread(&jv); | env = JMPIjvm::attachThread(&jv); |
| |
|
if (!env) |
|
{ |
|
PEG_METHOD_EXIT(); |
|
|
|
STAT_COPYDISPATCHER |
|
|
|
throw PEGASUS_CIM_EXCEPTION_L (CIM_ERR_FAILED, |
|
MessageLoaderParms("ProviderManager.JMPI.INIT_JVM_FAILED", |
|
"Could not initialize the JVM (Java Virtual Machine) runtime environment.")); |
|
} |
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); | JMPIProvider::pm_service_op_lock op_lock(&pr); |
| |
STAT_GETSTARTTIME; | STAT_GETSTARTTIME; |
|
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
| |
|
STAT_COPYDISPATCHER |
|
|
return(response); | return(response); |
} | } |
| |
|
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,"Calling provider.modifyInstance: " + pr.getName()); | PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,"Calling provider.modifyInstance: " + pr.getName()); |
| |
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(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; | JvmVector *jv = 0; |
| |
env = JMPIjvm::attachThread(&jv); | env = JMPIjvm::attachThread(&jv); |
| |
|
if (!env) |
|
{ |
|
PEG_METHOD_EXIT(); |
|
|
|
STAT_COPYDISPATCHER |
|
|
|
throw PEGASUS_CIM_EXCEPTION_L (CIM_ERR_FAILED, |
|
MessageLoaderParms("ProviderManager.JMPI.INIT_JVM_FAILED", |
|
"Could not initialize the JVM (Java Virtual Machine) runtime environment.")); |
|
} |
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); | JMPIProvider::pm_service_op_lock op_lock(&pr); |
| |
STAT_GETSTARTTIME; | STAT_GETSTARTTIME; |
|
|
id, | id, |
jcop, | jcop, |
jci, | jci, |
|
JMPI_INCLUDE_QUALIFIERS, |
jPropertyList); | jPropertyList); |
| |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
|
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
| |
|
STAT_COPYDISPATCHER |
|
|
return(response); | return(response); |
} | } |
| |
|
|
| |
env = JMPIjvm::attachThread(&jv); | env = JMPIjvm::attachThread(&jv); |
| |
|
if (!env) |
|
{ |
|
PEG_METHOD_EXIT(); |
|
|
|
STAT_COPYDISPATCHER |
|
|
|
throw PEGASUS_CIM_EXCEPTION_L (CIM_ERR_FAILED, |
|
MessageLoaderParms("ProviderManager.JMPI.INIT_JVM_FAILED", |
|
"Could not initialize the JVM (Java Virtual Machine) runtime environment.")); |
|
} |
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); | JMPIProvider::pm_service_op_lock op_lock(&pr); |
| |
STAT_GETSTARTTIME; | STAT_GETSTARTTIME; |
|
|
| |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
env->CallVoidMethod((jobject)pr.jProvider,id,jcop); |
env->CallVoidMethod((jobject)pr.jProvider, |
|
id, |
|
jcop); |
| |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
| |
|
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
| |
|
STAT_COPYDISPATCHER |
|
|
return(response); | return(response); |
} | } |
| |
|
|
typedef enum { | typedef enum { |
METHOD_UNKNOWN = 0, | METHOD_UNKNOWN = 0, |
METHOD_PEGASUS_24, | METHOD_PEGASUS_24, |
|
METHOD_PEGASUS_25, |
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); |
| |
|
if (!env) |
|
{ |
|
PEG_METHOD_EXIT(); |
|
|
|
STAT_COPYDISPATCHER |
|
|
|
throw PEGASUS_CIM_EXCEPTION_L (CIM_ERR_FAILED, |
|
MessageLoaderParms("ProviderManager.JMPI.INIT_JVM_FAILED", |
|
"Could not initialize the JVM (Java Virtual Machine) runtime environment.")); |
|
} |
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); | JMPIProvider::pm_service_op_lock op_lock(&pr); |
| |
STAT_GETSTARTTIME; | STAT_GETSTARTTIME; |
|
|
{ | { |
env->ExceptionClear(); | env->ExceptionClear(); |
| |
// public abstract org.pegasus.jmpi.CIMInstance[] execQuery(org.pegasus.jmpi.CIMObjectPath op, |
// public abstract org.pegasus.jmpi.CIMInstance[] execQuery(org.pegasus.jmpi.CIMObjectPath cop, |
// java.lang.String query, | // java.lang.String query, |
// java.lang.String ql, | // java.lang.String ql, |
// org.pegasus.jmpi.CIMClass cc) |
// org.pegasus.jmpi.CIMClass cimClass) |
// throws org.pegasus.jmpi.CIMException | // throws org.pegasus.jmpi.CIMException |
id = env->GetMethodID((jclass)pr.jProviderClass, | id = env->GetMethodID((jclass)pr.jProviderClass, |
"execQuery", | "execQuery", |
|
|
| |
if (id == NULL) | if (id == NULL) |
{ | { |
|
env->ExceptionClear(); |
|
|
|
// public abstract java.util.Vector execQuery(org.pegasus.jmpi.CIMObjectPath cop, |
|
// org.pegasus.jmpi.CIMClass cimClass, |
|
// java.lang.String query, |
|
// java.lang.String ql) |
|
// throws org.pegasus.jmpi.CIMException |
|
id = env->GetMethodID((jclass)pr.jProviderClass, |
|
"execQuery", |
|
"(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Vector;"); |
|
|
|
if (id != NULL) |
|
{ |
|
eMethodFound = METHOD_PEGASUS_25; |
|
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleExecQueryRequest: found METHOD_PEGASUS_25."<<PEGASUS_STD(endl)); |
|
} |
|
} |
|
|
|
if (id == NULL) |
|
{ |
DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleExecQueryRequest: found no method!"<<PEGASUS_STD(endl)); | DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleExecQueryRequest: found no method!"<<PEGASUS_STD(endl)); |
} | } |
| |
|
|
break; | break; |
} | } |
| |
|
case METHOD_PEGASUS_25: |
|
{ |
|
jint jcopref = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath); |
|
jobject jcop = env->NewObject(jv->CIMObjectPathClassRef, jv->CIMObjectPathNewI, jcopref); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jstring jqueryLanguage = env->NewStringUTF(request->queryLanguage.getCString()); |
|
jstring jquery = env->NewStringUTF(request->query.getCString()); |
|
|
|
CIMClass cls = pr._cimom_handle->getClass(context, |
|
request->nameSpace, |
|
request->className, |
|
false, |
|
true, |
|
true, |
|
CIMPropertyList()); |
|
CIMClass *pcls = new CIMClass (cls); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jint jcls = DEBUG_ConvertCToJava (CIMClass*, jint, pcls); |
|
|
|
jobject jCc=env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jcls); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jobjectArray jVec = (jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, |
|
id, |
|
jcop, |
|
jCc, |
|
jquery, |
|
jqueryLanguage); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
STAT_PMS_PROVIDEREND; |
|
|
|
handler.processing(); |
|
if (jVec) { |
|
for (int i=0,m=env->GetArrayLength(jVec); i<m; i++) { |
|
JMPIjvm::checkException(env); |
|
|
|
jobject jciRet = env->GetObjectArrayElement(jVec,i); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
jint jciRetRef = env->CallIntMethod(jciRet,JMPIjvm::jv.CIMInstanceCInst); |
|
CIMInstance *ciRet = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciRetRef); |
|
|
|
JMPIjvm::checkException(env); |
|
|
|
handler.deliver(*ciRet); |
|
} |
|
} |
|
handler.complete(); |
|
break; |
|
} |
|
|
case METHOD_SNIA_PROVIDER20: | case METHOD_SNIA_PROVIDER20: |
{ | { |
jint jcopref = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath); | jint jcopref = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath); |
|
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
| |
|
STAT_COPYDISPATCHER |
|
|
return(response); | return(response); |
} | } |
| |
|
|
| |
env = JMPIjvm::attachThread(&jv); | env = JMPIjvm::attachThread(&jv); |
| |
|
if (!env) |
|
{ |
|
PEG_METHOD_EXIT(); |
|
|
|
STAT_COPYDISPATCHER |
|
|
|
throw PEGASUS_CIM_EXCEPTION_L (CIM_ERR_FAILED, |
|
MessageLoaderParms("ProviderManager.JMPI.INIT_JVM_FAILED", |
|
"Could not initialize the JVM (Java Virtual Machine) runtime environment.")); |
|
} |
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); | JMPIProvider::pm_service_op_lock op_lock(&pr); |
| |
STAT_GETSTARTTIME; | STAT_GETSTARTTIME; |
|
|
jResultClass, | jResultClass, |
jRole, | jRole, |
jResultRole, | jResultRole, |
false, |
JMPI_INCLUDE_QUALIFIERS, |
false, |
request->includeClassOrigin, |
jPropertyList); | jPropertyList); |
| |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
|
|
jResultClass, | jResultClass, |
jRole, | jRole, |
jResultRole, | jResultRole, |
false, |
JMPI_INCLUDE_QUALIFIERS, |
false, |
request->includeClassOrigin, |
jPropertyList); | jPropertyList); |
| |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
|
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
| |
|
STAT_COPYDISPATCHER |
|
|
return(response); | return(response); |
} | } |
| |
|
|
| |
env = JMPIjvm::attachThread(&jv); | env = JMPIjvm::attachThread(&jv); |
| |
|
if (!env) |
|
{ |
|
PEG_METHOD_EXIT(); |
|
|
|
STAT_COPYDISPATCHER |
|
|
|
throw PEGASUS_CIM_EXCEPTION_L (CIM_ERR_FAILED, |
|
MessageLoaderParms("ProviderManager.JMPI.INIT_JVM_FAILED", |
|
"Could not initialize the JVM (Java Virtual Machine) runtime environment.")); |
|
} |
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); | JMPIProvider::pm_service_op_lock op_lock(&pr); |
| |
STAT_GETSTARTTIME; | STAT_GETSTARTTIME; |
|
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
| |
|
STAT_COPYDISPATCHER |
|
|
return(response); | return(response); |
} | } |
| |
|
|
| |
env = JMPIjvm::attachThread(&jv); | env = JMPIjvm::attachThread(&jv); |
| |
|
if (!env) |
|
{ |
|
PEG_METHOD_EXIT(); |
|
|
|
STAT_COPYDISPATCHER |
|
|
|
throw PEGASUS_CIM_EXCEPTION_L (CIM_ERR_FAILED, |
|
MessageLoaderParms("ProviderManager.JMPI.INIT_JVM_FAILED", |
|
"Could not initialize the JVM (Java Virtual Machine) runtime environment.")); |
|
} |
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); | JMPIProvider::pm_service_op_lock op_lock(&pr); |
| |
STAT_GETSTARTTIME; | STAT_GETSTARTTIME; |
|
|
id, | id, |
jAssociationName, | jAssociationName, |
jRole, | jRole, |
false, |
JMPI_INCLUDE_QUALIFIERS, |
false, |
request->includeClassOrigin, |
jPropertyList); | jPropertyList); |
| |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
|
|
jAssociationName, | jAssociationName, |
jPathName, | jPathName, |
jRole, | jRole, |
false, |
JMPI_INCLUDE_QUALIFIERS, |
false, |
request->includeClassOrigin, |
jPropertyList); | jPropertyList); |
| |
JMPIjvm::checkException(env); | JMPIjvm::checkException(env); |
|
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
| |
|
STAT_COPYDISPATCHER |
|
|
return(response); | return(response); |
} | } |
| |
|
|
| |
env = JMPIjvm::attachThread(&jv); | env = JMPIjvm::attachThread(&jv); |
| |
|
if (!env) |
|
{ |
|
PEG_METHOD_EXIT(); |
|
|
|
STAT_COPYDISPATCHER |
|
|
|
throw PEGASUS_CIM_EXCEPTION_L (CIM_ERR_FAILED, |
|
MessageLoaderParms("ProviderManager.JMPI.INIT_JVM_FAILED", |
|
"Could not initialize the JVM (Java Virtual Machine) runtime environment.")); |
|
} |
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); | JMPIProvider::pm_service_op_lock op_lock(&pr); |
| |
STAT_GETSTARTTIME; | STAT_GETSTARTTIME; |
|
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
| |
|
STAT_COPYDISPATCHER |
|
|
return(response); | return(response); |
} | } |
| |
|
|
| |
env = JMPIjvm::attachThread(&jv); | env = JMPIjvm::attachThread(&jv); |
| |
|
if (!env) |
|
{ |
|
PEG_METHOD_EXIT(); |
|
|
|
STAT_COPYDISPATCHER |
|
|
|
throw PEGASUS_CIM_EXCEPTION_L (CIM_ERR_FAILED, |
|
MessageLoaderParms("ProviderManager.JMPI.INIT_JVM_FAILED", |
|
"Could not initialize the JVM (Java Virtual Machine) runtime environment.")); |
|
} |
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); | JMPIProvider::pm_service_op_lock op_lock(&pr); |
| |
STAT_GETSTARTTIME; | STAT_GETSTARTTIME; |
|
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
| |
|
STAT_COPYDISPATCHER |
|
|
return(response); | return(response); |
} | } |
| |
|
|
| |
env = JMPIjvm::attachThread(&jv); | env = JMPIjvm::attachThread(&jv); |
| |
|
if (!env) |
|
{ |
|
PEG_METHOD_EXIT(); |
|
|
|
STAT_COPYDISPATCHER |
|
|
|
throw PEGASUS_CIM_EXCEPTION_L (CIM_ERR_FAILED, |
|
MessageLoaderParms("ProviderManager.JMPI.INIT_JVM_FAILED", |
|
"Could not initialize the JVM (Java Virtual Machine) runtime environment.")); |
|
} |
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); | JMPIProvider::pm_service_op_lock op_lock(&pr); |
| |
STAT_GETSTARTTIME; | STAT_GETSTARTTIME; |
|
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
| |
|
STAT_COPYDISPATCHER |
|
|
return(response); | return(response); |
} | } |
| |
|
|
| |
env = JMPIjvm::attachThread(&jv); | env = JMPIjvm::attachThread(&jv); |
| |
|
if (!env) |
|
{ |
|
PEG_METHOD_EXIT(); |
|
|
|
STAT_COPYDISPATCHER |
|
|
|
throw PEGASUS_CIM_EXCEPTION_L (CIM_ERR_FAILED, |
|
MessageLoaderParms("ProviderManager.JMPI.INIT_JVM_FAILED", |
|
"Could not initialize the JVM (Java Virtual Machine) runtime environment.")); |
|
} |
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); | JMPIProvider::pm_service_op_lock op_lock(&pr); |
| |
STAT_GETSTARTTIME; | STAT_GETSTARTTIME; |
|
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
| |
|
STAT_COPYDISPATCHER |
|
|
return(response); | return(response); |
} | } |
| |
|
|
| |
env = JMPIjvm::attachThread(&jv); | env = JMPIjvm::attachThread(&jv); |
| |
|
if (!env) |
|
{ |
|
PEG_METHOD_EXIT(); |
|
|
|
STAT_COPYDISPATCHER |
|
|
|
throw PEGASUS_CIM_EXCEPTION_L (CIM_ERR_FAILED, |
|
MessageLoaderParms("ProviderManager.JMPI.INIT_JVM_FAILED", |
|
"Could not initialize the JVM (Java Virtual Machine) runtime environment.")); |
|
} |
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); | JMPIProvider::pm_service_op_lock op_lock(&pr); |
| |
STAT_GETSTARTTIME; | STAT_GETSTARTTIME; |
| |
jmethodID id = NULL; | jmethodID id = NULL; |
| |
// public void authorizeFilter (org.pegasus.jmpi.SelectExp filter, |
// public void activateFilter (org.pegasus.jmpi.SelectExp filter, |
// java.lang.String eventType, | // java.lang.String eventType, |
// org.pegasus.jmpi.CIMObjectPath classPath, | // org.pegasus.jmpi.CIMObjectPath classPath, |
// java.lang.String owner) | // java.lang.String owner) |
|
|
| |
env = JMPIjvm::attachThread(&jv); | env = JMPIjvm::attachThread(&jv); |
| |
|
if (!env) |
|
{ |
|
PEG_METHOD_EXIT(); |
|
|
|
STAT_COPYDISPATCHER |
|
|
|
throw PEGASUS_CIM_EXCEPTION_L (CIM_ERR_FAILED, |
|
MessageLoaderParms("ProviderManager.JMPI.INIT_JVM_FAILED", |
|
"Could not initialize the JVM (Java Virtual Machine) runtime environment.")); |
|
} |
|
|
JMPIProvider::pm_service_op_lock op_lock(&pr); | JMPIProvider::pm_service_op_lock op_lock(&pr); |
| |
STAT_GETSTARTTIME; | STAT_GETSTARTTIME; |
|
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
| |
|
STAT_COPYDISPATCHER |
|
|
return(response); | return(response); |
} | } |
| |