(file) Return to JMPIProviderManager.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / ProviderManager2 / JMPI

Diff for /pegasus/src/Pegasus/ProviderManager2/JMPI/JMPIProviderManager.cpp between version 1.24 and 1.25

version 1.24, 2005/05/03 19:01:06 version 1.25, 2005/05/22 21:50:55
Line 168 
Line 168 
     return provReg.insert(key,name);     return provReg.insert(key,name);
 } }
  
   
 Message * JMPIProviderManager::processMessage(Message * request) throw() Message * JMPIProviderManager::processMessage(Message * request) throw()
 { {
     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "JMPIProviderManager::processMessage()");     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "JMPIProviderManager::processMessage()");
Line 180 
Line 179 
     {     {
     case CIM_GET_INSTANCE_REQUEST_MESSAGE:     case CIM_GET_INSTANCE_REQUEST_MESSAGE:
         response = handleGetInstanceRequest(request);         response = handleGetInstanceRequest(request);
   
         break;         break;
   
     case CIM_ENUMERATE_INSTANCES_REQUEST_MESSAGE:     case CIM_ENUMERATE_INSTANCES_REQUEST_MESSAGE:
         response = handleEnumerateInstancesRequest(request);         response = handleEnumerateInstancesRequest(request);
   
         break;         break;
   
     case CIM_ENUMERATE_INSTANCE_NAMES_REQUEST_MESSAGE:     case CIM_ENUMERATE_INSTANCE_NAMES_REQUEST_MESSAGE:
         response = handleEnumerateInstanceNamesRequest(request);         response = handleEnumerateInstanceNamesRequest(request);
   
         break;         break;
   
     case CIM_CREATE_INSTANCE_REQUEST_MESSAGE:     case CIM_CREATE_INSTANCE_REQUEST_MESSAGE:
         response = handleCreateInstanceRequest(request);         response = handleCreateInstanceRequest(request);
   
         break;         break;
   
     case CIM_MODIFY_INSTANCE_REQUEST_MESSAGE:     case CIM_MODIFY_INSTANCE_REQUEST_MESSAGE:
         response = handleModifyInstanceRequest(request);         response = handleModifyInstanceRequest(request);
   
         break;         break;
   
     case CIM_DELETE_INSTANCE_REQUEST_MESSAGE:     case CIM_DELETE_INSTANCE_REQUEST_MESSAGE:
         response = handleDeleteInstanceRequest(request);         response = handleDeleteInstanceRequest(request);
           break;
  
       case CIM_EXEC_QUERY_REQUEST_MESSAGE:
           response = handleExecQueryRequest(request);
         break;         break;
 /*    case CIM_EXEC_QUERY_REQUEST_MESSAGE:  
         response = handleExecuteQueryRequest(request);  
  
 */        break;  
     case CIM_ASSOCIATORS_REQUEST_MESSAGE:     case CIM_ASSOCIATORS_REQUEST_MESSAGE:
         response = handleAssociatorsRequest(request);         response = handleAssociatorsRequest(request);
   
         break;         break;
   
     case CIM_ASSOCIATOR_NAMES_REQUEST_MESSAGE:     case CIM_ASSOCIATOR_NAMES_REQUEST_MESSAGE:
         response = handleAssociatorNamesRequest(request);         response = handleAssociatorNamesRequest(request);
   
         break;         break;
   
     case CIM_REFERENCES_REQUEST_MESSAGE:     case CIM_REFERENCES_REQUEST_MESSAGE:
         response = handleReferencesRequest(request);         response = handleReferencesRequest(request);
   
         break;         break;
   
     case CIM_REFERENCE_NAMES_REQUEST_MESSAGE:     case CIM_REFERENCE_NAMES_REQUEST_MESSAGE:
         response = handleReferenceNamesRequest(request);         response = handleReferenceNamesRequest(request);
   
         break;         break;
   
     case CIM_INVOKE_METHOD_REQUEST_MESSAGE:     case CIM_INVOKE_METHOD_REQUEST_MESSAGE:
         response = handleInvokeMethodRequest(request);         response = handleInvokeMethodRequest(request);
   
         break;         break;
   
     case CIM_CREATE_SUBSCRIPTION_REQUEST_MESSAGE:     case CIM_CREATE_SUBSCRIPTION_REQUEST_MESSAGE:
         response = handleCreateSubscriptionRequest(request);         response = handleCreateSubscriptionRequest(request);
   
         break;         break;
   
 /*    case CIM_MODIFY_SUBSCRIPTION_REQUEST_MESSAGE: /*    case CIM_MODIFY_SUBSCRIPTION_REQUEST_MESSAGE:
         response = handleModifySubscriptionRequest(request);         response = handleModifySubscriptionRequest(request);
         break;         break;
 */ */
     case CIM_DELETE_SUBSCRIPTION_REQUEST_MESSAGE:     case CIM_DELETE_SUBSCRIPTION_REQUEST_MESSAGE:
         response = handleDeleteSubscriptionRequest(request);         response = handleDeleteSubscriptionRequest(request);
   
         break;         break;
   
 /*    case CIM_EXPORT_INDICATION_REQUEST_MESSAGE: /*    case CIM_EXPORT_INDICATION_REQUEST_MESSAGE:
         response = handleExportIndicationRequest(request);         response = handleExportIndicationRequest(request);
         break;         break;
 */ */
     case CIM_DISABLE_MODULE_REQUEST_MESSAGE:     case CIM_DISABLE_MODULE_REQUEST_MESSAGE:
         response = handleDisableModuleRequest(request);         response = handleDisableModuleRequest(request);
   
         break;         break;
   
     case CIM_ENABLE_MODULE_REQUEST_MESSAGE:     case CIM_ENABLE_MODULE_REQUEST_MESSAGE:
         response = handleEnableModuleRequest(request);         response = handleEnableModuleRequest(request);
   
         break;         break;
   
     case CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE:     case CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE:
         response = handleStopAllProvidersRequest(request);         response = handleStopAllProvidersRequest(request);
   
         break;         break;
   
     case CIM_INITIALIZE_PROVIDER_REQUEST_MESSAGE:     case CIM_INITIALIZE_PROVIDER_REQUEST_MESSAGE:
         response = handleInitializeProviderRequest(request);         response = handleInitializeProviderRequest(request);
   
         break;         break;
   
     case CIM_SUBSCRIPTION_INIT_COMPLETE_REQUEST_MESSAGE:     case CIM_SUBSCRIPTION_INIT_COMPLETE_REQUEST_MESSAGE:
         response = handleSubscriptionInitCompleteRequest (request);         response = handleSubscriptionInitCompleteRequest (request);
   
         break;         break;
   
     default:     default:
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2,         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2,
                          "*** Unsupported Request "+request->getType());                          "*** Unsupported Request "+request->getType());
         DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::processMessage: Unsupported request "<<request->getType ()<<PEGASUS_STD(endl));         DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::processMessage: Unsupported request "<<request->getType ()<<PEGASUS_STD(endl));
         response = handleUnsupportedRequest(request);  
  
           response = handleUnsupportedRequest(request);
         break;         break;
     }     }
  
Line 369 
Line 368 
  
     HandlerIntro(GetInstance,message,request,response,handler,CIMInstance());     HandlerIntro(GetInstance,message,request,response,handler,CIMInstance());
  
       typedef enum {
          METHOD_UNKNOWN = 0,
          METHOD_PEGASUS_24,
          METHOD_SNIA_PROVIDER20,
       } METHOD_VERSION;
       METHOD_VERSION   eMethodFound  = METHOD_UNKNOWN;
     JNIEnv *env=NULL;     JNIEnv *env=NULL;
     Boolean mode24=false;  
     CIMPropertyList propertyList;  
     jobjectArray pl=NULL;  
  
     try {     try {
         Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,         Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
Line 402 
Line 404 
         // forward request         // forward request
         JMPIProvider & pr=ph.GetProvider();         JMPIProvider & pr=ph.GetProvider();
  
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,          PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.getInstance: " + pr.getName());
             "Calling provider.getInstance: " + pr.getName());  
  
         DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetInstanceRequest: Calling provider getInstance: "<<pr.getName()<<PEGASUS_STD(endl));         DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetInstanceRequest: Calling provider getInstance: "<<pr.getName()<<PEGASUS_STD(endl));
  
         JvmVector *jv;          JvmVector *jv = 0;
         JNIEnv *env=JMPIjvm::attachThread(&jv);  
           env = JMPIjvm::attachThread(&jv);
   
           JMPIProvider::pm_service_op_lock op_lock(&pr);
   
           STAT_GETSTARTTIME;
   
           jmethodID id = NULL;
   
           // public abstract org.pegasus.jmpi.CIMInstance getInstance (org.pegasus.jmpi.CIMObjectPath cop,
           //                                                           org.pegasus.jmpi.CIMClass      cimClass,
           //                                                           boolean                        localOnly)
           //        throws org.pegasus.jmpi.CIMException
           id = env->GetMethodID((jclass)pr.jProviderClass,
                                 "getInstance",
                                 "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;Z)Lorg/pegasus/jmpi/CIMInstance;");
   
           if (id != NULL)
           {
               eMethodFound = METHOD_SNIA_PROVIDER20;
               DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetInstanceRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
           }
   
           if (id == NULL)
           {
               env->ExceptionClear();
   
               // public org.pegasus.jmpi.CIMInstance getInstance (org.pegasus.jmpi.CIMObjectPath op,
               //                                                  boolean                        localOnly,
               //                                                  boolean                        includeQualifiers,
               //                                                  boolean                        includeClassOrigin,
               //                                                  java.lang.String[]             propertyList,
               //                                                  org.pegasus.jmpi.CIMClass      cc)
               //        throws org.pegasus.jmpi.CIMException
               id = env->GetMethodID((jclass)pr.jProviderClass,
                                     "getInstance",
                                     "(Lorg/pegasus/jmpi/CIMObjectPath;ZZZ[Ljava/lang/String;Lorg/pegasus/jmpi/CIMClass;)Lorg/pegasus/jmpi/CIMInstance;");
   
               if (id != NULL)
               {
                   eMethodFound = METHOD_PEGASUS_24;
                   DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetInstanceRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl));
               }
           }
   
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
           switch (eMethodFound)
           {
           case METHOD_PEGASUS_24:
           {
         jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);         jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);
   
         jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);         jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);
   
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         CIMClass cls=pr._cimom_handle->getClass(context,request->nameSpace,              CIMClass cls = pr._cimom_handle->getClass(context,
                                                         request->nameSpace,
                           request->instanceName.getClassName(),                           request->instanceName.getClassName(),
                                false,true,true,CIMPropertyList());                                                        false,
         JMPIjvm::checkException(env);                                                        true,
                                                         true,
                                                         CIMPropertyList());
  
         jObj = DEBUG_ConvertCToJava (CIMClass*, jint, &cls);         jObj = DEBUG_ConvertCToJava (CIMClass*, jint, &cls);
  
         jobject jCc=env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jObj);         jobject jCc=env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jObj);
   
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         JMPIProvider::pm_service_op_lock op_lock(&pr);              jobjectArray jPropertyList = getList(jv,env,request->propertyList);
  
         jmethodID id=env->GetMethodID((jclass)pr.jProviderClass,"getInstance",              jobject inst = env->CallObjectMethod((jobject)pr.jProvider,
            "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;Z)Lorg/pegasus/jmpi/CIMInstance;");                                                   id,
                                                    jRef,
                                                    request->localOnly,
                                                    request->includeQualifiers,
                                                    request->includeClassOrigin,
                                                    jPropertyList,
                                                    jCc);
  
         if (id==NULL) {  
            env->ExceptionClear();  
             id=env->GetMethodID((jclass)pr.jProviderClass,"getInstance",  
               "(Lorg/pegasus/jmpi/CIMObjectPath;ZZZ[Ljava/lang/String;Lorg/pegasus/jmpi/CIMClass;)"  
               "Lorg/pegasus/jmpi/CIMInstance;");  
            JMPIjvm::checkException(env);            JMPIjvm::checkException(env);
             mode24=true;  
             pl=getList(jv,env,request->propertyList);              STAT_PMS_PROVIDEREND;
   
               handler.processing();
   
               if (inst) {
                  jint         jCi = env->CallIntMethod(inst,JMPIjvm::jv.CIMInstanceCInst);
                  CIMInstance *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi);
   
                  handler.deliver(*ci);
         }         }
               handler.complete();
               break;
           }
   
           case METHOD_SNIA_PROVIDER20:
           {
               jint    jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);
               jobject jRef = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);
   
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         STAT_GETSTARTTIME;              CIMClass cls = pr._cimom_handle->getClass(context,
                                                         request->nameSpace,
                                                         request->instanceName.getClassName(),
                                                         false,
                                                         true,
                                                         true,
                                                         CIMPropertyList());
  
         jobject inst=NULL;              jObj = DEBUG_ConvertCToJava (CIMClass*, jint, &cls);
         if (mode24)  
             inst=env->CallObjectMethod((jobject)pr.jProvider,id,jRef,  
               request->localOnly,request->includeQualifiers,request->includeClassOrigin,pl,jCc);  
         else  
             inst=env->CallObjectMethod((jobject)pr.jProvider,id,jRef,jCc,true);  
  
         STAT_PMS_PROVIDEREND;              jobject jCc = env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jObj);
   
               JMPIjvm::checkException(env);
   
               jobject inst = env->CallObjectMethod((jobject)pr.jProvider,
                                                    id,
                                                    jRef,
                                                    jCc,
                                                    true);
  
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
   
               STAT_PMS_PROVIDEREND;
   
         handler.processing();         handler.processing();
   
         if (inst) {         if (inst) {
            jint         jCi = env->CallIntMethod(inst,JMPIjvm::jv.CIMInstanceCInst);            jint         jCi = env->CallIntMethod(inst,JMPIjvm::jv.CIMInstanceCInst);
            CIMInstance *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi);            CIMInstance *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi);
Line 462 
Line 546 
            handler.deliver(*ci);            handler.deliver(*ci);
         }         }
         handler.complete();         handler.complete();
               break;
           }
   
           case METHOD_UNKNOWN:
           {
               DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetInstanceRequest: should not be here!"<<PEGASUS_STD(endl));
               break;
           }
           }
     }     }
     HandlerCatch(handler);     HandlerCatch(handler);
  
Line 478 
Line 571 
  
     HandlerIntro(EnumerateInstances,message,request,response,handler,Array<CIMInstance>());     HandlerIntro(EnumerateInstances,message,request,response,handler,Array<CIMInstance>());
  
       typedef enum {
          METHOD_UNKNOWN = 0,
          METHOD_PEGASUS_24,
          METHOD_SNIA_PROVIDER20,
       } METHOD_VERSION;
       METHOD_VERSION   eMethodFound  = METHOD_UNKNOWN;
     JNIEnv *env=NULL;     JNIEnv *env=NULL;
     Boolean mode24=false;  
     CIMPropertyList propertyList;  
     jobjectArray pl=NULL;  
  
     try {     try {
       Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,       Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
Line 514 
Line 610 
         context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));         context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
         context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));         context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
  
         CIMPropertyList propertyList(request->propertyList);  
   
         // forward request         // forward request
         JMPIProvider & pr=ph.GetProvider();         JMPIProvider & pr=ph.GetProvider();
  
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,          PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.enumerateInstances: " + pr.getName());
             "Calling provider.enumerateInstances: " + pr.getName());  
  
         DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: Calling provider enumerateInstances: "<<pr.getName()<<PEGASUS_STD(endl));         DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: Calling provider enumerateInstances: "<<pr.getName()<<PEGASUS_STD(endl));
  
         JvmVector *jv;          JvmVector *jv = 0;
   
         env=JMPIjvm::attachThread(&jv);         env=JMPIjvm::attachThread(&jv);
  
         jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);          JMPIProvider::pm_service_op_lock op_lock(&pr);
   
           STAT_GETSTARTTIME;
   
           jmethodID id = NULL;
   
           // public abstract java.util.Vector enumInstances (org.pegasus.jmpi.CIMObjectPath cop,
           //                                                 boolean                        deep,
           //                                                 org.pegasus.jmpi.CIMClass      cimClass,
           //                                                 boolean                        localOnly)
           //        throws org.pegasus.jmpi.CIMException
           id = env->GetMethodID((jclass)pr.jProviderClass,
                                 "enumInstances",
                                 "(Lorg/pegasus/jmpi/CIMObjectPath;ZLorg/pegasus/jmpi/CIMClass;Z)Ljava/util/Vector;");
  
           if (id != NULL)
           {
               eMethodFound = METHOD_SNIA_PROVIDER20;
               DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
           }
   
           if (id == NULL)
           {
               env->ExceptionClear();
   
               // public org.pegasus.jmpi.CIMInstance[] enumerateInstances (org.pegasus.jmpi.CIMObjectPath op,
               //                                                           boolean                        localOnly,
               //                                                           boolean                        includeQualifiers,
               //                                                           boolean                        includeClassOrigin,
               //                                                           java.lang.String[]             propertyList,
               //                                                           org.pegasus.jmpi.CIMClass      cc)
               //         throws org.pegasus.jmpi.CIMException
               id = env->GetMethodID((jclass)pr.jProviderClass,
                                     "enumerateInstances",
                                     "(Lorg/pegasus/jmpi/CIMObjectPath;ZZZ[Ljava/lang/String;Lorg/pegasus/jmpi/CIMClass;)[Lorg/pegasus/jmpi/CIMInstance;");
   
               if (id != NULL)
               {
                   eMethodFound = METHOD_PEGASUS_24;
                   DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl));
               }
           }
   
           JMPIjvm::checkException(env);
   
           switch (eMethodFound)
           {
           case METHOD_PEGASUS_24:
           {
               jint    jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);
         jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);         jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);
   
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         CIMClass cls=pr._cimom_handle->getClass(context,request->nameSpace,              CIMClass cls = pr._cimom_handle->getClass(context,
                                                         request->nameSpace,
                                request->className,                                request->className,
                                false,true,true,CIMPropertyList());                                                        false,
                                                         true,
                                                         true,
                                                         CIMPropertyList());
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         jObj = DEBUG_ConvertCToJava (CIMClass*, jint, &cls);         jObj = DEBUG_ConvertCToJava (CIMClass*, jint, &cls);
  
         jobject jCc=env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jObj);         jobject jCc=env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jObj);
         JMPIjvm::checkException(env);  
   
         JMPIProvider::pm_service_op_lock op_lock(&pr);  
  
         STAT_GETSTARTTIME;              JMPIjvm::checkException(env);
  
         jmethodID id=env->GetMethodID((jclass)pr.jProviderClass,"enumInstances",              jobjectArray jPropertyList = getList(jv,env,request->propertyList);
            "(Lorg/pegasus/jmpi/CIMObjectPath;ZLorg/pegasus/jmpi/CIMClass;Z)Ljava/util/Vector;");  
  
         if (id==NULL) {              jobjectArray jAr = (jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
             env->ExceptionClear();                                                                     id,
             id=env->GetMethodID((jclass)pr.jProviderClass,"enumerateInstances",                                                                     jRef,
               "(Lorg/pegasus/jmpi/CIMObjectPath;ZZZ[Ljava/lang/String;Lorg/pegasus/jmpi/CIMClass;)"                                                                     request->localOnly,
               "[Lorg/pegasus/jmpi/CIMInstance;");                                                                     request->includeQualifiers,
             JMPIjvm::checkException(env);                                                                     request->includeClassOrigin,
             mode24=true;                                                                     jPropertyList,
             pl=getList(jv,env,request->propertyList);                                                                     jCc);
         }  
         JMPIjvm::checkException(env);  
  
         if (!mode24) {  
             jobject jVec=env->CallObjectMethod((jobject)pr.jProvider,id,jRef,false,jCc,true);  
             JMPIjvm::checkException(env);             JMPIjvm::checkException(env);
  
             STAT_PMS_PROVIDEREND;             STAT_PMS_PROVIDEREND;
  
             handler.processing();             handler.processing();
             if (jVec) {              if (jAr) {
                 for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<m; i++) {                  for (int i=0,m=env->GetArrayLength(jAr); i<m; i++) {
                     JMPIjvm::checkException(env);                     JMPIjvm::checkException(env);
  
                     jobject jInst=env->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,i);                      jobject jInst=env->GetObjectArrayElement(jAr,i);
                     JMPIjvm::checkException(env);                     JMPIjvm::checkException(env);
  
                     jint         jCi = env->CallIntMethod(jInst,JMPIjvm::jv.CIMInstanceCInst);                     jint         jCi = env->CallIntMethod(jInst,JMPIjvm::jv.CIMInstanceCInst);
Line 583 
Line 722 
                 }                 }
             }             }
             handler.complete();             handler.complete();
               break;
         }         }
         else {  
             jobjectArray jAr=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,id,jRef,          case METHOD_SNIA_PROVIDER20:
                                                                  request->localOnly,request->includeQualifiers,request->includeClassOrigin,pl,jCc);          {
               jint    jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);
               jobject jRef = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);
   
               JMPIjvm::checkException(env);
   
               CIMClass cls = pr._cimom_handle->getClass(context,
                                                         request->nameSpace,
                                                         request->className,
                                                         false,
                                                         true,
                                                         true,
                                                         CIMPropertyList());
               JMPIjvm::checkException(env);
   
               jObj = DEBUG_ConvertCToJava (CIMClass*, jint, &cls);
   
               jobject jCc = env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jObj);
   
               JMPIjvm::checkException(env);
   
               jobject jVec = env->CallObjectMethod((jobject)pr.jProvider,
                                                    id,
                                                    jRef,
                                                    false,
                                                    jCc,
                                                    true);
   
             JMPIjvm::checkException(env);             JMPIjvm::checkException(env);
  
             STAT_PMS_PROVIDEREND;             STAT_PMS_PROVIDEREND;
  
             handler.processing();             handler.processing();
             if (jAr) {              if (jVec) {
                 for (int i=0,m=env->GetArrayLength(jAr); i<m; i++) {                  for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<m; i++) {
                     JMPIjvm::checkException(env);                     JMPIjvm::checkException(env);
  
                     jobject jInst=env->GetObjectArrayElement(jAr,i);                      jobject jInst=env->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,i);
                     JMPIjvm::checkException(env);                     JMPIjvm::checkException(env);
  
                     jint         jCi = env->CallIntMethod(jInst,JMPIjvm::jv.CIMInstanceCInst);                     jint         jCi = env->CallIntMethod(jInst,JMPIjvm::jv.CIMInstanceCInst);
Line 608 
Line 775 
                 }                 }
             }             }
             handler.complete();             handler.complete();
               break;
           }
   
           case METHOD_UNKNOWN:
           {
               DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: should not be here!"<<PEGASUS_STD(endl));
               break;
           }
         }         }
     }     }
     HandlerCatch(handler);     HandlerCatch(handler);
Line 625 
Line 800 
  
     HandlerIntro(EnumerateInstanceNames,message,request,response, handler,Array<CIMObjectPath>());     HandlerIntro(EnumerateInstanceNames,message,request,response, handler,Array<CIMObjectPath>());
  
       typedef enum {
          METHOD_UNKNOWN = 0,
          METHOD_PEGASUS_24,
          METHOD_SNIA_PROVIDER20,
       } METHOD_VERSION;
       METHOD_VERSION   eMethodFound  = METHOD_UNKNOWN;
     JNIEnv *env=NULL;     JNIEnv *env=NULL;
     Boolean mode24=false;  
     CIMPropertyList propertyList;  
     jobjectArray pl=NULL;  
  
     try {     try {
         Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,         Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
Line 662 
Line 840 
  
         JMPIProvider & pr=ph.GetProvider();         JMPIProvider & pr=ph.GetProvider();
  
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,          PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.enumerateInstanceNames: " + pr.getName());
             "Calling provider.enumerateInstanceNames: " + pr.getName());  
  
         DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstanceNamesRequest: Calling provider : enumerateInstanceNames"<<pr.getName()<<PEGASUS_STD(endl));         DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstanceNamesRequest: Calling provider : enumerateInstanceNames"<<pr.getName()<<PEGASUS_STD(endl));
  
         JvmVector *jv;          JvmVector *jv = 0;
         env=JMPIjvm::attachThread(&jv);  
  
         jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);          env = JMPIjvm::attachThread(&jv);
   
           JMPIProvider::pm_service_op_lock op_lock(&pr);
   
           STAT_GETSTARTTIME;
   
           jmethodID id = NULL;
   
           // public abstract java.util.Vector enumInstances (org.pegasus.jmpi.CIMObjectPath cop,
           //                                                 boolean                        deep,
           //                                                 org.pegasus.jmpi.CIMClass      cimClass)
           //        throws org.pegasus.jmpi.CIMException
           id = env->GetMethodID((jclass)pr.jProviderClass,
                                 "enumInstances",
                                 "(Lorg/pegasus/jmpi/CIMObjectPath;ZLorg/pegasus/jmpi/CIMClass;)Ljava/util/Vector;");
   
           if (id != NULL)
           {
               eMethodFound = METHOD_SNIA_PROVIDER20;
               DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstanceNamesRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
           }
   
           if (id == NULL)
           {
               env->ExceptionClear();
   
               // public org.pegasus.jmpi.CIMObjectPath[] enumerateInstanceNames (org.pegasus.jmpi.CIMObjectPath op,
               //                                                                 org.pegasus.jmpi.CIMClass      cc)
               //         throws org.pegasus.jmpi.CIMException
               id = env->GetMethodID((jclass)pr.jProviderClass,
                                     "enumerateInstanceNames",
                                     "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;)[Lorg/pegasus/jmpi/CIMObjectPath;");
   
               if (id != NULL)
               {
                   eMethodFound = METHOD_PEGASUS_24;
                   DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstanceNamesRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl));
               }
           }
   
           JMPIjvm::checkException(env);
  
           switch (eMethodFound)
           {
           case METHOD_PEGASUS_24:
           {
               jint    jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);
         jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);         jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);
   
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         CIMClass cls=pr._cimom_handle->getClass(context,request->nameSpace,              CIMClass cls = pr._cimom_handle->getClass(context,
                                                         request->nameSpace,
                           request->className,                           request->className,
                                false,true,true,CIMPropertyList());                                                        false,
                                                         true,
                                                         true,
                                                         CIMPropertyList());
   
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         jObj = DEBUG_ConvertCToJava (CIMClass*, jint, &cls);         jObj = DEBUG_ConvertCToJava (CIMClass*, jint, &cls);
  
         jobject jCc=env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jObj);         jobject jCc=env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jObj);
         JMPIjvm::checkException(env);  
   
         JMPIProvider::pm_service_op_lock op_lock(&pr);  
   
         STAT_GETSTARTTIME;  
  
         jmethodID id=env->GetMethodID((jclass)pr.jProviderClass,"enumInstances",  
            "(Lorg/pegasus/jmpi/CIMObjectPath;ZLorg/pegasus/jmpi/CIMClass;)Ljava/util/Vector;");  
   
         if (id==NULL) {  
            env->ExceptionClear();  
             id=env->GetMethodID((jclass)pr.jProviderClass,"enumerateInstanceNames",  
               "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;)"  
               "[Lorg/pegasus/jmpi/CIMObjectPath;");  
            JMPIjvm::checkException(env);  
             mode24=true;  
         }  
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         if (!mode24) {              jobjectArray jAr = (jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
             jobject jVec=env->CallObjectMethod((jobject)pr.jProvider,id,jRef,true,jCc);                                                                     id,
                                                                      jRef,
                                                                      jCc);
   
             JMPIjvm::checkException(env);             JMPIjvm::checkException(env);
  
             STAT_PMS_PROVIDEREND;             STAT_PMS_PROVIDEREND;
  
             handler.processing();             handler.processing();
             if (jVec) {              if (jAr) {
                 for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<m; i++) {                  for (int i=0,m=env->GetArrayLength(jAr); i<m; i++) {
                     JMPIjvm::checkException(env);                     JMPIjvm::checkException(env);
  
                     jobject inst=env->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,i);                      jobject inst=env->GetObjectArrayElement(jAr,i);
                     JMPIjvm::checkException(env);                     JMPIjvm::checkException(env);
  
                     jint           jCop = env->CallIntMethod(inst,JMPIjvm::jv.CIMObjectPathCInst);                     jint           jCop = env->CallIntMethod(inst,JMPIjvm::jv.CIMObjectPathCInst);
Line 725 
Line 939 
                 }                 }
             }             }
             handler.complete();             handler.complete();
               break;
         }         }
         else {  
             jobjectArray jAr=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,id,jRef,jCc);          case METHOD_SNIA_PROVIDER20:
           {
               jint    jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);
               jobject jRef = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);
   
               JMPIjvm::checkException(env);
   
               CIMClass cls = pr._cimom_handle->getClass(context,
                                                         request->nameSpace,
                                                         request->className,
                                                         false,
                                                         true,
                                                         true,
                                                         CIMPropertyList());
   
               JMPIjvm::checkException(env);
   
               jObj = DEBUG_ConvertCToJava (CIMClass*, jint, &cls);
   
               jobject jCc = env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jObj);
   
               JMPIjvm::checkException(env);
   
               jobject jVec = env->CallObjectMethod((jobject)pr.jProvider,
                                                    id,
                                                    jRef,
                                                    true,
                                                    jCc);
   
             JMPIjvm::checkException(env);             JMPIjvm::checkException(env);
  
             STAT_PMS_PROVIDEREND;             STAT_PMS_PROVIDEREND;
  
             handler.processing();             handler.processing();
             if (jAr) {              if (jVec) {
                 for (int i=0,m=env->GetArrayLength(jAr); i<m; i++) {                  for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<m; i++) {
                     JMPIjvm::checkException(env);                     JMPIjvm::checkException(env);
  
                     jobject inst=env->GetObjectArrayElement(jAr,i);                      jobject inst=env->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,i);
                     JMPIjvm::checkException(env);                     JMPIjvm::checkException(env);
  
                     jint           jCop = env->CallIntMethod(inst,JMPIjvm::jv.CIMObjectPathCInst);                     jint           jCop = env->CallIntMethod(inst,JMPIjvm::jv.CIMObjectPathCInst);
Line 749 
Line 992 
                 }                 }
             }             }
             handler.complete();             handler.complete();
               break;
           }
   
           case METHOD_UNKNOWN:
           {
               DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstanceNamesRequest: should not be here!"<<PEGASUS_STD(endl));
               break;
           }
         }         }
     }     }
     HandlerCatch(handler);     HandlerCatch(handler);
Line 766 
Line 1017 
  
     HandlerIntro(CreateInstance,message,request,response,handler,CIMObjectPath());     HandlerIntro(CreateInstance,message,request,response,handler,CIMObjectPath());
  
       typedef enum {
          METHOD_UNKNOWN = 0,
          METHOD_SNIA_PROVIDER20,
       } METHOD_VERSION;
       METHOD_VERSION   eMethodFound  = METHOD_UNKNOWN;
     JNIEnv *env=NULL;     JNIEnv *env=NULL;
   
     try {     try {
         Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,         Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
             "JMPIProviderManager::handleCreateInstanceRequest - Host name: $0  Name space: $1  Class name: $2",             "JMPIProviderManager::handleCreateInstanceRequest - Host name: $0  Name space: $1  Class name: $2",
Line 802 
Line 1059 
         // forward request         // forward request
         JMPIProvider & pr=ph.GetProvider();         JMPIProvider & pr=ph.GetProvider();
  
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,          PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.createInstance: " + ph.GetProvider().getName());
             "Calling provider.createInstance: " +  
             ph.GetProvider().getName());  
  
         DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateInstanceRequest: Calling provider createInstance: "<<pr.getName()<<PEGASUS_STD(endl));         DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateInstanceRequest: Calling provider createInstance: "<<pr.getName()<<PEGASUS_STD(endl));
  
         JvmVector *jv;          JvmVector *jv = 0;
   
         env=JMPIjvm::attachThread(&jv);         env=JMPIjvm::attachThread(&jv);
  
         jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);          JMPIProvider::pm_service_op_lock op_lock(&pr);
   
           STAT_GETSTARTTIME;
   
           jmethodID id = NULL;
   
           // public abstract org.pegasus.jmpi.CIMObjectPath createInstance (org.pegasus.jmpi.CIMObjectPath cop,
           //                                                                org.pegasus.jmpi.CIMInstance   cimInstance)
           //        throws org.pegasus.jmpi.CIMException
           id = env->GetMethodID((jclass)pr.jProviderClass,
                                 "createInstance",
                                 "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMInstance;)Lorg/pegasus/jmpi/CIMObjectPath;");
   
           if (id != NULL)
           {
               eMethodFound = METHOD_SNIA_PROVIDER20;
               DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateInstanceRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
           }
  
         jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);  
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         jObj = DEBUG_ConvertCToJava (CIMInstance*, jint, &request->newInstance);          switch (eMethodFound)
           {
           case METHOD_SNIA_PROVIDER20:
           {
               jint    jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);
               jobject jRef = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);
  
         jobject jInst=env->NewObject(jv->CIMInstanceClassRef,jv->CIMInstanceNewI,jObj);  
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         JMPIProvider::pm_service_op_lock op_lock(&pr);              jObj = DEBUG_ConvertCToJava (CIMInstance*, jint, &request->newInstance);
  
         STAT_GETSTARTTIME;              jobject jInst = env->NewObject(jv->CIMInstanceClassRef,jv->CIMInstanceNewI,jObj);
  
         jmethodID id=env->GetMethodID((jclass)pr.jProviderClass,"createInstance",  
            "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMInstance;)Lorg/pegasus/jmpi/CIMObjectPath;");  
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateInstanceRequest: id = "<<id<<", jRef = "<<jRef<<", jInst = "<<jInst<<PEGASUS_STD(endl));         DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateInstanceRequest: id = "<<id<<", jRef = "<<jRef<<", jInst = "<<jInst<<PEGASUS_STD(endl));
  
         jobject inst=env->CallObjectMethod((jobject)pr.jProvider,id,jRef,jInst);              jobject inst = env->CallObjectMethod((jobject)pr.jProvider,
                                                    id,
                                                    jRef,
                                                    jInst);
   
               JMPIjvm::checkException(env);
  
         STAT_PMS_PROVIDEREND;         STAT_PMS_PROVIDEREND;
  
         JMPIjvm::checkException(env);  
         handler.processing();         handler.processing();
   
         if (inst) {         if (inst) {
             jint           jCop = env->CallIntMethod(inst,JMPIjvm::jv.CIMObjectPathCInst);             jint           jCop = env->CallIntMethod(inst,JMPIjvm::jv.CIMObjectPathCInst);
             CIMObjectPath *cop  = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);             CIMObjectPath *cop  = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
Line 844 
Line 1123 
             handler.deliver(*cop);             handler.deliver(*cop);
         }         }
         handler.complete();         handler.complete();
               break;
           }
   
           case METHOD_UNKNOWN:
           {
               DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateInstanceRequest: should not be here!"<<PEGASUS_STD(endl));
               break;
           }
           }
     }     }
     HandlerCatch(handler);     HandlerCatch(handler);
  
Line 860 
Line 1148 
  
     HandlerIntroVoid(ModifyInstance,message,request,response,handler);     HandlerIntroVoid(ModifyInstance,message,request,response,handler);
  
       typedef enum {
          METHOD_UNKNOWN = 0,
          METHOD_PEGASUS_24,
          METHOD_SNIA_PROVIDER20,
       } METHOD_VERSION;
       METHOD_VERSION   eMethodFound  = METHOD_UNKNOWN;
     JNIEnv *env=NULL;     JNIEnv *env=NULL;
     Boolean mode24=false;  
     CIMPropertyList propertyList;  
     jobjectArray pl=NULL;  
  
     try {     try {
         Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,         Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
Line 898 
Line 1189 
         context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));         context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
         context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));         context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
  
         CIMPropertyList propertyList(request->propertyList);  
   
         // forward request         // forward request
         JMPIProvider & pr=ph.GetProvider();         JMPIProvider & pr=ph.GetProvider();
  
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,"Calling provider.modifyInstance: " + pr.getName());         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,"Calling provider.modifyInstance: " + pr.getName());
  
         JvmVector *jv;          DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleModifyInstanceRequest: Calling provider "<<PEGASUS_STD(hex)<<(int)&pr<<PEGASUS_STD(dec)<<", name = "<<pr.getName ()<<", module = "<<pr.getModule()<<" modifyInstance: "<<pr.getName()<<PEGASUS_STD(endl));
   ////////DDD(debugPrintMethodPointers (env, (jclass)pr.jProviderClass));
   
           JvmVector *jv = 0;
   
         env=JMPIjvm::attachThread(&jv);         env=JMPIjvm::attachThread(&jv);
  
         DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleModifyInstanceRequest: Calling provider "<<PEGASUS_STD(hex)<<(int)&pr<<PEGASUS_STD(dec)<<", name = "<<pr.getName ()<<", module = "<<pr.getModule()<<" modifyInstance: "<<pr.getName()<<PEGASUS_STD(endl));          JMPIProvider::pm_service_op_lock op_lock(&pr);
         DDD(debugPrintMethodPointers (env, (jclass)pr.jProviderClass));  
  
           STAT_GETSTARTTIME;
   
           jmethodID id = NULL;
   
           // public abstract void setInstance (org.pegasus.jmpi.CIMObjectPath cop,
           //                                   org.pegasus.jmpi.CIMInstance   cimInstance)
           //        org.pegasus.jmpi.throws CIMException
           id = env->GetMethodID((jclass)pr.jProviderClass,
                                 "setInstance",
                                 "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMInstance;)V");
   
           if (id != NULL)
           {
               eMethodFound = METHOD_SNIA_PROVIDER20;
               DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleModifyInstanceRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
           }
   
           if (id == NULL)
           {
               env->ExceptionClear();
   
               // public void setInstance (org.pegasus.jmpi.CIMObjectPath op,
               //                          org.pegasus.jmpi.CIMInstance   ci,
               //                          boolean                        includeQualifiers,
               //                          java.lang.String[]             propertyList)
               //        throws org.pegasus.jmpi.CIMException
               id = env->GetMethodID((jclass)pr.jProviderClass,
                                     "setInstance",
                                     "(Lorg/pegasus/jmpi/CIMObjectPath;Z[Ljava/lang/String)V");
   
               if (id != NULL)
               {
                   eMethodFound = METHOD_PEGASUS_24;
                   DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleModifyInstanceRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl));
               }
           }
   
           JMPIjvm::checkException(env);
   
           switch (eMethodFound)
           {
           case METHOD_PEGASUS_24:
           {
         jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);         jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);
               jobject jRef = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);
   
               JMPIjvm::checkException(env);
   
               jObj = DEBUG_ConvertCToJava (CIMInstance*, jint, &request->modifiedInstance);
   
               jobject jInst = env->NewObject(jv->CIMInstanceClassRef,jv->CIMInstanceNewI,jObj);
  
               JMPIjvm::checkException(env);
   
               jobjectArray jPropertyList = getList(jv,env,request->propertyList);
   
               env->CallVoidMethod((jobject)pr.jProvider,
                                   id,
                                   jRef,
                                   jInst,
                                   jPropertyList);
   
               JMPIjvm::checkException(env);
   
               STAT_PMS_PROVIDEREND;
               break;
           }
   
           case METHOD_SNIA_PROVIDER20:
           {
               jint    jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);
         jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);         jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);
   
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         jObj = DEBUG_ConvertCToJava (CIMInstance*, jint, &request->modifiedInstance);         jObj = DEBUG_ConvertCToJava (CIMInstance*, jint, &request->modifiedInstance);
  
         jobject jInst=env->NewObject(jv->CIMInstanceClassRef,jv->CIMInstanceNewI,jObj);         jobject jInst=env->NewObject(jv->CIMInstanceClassRef,jv->CIMInstanceNewI,jObj);
   
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
               env->CallVoidMethod((jobject)pr.jProvider,
                                   id,
                                   jRef,
                                   jInst);
   
               JMPIjvm::checkException(env);
   
               STAT_PMS_PROVIDEREND;
               break;
           }
   
           case METHOD_UNKNOWN:
           {
               DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleModifyInstanceRequest: should not be here!"<<PEGASUS_STD(endl));
               break;
           }
           }
       }
       HandlerCatch(handler);
   
       if (env) JMPIjvm::detachThread();
   
       PEG_METHOD_EXIT();
   
       return(response);
   }
   
   Message * JMPIProviderManager::handleDeleteInstanceRequest(const Message * message) throw()
   {
       PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleDeleteInstanceRequest");
   
       HandlerIntroVoid(DeleteInstance,message,request,response,handler);
   
       typedef enum {
          METHOD_UNKNOWN = 0,
          METHOD_SNIA_PROVIDER20,
       } METHOD_VERSION;
       METHOD_VERSION   eMethodFound  = METHOD_UNKNOWN;
       JNIEnv          *env           = NULL;
   
       try {
           Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
               "JMPIProviderManager::handleDeleteInstanceRequest - Host name: $0  Name space: $1  Class name: $2",
               System::getHostName(),
               request->nameSpace.getString(),
               request->instanceName.getClassName().getString());
   
           DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteInstanceRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->instanceName.getClassName().getString()<<PEGASUS_STD(endl));
   
           // make target object path
           CIMObjectPath objectPath(
               System::getHostName(),
               request->nameSpace,
               request->instanceName.getClassName(),
               request->instanceName.getKeyBindings());
   
           // resolve provider name
           ProviderName name = _resolveProviderName(
               request->operationContext.get(ProviderIdContainer::NAME));
   
           // get cached or load new provider module
           JMPIProvider::OpProviderHolder ph =
               providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);
   
           // convert arguments
           OperationContext context;
   
           context.insert(request->operationContext.get(IdentityContainer::NAME));
           context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
           context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
   
           // forward request
           JMPIProvider &pr = ph.GetProvider();
   
           PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.deleteInstance: " + pr.getName());
   
           DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteInstanceRequest: Calling provider deleteInstance: "<<pr.getName()<<PEGASUS_STD(endl));
   
           JvmVector *jv = 0;
   
           env = JMPIjvm::attachThread(&jv);
   
         JMPIProvider::pm_service_op_lock op_lock(&pr);         JMPIProvider::pm_service_op_lock op_lock(&pr);
  
         STAT_GETSTARTTIME;         STAT_GETSTARTTIME;
  
         jmethodID id=env->GetMethodID((jclass)pr.jProviderClass,"setInstance",          jmethodID id = NULL;
            "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMInstance;)V");  
           // public abstract void deleteInstance (org.pegasus.jmpi.CIMObjectPath cop)
           //        throws org.pegasus.jmpi.CIMException
           id = env->GetMethodID((jclass)pr.jProviderClass,
                                 "deleteInstance",
                                 "(Lorg/pegasus/jmpi/CIMObjectPath;)V");
   
           if (id != NULL)
           {
               eMethodFound = METHOD_SNIA_PROVIDER20;
               DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteInstanceRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
           }
  
         if (id==NULL) {  
            env->ExceptionClear();  
            id=env->GetMethodID((jclass)pr.jProviderClass,"setInstance",  
               "(Lorg/pegasus/jmpi/CIMObjectPath;Z[Ljava/lang/String)V");  
            JMPIjvm::checkException(env);            JMPIjvm::checkException(env);
            mode24=true;  
            pl=getList(jv,env,request->propertyList);          switch (eMethodFound)
           {
           case METHOD_SNIA_PROVIDER20:
           {
               jint    jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);
               jobject jRef = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);
   
               JMPIjvm::checkException(env);
   
               env->CallVoidMethod((jobject)pr.jProvider,id,jRef);
   
               JMPIjvm::checkException(env);
   
               STAT_PMS_PROVIDEREND;
               break;
           }
   
           case METHOD_UNKNOWN:
           {
               DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteInstanceRequest: should not be here!"<<PEGASUS_STD(endl));
               break;
         }         }
           }
       }
       HandlerCatch(handler);
   
       if (env) JMPIjvm::detachThread();
   
       PEG_METHOD_EXIT();
   
       return(response);
   }
   
   Message * JMPIProviderManager::handleExecQueryRequest(const Message * message) throw()
   {
       PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleExecQueryRequest");
   
       HandlerIntro(ExecQuery,message,request,response,handler,Array<CIMObject>());
   
       typedef enum {
          METHOD_UNKNOWN = 0,
          METHOD_PEGASUS_24,
          METHOD_SNIA_PROVIDER20,
       } METHOD_VERSION;
       METHOD_VERSION   eMethodFound  = METHOD_UNKNOWN;
       JNIEnv          *env           = NULL;
   
       try {
           Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
               "JMPIProviderManager::handleExecQueryRequest - Host name: $0  Name space: $1  Class name: $2",
               System::getHostName(),
               request->nameSpace.getString(),
               request->className.getString());
   
           DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleExecQueryRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->className.getString()<<PEGASUS_STD(endl));
   
           // make target object path
           CIMObjectPath objectPath(
               System::getHostName(),
               request->nameSpace,
               request->className);
   
           // resolve provider name
           ProviderName name = _resolveProviderName(
               request->operationContext.get(ProviderIdContainer::NAME));
   
           // get cached or load new provider module
           JMPIProvider::OpProviderHolder ph =
               providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);
   
           // convert arguments
           OperationContext context;
   
           context.insert(request->operationContext.get(IdentityContainer::NAME));
           context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
           context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
   
           // forward request
           JMPIProvider &pr = ph.GetProvider();
   
           PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,"Calling provider.execQuery: " + pr.getName());
   
           DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleExecQueryRequest: Calling provider execQuery: "<<pr.getName()<<", queryLanguage: "<<request->queryLanguage<<", query: "<<request->query<<PEGASUS_STD(endl));
   
           JvmVector *jv = 0;
   
           env = JMPIjvm::attachThread(&jv);
   
           JMPIProvider::pm_service_op_lock op_lock(&pr);
   
           STAT_GETSTARTTIME;
   
           jmethodID id = NULL;
   
           // public abstract java.util.Vector execQuery (org.pegasus.jmpi.CIMObjectPath cop,
           //                                             java.lang.String               queryStatement,
           //                                             int                            ql,
           //                                             org.pegasus.jmpi.CIMClass      cimClass)
           //        throws org.pegasus.jmpi.CIMException
           //
           id = env->GetMethodID((jclass)pr.jProviderClass,
                                 "execQuery",
                                 "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ILorg/pegasus/jmpi/CIMClass;)Ljava/util/Vector;");
   
           if (id != NULL)
           {
               eMethodFound = METHOD_SNIA_PROVIDER20;
               DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleExecQueryRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
           }
   
           if (id == NULL)
           {
               env->ExceptionClear();
   
               // public abstract org.pegasus.jmpi.CIMInstance[] execQuery(org.pegasus.jmpi.CIMObjectPath op,
               //                                                          java.lang.String               query,
               //                                                          java.lang.String               ql,
               //                                                          org.pegasus.jmpi.CIMClass      cc)
               //        throws org.pegasus.jmpi.CIMException
               id = env->GetMethodID((jclass)pr.jProviderClass,
                                     "execQuery",
                                     "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Lorg/pegasus/jmpi/CIMClass;)[Lorg/pegasus/jmpi/CIMInstance;");
   
               if (id != NULL)
               {
                   eMethodFound = METHOD_PEGASUS_24;
                   DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleExecQueryRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl));
               }
           }
   
           if (id == NULL)
           {
               DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleExecQueryRequest: found no method!"<<PEGASUS_STD(endl));
           }
   
           JMPIjvm::checkException(env);
   
           switch (eMethodFound)
           {
           case METHOD_PEGASUS_24:
           {
               jint    jcopref = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);
               jobject jcop    = env->NewObject(jv->CIMObjectPathClassRef, jv->CIMObjectPathNewI, jcopref);
   
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         if (!mode24)              jstring jqueryLanguage = env->NewStringUTF(request->queryLanguage.getCString());
            env->CallVoidMethod((jobject)pr.jProvider,id,jRef,jInst);              jstring jquery         = env->NewStringUTF(request->query.getCString());
         else  
            env->CallVoidMethod((jobject)pr.jProvider,id,jRef,jInst,pl);              CIMClass cls = pr._cimom_handle->getClass(context,
                                                         request->nameSpace,
                                                         request->className,
                                                         false,
                                                         true,
                                                         true,
                                                         CIMPropertyList());
               JMPIjvm::checkException(env);
   
               jint jcls = DEBUG_ConvertCToJava (CIMClass*, jint, &cls);
   
               jobject jCc=env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jcls);
   
               JMPIjvm::checkException(env);
   
               jobjectArray jAr = (jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
                                                                      id,
                                                                      jcop,
                                                                      jquery,
                                                                      jqueryLanguage,
                                                                      jCc);
   
               JMPIjvm::checkException(env);
  
         STAT_PMS_PROVIDEREND;         STAT_PMS_PROVIDEREND;
  
               handler.processing();
               if (jAr) {
                   for (int i=0,m=env->GetArrayLength(jAr); i<m; i++) {
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
     }  
     HandlerCatch(handler);  
  
     if (env) JMPIjvm::detachThread();                      jobject inst=env->GetObjectArrayElement(jAr,i);
                       JMPIjvm::checkException(env);
  
     PEG_METHOD_EXIT();                      jint         jCi = env->CallIntMethod(inst,JMPIjvm::jv.CIMInstanceCInst);
                       CIMInstance *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi);
  
     return(response);                      JMPIjvm::checkException(env);
   
                       handler.deliver(*ci);
                   }
               }
               handler.complete();
               break;
 } }
  
 Message * JMPIProviderManager::handleDeleteInstanceRequest(const Message * message) throw()          case METHOD_SNIA_PROVIDER20:
 { {
     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleDeleteInstanceRequest");              jint    jcopref = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);
               jobject jcop    = env->NewObject(jv->CIMObjectPathClassRef, jv->CIMObjectPathNewI, jcopref);
     HandlerIntroVoid(DeleteInstance,message,request,response,handler);  
  
     JNIEnv *env=NULL;              JMPIjvm::checkException(env);
     try {  
         Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,  
             "JMPIProviderManager::handleDeleteInstanceRequest - Host name: $0  Name space: $1  Class name: $2",  
             System::getHostName(),  
             request->nameSpace.getString(),  
             request->instanceName.getClassName().getString());  
  
         DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteInstanceRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->instanceName.getClassName().getString()<<PEGASUS_STD(endl));              jstring jqueryLanguage = env->NewStringUTF(request->queryLanguage.getCString());
               jstring jquery         = env->NewStringUTF(request->query.getCString());
  
         // make target object path              CIMClass cls = pr._cimom_handle->getClass(context,
         CIMObjectPath objectPath(  
             System::getHostName(),  
             request->nameSpace,             request->nameSpace,
             request->instanceName.getClassName(),                                                        request->className,
             request->instanceName.getKeyBindings());                                                        false,
                                                         true,
         // resolve provider name                                                        true,
         ProviderName name = _resolveProviderName(                                                        CIMPropertyList());
             request->operationContext.get(ProviderIdContainer::NAME));              JMPIjvm::checkException(env);
   
         // get cached or load new provider module  
         JMPIProvider::OpProviderHolder ph =  
             providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);  
  
         // convert arguments              jint jcls = DEBUG_ConvertCToJava (CIMClass*, jint, &cls);
         OperationContext context;  
  
         context.insert(request->operationContext.get(IdentityContainer::NAME));              jobject jCc=env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jcls);
         context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));  
         context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));  
  
         // forward request              JMPIjvm::checkException(env);
         JMPIProvider & pr=ph.GetProvider();  
  
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,              jint jql = 0; // @BUG - how to convert?
             "Calling provider.deleteInstance: " + pr.getName());  
  
         DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteInstanceRequest: Calling provider deleteInstance: "<<pr.getName()<<PEGASUS_STD(endl));              jobjectArray jVec = (jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
                                                                       id,
                                                                       jcop,
                                                                       jquery,
                                                                       jql,
                                                                       jCc);
  
         JvmVector *jv;              JMPIjvm::checkException(env);
         env=JMPIjvm::attachThread(&jv);  
  
         jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);              STAT_PMS_PROVIDEREND;
  
         jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);              handler.processing();
               if (jVec) {
                   for (int i=0,m=env->GetArrayLength(jVec); i<m; i++) {
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         JMPIProvider::pm_service_op_lock op_lock(&pr);                      jobject inst=env->GetObjectArrayElement(jVec,i);
                       JMPIjvm::checkException(env);
  
         STAT_GETSTARTTIME;                      jint         jCi = env->CallIntMethod(inst,JMPIjvm::jv.CIMInstanceCInst);
                       CIMInstance *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi);
  
         jmethodID id=env->GetMethodID((jclass)pr.jProviderClass,"deleteInstance",  
            "(Lorg/pegasus/jmpi/CIMObjectPath;)V");  
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         env->CallVoidMethod((jobject)pr.jProvider,id,jRef);                      handler.deliver(*ci);
                   }
         STAT_PMS_PROVIDEREND;              }
               handler.complete();
               break;
           }
  
         JMPIjvm::checkException(env);          case METHOD_UNKNOWN:
           {
               DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleExecQueryRequest: should not be here!"<<PEGASUS_STD(endl));
               break;
           }
           }
     }     }
     HandlerCatch(handler);     HandlerCatch(handler);
  
Line 1033 
Line 1655 
     return(response);     return(response);
 } }
  
   
 Message * JMPIProviderManager::handleAssociatorsRequest(const Message * message) throw() Message * JMPIProviderManager::handleAssociatorsRequest(const Message * message) throw()
 { {
     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleAssociatorsRequest");     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleAssociatorsRequest");
Line 1042 
Line 1663 
  
     typedef enum {     typedef enum {
        METHOD_UNKNOWN = 0,        METHOD_UNKNOWN = 0,
        METHOD_DIRECTOR,         METHOD_PEGASUS_24,
        METHOD_SNIA_PROVIDER20,        METHOD_SNIA_PROVIDER20,
     } METHOD_VERSION;     } METHOD_VERSION;
     METHOD_VERSION   eMethodFound  = METHOD_UNKNOWN;     METHOD_VERSION   eMethodFound  = METHOD_UNKNOWN;
     JNIEnv          *env           = NULL;     JNIEnv          *env           = NULL;
     CIMPropertyList  propertyList;  
     jobjectArray     jPropertyList = NULL;  
  
     try {     try {
         Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,         Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
Line 1057 
Line 1676 
             request->nameSpace.getString(),             request->nameSpace.getString(),
             request->objectName.getClassName().getString());             request->objectName.getClassName().getString());
  
         DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteInstanceRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->objectName.getClassName().getString()<<PEGASUS_STD(endl));          DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->objectName.getClassName().getString()<<PEGASUS_STD(endl));
  
         // make target object path         // make target object path
         CIMObjectPath objectPath(         CIMObjectPath objectPath(
Line 1098 
Line 1717 
  
         env = JMPIjvm::attachThread(&jv);         env = JMPIjvm::attachThread(&jv);
  
         jint    jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);  
         jobject jAssociationName    = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef);  
   
         JMPIjvm::checkException(env);  
   
         jstring jResultClass = env->NewStringUTF(request->resultClass.getString().getCString());  
         jstring jRole        = env->NewStringUTF(request->role.getCString());  
         jstring jResultRole  = env->NewStringUTF(request->resultRole.getCString());  
   
         JMPIjvm::checkException(env);  
   
         JMPIProvider::pm_service_op_lock op_lock(&pr);         JMPIProvider::pm_service_op_lock op_lock(&pr);
  
         STAT_GETSTARTTIME;         STAT_GETSTARTTIME;
Line 1116 
Line 1724 
         jmethodID id = NULL;         jmethodID id = NULL;
  
         // public abstract java.util.Vector associators (org.pegasus.jmpi.CIMObjectPath assocName,         // public abstract java.util.Vector associators (org.pegasus.jmpi.CIMObjectPath assocName,
           //                                               org.pegasus.jmpi.CIMObjectPath pathName,
         //                                               java.lang.String               resultClass,         //                                               java.lang.String               resultClass,
         //                                               java.lang.String               role,         //                                               java.lang.String               role,
         //                                               java.lang.String               resultRole,         //                                               java.lang.String               resultRole,
         //                                               boolean                        includeQualifiers,         //                                               boolean                        includeQualifiers,
         //                                               boolean                        includeClassOrigin,         //                                               boolean                        includeClassOrigin,
         //                                               java.lang.String[]             propertyList)         //                                               java.lang.String[]             propertyList)
         //        throws org.pegasus.jmpi.CIMException;          //        throws org.pegasus.jmpi.CIMException
         //         //
         id = env->GetMethodID((jclass)pr.jProviderClass,         id = env->GetMethodID((jclass)pr.jProviderClass,
                               "associators",                               "associators",
                               "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;");                                "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;");
   //@BUG was:                   "(Lorg/pegasus/jmpi/CIMObjectPath;                                Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;"
  
         if (id != NULL)         if (id != NULL)
         {         {
             eMethodFound = METHOD_DIRECTOR;              eMethodFound = METHOD_SNIA_PROVIDER20;
             DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found METHOD_DIRECTOR."<<PEGASUS_STD(endl));              DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
         }         }
  
         if (id == NULL)         if (id == NULL)
Line 1139 
Line 1749 
             env->ExceptionClear();             env->ExceptionClear();
  
             // public abstract java.util.Vector associators (org.pegasus.jmpi.CIMObjectPath assocName,             // public abstract java.util.Vector associators (org.pegasus.jmpi.CIMObjectPath assocName,
             //                                               org.pegasus.jmpi.CIMObjectPath pathName,  
             //                                               java.lang.String               resultClass,             //                                               java.lang.String               resultClass,
             //                                               java.lang.String               role,             //                                               java.lang.String               role,
             //                                               java.lang.String               resultRole,             //                                               java.lang.String               resultRole,
             //                                               boolean                        includeQualifiers,             //                                               boolean                        includeQualifiers,
             //                                               boolean                        includeClassOrigin,             //                                               boolean                        includeClassOrigin,
             //                                               java.lang.String[]             propertyList)             //                                               java.lang.String[]             propertyList)
             //        throws org.pegasus.jmpi.CIMException;              //        throws org.pegasus.jmpi.CIMException
             //             //
             id = env->GetMethodID((jclass)pr.jProviderClass,             id = env->GetMethodID((jclass)pr.jProviderClass,
                                   "associators",                                   "associators",
                                   "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;");                                    "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;");
   //@BUG was:                       "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ[Ljava/lang/String;)[Lorg/pegasus/jmpi/CIMInstance;"
  
             if (id != NULL)             if (id != NULL)
             {             {
                 eMethodFound = METHOD_SNIA_PROVIDER20;                  eMethodFound = METHOD_PEGASUS_24;
                 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));                  DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl));
             }             }
         }         }
  
Line 1166 
Line 1776 
  
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         jPropertyList = getList(jv,env,request->propertyList);  
   
         switch (eMethodFound)         switch (eMethodFound)
         {         {
         case METHOD_DIRECTOR:          case METHOD_PEGASUS_24:
         {         {
               jint    jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);
               jobject jAssociationName    = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef);
   
               JMPIjvm::checkException(env);
   
               jstring jResultClass = env->NewStringUTF(request->resultClass.getString().getCString());
               jstring jRole        = env->NewStringUTF(request->role.getCString());
               jstring jResultRole  = env->NewStringUTF(request->resultRole.getCString());
   
               JMPIjvm::checkException(env);
   
               jobjectArray jPropertyList = getList(jv,env,request->propertyList);
   
             jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,             jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
                                                                   id,                                                                   id,
                                                                   jAssociationName,                                                                   jAssociationName,
Line 1181 
Line 1802 
                                                                   false,                                                                   false,
                                                                   false,                                                                   false,
                                                                   jPropertyList);                                                                   jPropertyList);
   
             JMPIjvm::checkException(env);             JMPIjvm::checkException(env);
  
             STAT_PMS_PROVIDEREND;             STAT_PMS_PROVIDEREND;
Line 1215 
Line 1837 
  
         case METHOD_SNIA_PROVIDER20:         case METHOD_SNIA_PROVIDER20:
         {         {
               jint    jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);
               jobject jAssociationName    = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef);
   
               JMPIjvm::checkException(env);
   
             jint    jPathNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &assocPath);             jint    jPathNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &assocPath);
             jobject jPathName    = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jPathNameRef);             jobject jPathName    = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jPathNameRef);
  
             JMPIjvm::checkException(env);             JMPIjvm::checkException(env);
  
               jstring jResultClass = env->NewStringUTF(request->resultClass.getString().getCString());
               jstring jRole        = env->NewStringUTF(request->role.getCString());
               jstring jResultRole  = env->NewStringUTF(request->resultRole.getCString());
   
               JMPIjvm::checkException(env);
   
               jobjectArray jPropertyList = getList(jv,env,request->propertyList);
   
             jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,             jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
                                                                  id,                                                                  id,
                                                                  jAssociationName,                                                                  jAssociationName,
Line 1230 
Line 1865 
                                                                  false,                                                                  false,
                                                                  false,                                                                  false,
                                                                  jPropertyList);                                                                  jPropertyList);
   
             JMPIjvm::checkException(env);             JMPIjvm::checkException(env);
  
             STAT_PMS_PROVIDEREND;             STAT_PMS_PROVIDEREND;
Line 1286 
Line 1922 
  
     typedef enum {     typedef enum {
        METHOD_UNKNOWN = 0,        METHOD_UNKNOWN = 0,
        METHOD_DIRECTOR,         METHOD_PEGASUS_24,
        METHOD_SNIA_PROVIDER20        METHOD_SNIA_PROVIDER20
     } METHOD_VERSION;     } METHOD_VERSION;
     METHOD_VERSION   eMethodFound  = METHOD_UNKNOWN;     METHOD_VERSION   eMethodFound  = METHOD_UNKNOWN;
Line 1340 
Line 1976 
  
         env = JMPIjvm::attachThread(&jv);         env = JMPIjvm::attachThread(&jv);
  
         jint    jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);  
         jobject jAssociationName    = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef);  
   
         JMPIjvm::checkException(env);  
   
         jstring jResultClass = env->NewStringUTF(request->resultClass.getString().getCString());  
         jstring jRole        = env->NewStringUTF(request->role.getCString());  
         jstring jResultRole  = env->NewStringUTF(request->resultRole.getCString());  
   
         JMPIjvm::checkException(env);  
   
         JMPIProvider::pm_service_op_lock op_lock(&pr);         JMPIProvider::pm_service_op_lock op_lock(&pr);
  
         STAT_GETSTARTTIME;         STAT_GETSTARTTIME;
Line 1358 
Line 1983 
         jmethodID id = NULL;         jmethodID id = NULL;
  
         // public abstract java.util.Vector associatorNames (org.pegasus.jmpi.CIMObjectPath assocName,         // public abstract java.util.Vector associatorNames (org.pegasus.jmpi.CIMObjectPath assocName,
           //                                                   org.pegasus.jmpi.CIMObjectPath pathName,
         //                                                   java.lang.String               resultClass,         //                                                   java.lang.String               resultClass,
         //                                                   java.lang.String               role,         //                                                   java.lang.String               role,
         //                                                   java.lang.String               resultRole)         //                                                   java.lang.String               resultRole)
         //        throws org.pegasus.jmpi.CIMException         //        throws org.pegasus.jmpi.CIMException
         id = env->GetMethodID((jclass)pr.jProviderClass,         id = env->GetMethodID((jclass)pr.jProviderClass,
                               "associatorNames",                               "associatorNames",
                               "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Vector;");                                "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Vector;");
   //@BUG was:                   "(Lorg/pegasus/jmpi/CIMObjectPath;                                Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Vector;"
  
         if (id != NULL)         if (id != NULL)
         {         {
             eMethodFound = METHOD_DIRECTOR;              eMethodFound = METHOD_SNIA_PROVIDER20;
             DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: found METHOD_DIRECTOR."<<PEGASUS_STD(endl));              DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
         }         }
  
         if (id == NULL)         if (id == NULL)
Line 1377 
Line 2004 
             env->ExceptionClear();             env->ExceptionClear();
  
             // public abstract java.util.Vector associatorNames (org.pegasus.jmpi.CIMObjectPath assocName,             // public abstract java.util.Vector associatorNames (org.pegasus.jmpi.CIMObjectPath assocName,
             //                                                   org.pegasus.jmpi.CIMObjectPath pathName,  
             //                                                   java.lang.String               resultClass,             //                                                   java.lang.String               resultClass,
             //                                                   java.lang.String               role,             //                                                   java.lang.String               role,
             //                                                   java.lang.String               resultRole)             //                                                   java.lang.String               resultRole)
             //        throws org.pegasus.jmpi.CIMException             //        throws org.pegasus.jmpi.CIMException
             id = env->GetMethodID((jclass)pr.jProviderClass,             id = env->GetMethodID((jclass)pr.jProviderClass,
                                   "associatorNames",                                   "associatorNames",
                                   "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Vector;");                                    "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Vector;");
   //@BUG was:                       "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Lorg/pegasus/jmpi/CIMObjectPath;"
  
             if (id != NULL)             if (id != NULL)
             {             {
                 eMethodFound = METHOD_SNIA_PROVIDER20;                  eMethodFound = METHOD_PEGASUS_24;
                 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));                  DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl));
             }             }
         }         }
  
Line 1402 
Line 2029 
  
         switch (eMethodFound)         switch (eMethodFound)
         {         {
         case METHOD_DIRECTOR:          case METHOD_PEGASUS_24:
         {         {
               jint    jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);
               jobject jAssociationName    = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef);
   
               JMPIjvm::checkException(env);
   
               jstring jResultClass = env->NewStringUTF(request->resultClass.getString().getCString());
               jstring jRole        = env->NewStringUTF(request->role.getCString());
               jstring jResultRole  = env->NewStringUTF(request->resultRole.getCString());
   
               JMPIjvm::checkException(env);
   
             jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,             jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
                                                                   id,                                                                   id,
                                                                   jAssociationName,                                                                   jAssociationName,
                                                                   jResultClass,                                                                   jResultClass,
                                                                   jRole,                                                                   jRole,
                                                                   jResultRole);                                                                   jResultRole);
   
             JMPIjvm::checkException(env);             JMPIjvm::checkException(env);
  
             STAT_PMS_PROVIDEREND;             STAT_PMS_PROVIDEREND;
Line 1437 
Line 2076 
  
         case METHOD_SNIA_PROVIDER20:         case METHOD_SNIA_PROVIDER20:
         {         {
               jint    jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);
               jobject jAssociationName    = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef);
   
               JMPIjvm::checkException(env);
   
             jint    jPathNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &assocPath);             jint    jPathNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &assocPath);
             jobject jPathName    = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jPathNameRef);             jobject jPathName    = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jPathNameRef);
  
             JMPIjvm::checkException(env);             JMPIjvm::checkException(env);
  
               jstring jResultClass = env->NewStringUTF(request->resultClass.getString().getCString());
               jstring jRole        = env->NewStringUTF(request->role.getCString());
               jstring jResultRole  = env->NewStringUTF(request->resultRole.getCString());
   
               JMPIjvm::checkException(env);
   
             jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,             jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
                                                                   id,                                                                   id,
                                                                   jAssociationName,                                                                   jAssociationName,
Line 1449 
Line 2099 
                                                                   jResultClass,                                                                   jResultClass,
                                                                   jRole,                                                                   jRole,
                                                                   jResultRole);                                                                   jResultRole);
   
             JMPIjvm::checkException(env);             JMPIjvm::checkException(env);
  
             STAT_PMS_PROVIDEREND;             STAT_PMS_PROVIDEREND;
Line 1498 
Line 2149 
  
     typedef enum {     typedef enum {
        METHOD_UNKNOWN = 0,        METHOD_UNKNOWN = 0,
        METHOD_DIRECTOR,         METHOD_PEGASUS_24,
        METHOD_SNIA_PROVIDER20,        METHOD_SNIA_PROVIDER20,
     } METHOD_VERSION;     } METHOD_VERSION;
     METHOD_VERSION   eMethodFound  = METHOD_UNKNOWN;     METHOD_VERSION   eMethodFound  = METHOD_UNKNOWN;
     JNIEnv          *env           = NULL;     JNIEnv          *env           = NULL;
     CIMPropertyList  propertyList;  
     jobjectArray     jPropertyList = NULL;  
  
     try {     try {
         Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,         Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
Line 1554 
Line 2203 
  
         env = JMPIjvm::attachThread(&jv);         env = JMPIjvm::attachThread(&jv);
  
         jint    jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);  
         jobject jAssociationName    = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef);  
   
         JMPIjvm::checkException(env);  
   
         jstring jRole = env->NewStringUTF(request->role.getCString());  
   
         JMPIjvm::checkException(env);  
   
         JMPIProvider::pm_service_op_lock op_lock(&pr);         JMPIProvider::pm_service_op_lock op_lock(&pr);
  
         STAT_GETSTARTTIME;         STAT_GETSTARTTIME;
Line 1570 
Line 2210 
         jmethodID id = NULL;         jmethodID id = NULL;
  
         // public abstract java.util.Vector references (org.pegasus.jmpi.CIMObjectPath assocName,         // public abstract java.util.Vector references (org.pegasus.jmpi.CIMObjectPath assocName,
           //                                              org.pegasus.jmpi.CIMObjectPath pathName,
         //                                              java.lang.String               role,         //                                              java.lang.String               role,
         //                                              boolean                        includeQualifiers,         //                                              boolean                        includeQualifiers,
         //                                              boolean                        includeClassOrigin,         //                                              boolean                        includeClassOrigin,
Line 1577 
Line 2218 
         //        throws org.pegasus.jmpi.CIMException         //        throws org.pegasus.jmpi.CIMException
         id = env->GetMethodID((jclass)pr.jProviderClass,         id = env->GetMethodID((jclass)pr.jProviderClass,
                               "references",                               "references",
                               "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;");                                "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;");
   //@BUG was:                   "(Lorg/pegasus/jmpi/CIMObjectPath;                                Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;"
  
         if (id != NULL)         if (id != NULL)
         {         {
             eMethodFound = METHOD_DIRECTOR;              eMethodFound = METHOD_SNIA_PROVIDER20;
             DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found METHOD_DIRECTOR."<<PEGASUS_STD(endl));              DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferencesRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
         }         }
  
         if (id == NULL)         if (id == NULL)
Line 1590 
Line 2232 
             env->ExceptionClear();             env->ExceptionClear();
  
             // public abstract java.util.Vector references (org.pegasus.jmpi.CIMObjectPath assocName,             // public abstract java.util.Vector references (org.pegasus.jmpi.CIMObjectPath assocName,
             //                                              org.pegasus.jmpi.CIMObjectPath pathName,  
             //                                              java.lang.String               role,             //                                              java.lang.String               role,
             //                                              boolean                        includeQualifiers,             //                                              boolean                        includeQualifiers,
             //                                              boolean                        includeClassOrigin,             //                                              boolean                        includeClassOrigin,
Line 1598 
Line 2239 
             //        throws org.pegasus.jmpi.CIMException             //        throws org.pegasus.jmpi.CIMException
             id = env->GetMethodID((jclass)pr.jProviderClass,             id = env->GetMethodID((jclass)pr.jProviderClass,
                                   "references",                                   "references",
                                   "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;");                                    "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;");
   //@BUG was:                       "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ZZ[Ljava/lang/String;)[Lorg/pegasus/jmpi/CIMInstance;"
  
             if (id != NULL)             if (id != NULL)
             {             {
                 eMethodFound = METHOD_SNIA_PROVIDER20;                  eMethodFound = METHOD_PEGASUS_24;
                 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));                  DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferencesRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl));
             }             }
         }         }
  
         if (id == NULL)         if (id == NULL)
         {         {
             DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found no method!"<<PEGASUS_STD(endl));              DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferencesRequest: found no method!"<<PEGASUS_STD(endl));
         }         }
  
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         jPropertyList = getList(jv,env,request->propertyList);  
   
         switch (eMethodFound)         switch (eMethodFound)
         {         {
         case METHOD_DIRECTOR:          case METHOD_PEGASUS_24:
         {         {
               jint    jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);
               jobject jAssociationName    = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef);
   
               JMPIjvm::checkException(env);
   
               jstring jRole = env->NewStringUTF(request->role.getCString());
   
               JMPIjvm::checkException(env);
   
               jobjectArray jPropertyList = getList(jv,env,request->propertyList);
   
             jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,             jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
                                                                   id,                                                                   id,
                                                                   jAssociationName,                                                                   jAssociationName,
Line 1627 
Line 2278 
                                                                   false,                                                                   false,
                                                                   false,                                                                   false,
                                                                   jPropertyList);                                                                   jPropertyList);
   
             JMPIjvm::checkException(env);             JMPIjvm::checkException(env);
  
             STAT_PMS_PROVIDEREND;             STAT_PMS_PROVIDEREND;
Line 1667 
Line 2319 
  
         case METHOD_SNIA_PROVIDER20:         case METHOD_SNIA_PROVIDER20:
         {         {
               jint    jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);
               jobject jAssociationName    = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef);
   
               JMPIjvm::checkException(env);
   
             jint    jPathNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &resultPath);             jint    jPathNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &resultPath);
             jobject jPathName    = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jPathNameRef);             jobject jPathName    = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jPathNameRef);
  
             JMPIjvm::checkException(env);             JMPIjvm::checkException(env);
  
               jstring jRole = env->NewStringUTF(request->role.getCString());
   
               JMPIjvm::checkException(env);
   
               jobjectArray jPropertyList = getList(jv,env,request->propertyList);
   
             jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,             jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
                                                                   id,                                                                   id,
                                                                   jAssociationName,                                                                   jAssociationName,
Line 1680 
Line 2343 
                                                                   false,                                                                   false,
                                                                   false,                                                                   false,
                                                                   jPropertyList);                                                                   jPropertyList);
   
             JMPIjvm::checkException(env);             JMPIjvm::checkException(env);
  
             STAT_PMS_PROVIDEREND;             STAT_PMS_PROVIDEREND;
Line 1720 
Line 2384 
  
         case METHOD_UNKNOWN:         case METHOD_UNKNOWN:
         {         {
             DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: should not be here!"<<PEGASUS_STD(endl));              DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferencesRequest: should not be here!"<<PEGASUS_STD(endl));
             break;             break;
         }         }
         }         }
Line 1742 
Line 2406 
  
     typedef enum {     typedef enum {
        METHOD_UNKNOWN = 0,        METHOD_UNKNOWN = 0,
        METHOD_DIRECTOR,         METHOD_PEGASUS_24,
        METHOD_SNIA_PROVIDER20,        METHOD_SNIA_PROVIDER20,
     } METHOD_VERSION;     } METHOD_VERSION;
     METHOD_VERSION   eMethodFound  = METHOD_UNKNOWN;     METHOD_VERSION   eMethodFound  = METHOD_UNKNOWN;
Line 1795 
Line 2459 
  
         env = JMPIjvm::attachThread(&jv);         env = JMPIjvm::attachThread(&jv);
  
         jint    jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);  
         jobject jAssociationName    = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef);  
   
         JMPIjvm::checkException(env);  
   
         jstring jRole = env->NewStringUTF(request->role.getCString());  
   
         JMPIjvm::checkException(env);  
   
         JMPIProvider::pm_service_op_lock op_lock(&pr);         JMPIProvider::pm_service_op_lock op_lock(&pr);
  
         STAT_GETSTARTTIME;         STAT_GETSTARTTIME;
Line 1811 
Line 2466 
         jmethodID id = NULL;         jmethodID id = NULL;
  
         // public abstract java.util.Vector referenceNames (org.pegasus.jmpi.CIMObjectPath assocName,         // public abstract java.util.Vector referenceNames (org.pegasus.jmpi.CIMObjectPath assocName,
           //                                                  org.pegasus.jmpi.CIMObjectPath pathName,
         //                                                  java.lang.String               role)         //                                                  java.lang.String               role)
         //        throws org/pegasus/jmpi/CIMException          //        throws org.pegasus.jmpi.CIMException
         id = env->GetMethodID((jclass)pr.jProviderClass,         id = env->GetMethodID((jclass)pr.jProviderClass,
                               "referenceNames",                               "referenceNames",
                               "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;)Ljava/util/Vector;");                                "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;)Ljava/util/Vector;");
   //@BUG was:                   "(Lorg/pegasus/jmpi/CIMObjectPath;                                Ljava/lang/String;)Ljava/util/Vector;"
  
         if (id != NULL)         if (id != NULL)
         {         {
             eMethodFound = METHOD_DIRECTOR;              eMethodFound = METHOD_SNIA_PROVIDER20;
             DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found METHOD_DIRECTOR."<<PEGASUS_STD(endl));              DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferenceNamesRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
         }         }
  
         if (id == NULL)         if (id == NULL)
Line 1828 
Line 2485 
             env->ExceptionClear();             env->ExceptionClear();
  
             // public abstract java.util.Vector referenceNames (org.pegasus.jmpi.CIMObjectPath assocName,             // public abstract java.util.Vector referenceNames (org.pegasus.jmpi.CIMObjectPath assocName,
             //                                                  org.pegasus.jmpi.CIMObjectPath pathName,  
             //                                                  java.lang.String               role)             //                                                  java.lang.String               role)
             //        throws org/pegasus/jmpi/CIMException              //        throws org.pegasus.jmpi.CIMException
             id = env->GetMethodID((jclass)pr.jProviderClass,             id = env->GetMethodID((jclass)pr.jProviderClass,
                                   "referenceNames",                                   "referenceNames",
                                   "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;)Ljava/util/Vector;");                                    "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;)Ljava/util/Vector;");
   //@BUG was:                       "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;)[Lorg/pegasus/jmpi/CIMObjectPath;"
  
             if (id != NULL)             if (id != NULL)
             {             {
                 eMethodFound = METHOD_SNIA_PROVIDER20;                  eMethodFound = METHOD_PEGASUS_24;
                 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));                  DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferenceNamesRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl));
             }             }
         }         }
  
         if (id == NULL)         if (id == NULL)
         {         {
             DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found no method!"<<PEGASUS_STD(endl));              DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferenceNamesRequest: found no method!"<<PEGASUS_STD(endl));
         }         }
  
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         switch (eMethodFound)         switch (eMethodFound)
         {         {
         case METHOD_DIRECTOR:          case METHOD_PEGASUS_24:
         {         {
               jint    jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);
               jobject jAssociationName    = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef);
   
               JMPIjvm::checkException(env);
   
               jstring jRole = env->NewStringUTF(request->role.getCString());
   
               JMPIjvm::checkException(env);
   
             jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,             jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
                                                                   id,                                                                   id,
                                                                   jAssociationName,                                                                   jAssociationName,
                                                                   jRole);                                                                   jRole);
   
             JMPIjvm::checkException(env);             JMPIjvm::checkException(env);
  
             STAT_PMS_PROVIDEREND;             STAT_PMS_PROVIDEREND;
Line 1885 
Line 2552 
  
         case METHOD_SNIA_PROVIDER20:         case METHOD_SNIA_PROVIDER20:
         {         {
               jint    jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);
               jobject jAssociationName    = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef);
   
               JMPIjvm::checkException(env);
   
             jint    jPathNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &resultPath);             jint    jPathNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &resultPath);
             jobject jPathName    = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jPathNameRef);             jobject jPathName    = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jPathNameRef);
  
             JMPIjvm::checkException(env);             JMPIjvm::checkException(env);
  
               jstring jRole = env->NewStringUTF(request->role.getCString());
   
               JMPIjvm::checkException(env);
   
             jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,             jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
                                                                   id,                                                                   id,
                                                                   jAssociationName,                                                                   jAssociationName,
                                                                   jPathName,                                                                   jPathName,
                                                                   jRole);                                                                   jRole);
   
             JMPIjvm::checkException(env);             JMPIjvm::checkException(env);
  
             STAT_PMS_PROVIDEREND;             STAT_PMS_PROVIDEREND;
Line 1923 
Line 2600 
  
         case METHOD_UNKNOWN:         case METHOD_UNKNOWN:
         {         {
             DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: should not be here!"<<PEGASUS_STD(endl));              DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferenceNamesRequest: should not be here!"<<PEGASUS_STD(endl));
             break;             break;
         }         }
         }         }
Line 1943 
Line 2620 
  
     HandlerIntroMethod(InvokeMethod,message,request,response,handler);     HandlerIntroMethod(InvokeMethod,message,request,response,handler);
  
       typedef enum {
          METHOD_UNKNOWN = 0,
          METHOD_PEGASUS_24,
          METHOD_SNIA_PROVIDER20,
       } METHOD_VERSION;
       METHOD_VERSION   eMethodFound  = METHOD_UNKNOWN;
     JNIEnv *env=NULL;     JNIEnv *env=NULL;
     Boolean mode24=false;  
  
     try {     try {
         Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,         Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
Line 1979 
Line 2661 
  
         JMPIProvider & pr=ph.GetProvider();         JMPIProvider & pr=ph.GetProvider();
  
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,          PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.invokeMethod: " + pr.getName());
             "Calling provider.invokeMethod: " + pr.getName());  
  
         DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleInvokeMethodRequest: Calling provider invokeMethod: "<<pr.getName()<<PEGASUS_STD(endl));         DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleInvokeMethodRequest: Calling provider invokeMethod: "<<pr.getName()<<PEGASUS_STD(endl));
         JvmVector *jv;  
         env=JMPIjvm::attachThread(&jv);  
  
         jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);          JvmVector *jv = 0;
  
         jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);          env = JMPIjvm::attachThread(&jv);
         JMPIjvm::checkException(env);  
  
         jstring jMethod=env->NewStringUTF(request->methodName.getString().getCString());          JMPIProvider::pm_service_op_lock op_lock(&pr);
         JMPIjvm::checkException(env);  
  
         STAT_GETSTARTTIME;         STAT_GETSTARTTIME;
  
         jmethodID id=env->GetMethodID((jclass)pr.jProviderClass,"invokeMethod",          jmethodID id = NULL;
            "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;"  
            "Ljava/util/Vector;Ljava/util/Vector;)Lorg/pegasus/jmpi/CIMValue;");          // public abstract org.pegasus.jmpi.CIMValue invokeMethod (org.pegasus.jmpi.CIMObjectPath cop,
           //                                                         java.lang.String               name,
           //                                                         java.util.Vector               in,
           //                                                         java.util.Vector               out)
           //        throws org.pegasus.jmpi.CIMException
           id = env->GetMethodID((jclass)pr.jProviderClass,
                                 "invokeMethod",
                                 "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/util/Vector;Ljava/util/Vector;)Lorg/pegasus/jmpi/CIMValue;");
   
           if (id != NULL)
           {
               eMethodFound = METHOD_SNIA_PROVIDER20;
               DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleInvokeMethodRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
           }
  
         if (id==NULL) {          if (id == NULL)
           {
            env->ExceptionClear();            env->ExceptionClear();
             id=env->GetMethodID((jclass)pr.jProviderClass,"invokeMethod",  
               "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;"              // public org.pegasus.jmpi.CIMValue invokeMethod (org.pegasus.jmpi.CIMObjectPath op,
               "[Lorg/pegasus/jmpi/CIMArgument;[Lorg/pegasus/jmpi/CIMArgument;)Lorg/pegasus/jmpi/CIMValue;");              //                                                java.lang.String               methodName,
            JMPIjvm::checkException(env);              //                                                org.pegasus.jmpi.CIMArgument[] inArgs,
             mode24=true;              //                                                org.pegasus.jmpi.CIMArgument[] outArgs)
               //        throws org.pegasus.jmpi.CIMException
               id = env->GetMethodID((jclass)pr.jProviderClass,
                                     "invokeMethod",
                                     "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;[Lorg/pegasus/jmpi/CIMArgument;[Lorg/pegasus/jmpi/CIMArgument;)Lorg/pegasus/jmpi/CIMValue;");
   
               if (id != NULL)
               {
                   eMethodFound = METHOD_PEGASUS_24;
                   DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleInvokeMethodRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl));
               }
         }         }
   
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         if (!mode24) {          switch (eMethodFound)
             jobject jVecIn=env->NewObject(jv->VectorClassRef,jv->VectorNew);          {
           case METHOD_PEGASUS_24:
           {
               jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);
   
               jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);
             JMPIjvm::checkException(env);             JMPIjvm::checkException(env);
             for (int i=0,m=request->inParameters.size(); i<m; i++) {  
                 const CIMParamValue &parm = request->inParameters[i];  
                 const CIMValue       v    = parm.getValue();  
                 CIMProperty         *p    = new CIMProperty(parm.getParameterName(),v,v.getArraySize());  
                 jint                 jObj = DEBUG_ConvertCToJava (CIMProperty*, jint, p);  
  
                 jobject prop=env->NewObject(jv->CIMPropertyClassRef,jv->CIMPropertyNewI,jObj);              jstring jMethod=env->NewStringUTF(request->methodName.getString().getCString());
               JMPIjvm::checkException(env);
  
                 env->CallVoidMethod(jVecIn,jv->VectorAddElement,prop);              Uint32 m=request->inParameters.size();
   
               jobjectArray jArIn=(jobjectArray)env->NewObjectArray(m,jv->CIMArgumentClassRef,NULL);
               for (Uint32 i=0; i<m; i++) {
                 CIMParamValue *parm = new CIMParamValue(request->inParameters[i]);
                 jint           jObj = DEBUG_ConvertCToJava (CIMParamValue*, jint, parm);
                 jobject        jArg = env->NewObject(jv->CIMArgumentClassRef,jv->CIMArgumentNewI,jObj);
   
                 env->SetObjectArrayElement(jArIn,i,jArg);
              }              }
  
             jobject jVecOut=env->NewObject(jv->VectorClassRef,jv->VectorNew);              jobjectArray jArOut=(jobjectArray)env->NewObjectArray(24,jv->CIMArgumentClassRef,NULL);
             JMPIjvm::checkException(env);  
  
             jobject jValue=env->CallObjectMethod((jobject)pr.jProvider,id,jRef,jMethod,jVecIn,jVecOut);              jobject jValue=env->CallObjectMethod((jobject)pr.jProvider,id,jRef,jMethod,jArIn,jArOut);
             JMPIjvm::checkException(env);             JMPIjvm::checkException(env);
  
             STAT_PMS_PROVIDEREND;             STAT_PMS_PROVIDEREND;
Line 2039 
Line 2749 
  
             handler.deliver(*v);             handler.deliver(*v);
  
             for (int i=0,m=env->CallIntMethod(jVecOut,JMPIjvm::jv.VectorSize); i<m; i++) {              for (int i=0; i<24; i++) {
                   jobject jArg=env->GetObjectArrayElement(jArOut,i);
                 JMPIjvm::checkException(env);                 JMPIjvm::checkException(env);
  
                 jobject jProp=env->CallObjectMethod(jVecOut,JMPIjvm::jv.VectorElementAt,i);                  if (jArg==NULL) break;
                 JMPIjvm::checkException(env);  
  
                 jint         jp = env->CallIntMethod(jProp,JMPIjvm::jv.PropertyCInst);                  jint           jp = env->CallIntMethod(jArg,JMPIjvm::jv.ArgumentCInst);
                 CIMProperty *p  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jp);                  CIMParamValue *p  = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jp);
  
                 JMPIjvm::checkException(env);                 JMPIjvm::checkException(env);
  
                 handler.deliverParamValue(CIMParamValue(p->getName().getString(),p->getValue()));                  handler.deliverParamValue(*p);
             }             }
  
             handler.complete();             handler.complete();
               break;
         }         }
         else {  
             Uint32 m=request->inParameters.size();  
  
             jobjectArray jArIn=(jobjectArray)env->NewObjectArray(m,jv->CIMArgumentClassRef,NULL);          case METHOD_SNIA_PROVIDER20:
            for (Uint32 i=0; i<m; i++) {          {
               CIMParamValue *parm = new CIMParamValue(request->inParameters[i]);              jint jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &objectPath);
               jint           jObj = DEBUG_ConvertCToJava (CIMParamValue*, jint, parm);  
               jobject        jArg = env->NewObject(jv->CIMArgumentClassRef,jv->CIMArgumentNewI,jObj);  
  
               env->SetObjectArrayElement(jArIn,i,jArg);              jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);
               JMPIjvm::checkException(env);
   
               jstring jMethod=env->NewStringUTF(request->methodName.getString().getCString());
               JMPIjvm::checkException(env);
   
               jobject jVecIn=env->NewObject(jv->VectorClassRef,jv->VectorNew);
               JMPIjvm::checkException(env);
               for (int i=0,m=request->inParameters.size(); i<m; i++) {
                   const CIMParamValue &parm = request->inParameters[i];
                   const CIMValue       v    = parm.getValue();
                   CIMProperty         *p    = new CIMProperty(parm.getParameterName(),v,v.getArraySize());
                   jint                 jObj = DEBUG_ConvertCToJava (CIMProperty*, jint, p);
   
                   jobject prop=env->NewObject(jv->CIMPropertyClassRef,jv->CIMPropertyNewI,jObj);
   
                   env->CallVoidMethod(jVecIn,jv->VectorAddElement,prop);
             }             }
  
             jobjectArray jArOut=(jobjectArray)env->NewObjectArray(24,jv->CIMArgumentClassRef,NULL);              jobject jVecOut=env->NewObject(jv->VectorClassRef,jv->VectorNew);
               JMPIjvm::checkException(env);
  
             jobject jValue=env->CallObjectMethod((jobject)pr.jProvider,id,jRef,jMethod,jArIn,jArOut);              jobject jValue=env->CallObjectMethod((jobject)pr.jProvider,id,jRef,jMethod,jVecIn,jVecOut);
             JMPIjvm::checkException(env);             JMPIjvm::checkException(env);
  
             STAT_PMS_PROVIDEREND;             STAT_PMS_PROVIDEREND;
Line 2081 
Line 2805 
  
             handler.deliver(*v);             handler.deliver(*v);
  
             for (int i=0; i<24; i++) {              for (int i=0,m=env->CallIntMethod(jVecOut,JMPIjvm::jv.VectorSize); i<m; i++) {
                 jobject jArg=env->GetObjectArrayElement(jArOut,i);  
                 JMPIjvm::checkException(env);                 JMPIjvm::checkException(env);
  
                 if (jArg==NULL) break;                  jobject jProp=env->CallObjectMethod(jVecOut,JMPIjvm::jv.VectorElementAt,i);
                   JMPIjvm::checkException(env);
  
                 jint           jp = env->CallIntMethod(jArg,JMPIjvm::jv.ArgumentCInst);                  jint         jp = env->CallIntMethod(jProp,JMPIjvm::jv.PropertyCInst);
                 CIMParamValue *p  = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jp);                  CIMProperty *p  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jp);
  
                 JMPIjvm::checkException(env);                 JMPIjvm::checkException(env);
  
                 handler.deliverParamValue(*p);                  handler.deliverParamValue(CIMParamValue(p->getName().getString(),p->getValue()));
            }            }
  
            handler.complete();            handler.complete();
               break;
           }
   
           case METHOD_UNKNOWN:
           {
               DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleInvokeMethodRequest: should not be here!"<<PEGASUS_STD(endl));
               break;
           }
         }         }
     }     }
     HandlerCatch(handler);     HandlerCatch(handler);
Line 2124 
Line 2856 
  
     HandlerIntroInd(CreateSubscription,message,request,response,handler);     HandlerIntroInd(CreateSubscription,message,request,response,handler);
  
       typedef enum {
          METHOD_UNKNOWN = 0,
          METHOD_SNIA_PROVIDER20,
       } METHOD_VERSION;
       METHOD_VERSION   eMethodFound  = METHOD_UNKNOWN;
     JNIEnv *env=NULL;     JNIEnv *env=NULL;
   
     try {     try {
         const CIMObjectPath &x=request->subscriptionInstance.getPath();          String               providerName,
                                providerLocation;
           CIMInstance          req_provider,
                                req_providerModule;
  
         String providerName,providerLocation;  
         CIMInstance req_provider, req_providerModule;  
         ProviderIdContainer pidc = (ProviderIdContainer)request->operationContext.get(ProviderIdContainer::NAME);         ProviderIdContainer pidc = (ProviderIdContainer)request->operationContext.get(ProviderIdContainer::NAME);
   
         req_provider = pidc.getProvider();         req_provider = pidc.getProvider();
         req_providerModule = pidc.getModule();         req_providerModule = pidc.getModule();
   
         LocateIndicationProviderNames(req_provider, req_providerModule,providerName,providerLocation);         LocateIndicationProviderNames(req_provider, req_providerModule,providerName,providerLocation);
  
         Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,         Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
Line 2150 
Line 2891 
             providerManager.getProvider(fileName, providerName, String::EMPTY);             providerManager.getProvider(fileName, providerName, String::EMPTY);
  
         indProvRecord *prec=NULL;         indProvRecord *prec=NULL;
   
         provTab.lookup(providerName,prec);         provTab.lookup(providerName,prec);
   
         if (prec)         if (prec)
           {
             prec->count++;             prec->count++;
         else {          }
           else
           {
            prec=new indProvRecord();            prec=new indProvRecord();
            provTab.insert(providerName,prec);            provTab.insert(providerName,prec);
         }         }
Line 2165 
Line 2911 
  
         indSelectRecord *srec=new indSelectRecord();         indSelectRecord *srec=new indSelectRecord();
         const CIMObjectPath &sPath=request->subscriptionInstance.getPath();         const CIMObjectPath &sPath=request->subscriptionInstance.getPath();
   
         selxTab.insert(sPath.toString(),srec);         selxTab.insert(sPath.toString(),srec);
  
         // convert arguments         // convert arguments
         OperationContext *context=new OperationContext();         OperationContext *context=new OperationContext();
  
         if (prec->ctx==NULL) {          if (prec->ctx==NULL)
           {
            prec->ctx=context;            prec->ctx=context;
         }         }
  
Line 2199 
Line 2947 
         srec->eSelx=eSelx;         srec->eSelx=eSelx;
                 srec->qContext=qcontext;                 srec->qContext=qcontext;
  
           PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.createSubscriptionRequest: " + pr.getName());
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,  
             "Calling provider.createSubscriptionRequest: " + pr.getName());  
  
         DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateSubscriptionRequest: Calling provider createSubscriptionRequest: "<<pr.getName()<<PEGASUS_STD(endl));         DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateSubscriptionRequest: Calling provider createSubscriptionRequest: "<<pr.getName()<<PEGASUS_STD(endl));
  
Line 2224 
Line 2970 
            eSelx->props[pCount]=NULL;            eSelx->props[pCount]=NULL;
         }         }
  
         JvmVector *jv;          JvmVector *jv = 0;
   
         env=JMPIjvm::attachThread(&jv);         env=JMPIjvm::attachThread(&jv);
  
         jint jObj = DEBUG_ConvertCToJava (CMPI_SelectExp*, jint, eSelx);          JMPIProvider::pm_service_op_lock op_lock(&pr);
   
           STAT_GETSTARTTIME;
   
           jmethodID id = NULL;
   
           // public void authorizeFilter (org.pegasus.jmpi.SelectExp     filter,
           //                              java.lang.String               eventType,
           //                              org.pegasus.jmpi.CIMObjectPath classPath,
           //                              java.lang.String               owner)
           //        throws org.pegasus.jmpi.CIMException
           id = env->GetMethodID((jclass)pr.jProviderClass,
                                 "activateFilter",
                                 "(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;Lorg/pegasus/jmpi/CIMObjectPath;Z)V");
   
           if (id != NULL)
           {
               eMethodFound = METHOD_SNIA_PROVIDER20;
               DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateSubscriptionRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
           }
   
           JMPIjvm::checkException(env);
  
           switch (eMethodFound)
           {
           case METHOD_SNIA_PROVIDER20:
           {
               jint    jObj = DEBUG_ConvertCToJava (CMPI_SelectExp*, jint, eSelx);
         jobject jSel=env->NewObject(jv->SelectExpClassRef,jv->SelectExpNewI,jObj);         jobject jSel=env->NewObject(jv->SelectExpClassRef,jv->SelectExpNewI,jObj);
   
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &eSelx->classNames[0]);         jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &eSelx->classNames[0]);
  
         jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);         jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);
         JMPIjvm::checkException(env);  
  
         jstring jType=env->NewStringUTF(request->nameSpace.getString().getCString());  
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         JMPIProvider::pm_service_op_lock op_lock(&pr);              jstring jType = env->NewStringUTF(request->nameSpace.getString().getCString());
   
         STAT_GETSTARTTIME;  
  
         jmethodID id=env->GetMethodID((jclass)pr.jProviderClass,"activateFilter",  
            "(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;"  
            "Lorg/pegasus/jmpi/CIMObjectPath;Z)V");  
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         env->CallVoidMethod((jobject)pr.jProvider,id,jSel,jType,              env->CallVoidMethod((jobject)pr.jProvider,
            jRef,(jboolean)0);                                  id,
                                   jSel,
                                   jType,
                                   jRef,
                                   (jboolean)0);
   
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         //         //
Line 2274 
Line 3046 
         }         }
  
        STAT_PMS_PROVIDEREND;        STAT_PMS_PROVIDEREND;
               break;
           }
   
           case METHOD_UNKNOWN:
           {
               DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateSubscriptionRequest: should not be here!"<<PEGASUS_STD(endl));
               break;
           }
           }
  
     }     }
     HandlerCatch(handler);     HandlerCatch(handler);
Line 2291 
Line 3072 
  
     HandlerIntroInd(DeleteSubscription,message,request,response,handler);     HandlerIntroInd(DeleteSubscription,message,request,response,handler);
  
       typedef enum {
          METHOD_UNKNOWN = 0,
          METHOD_SNIA_PROVIDER20,
       } METHOD_VERSION;
       METHOD_VERSION   eMethodFound  = METHOD_UNKNOWN;
     JNIEnv *env=NULL;     JNIEnv *env=NULL;
   
     try {     try {
         String providerName,providerLocation;          String              providerName,
         CIMInstance req_provider, req_providerModule;                              providerLocation;
           CIMInstance         req_provider,
                               req_providerModule;
         ProviderIdContainer pidc = (ProviderIdContainer)request->operationContext.get(ProviderIdContainer::NAME);         ProviderIdContainer pidc = (ProviderIdContainer)request->operationContext.get(ProviderIdContainer::NAME);
   
         req_provider = pidc.getProvider();         req_provider = pidc.getProvider();
         req_providerModule = pidc.getModule();         req_providerModule = pidc.getModule();
  
         LocateIndicationProviderNames(req_provider, req_providerModule,          LocateIndicationProviderNames(req_provider, req_providerModule, providerName,providerLocation);
            providerName,providerLocation);  
  
         Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,         Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
             "JMPIProviderManager::handleDeleteSubscriptionRequest - Host name: $0  Name space: $1  Provider name(s): $2",             "JMPIProviderManager::handleDeleteSubscriptionRequest - Host name: $0  Name space: $1  Provider name(s): $2",
Line 2317 
Line 3106 
             providerManager.getProvider(fileName, providerName, String::EMPTY);             providerManager.getProvider(fileName, providerName, String::EMPTY);
  
         indProvRecord *prec=NULL;         indProvRecord *prec=NULL;
   
         provTab.lookup(providerName,prec);         provTab.lookup(providerName,prec);
         if (--prec->count<=0) {          if (--prec->count <= 0)
           {
            provTab.remove(providerName);            provTab.remove(providerName);
            prec=NULL;            prec=NULL;
         }         }
Line 2326 
Line 3117 
         indSelectRecord *srec=NULL;         indSelectRecord *srec=NULL;
         const CIMObjectPath &sPath=request->subscriptionInstance.getPath();         const CIMObjectPath &sPath=request->subscriptionInstance.getPath();
         String sPathString=sPath.toString();         String sPathString=sPath.toString();
   
         selxTab.lookup(sPathString,srec);         selxTab.lookup(sPathString,srec);
  
         CMPI_SelectExp *eSelx=srec->eSelx;         CMPI_SelectExp *eSelx=srec->eSelx;
Line 2346 
Line 3138 
  
         JMPIProvider & pr=ph.GetProvider();         JMPIProvider & pr=ph.GetProvider();
  
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,          PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.deleteSubscriptionRequest: " + pr.getName());
             "Calling provider.deleteSubscriptionRequest: " + pr.getName());  
  
         DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteSubscriptionRequest: Calling provider deleteSubscriptionRequest: "<<pr.getName()<<PEGASUS_STD(endl));         DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteSubscriptionRequest: Calling provider deleteSubscriptionRequest: "<<pr.getName()<<PEGASUS_STD(endl));
  
         JvmVector *jv;          JvmVector *jv = 0;
   
         env=JMPIjvm::attachThread(&jv);         env=JMPIjvm::attachThread(&jv);
  
         jint jObj = DEBUG_ConvertCToJava (CMPI_SelectExp*, jint, eSelx);          JMPIProvider::pm_service_op_lock op_lock(&pr);
   
           STAT_GETSTARTTIME;
   
           jmethodID id = NULL;
   
           // public void deActivateFilter (org.pegasus.jmpi.SelectExp    filter,
           //                              java.lang.String               eventType,
           //                              org.pegasus.jmpi.CIMObjectPath classPath,
           //                              boolean                        lastActivation)
           //        throws org.pegasus.jmpi.CIMException
           id = env->GetMethodID((jclass)pr.jProviderClass,
                                 "deActivateFilter",
                                 "(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;Lorg/pegasus/jmpi/CIMObjectPath;Z)V");
   
           if (id != NULL)
           {
               eMethodFound = METHOD_SNIA_PROVIDER20;
               DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteSubscriptionRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
           }
   
           JMPIjvm::checkException(env);
  
           switch (eMethodFound)
           {
           case METHOD_SNIA_PROVIDER20:
           {
               jint    jObj = DEBUG_ConvertCToJava (CMPI_SelectExp*, jint, eSelx);
         jobject jSel=env->NewObject(jv->SelectExpClassRef,jv->SelectExpNewI,jObj);         jobject jSel=env->NewObject(jv->SelectExpClassRef,jv->SelectExpNewI,jObj);
   
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &eSelx->classNames[0]);         jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &eSelx->classNames[0]);
  
         jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);         jobject jRef=env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);
         JMPIjvm::checkException(env);  
  
         jstring jType=env->NewStringUTF(request->nameSpace.getString().getCString());  
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         JMPIProvider::pm_service_op_lock op_lock(&pr);              jstring jType = env->NewStringUTF(request->nameSpace.getString().getCString());
   
         STAT_GETSTARTTIME;  
  
         jmethodID id=env->GetMethodID((jclass)pr.jProviderClass,"deActivateFilter",  
            "(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;"  
            "Lorg/pegasus/jmpi/CIMObjectPath;Z)V");  
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         env->CallVoidMethod((jobject)pr.jProvider,id,jSel,jType,              env->CallVoidMethod((jobject)pr.jProvider,
            jRef,(jboolean)(prec==NULL));                                  id,
                                   jSel,
                                   jType,
                                   jRef,
                                   (jboolean)(prec==NULL));
   
         JMPIjvm::checkException(env);         JMPIjvm::checkException(env);
  
         //         //
Line 2403 
Line 3220 
        delete eSelx;        delete eSelx;
        delete qContext;        delete qContext;
        delete srec;        delete srec;
               break;
           }
  
           case METHOD_UNKNOWN:
           {
               DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteSubscriptionRequest: should not be here!"<<PEGASUS_STD(endl));
               break;
           }
           }
     }     }
     HandlerCatch(handler);     HandlerCatch(handler);
  
Line 2554 
Line 3379 
     return(response);     return(response);
 } }
  
 Message * JMPIProviderManager::handleSubscriptionInitCompleteRequest  Message * JMPIProviderManager::handleSubscriptionInitCompleteRequest (const Message * message)
     (const Message * message)  
 { {
     PEG_METHOD_ENTER (TRC_PROVIDERMANAGER,     PEG_METHOD_ENTER (TRC_PROVIDERMANAGER,
      "JMPIProviderManager::handleSubscriptionInitCompleteRequest");      "JMPIProviderManager::handleSubscriptionInitCompleteRequest");


Legend:
Removed from v.1.24  
changed lines
  Added in v.1.25

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2