//%2006//////////////////////////////////////////////////////////////////////// // // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems. // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.; // IBM Corp.; EMC Corporation, The Open Group. // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.; // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group. // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.; // EMC Corporation; VERITAS Software Corporation; The Open Group. // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.; // EMC Corporation; Symantec Corporation; The Open Group. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to // deal in the Software without restriction, including without limitation the // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or // sell copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //============================================================================== // // Author: Adrian Schuur, schuur@de.ibm.com // // Modified By: Seema Gupta (gseema@in.ibm.com) for PEP135 // Josephine Eskaline Joyce, IBM (jojustin@in.ibm.com) for PEP#101 // //%///////////////////////////////////////////////////////////////////////////// #include "JMPIProviderManager.h" #include "JMPIImpl.h" #include #include #include #include #include #include //l10n #include #include #include #include #include #include #include PEGASUS_USING_STD; PEGASUS_NAMESPACE_BEGIN int JMPIProviderManager::trace=0; #ifdef PEGASUS_DEBUG #define DDD(x) if (JMPIProviderManager::trace) x; #else #define DDD(x) #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" void JMPIProviderManager::debugPrintMethodPointers (JNIEnv *env, jclass jc) { // cd ${PEGAUSE_HOME}/src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/tests/JMPI_TestPropertyTypes // javap -s -p JMPI_TestPropertyTypes static const char *methodNames[][3] = { // CIMProvider // cimom-2003-11-24/org/snia/wbem/provider/CIMProvider.java // src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/CIMProvider.java {"snia 2.0","initialize","(Lorg/pegasus/jmpi/CIMOMHandle;)V"}, {"snia 2.0","cleanup","()V"}, // InstanceProvider // cimom-2003-11-24/org/snia/wbem/provider/InstanceProvider.java // src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/CIMInstanceProvider.java {"snia 2.0","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;"}, /* Begin Fix for 4189 */ {"pegasus 2.5","enumerateInstances","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;ZZ[Ljava/lang/String;)Ljava/util/Vector;"}, /* End Fix for 4189 */ {"snia 2.0","enumInstances","(Lorg/pegasus/jmpi/CIMObjectPath;ZLorg/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;ZZ[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 // cimom-2003-11-24/org/snia/wbem/provider/MethodProvider.java // src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/CIMMethodProvider.java {"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 // 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 // cimom-2003-11-24/org/snia/wbem/provider20/AssociatorProvider.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 // cimom-2003-11-24/org/snia/wbem/provider20/CIMProviderRouter.java // EventProvider // cimom-2003-11-24/org/snia/wbem/provider20/EventProvider.java // src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/EventProvider.java {"snia 2.0","activateFilter","(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;Lorg/pegasus/jmpi/CIMObjectPath;Z)V"}, {"snia 2.0","deActivateFilter","(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;Lorg/pegasus/jmpi/CIMObjectPath;Z)V"}, // IndicationHandler // cimom-2003-11-24/org/snia/wbem/provider20/IndicationHandler.java // ProviderAdapter // cimom-2003-11-24/org/snia/wbem/provider20/ProviderAdapter.java // JMPI_TestPropertyTypes {"JMPI_TestPropertyTypes","findObjectPath","(Lorg/pegasus/jmpi/CIMObjectPath;)I"}, {"JMPI_TestPropertyTypes","testPropertyTypesValue","(Lorg/pegasus/jmpi/CIMInstance;)V"} }; if (!env) { DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::debugPrintMethodPointers: env is NULL!"<GetMethodID(jc,methodNames[i][1], methodNames[i][2]); DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::debugPrintMethodPointers: "<ExceptionClear(); jmidGetDeclaredMethods = env->GetMethodID(jInstSuperClass, "getDeclaredMethods", "()[Ljava/lang/reflect/Method;"); } if (jmidGetDeclaredMethods) { jobjectArray jarrayDeclaredMethods = (jobjectArray)env->CallObjectMethod(jInstClass, jmidGetDeclaredMethods); if (jarrayDeclaredMethods) { for (int i = 0, iLen = env->GetArrayLength (jarrayDeclaredMethods); i < iLen; i++) { JMPIjvm::checkException(env); jobject jDeclaredMethod = env->GetObjectArrayElement (jarrayDeclaredMethods, i); jclass jDeclaredMethodClass = env->GetObjectClass (jDeclaredMethod); JMPIjvm::checkException(env); jmethodID jmidToString = env->GetMethodID (jDeclaredMethodClass, "toString", "()Ljava/lang/String;"); jstring jstringResult = (jstring)env->CallObjectMethod (jDeclaredMethod, jmidToString); const char *pszResult = env->GetStringUTFChars(jstringResult, 0); PEGASUS_STD(cout)<<"--- JMPIProviderManager::debugIntrospectJavaObject: "<ReleaseStringUTFChars (jstringResult, pszResult); } } } env->ExceptionClear(); } void debugDumpJavaObject (JNIEnv *env, jobject jInst) { jclass jInstClass = env->GetObjectClass(jInst); jclass jInstSuperClass = env->GetSuperclass(jInstClass); jmethodID jmidToString1 = env->GetMethodID(jInstClass, "toString", "()Ljava/lang/String;"); jmethodID jmidToString2 = env->GetMethodID(jInstSuperClass, "toString", "()Ljava/lang/String;"); if (!jmidToString1 || !jmidToString2) { env->ExceptionClear(); return; } jstring jstringResult1 = (jstring)env->CallObjectMethod(jInstClass, jmidToString1); jstring jstringResult2 = (jstring)env->CallObjectMethod(jInstSuperClass, jmidToString2); jstring jstringResult3 = (jstring)env->CallObjectMethod(jInst, jmidToString1); const char *pszResult1 = env->GetStringUTFChars(jstringResult1, 0); const char *pszResult2 = env->GetStringUTFChars(jstringResult2, 0); const char *pszResult3 = env->GetStringUTFChars(jstringResult3, 0); jmethodID jmidCInst = env->GetMethodID(env->GetObjectClass(jInst),JMPIjvm::jv.instanceMethodNames[22].methodName, JMPIjvm::jv.instanceMethodNames[22].signature); PEGASUS_STD(cout)<<"--- JMPIProviderManager::debugIntrospectJavaObject: jInstClass = "<getType()) { case CIM_GET_INSTANCE_REQUEST_MESSAGE: response = handleGetInstanceRequest(request); break; case CIM_ENUMERATE_INSTANCES_REQUEST_MESSAGE: response = handleEnumerateInstancesRequest(request); break; case CIM_ENUMERATE_INSTANCE_NAMES_REQUEST_MESSAGE: response = handleEnumerateInstanceNamesRequest(request); break; case CIM_CREATE_INSTANCE_REQUEST_MESSAGE: response = handleCreateInstanceRequest(request); break; case CIM_MODIFY_INSTANCE_REQUEST_MESSAGE: response = handleModifyInstanceRequest(request); break; case CIM_DELETE_INSTANCE_REQUEST_MESSAGE: response = handleDeleteInstanceRequest(request); break; case CIM_EXEC_QUERY_REQUEST_MESSAGE: response = handleExecQueryRequest(request); break; case CIM_ASSOCIATORS_REQUEST_MESSAGE: response = handleAssociatorsRequest(request); break; case CIM_ASSOCIATOR_NAMES_REQUEST_MESSAGE: response = handleAssociatorNamesRequest(request); break; case CIM_REFERENCES_REQUEST_MESSAGE: response = handleReferencesRequest(request); break; case CIM_REFERENCE_NAMES_REQUEST_MESSAGE: response = handleReferenceNamesRequest(request); break; case CIM_GET_PROPERTY_REQUEST_MESSAGE: response = handleGetPropertyRequest(request); break; case CIM_SET_PROPERTY_REQUEST_MESSAGE: response = handleSetPropertyRequest(request); break; case CIM_INVOKE_METHOD_REQUEST_MESSAGE: response = handleInvokeMethodRequest(request); break; case CIM_CREATE_SUBSCRIPTION_REQUEST_MESSAGE: response = handleCreateSubscriptionRequest(request); break; /* case CIM_MODIFY_SUBSCRIPTION_REQUEST_MESSAGE: response = handleModifySubscriptionRequest(request); break; */ case CIM_DELETE_SUBSCRIPTION_REQUEST_MESSAGE: response = handleDeleteSubscriptionRequest(request); break; /* case CIM_EXPORT_INDICATION_REQUEST_MESSAGE: response = handleExportIndicationRequest(request); break; */ case CIM_DISABLE_MODULE_REQUEST_MESSAGE: response = handleDisableModuleRequest(request); break; case CIM_ENABLE_MODULE_REQUEST_MESSAGE: response = handleEnableModuleRequest(request); break; case CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE: response = handleStopAllProvidersRequest(request); break; case CIM_INITIALIZE_PROVIDER_REQUEST_MESSAGE: response = handleInitializeProviderRequest(request); break; case CIM_SUBSCRIPTION_INIT_COMPLETE_REQUEST_MESSAGE: response = handleSubscriptionInitCompleteRequest (request); break; default: PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2, "*** Unsupported Request "+request->getType()); DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::processMessage: Unsupported request "<getType ()<(const_cast(message)); \ PEGASUS_ASSERT(request != 0); \ CIM##type##ResponseMessage * response = \ new CIM##type##ResponseMessage( \ request->messageId, \ CIMException(), \ request->queueIds.copyAndPop() \ respType \ PEGASUS_ASSERT(response != 0); \ response->setKey(request->getKey()); \ response->setHttpMethod(request->getHttpMethod()); \ type1##ResponseHandler handler(request, response, _responseChunkCallback); #define VOIDINTRO ); #define NOVOIDINTRO(type) ,type); #define METHODINTRO ,CIMValue(), Array(), request->methodName ); #define HandlerIntroVoid(type,message,request,response,handler) \ HandlerIntroBase(type,type,message,request,response,handler,VOIDINTRO) #define HandlerIntroMethod(type,message,request,response,handler) \ HandlerIntroBase(type,type,message,request,response,handler,METHODINTRO) #define HandlerIntroInd(type,message,request,response,handler) \ HandlerIntroBase(type,Operation,message,request,response,handler,VOIDINTRO) #define HandlerIntroInit(type,message,request,response,handler) \ HandlerIntroBase(type,Operation,message,request,response,handler,VOIDINTRO) #define HandlerIntro(type,message,request,response,handler,respType) \ HandlerIntroBase(type,type,message,request,response,handler,NOVOIDINTRO(respType)) #define HandlerCatch(handler) \ catch(CIMException & e) \ { PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, \ "Exception: " + e.getMessage()); \ handler.setStatus(e.getCode(), e.getContentLanguages(), e.getMessage()); \ } \ catch(Exception & e) \ { PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, \ "Exception: " + e.getMessage()); \ handler.setStatus(CIM_ERR_FAILED, e.getContentLanguages(), e.getMessage()); \ } \ catch(...) \ { PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, \ "Exception: Unknown"); \ handler.setStatus(CIM_ERR_FAILED, "Unknown error."); \ } static jobjectArray getList(JvmVector *jv, JNIEnv *env, CIMPropertyList &list) { Uint32 s=list.size(); jobjectArray pl=NULL; if (s) { jstring initial=env->NewString(NULL,0); pl=(jobjectArray)env->NewObjectArray(s,jv->StringClassRef,initial); for (Uint32 i=0; iSetObjectArrayElement (pl,i,env->NewStringUTF(list[i].getString().getCString())); } } return pl; } Message * JMPIProviderManager::handleGetInstanceRequest(const Message * message) throw() { PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleGetInstanceRequest"); HandlerIntro(GetInstance,message,request,response,handler,CIMInstance()); typedef enum { METHOD_UNKNOWN = 0, METHOD_PEGASUS_24, METHOD_PEGASUS_25, METHOD_SNIA_PROVIDER20, } METHOD_VERSION; METHOD_VERSION eMethodFound = METHOD_UNKNOWN; JNIEnv *env = NULL; try { Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, "JMPIProviderManager::handleGetInstanceRequest - Host name: $0 Name space: $1 Class name: $2", System::getHostName(), request->nameSpace.getString(), request->instanceName.getClassName().getString()); DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetInstanceRequest: hostname = "<GetMethodID((jclass)pr.jProviderClass, "getInstance", "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;ZZ[Ljava/lang/String;)Lorg/pegasus/jmpi/CIMInstance;"); if (id != NULL) { eMethodFound = METHOD_PEGASUS_25; DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetInstanceRequest: found METHOD_PEGASUS_25."<ExceptionClear(); // 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."<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."<NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jopRef); JMPIjvm::checkException(env); CIMClass cls; try { DDD (PEGASUS_STD(cout)<<"enter: cimom_handle->getClass("<<__LINE__<<") "<instanceName.getClassName()<getClass(context, request->nameSpace, request->instanceName.getClassName(), false, true, true, CIMPropertyList()); DDD (PEGASUS_STD(cout)<<"exit: cimom_handle->getClass("<<__LINE__<<") "<instanceName.getClassName()<getClass("<<__LINE__<<") "<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, JMPI_LOCALONLY, JMPI_INCLUDE_QUALIFIERS, request->includeClassOrigin, jPropertyList, jcimClass); 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_PEGASUS_25: { jint jopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath); jobject jop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jopRef); JMPIjvm::checkException(env); CIMClass cls; try { DDD (PEGASUS_STD(cout)<<"enter: cimom_handle->getClass("<<__LINE__<<") "<instanceName.getClassName()<getClass(context, request->nameSpace, request->instanceName.getClassName(), false, true, true, CIMPropertyList()); DDD (PEGASUS_STD(cout)<<"exit: cimom_handle->getClass("<<__LINE__<<") "<instanceName.getClassName()<getClass("<<__LINE__<<") "<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_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: { jint jopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath); jobject jop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jopRef); JMPIjvm::checkException(env); CIMClass cls; try { DDD (PEGASUS_STD(cout)<<"enter: cimom_handle->getClass("<<__LINE__<<") "<instanceName.getClassName()<getClass(context, request->nameSpace, request->instanceName.getClassName(), false, true, true, CIMPropertyList()); DDD (PEGASUS_STD(cout)<<"exit: cimom_handle->getClass("<<__LINE__<<") "<instanceName.getClassName()<getClass("<<__LINE__<<") "<NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jcimClassRef); JMPIjvm::checkException(env); // Modified for Bugzilla# 3679 jobject jciRet = env->CallObjectMethod((jobject)pr.jProvider, id, jop, jcimClass, JMPI_LOCALONLY); 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; } case METHOD_UNKNOWN: { DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetInstanceRequest: should not be here!"<()); typedef enum { METHOD_UNKNOWN = 0, METHOD_PEGASUS_24, METHOD_PEGASUS_25, METHOD_SNIA_PROVIDER20, } METHOD_VERSION; METHOD_VERSION eMethodFound = METHOD_UNKNOWN; JNIEnv *env = NULL; try { Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, "JMPIProviderManager::handleEnumerateInstancesRequest - Host name: $0 Name space: $1 Class name: $2", System::getHostName(), request->nameSpace.getString(), request->className.getString()); DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: hostname = "<GetMethodID((jclass)pr.jProviderClass, "enumerateInstances", "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;ZZ[Ljava/lang/String;)Ljava/util/Vector;"); if (id != NULL) { eMethodFound = METHOD_PEGASUS_25; DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: found METHOD_PEGASUS_25."<ExceptionClear(); // 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."<ExceptionClear(); // public org.pegasus.jmpi.CIMInstance[] enumInstances (org.pegasus.jmpi.CIMObjectPath cop, // boolean localOnly, // boolean includeQualifiers, // boolean includeClassOrigin, // java.lang.String[] propertyList, // org.pegasus.jmpi.CIMClass cimClass) // throws org.pegasus.jmpi.CIMException id = env->GetMethodID((jclass)pr.jProviderClass, "enumInstances", "(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."<NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef); JMPIjvm::checkException(env); CIMClass cls; try { DDD (PEGASUS_STD(cout)<<"enter: cimom_handle->getClass("<<__LINE__<<") "<className<getClass(context, request->nameSpace, request->className, false, true, true, CIMPropertyList()); DDD (PEGASUS_STD(cout)<<"exit: cimom_handle->getClass("<<__LINE__<<") "<className<getClass("<<__LINE__<<") "<NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jccRef); JMPIjvm::checkException(env); jobjectArray jPropertyList = getList(jv,env,request->propertyList); jobjectArray jAr = (jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, id, jcop, JMPI_LOCALONLY, JMPI_INCLUDE_QUALIFIERS, request->includeClassOrigin, jPropertyList, jcc); JMPIjvm::checkException(env); STAT_PMS_PROVIDEREND; handler.processing(); if (jAr) { for (int i=0,m=env->GetArrayLength(jAr); iGetObjectArrayElement(jAr,i); JMPIjvm::checkException(env); jint jciRetRef = env->CallIntMethod(jciRet,JMPIjvm::jv.CIMInstanceCInst); CIMInstance *ciRet = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciRetRef); /* Fix for 4237 */ CIMClass cls; try { DDD (PEGASUS_STD(cout)<<"enter: cimom_handle->getClass("<<__LINE__<<") "<getClassName()<getClass(context, request->nameSpace, ciRet->getClassName(), false, true, true, CIMPropertyList()); DDD (PEGASUS_STD(cout)<<"exit: cimom_handle->getClass("<<__LINE__<<") "<getClassName()<getClass("<<__LINE__<<") "<getPath(); CIMObjectPath iop = ciRet->buildPath(cls); JMPIjvm::checkException(env); handler.deliver(*ciRet); } } handler.complete(); break; } /* Fix for 4189 */ 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; try { DDD (PEGASUS_STD(cout)<<"enter: cimom_handle->getClass("<<__LINE__<<") "<className<getClass (context, request->nameSpace, request->className, false, true, true, CIMPropertyList()); DDD (PEGASUS_STD(cout)<<"exit: cimom_handle->getClass("<<__LINE__<<") "<className<getClass("<<__LINE__<<") "<NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jccRef); JMPIjvm::checkException(env); jobjectArray jPropertyList = getList(jv,env,request->propertyList); jobject jVec = env->CallObjectMethod((jobject)pr.jProvider, id, jcop, jcc, 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); iCallObjectMethod(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; try { DDD (PEGASUS_STD(cout)<<"enter: cimom_handle->getClass("<<__LINE__<<") "<getClassName()<getClass(context, request->nameSpace, ciRet->getClassName(), false, true, true, CIMPropertyList()); DDD (PEGASUS_STD(cout)<<"exit: cimom_handle->getClass("<<__LINE__<<") "<getClassName()<getClass("<<__LINE__<<") "<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; try { DDD (PEGASUS_STD(cout)<<"enter: cimom_handle->getClass("<<__LINE__<<") "<className<getClass(context, request->nameSpace, request->className, false, true, true, CIMPropertyList()); DDD (PEGASUS_STD(cout)<<"exit: cimom_handle->getClass("<<__LINE__<<") "<className<getClass("<<__LINE__<<") "<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, JMPI_LOCALONLY); JMPIjvm::checkException(env); STAT_PMS_PROVIDEREND; handler.processing(); if (jVec) { for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); iCallObjectMethod(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; try { DDD (PEGASUS_STD(cout)<<"enter: cimom_handle->getClass("<<__LINE__<<") "<getClassName()<getClass(context, request->nameSpace, ciRet->getClassName(), false, true, true, CIMPropertyList()); DDD (PEGASUS_STD(cout)<<"exit: cimom_handle->getClass("<<__LINE__<<") "<getClassName()<getClass("<<__LINE__<<") "<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; } case METHOD_UNKNOWN: { DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: should not be here!"<()); typedef enum { METHOD_UNKNOWN = 0, METHOD_PEGASUS_24, METHOD_PEGASUS_25, METHOD_SNIA_PROVIDER20, } METHOD_VERSION; METHOD_VERSION eMethodFound = METHOD_UNKNOWN; JNIEnv *env = NULL; try { Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, "JMPIProviderManager::handleEnumerateInstanceNamesRequest - Host name: $0 Name space: $1 Class name: $2", System::getHostName(), request->nameSpace.getString(), request->className.getString()); DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstanceNamesRequest: hostname = "<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."<ExceptionClear(); // public org.pegasus.jmpi.CIMObjectPath[] 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;)[Lorg/pegasus/jmpi/CIMObjectPath;"); if (id != NULL) { eMethodFound = METHOD_PEGASUS_24; DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstanceNamesRequest: found METHOD_PEGASUS_24."<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."<NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef); JMPIjvm::checkException(env); CIMClass cls; try { DDD (PEGASUS_STD(cout)<<"enter: cimom_handle->getClass("<<__LINE__<<") "<className<getClass(context, request->nameSpace, request->className, false, true, true, CIMPropertyList()); DDD (PEGASUS_STD(cout)<<"exit: cimom_handle->getClass("<<__LINE__<<") "<className<getClass("<<__LINE__<<") "<NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jcimClassRef); JMPIjvm::checkException(env); jobjectArray jAr = (jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, id, jcop, jcimClass); JMPIjvm::checkException(env); STAT_PMS_PROVIDEREND; handler.processing(); if (jAr) { for (int i=0,m=env->GetArrayLength(jAr); iGetObjectArrayElement(jAr,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_PEGASUS_25: { jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath); jobject jcop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef); JMPIjvm::checkException(env); CIMClass cls; try { DDD (PEGASUS_STD(cout)<<"enter: cimom_handle->getClass("<<__LINE__<<") "<className<getClass(context, request->nameSpace, request->className, false, true, true, CIMPropertyList()); DDD (PEGASUS_STD(cout)<<"exit: cimom_handle->getClass("<<__LINE__<<") "<className<getClass("<<__LINE__<<") "<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); iCallObjectMethod(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: { jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath); jobject jcop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef); JMPIjvm::checkException(env); CIMClass cls; try { DDD (PEGASUS_STD(cout)<<"enter: cimom_handle->getClass("<<__LINE__<<") "<className<getClass(context, request->nameSpace, request->className, false, true, true, CIMPropertyList()); DDD (PEGASUS_STD(cout)<<"exit: cimom_handle->getClass("<<__LINE__<<") "<className<getClass("<<__LINE__<<") "<NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jcimClassRef); JMPIjvm::checkException(env); jobject jVec = env->CallObjectMethod((jobject)pr.jProvider, id, jcop, true, jcimClass); JMPIjvm::checkException(env); STAT_PMS_PROVIDEREND; handler.processing(); if (jVec) { for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); iCallObjectMethod(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_UNKNOWN: { DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstanceNamesRequest: should not be here!"<nameSpace.getString(), request->newInstance.getPath().getClassName().getString()); DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateInstanceRequest: hostname = "<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."<NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef); JMPIjvm::checkException(env); CIMInstance *ci = new CIMInstance (request->newInstance); jint jciRef = DEBUG_ConvertCToJava (CIMInstance*, jint, ci); jobject jci = env->NewObject(jv->CIMInstanceClassRef,jv->CIMInstanceNewI,jciRef); JMPIjvm::checkException(env); DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateInstanceRequest: id = "<nameSpace.getString(), request->modifiedInstance.getPath().getClassName().getString()); DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleModifyInstanceRequest: hostname = "<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."<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."<NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef); JMPIjvm::checkException(env); CIMInstance *ci = new CIMInstance (request->modifiedInstance); jint jciRef = DEBUG_ConvertCToJava (CIMInstance*, jint, ci); jobject jci = env->NewObject(jv->CIMInstanceClassRef,jv->CIMInstanceNewI,jciRef); JMPIjvm::checkException(env); jobjectArray jPropertyList = getList(jv,env,request->propertyList); env->CallVoidMethod((jobject)pr.jProvider, id, jcop, jci, JMPI_INCLUDE_QUALIFIERS, jPropertyList); JMPIjvm::checkException(env); STAT_PMS_PROVIDEREND; break; } case METHOD_SNIA_PROVIDER20: { jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath); jobject jcop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef); JMPIjvm::checkException(env); CIMInstance *ci = new CIMInstance (request->modifiedInstance); jint jciRef = DEBUG_ConvertCToJava (CIMInstance*, jint, ci); jobject jci = env->NewObject(jv->CIMInstanceClassRef,jv->CIMInstanceNewI,jciRef); JMPIjvm::checkException(env); env->CallVoidMethod((jobject)pr.jProvider, id, jcop, jci); JMPIjvm::checkException(env); STAT_PMS_PROVIDEREND; break; } case METHOD_UNKNOWN: { DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleModifyInstanceRequest: should not be here!"<nameSpace.getString(), request->instanceName.getClassName().getString()); DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteInstanceRequest: hostname = "<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."<NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef); JMPIjvm::checkException(env); env->CallVoidMethod((jobject)pr.jProvider, id, jcop); JMPIjvm::checkException(env); STAT_PMS_PROVIDEREND; break; } case METHOD_UNKNOWN: { DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteInstanceRequest: should not be here!"<()); typedef enum { METHOD_UNKNOWN = 0, METHOD_PEGASUS_24, METHOD_PEGASUS_25, 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 = "<queryLanguage<<", query: "<query<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."<ExceptionClear(); // public abstract org.pegasus.jmpi.CIMInstance[] execQuery(org.pegasus.jmpi.CIMObjectPath cop, // java.lang.String query, // java.lang.String 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;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."<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."<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; try { DDD (PEGASUS_STD(cout)<<"enter: cimom_handle->getClass("<<__LINE__<<") "<className<getClass(context, request->nameSpace, request->className, false, true, true, CIMPropertyList()); DDD (PEGASUS_STD(cout)<<"exit: cimom_handle->getClass("<<__LINE__<<") "<className<getClass("<<__LINE__<<") "<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; handler.processing(); if (jAr) { for (int i=0,m=env->GetArrayLength(jAr); iGetObjectArrayElement(jAr,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_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; try { DDD (PEGASUS_STD(cout)<<"enter: cimom_handle->getClass("<<__LINE__<<") "<className<getClass(context, request->nameSpace, request->className, false, true, true, CIMPropertyList()); DDD (PEGASUS_STD(cout)<<"exit: cimom_handle->getClass("<<__LINE__<<") "<className<getClass("<<__LINE__<<") "<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); iGetObjectArrayElement(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: { 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; try { DDD (PEGASUS_STD(cout)<<"enter: cimom_handle->getClass("<<__LINE__<<") "<className<getClass(context, request->nameSpace, request->className, false, true, true, CIMPropertyList()); DDD (PEGASUS_STD(cout)<<"exit: cimom_handle->getClass("<<__LINE__<<") "<className<getClass("<<__LINE__<<") "<NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jcls); JMPIjvm::checkException(env); jint jql = 0; // @BUG - how to convert? jobjectArray jVec = (jobjectArray)env->CallObjectMethod((jobject)pr.jProvider, id, jcop, jquery, jql, jCc); JMPIjvm::checkException(env); STAT_PMS_PROVIDEREND; handler.processing(); if (jVec) { for (int i=0,m=env->GetArrayLength(jVec); iGetObjectArrayElement(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_UNKNOWN: { DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleExecQueryRequest: should not be here!"<()); 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::handleAssociatorsRequest - Host name: $0 Name space: $1 Class name: $2", System::getHostName(), request->nameSpace.getString(), request->objectName.getClassName().getString()); DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: hostname = "<role<<", aCls: "<assocClass<GetMethodID((jclass)pr.jProviderClass, "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;"); //@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) { eMethodFound = METHOD_SNIA_PROVIDER20; DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found METHOD_SNIA_PROVIDER20."<ExceptionClear(); // public abstract java.util.Vector associators (org.pegasus.jmpi.CIMObjectPath assocName, // java.lang.String resultClass, // java.lang.String role, // java.lang.String resultRole, // boolean includeQualifiers, // boolean includeClassOrigin, // java.lang.String[] propertyList) // throws org.pegasus.jmpi.CIMException // id = env->GetMethodID((jclass)pr.jProviderClass, "associators", "(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) { eMethodFound = METHOD_PEGASUS_24; DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found METHOD_PEGASUS_24."<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); #ifdef PEGASUS_DEBUG DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorsRequest: assocName = "<toString ()<getClass("<<__LINE__<<") "<getClassName()<getClass(context, request->nameSpace, ciRet->getClassName(), false, true, true, CIMPropertyList()); DDD (PEGASUS_STD(cout)<<"exit: cimom_handle->getClass("<<__LINE__<<") "<getClassName()<getClass("<<__LINE__<<") "<getPath(); CIMObjectPath iop = ciRet->buildPath(cls); JMPIjvm::checkException(env); iop.setNameSpace(op.getNameSpace()); ciRet->setPath(iop); handler.deliver(*ciRet); } } handler.complete(); break; } case METHOD_SNIA_PROVIDER20: { jint jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, assocPath); jobject jAssociationName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef); JMPIjvm::checkException(env); jint jPathNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath); jobject jPathName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jPathNameRef); 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); #ifdef PEGASUS_DEBUG DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorsRequest: assocName = "<toString ()<getClass("<<__LINE__<<") "<getClassName()<getClass(context, request->nameSpace, ciRet->getClassName(), false, true, true, CIMPropertyList()); DDD (PEGASUS_STD(cout)<<"exit: cimom_handle->getClass("<<__LINE__<<") "<getClassName()<getClass("<<__LINE__<<") "<getPath(); CIMObjectPath iop = ciRet->buildPath(cls); JMPIjvm::checkException(env); iop.setNameSpace(op.getNameSpace()); ciRet->setPath(iop); handler.deliver(*ciRet); } } handler.complete(); break; } case METHOD_UNKNOWN: { DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: should not be here!"<()); 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::handleAssociatorNamesRequest - Host name: $0 Name space: $1 Class name: $2", System::getHostName(), request->nameSpace.getString(), request->objectName.getClassName().getString()); DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: hostname = "<role<<", aCls: "<assocClass<GetMethodID((jclass)pr.jProviderClass, "associatorNames", "(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) { eMethodFound = METHOD_SNIA_PROVIDER20; DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: found METHOD_SNIA_PROVIDER20."<ExceptionClear(); // public abstract java.util.Vector associatorNames (org.pegasus.jmpi.CIMObjectPath assocName, // java.lang.String resultClass, // java.lang.String role, // java.lang.String resultRole) // throws org.pegasus.jmpi.CIMException id = env->GetMethodID((jclass)pr.jProviderClass, "associatorNames", "(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) { eMethodFound = METHOD_PEGASUS_24; DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: found METHOD_PEGASUS_24."<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); #ifdef PEGASUS_DEBUG DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: assocName = "<toString ()<()); 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::handleReferencesRequest - Host name: $0 Name space: $1 Class name: $2", System::getHostName(), request->nameSpace.getString(), request->objectName.getClassName().getString()); DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferencesRequest: hostname = "<role<<" aCls: "<resultClass<GetMethodID((jclass)pr.jProviderClass, "references", "(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) { eMethodFound = METHOD_SNIA_PROVIDER20; DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferencesRequest: found METHOD_SNIA_PROVIDER20."<ExceptionClear(); // public abstract java.util.Vector references (org.pegasus.jmpi.CIMObjectPath assocName, // java.lang.String role, // boolean includeQualifiers, // boolean includeClassOrigin, // java.lang.String[] propertyList) // throws org.pegasus.jmpi.CIMException id = env->GetMethodID((jclass)pr.jProviderClass, "references", "(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) { eMethodFound = METHOD_PEGASUS_24; DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferencesRequest: found METHOD_PEGASUS_24."<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); #ifdef PEGASUS_DEBUG DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleReferencesRequest: assocName = "<toString ()<getClass("<<__LINE__<<") "<getClassName()<getClass(context, request->nameSpace, ciRet->getClassName(), false, true, true, CIMPropertyList()); DDD (PEGASUS_STD(cout)<<"exit: cimom_handle->getClass("<<__LINE__<<") "<getClassName()<getClass("<<__LINE__<<") "<getPath(); CIMObjectPath iop = ciRet->buildPath(cls); JMPIjvm::checkException(env); iop.setNameSpace(op.getNameSpace()); ciRet->setPath(iop); handler.deliver(*ciRet); } } handler.complete(); break; } case METHOD_SNIA_PROVIDER20: { jint jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, resultPath); jobject jAssociationName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef); JMPIjvm::checkException(env); jint jPathNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath); jobject jPathName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jPathNameRef); JMPIjvm::checkException(env); jstring jRole = env->NewStringUTF(request->role.getCString()); JMPIjvm::checkException(env); jobjectArray jPropertyList = getList(jv,env,request->propertyList); #ifdef PEGASUS_DEBUG DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleReferencesRequest: assocName = "<toString ()<getClass("<<__LINE__<<") "<getClassName()<getClass(context, request->nameSpace, ciRet->getClassName(), false, true, true, CIMPropertyList()); DDD (PEGASUS_STD(cout)<<"exit: cimom_handle->getClass("<<__LINE__<<") "<getClassName()<getClass("<<__LINE__<<") "<getPath(); CIMObjectPath iop = ciRet->buildPath(cls); JMPIjvm::checkException(env); iop.setNameSpace(op.getNameSpace()); ciRet->setPath(iop); handler.deliver(*ciRet); } } handler.complete(); break; } case METHOD_UNKNOWN: { DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferencesRequest: should not be here!"<()); 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::handleReferenceNamesRequest - Host name: $0 Name space: $1 Class name: $2", System::getHostName(), request->nameSpace.getString(), request->objectName.getClassName().getString()); DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferenceNamesRequest: hostname = "<role<<", aCls: "<resultClass<GetMethodID((jclass)pr.jProviderClass, "referenceNames", "(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) { eMethodFound = METHOD_SNIA_PROVIDER20; DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferenceNamesRequest: found METHOD_SNIA_PROVIDER20."<ExceptionClear(); // public abstract java.util.Vector referenceNames (org.pegasus.jmpi.CIMObjectPath assocName, // java.lang.String role) // throws org.pegasus.jmpi.CIMException id = env->GetMethodID((jclass)pr.jProviderClass, "referenceNames", "(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) { eMethodFound = METHOD_PEGASUS_24; DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferenceNamesRequest: found METHOD_PEGASUS_24."<NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef); JMPIjvm::checkException(env); jstring jRole = env->NewStringUTF(request->role.getCString()); JMPIjvm::checkException(env); #ifdef PEGASUS_DEBUG DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleReferenceNamesRequest: assocName = "<toString ()<nameSpace.getString(), request->instanceName.getClassName().getString()); DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetPropertyRequest: hostname = "<GetMethodID((jclass)pr.jProviderClass, "getPropertyValue", "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;)Lorg/pegasus/jmpi/CIMValue;"); if (id != NULL) { eMethodFound = METHOD_SNIA_PROVIDER20; DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetPropertyRequest: found METHOD_SNIA_PROVIDER20."<NewObject(jv->CIMObjectPathClassRef, jv->CIMObjectPathNewI, jcopref); JMPIjvm::checkException(env); jstring joclass = env->NewStringUTF(request->instanceName.getClassName().getString().getCString()); JMPIjvm::checkException(env); jstring jpName = env->NewStringUTF(request->propertyName.getString().getCString()); JMPIjvm::checkException(env); STAT_GETSTARTTIME; jobject jvalRet = env->CallObjectMethod ((jobject)pr.jProvider, id, jcop, joclass, jpName); JMPIjvm::checkException(env); STAT_PMS_PROVIDEREND; handler.processing(); if (jvalRet) { jint jvalRetRef = env->CallIntMethod(jvalRet,JMPIjvm::jv.CIMValueCInst); CIMValue *valRet = DEBUG_ConvertJavaToC (jint, CIMValue*, jvalRetRef); JMPIjvm::checkException(env); handler.deliver(*valRet); } handler.complete(); break; } case METHOD_UNKNOWN: { DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetPropertyRequest: should not be here!"<nameSpace.getString(), request->instanceName.getClassName().getString()); DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleSetPropertyRequest: hostname = "<GetMethodID((jclass)pr.jProviderClass, "setPropertyValue", "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Lorg/pegasus/jmpi/CIMValue;)V"); if (id != NULL) { eMethodFound = METHOD_SNIA_PROVIDER20; DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleSetPropertyRequest: found METHOD_SNIA_PROVIDER20."<NewObject(jv->CIMObjectPathClassRef, jv->CIMObjectPathNewI, jcopref); JMPIjvm::checkException(env); jstring joclass = env->NewStringUTF(request->instanceName.getClassName().getString().getCString()); JMPIjvm::checkException(env); jstring jpName = env->NewStringUTF(request->propertyName.getString().getCString()); JMPIjvm::checkException(env); CIMValue *val = new CIMValue (request->newValue); JMPIjvm::checkException(env); jint jvalref = DEBUG_ConvertCToJava (CIMValue*, jint, val); jobject jval = env->NewObject(jv->CIMValueClassRef, jv->CIMValueNewI, jvalref); JMPIjvm::checkException(env); STAT_GETSTARTTIME; env->CallVoidMethod ((jobject)pr.jProvider, id, jcop, joclass, jpName, jval); JMPIjvm::checkException(env); STAT_PMS_PROVIDEREND; break; } case METHOD_UNKNOWN: { DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleSetPropertyRequest: should not be here!"<nameSpace.getString(), request->instanceName.getClassName().getString()); DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleInvokeMethodRequest: hostname = "<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."<ExceptionClear(); // public org.pegasus.jmpi.CIMValue invokeMethod (org.pegasus.jmpi.CIMObjectPath op, // java.lang.String methodName, // org.pegasus.jmpi.CIMArgument[] inArgs, // 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."<NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef); JMPIjvm::checkException(env); jstring jMethod = env->NewStringUTF(request->methodName.getString().getCString()); JMPIjvm::checkException(env); Uint32 m=request->inParameters.size(); jobjectArray jArIn=(jobjectArray)env->NewObjectArray(m,jv->CIMArgumentClassRef,NULL); for (Uint32 i=0; iinParameters[i]); jint jArgRef = DEBUG_ConvertCToJava (CIMParamValue*, jint, parm); jobject jArg = env->NewObject(jv->CIMArgumentClassRef,jv->CIMArgumentNewI,jArgRef); env->SetObjectArrayElement(jArIn,i,jArg); } jobjectArray jArOut=(jobjectArray)env->NewObjectArray(24,jv->CIMArgumentClassRef,NULL); jobject jValueRet = env->CallObjectMethod((jobject)pr.jProvider, id, jcop, jMethod, jArIn, jArOut); JMPIjvm::checkException(env); STAT_PMS_PROVIDEREND; handler.processing(); jint jValueRetRef = env->CallIntMethod(jValueRet,JMPIjvm::jv.CIMValueCInst); CIMValue *valueRet = DEBUG_ConvertJavaToC (jint, CIMValue*, jValueRetRef); handler.deliver(*valueRet); for (int i=0; i<24; i++) { jobject jArg = env->GetObjectArrayElement(jArOut,i); JMPIjvm::checkException(env); if (jArg==NULL) break; jint jpRef = env->CallIntMethod(jArg,JMPIjvm::jv.CIMArgumentCInst); CIMParamValue *p = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jpRef); JMPIjvm::checkException(env); handler.deliverParamValue(*p); } handler.complete(); break; } case METHOD_SNIA_PROVIDER20: { jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath); jobject jcop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef); 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(); iinParameters[i]; const CIMValue v = parm.getValue(); CIMProperty *p = new CIMProperty(parm.getParameterName(),v,v.getArraySize()); jint jpRef = DEBUG_ConvertCToJava (CIMProperty*, jint, p); jobject jp = env->NewObject(jv->CIMPropertyClassRef,jv->CIMPropertyNewI,jpRef); env->CallVoidMethod(jVecIn,jv->VectorAddElement,jp); } jobject jVecOut=env->NewObject(jv->VectorClassRef,jv->VectorNew); JMPIjvm::checkException(env); jobject jValueRet = env->CallObjectMethod((jobject)pr.jProvider, id, jcop, jMethod, jVecIn, jVecOut); JMPIjvm::checkException(env); STAT_PMS_PROVIDEREND; handler.processing(); jint jValueRetRef = env->CallIntMethod(jValueRet,JMPIjvm::jv.CIMValueCInst); CIMValue *valueRet = DEBUG_ConvertJavaToC (jint, CIMValue*, jValueRetRef); handler.deliver(*valueRet); for (int i=0,m=env->CallIntMethod(jVecOut,JMPIjvm::jv.VectorSize); iCallObjectMethod(jVecOut,JMPIjvm::jv.VectorElementAt,i); JMPIjvm::checkException(env); jint jpRef = env->CallIntMethod(jProp,JMPIjvm::jv.CIMPropertyCInst); CIMProperty *p = DEBUG_ConvertJavaToC (jint, CIMProperty*, jpRef); JMPIjvm::checkException(env); handler.deliverParamValue(CIMParamValue(p->getName().getString(),p->getValue())); } handler.complete(); break; } case METHOD_UNKNOWN: { DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleInvokeMethodRequest: should not be here!"<operationContext.get(ProviderIdContainer::NAME); req_provider = pidc.getProvider(); req_providerModule = pidc.getModule(); LocateIndicationProviderNames(req_provider, req_providerModule,providerName,providerLocation); Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, "JMPIProviderManager::handleCreateSubscriptionRequest - Host name: $0 Name space: $1 Provider name(s): $2", System::getHostName(), request->nameSpace.getString(), providerName); DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateSubscriptionRequest: hostname = "<classNames.size(); i < n; i++) { CIMObjectPath className( System::getHostName(), request->nameSpace, request->classNames[i]); eSelx->classNames.append(className); } CIMPropertyList propertyList = request->propertyList; if (!propertyList.isNull()) { Array p = propertyList.getPropertyNameArray(); int pCount = p.size(); eSelx->props=(const char**)malloc((1+pCount)*sizeof(char*)); for (int i=0; iprops[i]=strdup(p[i].getString().getCString()); } eSelx->props[pCount]=NULL; } JvmVector *jv = 0; 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); STAT_GETSTARTTIME; jmethodID id = NULL; // public void activateFilter (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."<NewObject(jv->SelectExpClassRef,jv->SelectExpNewI,jSelRef); JMPIjvm::checkException(env); jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &eSelx->classNames[0]); jobject jcop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef); JMPIjvm::checkException(env); jstring jType = env->NewStringUTF(request->nameSpace.getString().getCString()); JMPIjvm::checkException(env); env->CallVoidMethod((jobject)pr.jProvider, id, jSel, jType, jcop, (jboolean)0); JMPIjvm::checkException(env); // // Increment count of current subscriptions for this provider // if (ph.GetProvider ().testIfZeroAndIncrementSubscriptions ()) { // // If there were no current subscriptions before the increment, // the first subscription has been created // Call the provider's enableIndications method // if (_subscriptionInitComplete) { prec->enabled = true; CIMRequestMessage * request = 0; CIMResponseMessage * response = 0; prec->handler = new EnableIndicationsResponseHandler( request, response, req_provider, _indicationCallback, _responseChunkCallback); } } STAT_PMS_PROVIDEREND; break; } case METHOD_UNKNOWN: { DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateSubscriptionRequest: should not be here!"<operationContext.get(ProviderIdContainer::NAME); req_provider = pidc.getProvider(); req_providerModule = pidc.getModule(); LocateIndicationProviderNames(req_provider, req_providerModule, providerName,providerLocation); Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, "JMPIProviderManager::handleDeleteSubscriptionRequest - Host name: $0 Name space: $1 Provider name(s): $2", System::getHostName(), request->nameSpace.getString(), providerName); DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteSubscriptionRequest: hostname = "<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."<NewObject(jv->SelectExpClassRef,jv->SelectExpNewI,jObj); JMPIjvm::checkException(env); jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &eSelx->classNames[0]); jobject jRef = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj); JMPIjvm::checkException(env); jstring jType = env->NewStringUTF(request->nameSpace.getString().getCString()); JMPIjvm::checkException(env); env->CallVoidMethod((jobject)pr.jProvider, id, jSel, jType, jRef, (jboolean)(prec==NULL)); JMPIjvm::checkException(env); // // Decrement count of current subscriptions for this provider // if (ph.GetProvider ().decrementSubscriptionsAndTestIfZero ()) { // // If there are no current subscriptions after the decrement, // the last subscription has been deleted // Call the provider's disableIndications method // if (_subscriptionInitComplete) { prec->enabled = false; if (prec->handler) delete prec->handler; prec->handler = NULL; } } STAT_PMS_PROVIDEREND; delete eSelx; delete qContext; delete srec; break; } case METHOD_UNKNOWN: { DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteSubscriptionRequest: should not be here!"<(const_cast(message)); PEGASUS_ASSERT(request != 0); // get provider module name String moduleName; CIMInstance mInstance = request->providerModule; Uint32 pos = mInstance.findProperty(CIMName ("Name")); if(pos != PEG_NOT_FOUND) { mInstance.getProperty(pos).getValue().get(moduleName); } Boolean disableProviderOnly = request->disableProviderOnly; Array operationalStatus; // Assume success. operationalStatus.append(CIM_MSE_OPSTATUS_VALUE_STOPPED); // // Unload providers // Array _pInstances = request->providers; CIMDisableModuleResponseMessage * response = new CIMDisableModuleResponseMessage( request->messageId, CIMException(), request->queueIds.copyAndPop(), operationalStatus); PEGASUS_ASSERT(response != 0); // preserve message key response->setKey(request->getKey()); // // Set HTTP method in response from request // response->setHttpMethod (request->getHttpMethod ()); PEG_METHOD_EXIT(); return(response); } Message * JMPIProviderManager::handleEnableModuleRequest(const Message * message) throw() { PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "JMPIProviderManager::handleEnableModuleRequest"); CIMEnableModuleRequestMessage * request = dynamic_cast(const_cast(message)); PEGASUS_ASSERT(request != 0); Array operationalStatus; operationalStatus.append(CIM_MSE_OPSTATUS_VALUE_OK); CIMEnableModuleResponseMessage * response = new CIMEnableModuleResponseMessage( request->messageId, CIMException(), request->queueIds.copyAndPop(), operationalStatus); PEGASUS_ASSERT(response != 0); // preserve message key response->setKey(request->getKey()); // Set HTTP method in response from request response->setHttpMethod (request->getHttpMethod ()); PEG_METHOD_EXIT(); return(response); } Message * JMPIProviderManager::handleStopAllProvidersRequest(const Message * message) throw() { PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "JMPIProviderManager::handleStopAllProvidersRequest"); CIMStopAllProvidersRequestMessage * request = dynamic_cast(const_cast(message)); PEGASUS_ASSERT(request != 0); CIMStopAllProvidersResponseMessage * response = new CIMStopAllProvidersResponseMessage( request->messageId, CIMException(), request->queueIds.copyAndPop()); PEGASUS_ASSERT(response != 0); // preserve message key response->setKey(request->getKey()); // Set HTTP method in response from request response->setHttpMethod (request->getHttpMethod ()); // tell the provider manager to shutdown all the providers providerManager.shutdownAllProviders(); PEG_METHOD_EXIT(); return(response); } Message * JMPIProviderManager::handleInitializeProviderRequest(const Message * message) { PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "JMPIProviderManager::handleInitializeProviderRequest"); HandlerIntroInit(InitializeProvider,message,request,response,handler); try { // 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); } HandlerCatch(handler); PEG_METHOD_EXIT(); return(response); } Message * JMPIProviderManager::handleSubscriptionInitCompleteRequest (const Message * message) { PEG_METHOD_ENTER (TRC_PROVIDERMANAGER, "JMPIProviderManager::handleSubscriptionInitCompleteRequest"); CIMSubscriptionInitCompleteRequestMessage * request = dynamic_cast (const_cast (message)); PEGASUS_ASSERT (request != 0); CIMSubscriptionInitCompleteResponseMessage * response = dynamic_cast (request->buildResponse ()); PEGASUS_ASSERT (response != 0); // // Set indicator // _subscriptionInitComplete = true; // // For each provider that has at least one subscription, call // provider's enableIndications method // Array enableProviders; enableProviders = providerManager.getIndicationProvidersToEnable (); Uint32 numProviders = enableProviders.size (); for (Uint32 i = 0; i < numProviders; i++) { try { CIMInstance provider; provider = enableProviders [i]->getProviderInstance (); // // Get cached or load new provider module // JMPIProvider::OpProviderHolder ph = providerManager.getProvider (enableProviders [i]->getModule ()->getFileName (), enableProviders [i]->getName ()); indProvRecord * prec = NULL; provTab.lookup (enableProviders [i]->getName (), prec); if (prec) { prec->enabled = true; CIMRequestMessage * request = 0; CIMResponseMessage * response = 0; prec->handler = new EnableIndicationsResponseHandler( request, response, provider, _indicationCallback, _responseChunkCallback); } } catch (CIMException & e) { PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2, "CIMException: " + e.getMessage ()); } catch (Exception & e) { PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2, "Exception: " + e.getMessage ()); } catch(...) { PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2, "Unknown error in handleSubscriptionInitCompleteRequest"); } } PEG_METHOD_EXIT (); return (response); } Message * JMPIProviderManager::handleUnsupportedRequest(const Message * message) throw() { PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleUnsupportedRequest"); CIMRequestMessage* request = dynamic_cast(const_cast(message)); PEGASUS_ASSERT(request != 0 ); CIMResponseMessage* response = request->buildResponse(); response->cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_NOT_SUPPORTED, String::EMPTY); PEG_METHOD_EXIT(); return response; } ProviderName JMPIProviderManager::_resolveProviderName( const ProviderIdContainer & providerId) { String providerName; String fileName; String interfaceName; CIMValue genericValue; genericValue = providerId.getProvider().getProperty( providerId.getProvider().findProperty("Name")).getValue(); genericValue.get(providerName); genericValue = providerId.getModule().getProperty( providerId.getModule().findProperty("Location")).getValue(); genericValue.get(fileName); fileName = resolveFileName(fileName); // ATTN: This attribute is probably not required genericValue = providerId.getModule().getProperty( providerId.getModule().findProperty("InterfaceType")).getValue(); genericValue.get(interfaceName); return ProviderName(providerName, fileName, interfaceName, 0); } String JMPIProviderManager::resolveFileName(String fileName) { String name; #if defined(PEGASUS_OS_TYPE_WINDOWS) name = fileName; // + String(".dll"); #elif defined(PEGASUS_OS_HPUX) && defined(PEGASUS_PLATFORM_HPUX_PARISC_ACC) name = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir")); name.append(String("/") + fileName); // + String(".sl")); #elif defined(PEGASUS_OS_HPUX) && !defined(PEGASUS_PLATFORM_HPUX_PARISC_ACC) name = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir")); name.append(String("/") + fileName); // + String(".so")); #elif defined(PEGASUS_OS_OS400) name = filrName; #else name = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir")); name.append(String("/") + fileName); // + String(".so")); #endif return name; } PEGASUS_NAMESPACE_END