//%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. // //============================================================================== // //%///////////////////////////////////////////////////////////////////////////// #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) { static const char *methodNames[][3] = { // CIMProvider {"snia 2.0", "initialize", "(Lorg/pegasus/jmpi/CIMOMHandle;)V"}, {"snia 2.0", "cleanup", "()V"}, // InstanceProvider {"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 {"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 {"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 {"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 // EventProvider {"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 // ProviderAdapter // JMPI_TestPropertyTypes {"JMPI_TestPropertyTypes", "findObjectPath", "(Lorg/pegasus/jmpi/CIMObjectPath;)I"}, {"JMPI_TestPropertyTypes", "testPropertyTypesValue", "(Lorg/pegasus/jmpi/CIMInstance;)V"} }; if (!env) { DDD(cout<<"--- JMPIProviderManager::debugPrintMethodPointers:" " env is NULL!"<GetMethodID(jc,methodNames[i][1], methodNames[i][2]); DDD(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); 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); 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_SUBSCRIPTION_INIT_COMPLETE_REQUEST_MESSAGE: response = handleSubscriptionInitCompleteRequest (request); break; default: PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL2, "*** Unsupported Request %d", request->getType() )); DDD(cout<<"--- JMPIProviderManager::processMessage:" " Unsupported request "<getType ()<(const_cast \ (message)); \ PEGASUS_ASSERT(request != 0); \ CIM##type##ResponseMessage * response = \ dynamic_cast(request->buildResponse()); \ PEGASUS_ASSERT(response != 0); \ type1##ResponseHandler handler(request, response, _responseChunkCallback); #define HandlerIntroInd(type,message,request,response,handler) \ HandlerIntroBase(type,Operation,message,request,response,handler) #define HandlerIntroInit(type,message,request,response,handler) \ HandlerIntroBase(type,Operation,message,request,response,handler) #define HandlerIntro(type,message,request,response,handler) \ HandlerIntroBase(type,type,message,request,response,handler) #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_CSTRING(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); typedef enum { METHOD_UNKNOWN = 0, METHOD_CIMINSTANCEPROVIDER, METHOD_INSTANCEPROVIDER, METHOD_INSTANCEPROVIDER2, // same as METHOD_CIMINSTANCEPROVIDER2 } 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(cout<<"--- JMPIProviderManager::handleGetInstanceRequest: " "hostname = "<operationContext.get(ProviderIdContainer::NAME), interfaceType, interfaceVersion); if (interfaceType == "JMPI") { 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_INSTANCEPROVIDER; DDD(cout<<"--- JMPIProviderManager::handleGetInstanceRequest: " "found METHOD_INSTANCEPROVIDER."<ExceptionClear(); 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_CIMINSTANCEPROVIDER; DDD(cout<<"--- JMPIProviderManager::handleGetInstanceRequest" ": found METHOD_CIMINSTANCEPROVIDER."<GetMethodID( (jclass)pr.jProviderClass, "getInstance", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMClass;ZZ[Ljava/lang/String;)" "Lorg/pegasus/jmpi/CIMInstance;"); if (id != NULL) { eMethodFound = METHOD_INSTANCEPROVIDER2; DDD(cout<<"--- JMPIProviderManager::handleGetInstanceRequest: " "found METHOD_INSTANCEPROVIDER2."<NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jopRef); JMPIjvm::checkException(env); CIMClass cls; try { DDD(cout<<"enter: cimom_handle->getClass("<<__LINE__<<") " <instanceName.getClassName()<getClass( context, request->nameSpace, request->instanceName.getClassName(), false, true, true, CIMPropertyList()); DDD (cout<<"exit: cimom_handle->getClass("<<__LINE__<<") " <instanceName.getClassName()<getClass(" <<__LINE__<<") "<NewObject( jv->CIMClassClassRef, jv->CIMClassNewJ, jcimClassRef); JMPIjvm::checkException(env); jobjectArray jPropertyList = getList(jv,env,request->propertyList); StatProviderTimeMeasurement providerTime(response); jobject jciRet = env->CallObjectMethod((jobject)pr.jProvider, id, jop, JMPI_LOCALONLY, JMPI_INCLUDE_QUALIFIERS, request->includeClassOrigin, jPropertyList, jcimClass); JMPIjvm::checkException(env); handler.processing(); if (jciRet) { jlong jciRetRef = env->CallLongMethod( jciRet, JMPIjvm::jv.CIMInstanceCInst); CIMInstance *ciRet = DEBUG_ConvertJavaToC( jlong, CIMInstance*, jciRetRef); handler.deliver(*ciRet); } handler.complete(); break; } /* Fix for 4238 */ case METHOD_INSTANCEPROVIDER2: { jlong jocRef = DEBUG_ConvertCToJava( OperationContext*, jlong, &request->operationContext); jobject joc = env->NewObject( jv->OperationContextClassRef, jv->OperationContextNewJ, jocRef); jlong jopRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jopRef); JMPIjvm::checkException(env); CIMClass cls; try { DDD (cout<<"enter: cimom_handle->getClass("<<__LINE__ <<") "<instanceName.getClassName()<getClass( context, request->nameSpace, request->instanceName.getClassName(), false, true, true, CIMPropertyList()); DDD (cout<<"exit: cimom_handle->getClass("<<__LINE__ <<") "<instanceName.getClassName()<getClass(" <<__LINE__<<") "<NewObject( jv->CIMClassClassRef, jv->CIMClassNewJ, jcimClassRef); JMPIjvm::checkException(env); jobjectArray jPropertyList = getList(jv,env,request->propertyList); StatProviderTimeMeasurement providerTime(response); jobject jciRet = env->CallObjectMethod( (jobject)pr.jProvider, id, joc, jop, jcimClass, JMPI_INCLUDE_QUALIFIERS, request->includeClassOrigin, jPropertyList); JMPIjvm::checkException(env); if (joc) { env->CallVoidMethod( joc, JMPIjvm::jv.OperationContextUnassociate); JMPIjvm::checkException(env); } handler.processing(); if (jciRet) { jlong jciRetRef = env->CallLongMethod( jciRet, JMPIjvm::jv.CIMInstanceCInst); CIMInstance *ciRet = DEBUG_ConvertJavaToC( jlong, CIMInstance*, jciRetRef); handler.deliver(*ciRet); } handler.complete(); break; } /* Fix for 4238 */ case METHOD_INSTANCEPROVIDER: { jlong jopRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ,jopRef); JMPIjvm::checkException(env); CIMClass cls; try { DDD (cout<<"enter: cimom_handle->getClass("<<__LINE__<<") " <instanceName.getClassName()<getClass( context, request->nameSpace, request->instanceName.getClassName(), false, true, true, CIMPropertyList()); DDD (cout<<"exit: cimom_handle->getClass("<<__LINE__ <<") "<instanceName.getClassName()<getClass(" <<__LINE__<<") "<NewObject( jv->CIMClassClassRef, jv->CIMClassNewJ, jcimClassRef); JMPIjvm::checkException(env); StatProviderTimeMeasurement providerTime(response); // Modified for Bugzilla# 3679 jobject jciRet = env->CallObjectMethod((jobject)pr.jProvider, id, jop, jcimClass, JMPI_LOCALONLY); JMPIjvm::checkException(env); handler.processing(); if (jciRet) { jlong jciRetRef = env->CallLongMethod( jciRet, JMPIjvm::jv.CIMInstanceCInst); CIMInstance *ciRet = DEBUG_ConvertJavaToC( jlong, CIMInstance*, jciRetRef); handler.deliver(*ciRet); } handler.complete(); break; } case METHOD_UNKNOWN: { DDD(cout<<"--- JMPIProviderManager::handleGetInstanceRequest: " "should not be here!"<nameSpace.getString(), request->className.getString()); DDD(cout<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: " "hostname = "<operationContext.get (ProviderIdContainer::NAME), interfaceType, interfaceVersion); if (interfaceType == "JMPI") { id = env->GetMethodID( (jclass)pr.jProviderClass, "enumInstances", "(Lorg/pegasus/jmpi/CIMObjectPath;Z" "Lorg/pegasus/jmpi/CIMClass;Z)Ljava/util/Vector;"); if (id != NULL) { eMethodFound = METHOD_INSTANCEPROVIDER; DDD(cout<<"--- JMPIProviderManager::handleEnumerateInstances" "Request: found METHOD_INSTANCEPROVIDER."<ExceptionClear(); id = env->GetMethodID( (jclass)pr.jProviderClass, "enumerateInstances", "(Lorg/pegasus/jmpi/CIMObjectPath;ZZZ[" "Ljava/lang/String;Lorg/pegasus/jmpi/CIMClass;)[" "Lorg/pegasus/jmpi/CIMInstance;"); if (id != NULL) { eMethodFound = METHOD_CIMINSTANCEPROVIDER; DDD(cout<<"--- JMPIProviderManager::handleEnumerateInstances" "Request: found METHOD_CIMINSTANCEPROVIDER." <GetMethodID( (jclass)pr.jProviderClass, "enumerateInstances", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMClass;ZZ[Ljava/lang/String;)" "Ljava/util/Vector;"); if (id != NULL) { eMethodFound = METHOD_INSTANCEPROVIDER2; DDD(cout<<"--- JMPIProviderManager::handleEnumerateInstances" "Request: found METHOD_INSTANCEPROVIDER2." <ExceptionClear(); id = env->GetMethodID( (jclass)pr.jProviderClass, "enumerateInstances", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMClass;ZZ[" "Ljava/lang/String;)[" "Lorg/pegasus/jmpi/CIMInstance;"); if (id != NULL) { eMethodFound = METHOD_CIMINSTANCEPROVIDER2; DDD(cout<<"--- JMPIProviderManager::handleEnumerateInstances" "Request: found METHOD_CIMINSTANCEPROVIDER2." <NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jcopRef); JMPIjvm::checkException(env); CIMClass cls; try { DDD (cout<<"enter: cimom_handle->getClass("<<__LINE__<<") " <className<getClass(context, request->nameSpace, request->className, false, true, true, CIMPropertyList()); DDD (cout<<"exit: cimom_handle->getClass("<<__LINE__<<") " <className<getClass(" <<__LINE__<<") "<NewObject( jv->CIMClassClassRef, jv->CIMClassNewJ, jccRef); JMPIjvm::checkException(env); jobjectArray jPropertyList = getList(jv,env,request->propertyList); StatProviderTimeMeasurement providerTime(response); jobjectArray jAr = (jobjectArray)env->CallObjectMethod( (jobject)pr.jProvider, id, jcop, JMPI_LOCALONLY, JMPI_INCLUDE_QUALIFIERS, request->includeClassOrigin, jPropertyList, jcc); JMPIjvm::checkException(env); handler.processing(); if (jAr) { for (int i=0,m=env->GetArrayLength(jAr); iGetObjectArrayElement(jAr,i); JMPIjvm::checkException(env); jlong jciRetRef = env->CallLongMethod( jciRet, JMPIjvm::jv.CIMInstanceCInst); CIMInstance *ciRet = DEBUG_ConvertJavaToC( jlong, CIMInstance*, jciRetRef); /* Fix for 4237 */ CIMClass cls; try { DDD(cout<<"enter: cimom_handle->getClass(" <<__LINE__<<") "<getClassName()<getClass(context, request->nameSpace, ciRet->getClassName(), false, true, true, CIMPropertyList()); DDD (cout<<"exit: cimom_handle->getClass(" <<__LINE__<<") "<getClassName()<getClass(" <<__LINE__<<") "<getPath(); CIMObjectPath iop = ciRet->buildPath(cls); JMPIjvm::checkException(env); handler.deliver(*ciRet); } } handler.complete(); break; } case METHOD_CIMINSTANCEPROVIDER2: { jlong jocRef = DEBUG_ConvertCToJava( OperationContext*, jlong, &request->operationContext); jobject joc = env->NewObject( jv->OperationContextClassRef, jv->OperationContextNewJ, jocRef); jlong jcopRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jcop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jcopRef); JMPIjvm::checkException(env); CIMClass cls; try { DDD (cout<<"enter: cimom_handle->getClass(" <<__LINE__<<") "<className<getClass(context, request->nameSpace, request->className, false, true, true, CIMPropertyList()); DDD (cout<<"exit: cimom_handle->getClass(" <<__LINE__<<") "<className<getClass(" <<__LINE__<<") "<NewObject( jv->CIMClassClassRef, jv->CIMClassNewJ, jccRef); JMPIjvm::checkException(env); jobjectArray jPropertyList = getList(jv,env,request->propertyList); StatProviderTimeMeasurement providerTime(response); jobjectArray jAr = (jobjectArray)env->CallObjectMethod( (jobject)pr.jProvider, id, joc, jcop, jcc, JMPI_INCLUDE_QUALIFIERS, request->includeClassOrigin, jPropertyList); JMPIjvm::checkException(env); if (joc) { env->CallVoidMethod(joc,JMPIjvm::jv.OperationContextUnassociate); JMPIjvm::checkException(env); } handler.processing(); if (jAr) { for (int i=0,m=env->GetArrayLength(jAr); iGetObjectArrayElement(jAr,i); JMPIjvm::checkException(env); jlong jciRetRef = env->CallLongMethod( jciRet, JMPIjvm::jv.CIMInstanceCInst); CIMInstance *ciRet = DEBUG_ConvertJavaToC( jlong, CIMInstance*, jciRetRef); /* Fix for 4237 */ CIMClass cls; try { DDD (cout<<"enter: cimom_handle->getClass(" <<__LINE__<<") "<getClassName()<getClass(context, request->nameSpace, ciRet->getClassName(), false, true, true, CIMPropertyList()); DDD (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_INSTANCEPROVIDER2: { jlong jocRef = DEBUG_ConvertCToJava( OperationContext*, jlong, &request->operationContext); jobject joc = env->NewObject( jv->OperationContextClassRef, jv->OperationContextNewJ, jocRef); jlong jcopRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jcop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jcopRef); JMPIjvm::checkException(env); CIMClass cls; try { DDD (cout<<"enter: cimom_handle->getClass(" <<__LINE__<<") "<className<getClass (context, request->nameSpace, request->className, false, true, true, CIMPropertyList()); DDD (cout<<"exit: cimom_handle->getClass(" <<__LINE__<<") "<className<getClass(" <<__LINE__<<") "<NewObject( jv->CIMClassClassRef, jv->CIMClassNewJ, jccRef); JMPIjvm::checkException(env); jobjectArray jPropertyList = getList(jv,env,request->propertyList); StatProviderTimeMeasurement providerTime(response); jobject jVec = env->CallObjectMethod((jobject)pr.jProvider, id, joc, jcop, jcc, JMPI_INCLUDE_QUALIFIERS, request->includeClassOrigin, jPropertyList); JMPIjvm::checkException(env); if (joc) { env->CallVoidMethod(joc,JMPIjvm::jv.OperationContextUnassociate); JMPIjvm::checkException(env); } handler.processing(); if (jVec) { for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); iCallObjectMethod( jVec, JMPIjvm::jv.VectorElementAt, i); JMPIjvm::checkException(env); jlong jciRetRef = env->CallLongMethod( jciRet, JMPIjvm::jv.CIMInstanceCInst); CIMInstance *ciRet = DEBUG_ConvertJavaToC( jlong, CIMInstance*, jciRetRef); /* Fix for 4237 */ CIMClass cls; try { DDD (cout<<"enter: cimom_handle->getClass(" <<__LINE__<<") "<getClassName()<getClass(context, request->nameSpace, ciRet->getClassName(), false, true, true, CIMPropertyList()); DDD (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_INSTANCEPROVIDER: { jlong jcopRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jcop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jcopRef); JMPIjvm::checkException(env); CIMClass cls; try { DDD (cout<<"enter: cimom_handle->getClass(" <<__LINE__<<") "<className<getClass(context, request->nameSpace, request->className, false, true, true, CIMPropertyList()); DDD (cout<<"exit: cimom_handle->getClass(" <<__LINE__<<") "<className<getClass(" <<__LINE__<<") "<NewObject( jv->CIMClassClassRef, jv->CIMClassNewJ, jccRef); JMPIjvm::checkException(env); StatProviderTimeMeasurement providerTime(response); // Modified for Bugzilla# 3679 jobject jVec = env->CallObjectMethod((jobject)pr.jProvider, id, jcop, request->deepInheritance, jcc, JMPI_LOCALONLY); JMPIjvm::checkException(env); handler.processing(); if (jVec) { for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); iCallObjectMethod( jVec, JMPIjvm::jv.VectorElementAt, i); JMPIjvm::checkException(env); jlong jciRetRef = env->CallLongMethod( jciRet, JMPIjvm::jv.CIMInstanceCInst); CIMInstance *ciRet = DEBUG_ConvertJavaToC( jlong, CIMInstance*, jciRetRef); /* Fix for 4237 */ CIMClass cls; try { DDD (cout<<"enter: cimom_handle->getClass(" <<__LINE__<<") "<getClassName()<getClass(context, request->nameSpace, ciRet->getClassName(), false, true, true, CIMPropertyList()); DDD (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(cout<<"--- JMPIProviderManager::handleEnumerateInstancesRequest" ": should not be here!"<nameSpace.getString(), request->className.getString()); DDD(cout<<"--- JMPIProviderManager::handleEnumerateInstanceNamesRequest" ": hostname = " <operationContext.get(ProviderIdContainer::NAME), interfaceType, interfaceVersion); if (interfaceType == "JMPI") { id = env->GetMethodID( (jclass)pr.jProviderClass, "enumInstances", "(Lorg/pegasus/jmpi/CIMObjectPath;" "ZLorg/pegasus/jmpi/CIMClass;)Ljava/util/Vector;"); if (id != NULL) { eMethodFound = METHOD_INSTANCEPROVIDER; DDD (cout<<"--- JMPIProviderManager::" "handleEnumerateInstanceNamesRequest: found " "METHOD_INSTANCEPROVIDER." <ExceptionClear(); id = env->GetMethodID( (jclass)pr.jProviderClass, "enumerateInstanceNames", "(Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMClass;)[" "Lorg/pegasus/jmpi/CIMObjectPath;"); if (id != NULL) { eMethodFound = METHOD_CIMINSTANCEPROVIDER; DDD (cout<<"--- JMPIProviderManager::" "handleEnumerateInstanceNamesRequest: found " "METHOD_CIMINSTANCEPROVIDER." <GetMethodID( (jclass)pr.jProviderClass, "enumerateInstanceNames", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMClass;)Ljava/util/Vector;"); if (id != NULL) { eMethodFound = METHOD_INSTANCEPROVIDER2; DDD (cout<<"--- JMPIProviderManager::" "handleEnumerateInstanceNamesRequest: found " "METHOD_INSTANCEPROVIDER2." <ExceptionClear(); id = env->GetMethodID( (jclass)pr.jProviderClass, "enumerateInstanceNames", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMClass;)" "[Lorg/pegasus/jmpi/CIMObjectPath;"); if (id != NULL) { eMethodFound = METHOD_CIMINSTANCEPROVIDER2; DDD(cout<<"--- JMPIProviderManager::" "handleEnumerateInstanceNamesRequest: found " "METHOD_CIMINSTANCEPROVIDER2." <NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jcopRef); JMPIjvm::checkException(env); CIMClass cls; try { DDD(cout<<"enter: cimom_handle->getClass(" <<__LINE__<<") "<className<getClass(context, request->nameSpace, request->className, false, true, true, CIMPropertyList()); DDD(cout<<"exit: cimom_handle->getClass(" <<__LINE__<<") "<className<getClass(" <<__LINE__<<") "<NewObject( jv->CIMClassClassRef, jv->CIMClassNewJ, jcimClassRef); JMPIjvm::checkException(env); StatProviderTimeMeasurement providerTime(response); jobjectArray jAr = (jobjectArray)env->CallObjectMethod( (jobject)pr.jProvider, id, jcop, jcimClass); JMPIjvm::checkException(env); handler.processing(); if (jAr) { for (int i=0,m=env->GetArrayLength(jAr); iGetObjectArrayElement(jAr,i); JMPIjvm::checkException(env); jlong jcopRetRef = env->CallLongMethod( jcopRet, JMPIjvm::jv.CIMObjectPathCInst); CIMObjectPath *copRet = DEBUG_ConvertJavaToC( jlong, CIMObjectPath*, jcopRetRef); JMPIjvm::checkException(env); handler.deliver(*copRet); } } handler.complete(); break; } case METHOD_CIMINSTANCEPROVIDER2: { jlong jocRef = DEBUG_ConvertCToJava( OperationContext*, jlong, &request->operationContext); jobject joc = env->NewObject( jv->OperationContextClassRef, jv->OperationContextNewJ, jocRef); jlong jcopRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jcop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jcopRef); JMPIjvm::checkException(env); CIMClass cls; try { DDD(cout<<"enter: cimom_handle->getClass(" <<__LINE__<<") "<className<getClass(context, request->nameSpace, request->className, false, true, true, CIMPropertyList()); DDD(cout<<"exit: cimom_handle->getClass(" <<__LINE__<<") "<className<getClass(" <<__LINE__<<") "<NewObject( jv->CIMClassClassRef, jv->CIMClassNewJ, jcimClassRef); JMPIjvm::checkException(env); StatProviderTimeMeasurement providerTime(response); jobjectArray jAr = (jobjectArray)env->CallObjectMethod( (jobject)pr.jProvider, id, joc, jcop, jcimClass); JMPIjvm::checkException(env); if (joc) { env->CallVoidMethod(joc,JMPIjvm::jv.OperationContextUnassociate); JMPIjvm::checkException(env); } handler.processing(); if (jAr) { for (int i=0,m=env->GetArrayLength(jAr); iGetObjectArrayElement(jAr,i); JMPIjvm::checkException(env); jlong jcopRetRef = env->CallLongMethod( jcopRet, JMPIjvm::jv.CIMObjectPathCInst); CIMObjectPath *copRet = DEBUG_ConvertJavaToC( jlong, CIMObjectPath*, jcopRetRef); JMPIjvm::checkException(env); handler.deliver(*copRet); } } handler.complete(); break; } case METHOD_INSTANCEPROVIDER2: { jlong jocRef = DEBUG_ConvertCToJava( OperationContext*, jlong, &request->operationContext); jobject joc = env->NewObject( jv->OperationContextClassRef, jv->OperationContextNewJ, jocRef); jlong jcopRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jcop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jcopRef); JMPIjvm::checkException(env); CIMClass cls; try { DDD(cout<<"enter: cimom_handle->getClass(" <<__LINE__<<") "<className<getClass(context, request->nameSpace, request->className, false, true, true, CIMPropertyList()); DDD(cout<<"exit: cimom_handle->getClass(" <<__LINE__<<") "<className<getClass(" <<__LINE__<<") "<NewObject( jv->CIMClassClassRef, jv->CIMClassNewJ, jcimClassRef); JMPIjvm::checkException(env); StatProviderTimeMeasurement providerTime(response); jobject jVec = env->CallObjectMethod((jobject)pr.jProvider, id, joc, jcop, jcimClass); JMPIjvm::checkException(env); if (joc) { env->CallVoidMethod(joc,JMPIjvm::jv.OperationContextUnassociate); JMPIjvm::checkException(env); } handler.processing(); if (jVec) { for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); iCallObjectMethod( jVec, JMPIjvm::jv.VectorElementAt, i); JMPIjvm::checkException(env); jlong jcopRetRef = env->CallLongMethod( jcopRet, JMPIjvm::jv.CIMObjectPathCInst); CIMObjectPath *copRet = DEBUG_ConvertJavaToC( jlong, CIMObjectPath*, jcopRetRef); JMPIjvm::checkException(env); handler.deliver(*copRet); } } handler.complete(); break; } case METHOD_INSTANCEPROVIDER: { jlong jcopRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jcop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jcopRef); JMPIjvm::checkException(env); CIMClass cls; try { DDD(cout<<"enter: cimom_handle->getClass(" <<__LINE__<<") "<className<getClass(context, request->nameSpace, request->className, false, true, true, CIMPropertyList()); DDD(cout<<"exit: cimom_handle->getClass(" <<__LINE__<<") "<className<getClass(" <<__LINE__<<") "<NewObject( jv->CIMClassClassRef, jv->CIMClassNewJ, jcimClassRef); JMPIjvm::checkException(env); StatProviderTimeMeasurement providerTime(response); jobject jVec = env->CallObjectMethod((jobject)pr.jProvider, id, jcop, true, jcimClass); JMPIjvm::checkException(env); handler.processing(); if (jVec) { for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); iCallObjectMethod( jVec, JMPIjvm::jv.VectorElementAt, i); JMPIjvm::checkException(env); jlong jcopRetRef = env->CallLongMethod( jcopRet, JMPIjvm::jv.CIMObjectPathCInst); CIMObjectPath *copRet = DEBUG_ConvertJavaToC( jlong, CIMObjectPath*, jcopRetRef); JMPIjvm::checkException(env); handler.deliver(*copRet); } } handler.complete(); break; } case METHOD_UNKNOWN: { DDD (cout<<"--- JMPIProviderManager::" "handleEnumerateInstanceNamesRequest: should not be" " here!" <nameSpace.getString(), request->newInstance.getPath().getClassName().getString()); DDD(cout<<"--- JMPIProviderManager::handleCreateInstanceRequest: " "hostname = " <operationContext.get( ProviderIdContainer::NAME), interfaceType, interfaceVersion); if (interfaceType == "JMPI") { id = env->GetMethodID( (jclass)pr.jProviderClass, "createInstance", "(Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMInstance;)" "Lorg/pegasus/jmpi/CIMObjectPath;"); if (id != NULL) { eMethodFound = METHOD_INSTANCEPROVIDER; DDD (cout<<"--- JMPIProviderManager::handleCreateInstanceRequest" ": found METHOD_INSTANCEPROVIDER." <GetMethodID( (jclass)pr.jProviderClass, "createInstance", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMInstance;)" "Lorg/pegasus/jmpi/CIMObjectPath;"); if (id != NULL) { eMethodFound = METHOD_INSTANCEPROVIDER2; DDD(cout<<"--- JMPIProviderManager::handleCreateInstanceRequest:" " found METHOD_INSTANCEPROVIDER2."<NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jcopRef); JMPIjvm::checkException(env); CIMInstance *ci = new CIMInstance (request->newInstance); jlong jciRef = DEBUG_ConvertCToJava (CIMInstance*, jlong, ci); jobject jci = env->NewObject( jv->CIMInstanceClassRef, jv->CIMInstanceNewJ, jciRef); JMPIjvm::checkException(env); DDD(cout<<"--- JMPIProviderManager::handleCreateInstanceRequest: " "id = "<nameSpace.getString(), request->modifiedInstance.getPath().getClassName().getString()); DDD(cout<<"--- JMPIProviderManager::handleModifyInstanceRequest: " "hostname = "<operationContext.get( ProviderIdContainer::NAME), interfaceType, interfaceVersion); if (interfaceType == "JMPI") { id = env->GetMethodID( (jclass)pr.jProviderClass, "setInstance", "(Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMInstance;)V"); if (id != NULL) { eMethodFound = METHOD_INSTANCEPROVIDER; DDD(cout<<"--- JMPIProviderManager::handleModifyInstanceRequest:" " found METHOD_INSTANCEPROVIDER."<ExceptionClear(); id = env->GetMethodID( (jclass)pr.jProviderClass, "setInstance", "(Lorg/pegasus/jmpi/CIMObjectPath;" "Z[Ljava/lang/String)V"); if (id != NULL) { eMethodFound = METHOD_CIMINSTANCEPROVIDER; DDD(cout<<"--- JMPIProviderManager::" "handleModifyInstanceRequest: found " "METHOD_CIMINSTANCEPROVIDER." <GetMethodID( (jclass)pr.jProviderClass, "setInstance", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMInstance;)V"); if (id != NULL) { eMethodFound = METHOD_INSTANCEPROVIDER2; DDD(cout<<"--- JMPIProviderManager::handleModifyInstanceRequest:" " found METHOD_INSTANCEPROVIDER2."<operationContext); jobject joc = env->NewObject( jv->OperationContextClassRef, jv->OperationContextNewJ, jocRef); jlong jcopRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jcop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jcopRef); JMPIjvm::checkException(env); CIMInstance *ci = new CIMInstance (request->modifiedInstance); jlong jciRef = DEBUG_ConvertCToJava (CIMInstance*, jlong, ci); jobject jci = env->NewObject( jv->CIMInstanceClassRef, jv->CIMInstanceNewJ, jciRef); JMPIjvm::checkException(env); jobjectArray jPropertyList = getList(jv,env,request->propertyList); StatProviderTimeMeasurement providerTime(response); env->CallVoidMethod((jobject)pr.jProvider, id, joc, jcop, jci); JMPIjvm::checkException(env); if (joc) { env->CallVoidMethod(joc,JMPIjvm::jv.OperationContextUnassociate); JMPIjvm::checkException(env); } break; } case METHOD_CIMINSTANCEPROVIDER: { jlong jcopRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jcop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jcopRef); JMPIjvm::checkException(env); CIMInstance *ci = new CIMInstance (request->modifiedInstance); jlong jciRef = DEBUG_ConvertCToJava (CIMInstance*, jlong, ci); jobject jci = env->NewObject( jv->CIMInstanceClassRef, jv->CIMInstanceNewJ, jciRef); JMPIjvm::checkException(env); jobjectArray jPropertyList = getList(jv,env,request->propertyList); StatProviderTimeMeasurement providerTime(response); env->CallVoidMethod((jobject)pr.jProvider, id, jcop, jci, JMPI_INCLUDE_QUALIFIERS, jPropertyList); JMPIjvm::checkException(env); break; } case METHOD_INSTANCEPROVIDER: { jlong jcopRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jcop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jcopRef); JMPIjvm::checkException(env); CIMInstance *ci = new CIMInstance (request->modifiedInstance); jlong jciRef = DEBUG_ConvertCToJava (CIMInstance*, jlong, ci); jobject jci = env->NewObject( jv->CIMInstanceClassRef, jv->CIMInstanceNewJ, jciRef); JMPIjvm::checkException(env); StatProviderTimeMeasurement providerTime(response); env->CallVoidMethod((jobject)pr.jProvider, id, jcop, jci); JMPIjvm::checkException(env); break; } case METHOD_UNKNOWN: { DDD(cout<<"--- JMPIProviderManager::handleModifyInstanceRequest: " "should not be here!" <nameSpace.getString(), request->instanceName.getClassName().getString()); DDD(cout<<"--- JMPIProviderManager::handleDeleteInstanceRequest: " "hostname = " <operationContext.get(ProviderIdContainer::NAME), interfaceType, interfaceVersion); if (interfaceType == "JMPI") { id = env->GetMethodID((jclass)pr.jProviderClass, "deleteInstance", "(Lorg/pegasus/jmpi/CIMObjectPath;)V"); if (id != NULL) { eMethodFound = METHOD_INSTANCEPROVIDER; DDD(cout<<"--- JMPIProviderManager::handleDeleteInstanceRequest:" " found METHOD_INSTANCEPROVIDER." <GetMethodID( (jclass)pr.jProviderClass, "deleteInstance", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/CIMObjectPath;)V"); if (id != NULL) { eMethodFound = METHOD_INSTANCEPROVIDER2; DDD(cout<<"--- JMPIProviderManager::handleDeleteInstanceRequest:" " found METHOD_INSTANCEPROVIDER2." <operationContext); jobject joc = env->NewObject( jv->OperationContextClassRef, jv->OperationContextNewJ, jocRef); jlong jcopRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jcop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jcopRef); JMPIjvm::checkException(env); StatProviderTimeMeasurement providerTime(response); env->CallVoidMethod((jobject)pr.jProvider, id, joc, jcop); JMPIjvm::checkException(env); if (joc) { env->CallVoidMethod(joc,JMPIjvm::jv.OperationContextUnassociate); JMPIjvm::checkException(env); } break; } case METHOD_INSTANCEPROVIDER: { jlong jcopRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jcop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jcopRef); JMPIjvm::checkException(env); StatProviderTimeMeasurement providerTime(response); env->CallVoidMethod((jobject)pr.jProvider, id, jcop); JMPIjvm::checkException(env); break; } case METHOD_UNKNOWN: { DDD(cout<<"--- JMPIProviderManager::handleDeleteInstanceRequest: " "should not be here!"<nameSpace.getString(), request->className.getString()); DDD(cout<<"--- JMPIProviderManager::handleExecQueryRequest: hostname = " <queryLanguage<<", query: " <query<operationContext.get( ProviderIdContainer::NAME), interfaceType, interfaceVersion); if (interfaceType == "JMPI") { id = env->GetMethodID( (jclass)pr.jProviderClass, "execQuery", "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;" "ILorg/pegasus/jmpi/CIMClass;)Ljava/util/Vector;"); if (id != NULL) { eMethodFound = METHOD_INSTANCEPROVIDER; DDD(cout<<"--- JMPIProviderManager::handleExecQueryRequest: " "found METHOD_INSTANCEPROVIDER."<ExceptionClear(); 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_CIMINSTANCEPROVIDER; DDD(cout<<"--- JMPIProviderManager::handleExecQueryRequest: " "found METHOD_CIMINSTANCEPROVIDER."<GetMethodID( (jclass)pr.jProviderClass, "execQuery", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMClass;Ljava/lang/String;" "Ljava/lang/String;)Ljava/util/Vector;"); if (id != NULL) { eMethodFound = METHOD_INSTANCEPROVIDER2; DDD(cout<<"--- JMPIProviderManager::handleExecQueryRequest: " "found METHOD_INSTANCEPROVIDER2."<ExceptionClear(); id = env->GetMethodID( (jclass)pr.jProviderClass, "execQuery", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMClass;Ljava/lang/String;" "Ljava/lang/String;)" "[Lorg/pegasus/jmpi/CIMInstance;"); if (id != NULL) { eMethodFound = METHOD_CIMINSTANCEPROVIDER2; DDD(cout<<"--- JMPIProviderManager::handleExecQueryRequest: " "found METHOD_CIMINSTANCEPROVIDER2."<NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jcopref); JMPIjvm::checkException(env); jstring jqueryLanguage = env->NewStringUTF( request->queryLanguage.getCString()); jstring jquery = env->NewStringUTF( request->query.getCString()); CIMClass cls; try { DDD(cout<<"enter: cimom_handle->getClass("<<__LINE__ <<") "<className<getClass(context, request->nameSpace, request->className, false, true, true, CIMPropertyList()); DDD (cout<<"exit: cimom_handle->getClass("<<__LINE__<<") " <className<getClass(" <<__LINE__<<") "<NewObject( jv->CIMClassClassRef, jv->CIMClassNewJ, jcls); JMPIjvm::checkException(env); StatProviderTimeMeasurement providerTime(response); jobjectArray jAr = (jobjectArray)env->CallObjectMethod( (jobject)pr.jProvider, id, jcop, jquery, jqueryLanguage, jCc); JMPIjvm::checkException(env); handler.processing(); if (jAr) { for (int i=0,m=env->GetArrayLength(jAr); iGetObjectArrayElement(jAr,i); JMPIjvm::checkException(env); jlong jciRetRef = env->CallLongMethod( jciRet, JMPIjvm::jv.CIMInstanceCInst); CIMInstance *ciRet = DEBUG_ConvertJavaToC( jlong, CIMInstance*, jciRetRef); JMPIjvm::checkException(env); handler.deliver(*ciRet); } } handler.complete(); break; } case METHOD_CIMINSTANCEPROVIDER2: { jlong jocRef = DEBUG_ConvertCToJava( OperationContext*, jlong, &request->operationContext); jobject joc = env->NewObject( jv->OperationContextClassRef, jv->OperationContextNewJ, jocRef); jlong jcopref = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jcop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jcopref); JMPIjvm::checkException(env); jstring jqueryLanguage = env->NewStringUTF( request->queryLanguage.getCString()); jstring jquery = env->NewStringUTF( request->query.getCString()); CIMClass cls; try { DDD (cout<<"enter: cimom_handle->getClass("<<__LINE__<<") " <className<getClass(context, request->nameSpace, request->className, false, true, true, CIMPropertyList()); DDD (cout<<"exit: cimom_handle->getClass("<<__LINE__<<") " <className<getClass(" <<__LINE__<<") "<NewObject( jv->CIMClassClassRef, jv->CIMClassNewJ, jcls); JMPIjvm::checkException(env); StatProviderTimeMeasurement providerTime(response); jobjectArray jAr = (jobjectArray)env->CallObjectMethod( (jobject)pr.jProvider, id, joc, jcop, jquery, jqueryLanguage, jCc); JMPIjvm::checkException(env); if (joc) { env->CallVoidMethod(joc,JMPIjvm::jv.OperationContextUnassociate); JMPIjvm::checkException(env); } handler.processing(); if (jAr) { for (int i=0,m=env->GetArrayLength(jAr); iGetObjectArrayElement(jAr,i); JMPIjvm::checkException(env); jlong jciRetRef = env->CallLongMethod( jciRet, JMPIjvm::jv.CIMInstanceCInst); CIMInstance *ciRet = DEBUG_ConvertJavaToC( jlong, CIMInstance*, jciRetRef); JMPIjvm::checkException(env); handler.deliver(*ciRet); } } handler.complete(); break; } case METHOD_INSTANCEPROVIDER2: { jlong jocRef = DEBUG_ConvertCToJava( OperationContext*, jlong, &request->operationContext); jobject joc = env->NewObject( jv->OperationContextClassRef, jv->OperationContextNewJ, jocRef); jlong jcopref = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jcop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jcopref); JMPIjvm::checkException(env); jstring jqueryLanguage = env->NewStringUTF( request->queryLanguage.getCString()); jstring jquery = env->NewStringUTF( request->query.getCString()); CIMClass cls; try { DDD(cout<<"enter: cimom_handle->getClass("<<__LINE__<<") " <className<getClass(context, request->nameSpace, request->className, false, true, true, CIMPropertyList()); DDD (cout<<"exit: cimom_handle->getClass("<<__LINE__<<") " <className<getClass(" <<__LINE__<<") "<NewObject( jv->CIMClassClassRef, jv->CIMClassNewJ, jcls); JMPIjvm::checkException(env); StatProviderTimeMeasurement providerTime(response); jobject jVec = env->CallObjectMethod ((jobject)pr.jProvider, id, joc, jcop, jCc, jquery, jqueryLanguage); JMPIjvm::checkException(env); if (joc) { env->CallVoidMethod(joc,JMPIjvm::jv.OperationContextUnassociate); JMPIjvm::checkException(env); } 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); DDD(cout<<"--- JMPIProviderManager::handleExecQueryRequest:" " jciRet = "<CallLongMethod( jciRet, JMPIjvm::jv.CIMInstanceCInst); CIMInstance *ciRet = DEBUG_ConvertJavaToC( jlong, CIMInstance*, jciRetRef); JMPIjvm::checkException(env); handler.deliver(*ciRet); } } DDD (cout<<"--- JMPIProviderManager::handleExecQueryRequest: done!" <NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jcopref); JMPIjvm::checkException(env); jstring jqueryLanguage = env->NewStringUTF( request->queryLanguage.getCString()); jstring jquery = env->NewStringUTF( request->query.getCString()); CIMClass cls; try { DDD (cout<<"enter: cimom_handle->getClass("<<__LINE__<<") " <className<getClass(context, request->nameSpace, request->className, false, true, true, CIMPropertyList()); DDD (cout<<"exit: cimom_handle->getClass("<<__LINE__<<") " <className<getClass(" <<__LINE__<<") "<NewObject( jv->CIMClassClassRef, jv->CIMClassNewJ, jcls); JMPIjvm::checkException(env); jlong jql = 0; // @BUG - how to convert? StatProviderTimeMeasurement providerTime(response); jobject jVec = env->CallObjectMethod((jobject)pr.jProvider, id, jcop, jquery, jql, jCc); JMPIjvm::checkException(env); handler.processing(); if (jVec) { for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); iCallObjectMethod( jVec, JMPIjvm::jv.VectorElementAt, i); JMPIjvm::checkException(env); jlong jciRetRef = env->CallLongMethod( jciRet, JMPIjvm::jv.CIMInstanceCInst); CIMInstance *ciRet = DEBUG_ConvertJavaToC( jlong, CIMInstance*, jciRetRef); JMPIjvm::checkException(env); handler.deliver(*ciRet); } } handler.complete(); break; } case METHOD_UNKNOWN: { DDD(cout<<"--- JMPIProviderManager::handleExecQueryRequest: " "should not be here!"<nameSpace.getString(), request->objectName.getClassName().getString()); DDD(cout<<"--- JMPIProviderManager::handleAssociatorsRequest: " "hostname = "<role<<", aCls: " <assocClass<operationContext.get( ProviderIdContainer::NAME), interfaceType, interfaceVersion); if (interfaceType == "JMPI") { id = env->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;"); if (id != NULL) { eMethodFound = METHOD_ASSOCIATORPROVIDER; DDD(cout<<"--- JMPIProviderManager::handleAssociatorsRequest: " "found METHOD_ASSOCIATORPROVIDER."<ExceptionClear(); id = env->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;)" "[Lorg/pegasus/jmpi/CIMInstance;"); if (id != NULL) { eMethodFound = METHOD_CIMASSOCIATORPROVIDER; DDD(cout<<"--- JMPIProviderManager::handleAssociatorsRequest" ": found METHOD_CIMASSOCIATORPROVIDER." <GetMethodID( (jclass)pr.jProviderClass, "associators", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/CIMObjectPath;" "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_ASSOCIATORPROVIDER2; DDD(cout<<"--- JMPIProviderManager::handleAssociatorsRequest: " "found METHOD_ASSOCIATORPROVIDER2."<ExceptionClear(); id = env->GetMethodID( (jclass)pr.jProviderClass, "associators", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/CIMObjectPath;" "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_CIMASSOCIATORPROVIDER2; DDD(cout<<"--- JMPIProviderManager::handleAssociatorsRequest" ": found METHOD_CIMASSOCIATORPROVIDER2." <NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jAssociationNameRef); JMPIjvm::checkException(env); jlong jPathNameRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jPathName = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, 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(cerr<<"--- JMPIProviderManager::handleAssociatorsRequest: " "assocName = " <toString ()<getClass(" <<__LINE__<<") "<getClassName()<getClass(context, request->nameSpace, ciRet->getClassName(), false, true, true, CIMPropertyList()); DDD(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_CIMASSOCIATORPROVIDER2: { jlong jocRef = DEBUG_ConvertCToJava( OperationContext*, jlong, &request->operationContext); jobject joc = env->NewObject( jv->OperationContextClassRef, jv->OperationContextNewJ, jocRef); jlong jAssociationNameRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, assocPath); jobject jAssociationName = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jAssociationNameRef); JMPIjvm::checkException(env); jlong jPathNameRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jPathName = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, 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(cerr<<"--- JMPIProviderManager::handleAssociatorsRequest: " "assocName = " <toString ()<getClass(" <<__LINE__<<") "<getClassName()<getClass(context, request->nameSpace, ciRet->getClassName(), false, true, true, CIMPropertyList()); DDD(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_ASSOCIATORPROVIDER2: { jlong jocRef = DEBUG_ConvertCToJava( OperationContext*, jlong, &request->operationContext); jobject joc = env->NewObject( jv->OperationContextClassRef, jv->OperationContextNewJ, jocRef); jlong jAssociationNameRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, assocPath); jobject jAssociationName = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jAssociationNameRef); JMPIjvm::checkException(env); jlong jPathNameRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jPathName = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, 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(cerr<<"--- JMPIProviderManager::handleAssociatorsRequest: " "assocName = " <toString ()<getClass(" <<__LINE__<<") "<getClassName()<getClass( context, request->nameSpace, ciRet->getClassName(), false, true, true, CIMPropertyList()); DDD(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_ASSOCIATORPROVIDER: { jlong jAssociationNameRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, assocPath); jobject jAssociationName = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jAssociationNameRef); JMPIjvm::checkException(env); jlong jPathNameRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jPathName = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, 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(cerr<<"--- JMPIProviderManager::handleAssociatorsRequest: " "assocName = " <toString ()<getClass(" <<__LINE__<<") "<getClassName()<getClass(context, request->nameSpace, ciRet->getClassName(), false, true, true, CIMPropertyList()); DDD (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(cout<<"--- JMPIProviderManager::handleAssociatorsRequest: " "should not be here!"<nameSpace.getString(), request->objectName.getClassName().getString()); DDD(cout<<"--- JMPIProviderManager::handleAssociatorNamesRequest: " "hostname = " <role<<", aCls: " <assocClass<operationContext.get(ProviderIdContainer::NAME), interfaceType, interfaceVersion); if (interfaceType == "JMPI") { id = env->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;"); if (id != NULL) { eMethodFound = METHOD_ASSOCIATORPROVIDER; DDD(cout<<"--- JMPIProviderManager::handleAssociatorNamesRequest" ": found METHOD_ASSOCIATORPROVIDER."<ExceptionClear(); id = env->GetMethodID( (jclass)pr.jProviderClass, "associatorNames", "(Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;" "Ljava/lang/String;Ljava/lang/String;)" "[Lorg/pegasus/jmpi/CIMObjectPath;"); if (id != NULL) { eMethodFound = METHOD_CIMASSOCIATORPROVIDER; DDD(cout<<"--- JMPIProviderManager::handleAssociatorNames" "Request: found METHOD_CIMASSOCIATORPROVIDER." <GetMethodID( (jclass)pr.jProviderClass, "associatorNames", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;" "Ljava/lang/String;Ljava/lang/String;)" "Ljava/util/Vector;"); if (id != NULL) { eMethodFound = METHOD_ASSOCIATORPROVIDER2; DDD(cout<<"--- JMPIProviderManager::handleAssociatorNamesRequest" ": found METHOD_ASSOCIATORPROVIDER2."<ExceptionClear(); id = env->GetMethodID( (jclass)pr.jProviderClass, "associatorNames", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMObjectPath;" "Ljava/lang/String;Ljava/lang/String;" "Ljava/lang/String;)[" "Lorg/pegasus/jmpi/CIMObjectPath;"); if (id != NULL) { eMethodFound = METHOD_CIMASSOCIATORPROVIDER2; DDD(cout<<"--- JMPIProviderManager::handleAssociatorNames" "Request: found METHOD_CIMASSOCIATORPROVIDER2." <NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jAssociationNameRef); JMPIjvm::checkException(env); jlong jPathNameRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jPathName = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, 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); #ifdef PEGASUS_DEBUG DDD(cerr<<"--- JMPIProviderManager::handleAssociatorNamesRequest: " "assocName = "<toString ()<nameSpace.getString(), request->objectName.getClassName().getString()); DDD(cout<<"--- JMPIProviderManager::handleReferencesRequest: " "hostname = "<role<<" aCls: " <resultClass<operationContext.get(ProviderIdContainer::NAME), interfaceType, interfaceVersion); if (interfaceType == "JMPI") { id = env->GetMethodID( (jclass)pr.jProviderClass, "references", "(Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;" "ZZ[Ljava/lang/String;)Ljava/util/Vector;"); if (id != NULL) { eMethodFound = METHOD_ASSOCIATORPROVIDER; DDD(cout<<"--- JMPIProviderManager::handleReferencesRequest: " "found METHOD_ASSOCIATORPROVIDER."<ExceptionClear(); id = env->GetMethodID( (jclass)pr.jProviderClass, "references", "(Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;" "ZZ[Ljava/lang/String;)" "[Lorg/pegasus/jmpi/CIMInstance;"); if (id != NULL) { eMethodFound = METHOD_CIMASSOCIATORPROVIDER; DDD(cout<<"--- JMPIProviderManager::handleReferencesRequest:" " found METHOD_CIMASSOCIATORPROVIDER."<GetMethodID( (jclass)pr.jProviderClass, "references", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;" "ZZ[Ljava/lang/String;)Ljava/util/Vector;"); if (id != NULL) { eMethodFound = METHOD_ASSOCIATORPROVIDER2; DDD(cout<<"--- JMPIProviderManager::handleReferencesRequest: " "found METHOD_ASSOCIATORPROVIDER2."<ExceptionClear(); id = env->GetMethodID( (jclass)pr.jProviderClass, "references", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMObjectPath;" "Ljava/lang/String;ZZ[Ljava/lang/String;)" "[Lorg/pegasus/jmpi/CIMInstance;"); if (id != NULL) { eMethodFound = METHOD_CIMASSOCIATORPROVIDER2; DDD(cout<<"--- JMPIProviderManager::handleReferencesRequest:" " found METHOD_CIMASSOCIATORPROVIDER2."<NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jAssociationNameRef); JMPIjvm::checkException(env); jlong jPathNameRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jPathName = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, 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(cerr<<"--- JMPIProviderManager::handleReferencesRequest: " "assocName = " <toString ()<getClass(" <<__LINE__<<") "<getClassName()<getClass(context, request->nameSpace, ciRet->getClassName(), false, true, true, CIMPropertyList()); DDD (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_CIMASSOCIATORPROVIDER2: { jlong jocRef = DEBUG_ConvertCToJava( OperationContext*, jlong, &request->operationContext); jobject joc = env->NewObject( jv->OperationContextClassRef, jv->OperationContextNewJ, jocRef); jlong jAssociationNameRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, resultPath); jobject jAssociationName = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jAssociationNameRef); JMPIjvm::checkException(env); jlong jPathNameRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jPathName = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, 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(cerr<<"--- JMPIProviderManager::handleReferencesRequest: " "assocName = " <toString ()<getClass(" <<__LINE__<<") "<getClassName()<getClass(context, request->nameSpace, ciRet->getClassName(), false, true, true, CIMPropertyList()); DDD (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_ASSOCIATORPROVIDER: { jlong jAssociationNameRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, resultPath); jobject jAssociationName = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jAssociationNameRef); JMPIjvm::checkException(env); jlong jPathNameRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jPathName = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, 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(cerr<<"--- JMPIProviderManager::handleReferencesRequest: " "assocName = " <toString ()<getClass(" <<__LINE__<<") "<getClassName()<getClass(context, request->nameSpace, ciRet->getClassName(), false, true, true, CIMPropertyList()); DDD(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_ASSOCIATORPROVIDER2: { jlong jocRef = DEBUG_ConvertCToJava( OperationContext*, jlong, &request->operationContext); jobject joc = env->NewObject( jv->OperationContextClassRef, jv->OperationContextNewJ, jocRef); jlong jAssociationNameRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, resultPath); jobject jAssociationName = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jAssociationNameRef); JMPIjvm::checkException(env); jlong jPathNameRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jPathName = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, 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(cerr<<"--- JMPIProviderManager::handleReferencesRequest: " "assocName = " <toString ()<getClass(" <<__LINE__<<") "<getClassName()<getClass(context, request->nameSpace, ciRet->getClassName(), false, true, true, CIMPropertyList()); DDD (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(cout<<"--- JMPIProviderManager::handleReferencesRequest: " "should not be here!"<nameSpace.getString(), request->objectName.getClassName().getString()); DDD(cout<<"--- JMPIProviderManager::handleReferenceNamesRequest: " "hostname = "<role<<", aCls: " <resultClass<operationContext.get(ProviderIdContainer::NAME), interfaceType, interfaceVersion); if (interfaceType == "JMPI") { id = env->GetMethodID( (jclass)pr.jProviderClass, "referenceNames", "(Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;)" "Ljava/util/Vector;"); if (id != NULL) { eMethodFound = METHOD_ASSOCIATORPROVIDER; DDD(cout<<"--- JMPIProviderManager::handleReferenceNamesRequest:" " found METHOD_ASSOCIATORPROVIDER."<ExceptionClear(); id = env->GetMethodID( (jclass)pr.jProviderClass, "referenceNames", "(Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;" ")[Lorg/pegasus/jmpi/CIMObjectPath;"); if (id != NULL) { eMethodFound = METHOD_CIMASSOCIATORPROVIDER; DDD(cout<<"--- JMPIProviderManager::handleReferenceNames" "Request: found METHOD_CIMASSOCIATORPROVIDER." <GetMethodID( (jclass)pr.jProviderClass, "referenceNames", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;" ")Ljava/util/Vector;"); if (id != NULL) { eMethodFound = METHOD_ASSOCIATORPROVIDER2; DDD(cout<<"--- JMPIProviderManager::handleReferenceNamesRequest:" " found METHOD_ASSOCIATORPROVIDER2."<ExceptionClear(); id = env->GetMethodID( (jclass)pr.jProviderClass, "referenceNames", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/CIMObjectPath;" "Lorg/pegasus/jmpi/CIMObjectPath;" "Ljava/lang/String;)" "[Lorg/pegasus/jmpi/CIMObjectPath;"); if (id != NULL) { eMethodFound = METHOD_CIMASSOCIATORPROVIDER2; DDD(cout<<"--- JMPIProviderManager::handleReferenceNames" "Request: found METHOD_CIMASSOCIATORPROVIDER2." <NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jAssociationNameRef); JMPIjvm::checkException(env); jlong jPathNameRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jPathName = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, jPathNameRef); JMPIjvm::checkException(env); jstring jRole = env->NewStringUTF(request->role.getCString()); JMPIjvm::checkException(env); #ifdef PEGASUS_DEBUG DDD(cerr<<"--- JMPIProviderManager::handleReferenceNamesRequest: " "assocName = " <toString ()<nameSpace.getString(), request->instanceName.getClassName().getString()); DDD(cout<<"--- JMPIProviderManager::handleGetPropertyRequest: " "hostname = "<operationContext.get(ProviderIdContainer::NAME), interfaceType, interfaceVersion); if (interfaceType == "JMPI") { id = env->GetMethodID( (jclass)pr.jProviderClass, "getPropertyValue", "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;" "Ljava/lang/String;)Lorg/pegasus/jmpi/CIMValue;"); if (id != NULL) { eMethodFound = METHOD_PROPERTYPROVIDER; DDD(cout<<"--- JMPIProviderManager::handleGetPropertyRequest: " "found METHOD_PROPERTYPROVIDER."<GetMethodID( (jclass)pr.jProviderClass, "getPropertyValue", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;" "Ljava/lang/String;)Lorg/pegasus/jmpi/CIMValue;"); if (id != NULL) { eMethodFound = METHOD_PROPERTYPROVIDER2; DDD(cout<<"--- JMPIProviderManager::handleGetPropertyRequest: " "found METHOD_PROPERTYPROVIDER2."<NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, 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); StatProviderTimeMeasurement providerTime(response); jobject jvalRet = env->CallObjectMethod ((jobject)pr.jProvider, id, jcop, joclass, jpName); JMPIjvm::checkException(env); handler.processing(); if (jvalRet) { jlong jvalRetRef = env->CallLongMethod( jvalRet, JMPIjvm::jv.CIMValueCInst); CIMValue *valRet = DEBUG_ConvertJavaToC( jlong, CIMValue*, jvalRetRef); JMPIjvm::checkException(env); handler.deliver(*valRet); } handler.complete(); break; } case METHOD_PROPERTYPROVIDER2: { jlong jocRef = DEBUG_ConvertCToJava( OperationContext*, jlong, &request->operationContext); jobject joc = env->NewObject( jv->OperationContextClassRef, jv->OperationContextNewJ, jocRef); jlong jcopref = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jcop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, 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); StatProviderTimeMeasurement providerTime(response); jobject jvalRet = env->CallObjectMethod ((jobject)pr.jProvider, id, joc, jcop, joclass, jpName); JMPIjvm::checkException(env); if (joc) { env->CallVoidMethod(joc,JMPIjvm::jv.OperationContextUnassociate); JMPIjvm::checkException(env); } handler.processing(); if (jvalRet) { jlong jvalRetRef = env->CallLongMethod( jvalRet, JMPIjvm::jv.CIMValueCInst); CIMValue *valRet = DEBUG_ConvertJavaToC( jlong, CIMValue*, jvalRetRef); JMPIjvm::checkException(env); handler.deliver(*valRet); } handler.complete(); break; } case METHOD_UNKNOWN: { DDD(cout<<"--- JMPIProviderManager::handleGetPropertyRequest: " "should not be here!"<nameSpace.getString(), request->instanceName.getClassName().getString()); DDD(cout<<"--- JMPIProviderManager::handleSetPropertyRequest: hostname " "= "<operationContext.get(ProviderIdContainer::NAME), interfaceType, interfaceVersion); if (interfaceType == "JMPI") { id = env->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_PROPERTYPROVIDER; DDD(cout<<"--- JMPIProviderManager::handleSetPropertyRequest: " "found METHOD_PROPERTYPROVIDER."<GetMethodID( (jclass)pr.jProviderClass, "setPropertyValue", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;" "Ljava/lang/String;Lorg/pegasus/jmpi/CIMValue;)V"); if (id != NULL) { eMethodFound = METHOD_PROPERTYPROVIDER2; DDD(cout<<"--- JMPIProviderManager::handleSetPropertyRequest: " "found METHOD_PROPERTYPROVIDER2."<NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, 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); jlong jvalref = DEBUG_ConvertCToJava(CIMValue*, jlong, val); jobject jval = env->NewObject( jv->CIMValueClassRef, jv->CIMValueNewJ, jvalref); JMPIjvm::checkException(env); StatProviderTimeMeasurement providerTime(response); env->CallVoidMethod ((jobject)pr.jProvider, id, jcop, joclass, jpName, jval); JMPIjvm::checkException(env); break; } case METHOD_PROPERTYPROVIDER2: { jlong jocRef = DEBUG_ConvertCToJava( OperationContext*, jlong, &request->operationContext); jobject joc = env->NewObject( jv->OperationContextClassRef, jv->OperationContextNewJ, jocRef); jlong jcopref = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jcop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, 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); jlong jvalref = DEBUG_ConvertCToJava (CIMValue*, jlong, val); jobject jval = env->NewObject( jv->CIMValueClassRef, jv->CIMValueNewJ, jvalref); JMPIjvm::checkException(env); StatProviderTimeMeasurement providerTime(response); env->CallVoidMethod ((jobject)pr.jProvider, id, joc, jcop, joclass, jpName, jval); JMPIjvm::checkException(env); if (joc) { env->CallVoidMethod(joc,JMPIjvm::jv.OperationContextUnassociate); JMPIjvm::checkException(env); } break; } case METHOD_UNKNOWN: { DDD(cout<<"--- JMPIProviderManager::handleSetPropertyRequest: " "should not be here!"<nameSpace.getString(), request->instanceName.getClassName().getString()); DDD(cout<<"--- JMPIProviderManager::handleInvokeMethodRequest: " "hostname = "<operationContext.get(ProviderIdContainer::NAME), interfaceType, interfaceVersion); if (interfaceType == "JMPI") { id = env->GetMethodID( (jclass)pr.jProviderClass, "invokeMethod", "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;" "Ljava/util/Vector;Ljava/util/Vector;)" "Lorg/pegasus/jmpi/CIMValue;"); if (id != NULL) { eMethodFound = METHOD_METHODPROVIDER; DDD (cout<<"--- JMPIProviderManager::handleInvokeMethodRequest: " "found METHOD_METHODPROVIDER."<ExceptionClear(); 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_CIMMETHODPROVIDER; DDD(cout<<"--- JMPIProviderManager::handleInvokeMethod" "Request: found METHOD_CIMMETHODPROVIDER." <GetMethodID( (jclass)pr.jProviderClass, "invokeMethod", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;" "Ljava/util/Vector;Ljava/util/Vector;)" "Lorg/pegasus/jmpi/CIMValue;"); if (id != NULL) { eMethodFound = METHOD_METHODPROVIDER2; DDD(cout<<"--- JMPIProviderManager::handleInvokeMethodRequest: " "found METHOD_METHODPROVIDER2."<ExceptionClear(); id = env->GetMethodID( (jclass)pr.jProviderClass, "invokeMethod", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/CIMObjectPath;" "Ljava/lang/String;" "[Lorg/pegasus/jmpi/CIMArgument;[" "Lorg/pegasus/jmpi/CIMArgument;)" "Lorg/pegasus/jmpi/CIMValue;"); if (id != NULL) { eMethodFound = METHOD_CIMMETHODPROVIDER2; DDD(cout<<"--- JMPIProviderManager::handleInvokeMethod" "Request: found METHOD_CIMMETHODPROVIDER2." <NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, 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]); jlong jArgRef = DEBUG_ConvertCToJava(CIMParamValue*, jlong, parm); jobject jArg = env->NewObject( jv->CIMArgumentClassRef, jv->CIMArgumentNewJ, jArgRef); env->SetObjectArrayElement(jArIn,i,jArg); } jobjectArray jArOut=(jobjectArray)env->NewObjectArray( 24, jv->CIMArgumentClassRef, NULL); StatProviderTimeMeasurement providerTime(response); jobject jValueRet = env->CallObjectMethod((jobject)pr.jProvider, id, jcop, jMethod, jArIn, jArOut); JMPIjvm::checkException(env); handler.processing(); jlong jValueRetRef = env->CallLongMethod( jValueRet, JMPIjvm::jv.CIMValueCInst); CIMValue *valueRet = DEBUG_ConvertJavaToC( jlong, 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; jlong jpRef = env->CallLongMethod( jArg, JMPIjvm::jv.CIMArgumentCInst); CIMParamValue *p = DEBUG_ConvertJavaToC( jlong, CIMParamValue*, jpRef); JMPIjvm::checkException(env); handler.deliverParamValue(*p); } handler.complete(); break; } case METHOD_CIMMETHODPROVIDER2: { jlong jocRef = DEBUG_ConvertCToJava( OperationContext*, jlong, &request->operationContext); jobject joc = env->NewObject( jv->OperationContextClassRef, jv->OperationContextNewJ, jocRef); jlong jcopRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jcop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, 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]); jlong jArgRef = DEBUG_ConvertCToJava(CIMParamValue*, jlong, parm); jobject jArg = env->NewObject( jv->CIMArgumentClassRef, jv->CIMArgumentNewJ, jArgRef); env->SetObjectArrayElement(jArIn,i,jArg); } jobjectArray jArOut=(jobjectArray)env->NewObjectArray( 24, jv->CIMArgumentClassRef, NULL); StatProviderTimeMeasurement providerTime(response); jobject jValueRet = env->CallObjectMethod((jobject)pr.jProvider, id, joc, jcop, jMethod, jArIn, jArOut); JMPIjvm::checkException(env); if (joc) { env->CallVoidMethod(joc,JMPIjvm::jv.OperationContextUnassociate); JMPIjvm::checkException(env); } handler.processing(); jlong jValueRetRef = env->CallLongMethod( jValueRet, JMPIjvm::jv.CIMValueCInst); CIMValue *valueRet = DEBUG_ConvertJavaToC( jlong, 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; jlong jpRef = env->CallLongMethod( jArg, JMPIjvm::jv.CIMArgumentCInst); CIMParamValue *p = DEBUG_ConvertJavaToC( jlong, CIMParamValue*, jpRef); JMPIjvm::checkException(env); handler.deliverParamValue(*p); } handler.complete(); break; } case METHOD_METHODPROVIDER: { jlong jcopRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jcop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, 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()); jlong jpRef = DEBUG_ConvertCToJava (CIMProperty*, jlong, p); jobject jp = env->NewObject( jv->CIMPropertyClassRef, jv->CIMPropertyNewJ, jpRef); env->CallVoidMethod(jVecIn,jv->VectorAddElement,jp); } jobject jVecOut=env->NewObject(jv->VectorClassRef,jv->VectorNew); JMPIjvm::checkException(env); StatProviderTimeMeasurement providerTime(response); jobject jValueRet = env->CallObjectMethod((jobject)pr.jProvider, id, jcop, jMethod, jVecIn, jVecOut); JMPIjvm::checkException(env); handler.processing(); jlong jValueRetRef = env->CallLongMethod( jValueRet, JMPIjvm::jv.CIMValueCInst); CIMValue *valueRet = DEBUG_ConvertJavaToC( jlong, 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); jlong jpRef = env->CallLongMethod( jProp, JMPIjvm::jv.CIMPropertyCInst); CIMProperty *p = DEBUG_ConvertJavaToC( jlong, CIMProperty*, jpRef); JMPIjvm::checkException(env); handler.deliverParamValue( CIMParamValue(p->getName().getString(), p->getValue())); } handler.complete(); break; } case METHOD_METHODPROVIDER2: { jlong jocRef = DEBUG_ConvertCToJava( OperationContext*, jlong, &request->operationContext); jobject joc = env->NewObject( jv->OperationContextClassRef, jv->OperationContextNewJ, jocRef); jlong jcopRef = DEBUG_ConvertCToJava( CIMObjectPath*, jlong, objectPath); jobject jcop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ, 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()); jlong jpRef = DEBUG_ConvertCToJava(CIMProperty*, jlong, p); jobject jp = env->NewObject( jv->CIMPropertyClassRef, jv->CIMPropertyNewJ, jpRef); env->CallVoidMethod(jVecIn,jv->VectorAddElement,jp); } jobject jVecOut=env->NewObject(jv->VectorClassRef,jv->VectorNew); JMPIjvm::checkException(env); StatProviderTimeMeasurement providerTime(response); jobject jValueRet = env->CallObjectMethod((jobject)pr.jProvider, id, joc, jcop, jMethod, jVecIn, jVecOut); JMPIjvm::checkException(env); if (joc) { env->CallVoidMethod(joc,JMPIjvm::jv.OperationContextUnassociate); JMPIjvm::checkException(env); } handler.processing(); jlong jValueRetRef = env->CallLongMethod( jValueRet, JMPIjvm::jv.CIMValueCInst); CIMValue *valueRet = DEBUG_ConvertJavaToC( jlong, 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); jlong jpRef = env->CallLongMethod( jProp, JMPIjvm::jv.CIMPropertyCInst); CIMProperty *p = DEBUG_ConvertJavaToC( jlong, CIMProperty*, jpRef); JMPIjvm::checkException(env); handler.deliverParamValue( CIMParamValue(p->getName().getString(), p->getValue())); } handler.complete(); break; } case METHOD_UNKNOWN: { DDD (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); fileName = resolveFileName(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(cout<<"--- JMPIProviderManager::handleCreateSubscriptionRequest: " "hostname = " <mutex); prec->count++; } // Add a selection record for JNI CIMOMHandle deliverEvent calls indSelectRecord *srec = new indSelectRecord (); { srec->query = request->query; srec->queryLanguage = sub_cntr.getQueryLanguage (); srec->propertyList = request->propertyList; CIMOMHandleQueryContext *qContext = new CIMOMHandleQueryContext( CIMNamespaceName( request->nameSpace.getString()), *pr._cimom_handle); srec->qContext = qContext; CIMObjectPath sPath = request->subscriptionInstance.getPath(); Array kb; // Technically we only need Name and Handler for uniqueness kb = sPath.getKeyBindings (); // Add an entry for every provider. kb.append (CIMKeyBinding ("Provider", pr.getName (), CIMKeyBinding::STRING)); sPath.setKeyBindings (kb); AutoMutex lock (mutexSelxTab); DDD(cout<<"--- JMPIProviderManager::handleCreateSubscriptionRequest:" " Adding to selxTab " <GetMethodID( (jclass)pr.jProviderClass, "activateFilter", "(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;" "Lorg/pegasus/jmpi/CIMObjectPath;Z)V"); if (id != NULL) { eMethodFound = METHOD_EVENTPROVIDER; DDD (cout<<"--- JMPIProviderManager::" "handleCreateSubscriptionRequest: found " "METHOD_EVENTPROVIDER."<GetMethodID( (jclass)pr.jProviderClass, "activateFilter", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;" "Lorg/pegasus/jmpi/CIMObjectPath;Z)V"); if (id != NULL) { eMethodFound = METHOD_EVENTPROVIDER2; DDD (cout<<"--- JMPIProviderManager::" "handleCreateSubscriptionRequest: found " "METHOD_EVENTPROVIDER2." <query, srec->queryLanguage); jlong jStmtRef = DEBUG_ConvertCToJava( WQLSelectStatement *, jlong, stmt); jobject jSelectExp = env->NewObject( jv->SelectExpClassRef, jv->SelectExpNewJ, jStmtRef); JMPIjvm::checkException(env); jstring jType = env->NewStringUTF( request->nameSpace.getString().getCString()); JMPIjvm::checkException(env); CIMObjectPath *cop = new CIMObjectPath (System::getHostName(), request->nameSpace, request->classNames[0]); jlong jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jlong, cop); jobject jcop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ,jcopRef); JMPIjvm::checkException(env); StatProviderTimeMeasurement providerTime(response); env->CallVoidMethod ((jobject)pr.jProvider, id, jSelectExp, jType, jcop, (jboolean)fNewPrec); JMPIjvm::checkException(env); break; } case METHOD_EVENTPROVIDER2: { jlong jocRef = DEBUG_ConvertCToJava( OperationContext*, jlong, &request->operationContext); jobject joc = env->NewObject( jv->OperationContextClassRef, jv->OperationContextNewJ,jocRef); WQLSelectStatement *stmt = newSelectExp(srec->query, srec->queryLanguage); jlong jStmtRef = DEBUG_ConvertCToJava( WQLSelectStatement *, jlong, stmt); jobject jSelectExp = env->NewObject( jv->SelectExpClassRef, jv->SelectExpNewJ, jStmtRef); JMPIjvm::checkException(env); jstring jType = env->NewStringUTF( request->nameSpace.getString().getCString()); JMPIjvm::checkException(env); CIMObjectPath *cop = new CIMObjectPath (System::getHostName(), request->nameSpace, request->classNames[0]); jlong jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jlong, cop); jobject jcop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ,jcopRef); JMPIjvm::checkException(env); StatProviderTimeMeasurement providerTime(response); env->CallVoidMethod ((jobject)pr.jProvider, id, joc, jSelectExp, jType, jcop, (jboolean)fNewPrec); JMPIjvm::checkException(env); if (joc) { env->CallVoidMethod(joc,JMPIjvm::jv.OperationContextUnassociate); JMPIjvm::checkException(env); } break; } case METHOD_UNKNOWN: { DDD(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); fileName = resolveFileName (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(cout<<"--- JMPIProviderManager::handleDeleteSubscriptionRequest: " "hostname = " <subscriptionInstance.getPath(); Array kb; // Technically we only need Name and Handler for uniqueness kb = sPath.getKeyBindings (); // Add an entry for every provider. kb.append (CIMKeyBinding ("Provider", pr.getName (), CIMKeyBinding::STRING)); sPath.setKeyBindings (kb); String sPathString = sPath.toString (); AutoMutex lock (mutexSelxTab); DDD(cout<<"--- JMPIProviderManager::handleDeleteSubscriptionRequest:" " Removing selxTab "<operationContext.get(ProviderIdContainer::NAME), interfaceType, interfaceVersion); if (interfaceType == "JMPI") { id = env->GetMethodID( (jclass)pr.jProviderClass, "deActivateFilter", "(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;" "Lorg/pegasus/jmpi/CIMObjectPath;Z)V"); if (id != NULL) { eMethodFound = METHOD_EVENTPROVIDER; DDD (cout<<"--- JMPIProviderManager::" "handleDeleteSubscriptionRequest: found " "METHOD_EVENTPROVIDER."<GetMethodID( (jclass)pr.jProviderClass, "deActivateFilter", "(Lorg/pegasus/jmpi/OperationContext;" "Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;" "Lorg/pegasus/jmpi/CIMObjectPath;Z)V"); if (id != NULL) { eMethodFound = METHOD_EVENTPROVIDER2; DDD (cout<<"--- JMPIProviderManager::" "handleDeleteSubscriptionRequest: found " "METHOD_EVENTPROVIDER2."<query, srec->queryLanguage); jlong jStmtRef = DEBUG_ConvertCToJava( WQLSelectStatement *, jlong, stmt); jobject jSelectExp = env->NewObject( jv->SelectExpClassRef, jv->SelectExpNewJ,jStmtRef); JMPIjvm::checkException(env); jstring jType = env->NewStringUTF( request->nameSpace.getString().getCString()); JMPIjvm::checkException(env); CIMObjectPath *cop = new CIMObjectPath( System::getHostName(), request->nameSpace, request->classNames[0]); jlong jcopRef = DEBUG_ConvertCToJava(CIMObjectPath*, jlong, cop); jobject jcop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ,jcopRef); JMPIjvm::checkException(env); StatProviderTimeMeasurement providerTime(response); env->CallVoidMethod ((jobject)pr.jProvider, id, jSelectExp, jType, jcop, (jboolean)fFreePrec); JMPIjvm::checkException(env); break; } case METHOD_EVENTPROVIDER2: { jlong jocRef = DEBUG_ConvertCToJava( OperationContext*, jlong, &request->operationContext); jobject joc = env->NewObject( jv->OperationContextClassRef, jv->OperationContextNewJ,jocRef); WQLSelectStatement *stmt = newSelectExp (srec->query, srec->queryLanguage); jlong jStmtRef = DEBUG_ConvertCToJava( WQLSelectStatement *, jlong, stmt); jobject jSelectExp = env->NewObject( jv->SelectExpClassRef, jv->SelectExpNewJ, jStmtRef); JMPIjvm::checkException(env); jstring jType = env->NewStringUTF( request->nameSpace.getString().getCString()); JMPIjvm::checkException(env); CIMObjectPath *cop = new CIMObjectPath (System::getHostName(), request->nameSpace, request->classNames[0]); jlong jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jlong, cop); jobject jcop = env->NewObject( jv->CIMObjectPathClassRef, jv->CIMObjectPathNewJ,jcopRef); JMPIjvm::checkException(env); StatProviderTimeMeasurement providerTime(response); env->CallVoidMethod ((jobject)pr.jProvider, id, joc, jSelectExp, jType, jcop, (jboolean)fFreePrec); JMPIjvm::checkException(env); if (joc) { env->CallVoidMethod( joc, JMPIjvm::jv.OperationContextUnassociate); JMPIjvm::checkException(env); } break; } case METHOD_UNKNOWN: { DDD (cout<<"--- JMPIProviderManager::" "handleDeleteSubscriptionRequest: should not be here!" <qContext; } delete srec; if (fFreePrec) { delete prec->ctx; delete prec->handler; delete prec; } if (env) JMPIjvm::detachThread(); PEG_METHOD_EXIT(); return(response); } Message * JMPIProviderManager::handleDisableModuleRequest( const Message * message) throw() { PEG_METHOD_ENTER( TRC_PROVIDERMANAGER, "JMPIProviderManager::handleDisableModuleRequest"); CIMDisableModuleRequestMessage * request = dynamic_cast (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 = dynamic_cast( request->buildResponse()); PEGASUS_ASSERT(response != 0); response->operationalStatus = operationalStatus; 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_STOPPED); CIMEnableModuleResponseMessage* response = dynamic_cast( request->buildResponse()); PEGASUS_ASSERT(response != 0); response->operationalStatus = operationalStatus; 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 = dynamic_cast( request->buildResponse()); PEGASUS_ASSERT(response != 0); // tell the provider manager to shutdown all the providers providerManager.shutdownAllProviders(); 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 (); DDD(cout<<"--- JMPIProviderManager::handleSubscriptionInitCompleteRequest: " "numProviders = "<(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 moduleName; CIMValue genericValue; genericValue = providerId.getModule().getProperty( providerId.getModule().findProperty("Name")).getValue(); genericValue.get(moduleName); 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); return ProviderName(moduleName, providerName, fileName); } String JMPIProviderManager::resolveFileName(String fileName) { String name = ConfigManager::getHomedPath( ConfigManager::getInstance()->getCurrentValue("providerDir")); // physfilename = everything up to the delimiter pointing at class start // in case there is no delimiter anymore, it takes the entire filename String physfilename = fileName.subString(0, fileName.find(":")); // look in all(multiple) homed pathes for the physical file name = FileSystem::getAbsoluteFileName(name, physfilename); // construct back the fully specified jar: provider name name = FileSystem::extractFilePath(name) + fileName; return name; } PEGASUS_NAMESPACE_END