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

Diff for /pegasus/src/Pegasus/ProviderManager2/JMPI/JMPIImpl.cpp between version 1.78 and 1.79

version 1.78, 2008/01/30 12:06:31 version 1.79, 2008/03/17 08:45:37
Line 48 
Line 48 
 #include <Pegasus/Common/CIMObjectPath.h> #include <Pegasus/Common/CIMObjectPath.h>
 #include <Pegasus/Common/CIMProperty.h> #include <Pegasus/Common/CIMProperty.h>
 #include <Pegasus/Common/OperationContext.h> #include <Pegasus/Common/OperationContext.h>
   #include <Pegasus/Common/Tracer.h>
 #include <Pegasus/Provider/CIMOMHandle.h> #include <Pegasus/Provider/CIMOMHandle.h>
 #include <Pegasus/Client/CIMClient.h> #include <Pegasus/Client/CIMClient.h>
 #include <Pegasus/ProviderManager2/JMPI/JMPIProviderManager.h> #include <Pegasus/ProviderManager2/JMPI/JMPIProviderManager.h>
Line 60 
Line 61 
  
 JavaVM *JMPIjvm::jvm=NULL; JavaVM *JMPIjvm::jvm=NULL;
 JvmVector JMPIjvm::jv; JvmVector JMPIjvm::jv;
 int JMPIjvm::trace=0;  
   
 #ifdef PEGASUS_DEBUG  
 #define DDD(x) if (JMPIjvm::trace) x;  
 #else  
 #define DDD(x)  
 #endif  
  
 #include "Convert.h" #include "Convert.h"
  
Line 421 
Line 415 
  
 jclass JMPIjvm::getGlobalClassRef(JNIEnv *env, const char* name) jclass JMPIjvm::getGlobalClassRef(JNIEnv *env, const char* name)
 { {
      PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIjvm::getGlobalClassRef");
   
   jclass localRefCls = env->FindClass(name);   jclass localRefCls = env->FindClass(name);
  
   if (localRefCls == NULL)   if (localRefCls == NULL)
     {
        PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
            "No local Class reference found. (localRefCls==NULL)");
        PEG_METHOD_EXIT();
      return JNI_FALSE;      return JNI_FALSE;
     }
   
  
   jclass globalRefCls = (jclass) env->NewGlobalRef(localRefCls);   jclass globalRefCls = (jclass) env->NewGlobalRef(localRefCls);
  
Line 436 
Line 438 
                                                               jmidToString);                                                               jmidToString);
   const char *pszResult      = env->GetStringUTFChars(jstringResult, 0);   const char *pszResult      = env->GetStringUTFChars(jstringResult, 0);
  
   DDD(cout <<"--- JMPIjvm::getGlobalClassRef: globalRefCls = "    PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                         <<hex<<(long)globalRefCls        "globalRefCls = %X, name = %s, pszResult = %s",
                         <<dec<<", name = "<<name        (long)globalRefCls,name,pszResult));
                         <<", pszResult = "<<pszResult  
                         <<endl);  
  
   env->ReleaseStringUTFChars (jstringResult, pszResult);   env->ReleaseStringUTFChars (jstringResult, pszResult);
 #else #else
   DDD(cout<<"--- JMPIjvm::getGlobalClassRef: globalRefCls = "  
                        <<hex<<(long)globalRefCls    PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                        <<dec<<", name = "<<name        "globalRefCls = %X, name = %s",(long)globalRefCls,name));
                        <<endl);  
 #endif #endif
  
   env->DeleteLocalRef(localRefCls);   env->DeleteLocalRef(localRefCls);
  
     PEG_METHOD_EXIT();
   return globalRefCls;   return globalRefCls;
 } }
  
Line 466 
Line 467 
  
 int JMPIjvm::cacheIDs(JNIEnv *env) int JMPIjvm::cacheIDs(JNIEnv *env)
 { {
      PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIjvm::cacheIDs");
   
    if (methodInitDone == 1)    if (methodInitDone == 1)
      {
         PEG_METHOD_EXIT();
       return JNI_TRUE;       return JNI_TRUE;
      }
   
    if (methodInitDone == -1)    if (methodInitDone == -1)
      {
         PEG_METHOD_EXIT();
       return JNI_FALSE;       return JNI_FALSE;
      }
    DDD(cout<<"--- JMPIjvm::cacheIDs(): enter"<<endl);  
  
    methodInitDone = -1;    methodInitDone = -1;
  
Line 479 
Line 487 
    {    {
       if ((classRefs[i] = getGlobalClassRef(env,classNames[i])) == NULL)       if ((classRefs[i] = getGlobalClassRef(env,classNames[i])) == NULL)
       {       {
          DDD(cout<<"--- JMPIjvm::cacheIDs(): Error: "           PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                                     "Count not find global class ref for "               "Error: Count not find global class ref for %s",classNames[i]));
                               <<classNames[i]  
                               <<endl);  
  
            PEG_METHOD_EXIT();
          return JNI_FALSE;          return JNI_FALSE;
       }       }
    }    }
Line 499 
Line 506 
                                   instanceMethodNames[j].signature);                                   instanceMethodNames[j].signature);
        if (instanceMethodIDs[j] == NULL)        if (instanceMethodIDs[j] == NULL)
        {        {
            DDD(cout<<"--- JMPIjvm::cacheIDs(): "             PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                                       "Error could not get method id for "                 "Error: Could not get instance method id for %s:%s",
                                 <<classNames[instanceMethodNames[j].clsIndex]                 classNames[instanceMethodNames[j].clsIndex],
                                 <<": "<<instanceMethodNames[j].methodName                 instanceMethodNames[j].methodName));
                                 <<endl);  
              PEG_METHOD_EXIT();
          return 0;          return 0;
       }       }
    }    }
Line 518 
Line 526 
  
        if (staticMethodIDs[k] == NULL)        if (staticMethodIDs[k] == NULL)
        {        {
            DDD(cout<<"--- JMPIjvm::cacheIDs(): "             PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                                       "Error could not get method id for "                 "Error: Could not get static method id for %s:%s",
                                 <<classNames[staticMethodNames[k].clsIndex]                 classNames[staticMethodNames[k].clsIndex],
                                 <<": "<<staticMethodNames[k].methodName                 staticMethodNames[k].methodName));
                                 <<endl);  
              PEG_METHOD_EXIT();
            return 0;            return 0;
        }        }
    }    }
  
    DDD(cout<<"--- JMPIjvm::cacheIDs(): exit"<<endl);  
   
    jv.env = env;    jv.env = env;
    jv.classRefs = classRefs;    jv.classRefs = classRefs;
    jv.instMethodIDs = instanceMethodIDs;    jv.instMethodIDs = instanceMethodIDs;
Line 537 
Line 544 
  
    methodInitDone = 1;    methodInitDone = 1;
  
      PEG_METHOD_EXIT();
    return JNI_TRUE;    return JNI_TRUE;
 } }
  
Line 549 
Line 557 
  
 int JMPIjvm::destroyJVM () int JMPIjvm::destroyJVM ()
 { {
    DDD(cerr<<"--- JPIjvm::destroyJVM()"<<endl);     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JPIjvm::destroyJVM");
  
 #ifdef JAVA_DESTROY_VM_WORKS #ifdef JAVA_DESTROY_VM_WORKS
    if (jvm!= NULL)    if (jvm!= NULL)
Line 562 
Line 570 
  
       jvm = NULL;       jvm = NULL;
  
         PEG_METHOD_EXIT();
       return 0;       return 0;
    }    }
 #endif #endif
  
      PEG_METHOD_EXIT();
    return -1;    return -1;
 } }
  
Line 573 
Line 583 
  
 int JMPIjvm::initJVM () int JMPIjvm::initJVM ()
 { {
      PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JPIjvm::initJVM");
   
    AutoMutex lock (_initMutex);    AutoMutex lock (_initMutex);
  
    if (jvm != NULL)    if (jvm != NULL)
Line 601 
Line 613 
    };    };
    std::ostringstream oss;    std::ostringstream oss;
  
 #ifdef PEGASUS_DEBUG     PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
    if (getenv("PEGASUS_JMPI_TRACE"))         "Start to initialize the JVM.");
       JMPIjvm::trace = 1;  
    else  
       JMPIjvm::trace = 0;  
 #else  
    JMPIjvm::trace = 0;  
 #endif  
   
    DDD(cout << "--- JMPIjvm::initJVM()" << endl);  
  
    jv.initRc = 0;    jv.initRc = 0;
  
Line 619 
Line 623 
    {    {
       jv.initRc = 1;       jv.initRc = 1;
  
       DDD(cerr << "--- JMPIjvm::initJVM(): "        PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2,
                                    "No CLASSPATH environment variable found"            "No CLASSPATH environment variable found.");
                             << endl);  
         PEG_METHOD_EXIT();
  
       throw PEGASUS_CIM_EXCEPTION_L(       throw PEGASUS_CIM_EXCEPTION_L(
           CIM_ERR_FAILED,           CIM_ERR_FAILED,
Line 669 
Line 674 
                   stringValue=stringValues.substr(posStart,posEnd-posStart+1);                   stringValue=stringValues.substr(posStart,posEnd-posStart+1);
                }                }
  
                DDD(cout<<"--- JMPIjvm::initJVM(): fCommaFound = "                 PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL3,
                                     <<fCommaFound << ", posStart = "                     "fCommaFound = %d, posStart = %d, "
                                     <<posStart << ", posComma = "<< posComma                         "posComma =  %d, posEnd = %d",
                                     << ", posEnd = " << posEnd                     fCommaFound,posStart,posComma,posEnd));
                                     << "" << endl);  
  
                maxoption++;                maxoption++;
  
Line 682 
Line 686 
  
                JNIoptions.append (oss.str ());                JNIoptions.append (oss.str ());
  
                DDD(cout << "--- JMPIjvm::initJVM(): "                 PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL3,
                                      << pEnvOption->pszEnvName                     "%s found! Specifying \"%s\"",
                                      << " found!  Specifying \""                     pEnvOption->pszEnvName, (const char*)oss.str().c_str()));
                                      << oss.str () << "\""  
                                      << endl);  
             }             }
          }          }
          else          else
Line 698 
Line 700 
  
             JNIoptions.append (oss.str ());             JNIoptions.append (oss.str ());
  
             DDD(cout << "--- JMPIjvm::initJVM(): "              PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                                   << pEnvOption->pszEnvName                  "%s found! Specifying \"%s\"",
                                   << " found!  Specifying \""                  pEnvOption->pszEnvName, (const char*)oss.str().c_str()));
                                   << oss.str() << "\""  
                                   << endl);  
          }          }
       }       }
    }    }
Line 712 
Line 713 
    {    {
       jv.initRc = 1;       jv.initRc = 1;
  
       DDD(cerr << "--- JMPIjvm::initJVM(): Could not allocate "        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL2,
                             << maxoption << " structures of size "            "Could not allocate %d structures of size %d.",
                             << sizeof (JavaVMOption) << endl);            maxoption,sizeof (JavaVMOption)));
  
         PEG_METHOD_EXIT();
       return -1;       return -1;
    }    }
  
Line 723 
Line 725 
    {    {
       poptions[i].optionString = (char *)JNIoptions[i].c_str ();       poptions[i].optionString = (char *)JNIoptions[i].c_str ();
  
       DDD(cout << "--- JMPIjvm::initJVM(): Setting option "        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL3,
                             << i << " to \"" << poptions[i].optionString            "Setting option %d to \"%s\".",
                             << "\"" << endl);            i ,poptions[i].optionString));
    }    }
  
    vm_args.version = JNI_VERSION_1_2;    vm_args.version = JNI_VERSION_1_2;
Line 744 
Line 746 
    {    {
       jv.initRc = 1;       jv.initRc = 1;
  
       DDD(cerr << "--- JMPIjvm::initJVM(): Can not create Java VM"        PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, Tracer::LEVEL3,
                             <<endl);            "Can not create Java VM !");
  
         PEG_METHOD_EXIT();
       return -1;       return -1;
    }    }
  
Line 769 
Line 772 
       jvm = NULL;       jvm = NULL;
 #endif #endif
  
         PEG_METHOD_EXIT();
       return -1;       return -1;
    }    }
  
    jv.initRc = 1;    jv.initRc = 1;
    jv.jvm = jvm;    jv.jvm = jvm;
  
      PEG_METHOD_EXIT();
    return res;    return res;
 } }
  
Line 809 
Line 814 
                               const char *pszProviderName,                               const char *pszProviderName,
                               jclass     *pjClass)                               jclass     *pjClass)
 { {
      PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIjvm::getProvider");
   
    jobject   jProviderInstance      = 0;    jobject   jProviderInstance      = 0;
    jclass    jClassLoaded           = 0;    jclass    jClassLoaded           = 0;
    jmethodID jId                    = 0;    jmethodID jId                    = 0;
    jobject   jProviderInstanceLocal = 0;    jobject   jProviderInstanceLocal = 0;
  
    DDD(cout<<"--- JMPIjvm::getProvider: jarName = "<<jarName     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                         <<", className = "<<className         "jarName = %s, className = %s, pszProviderName = %s, pjClass = %X",
                         <<", pszProviderName = "<<pszProviderName         jarName.getCString(),className.getCString(),
                         <<", pjClass = "         pszProviderName,(long)pjClass));
                         <<hex<<(long)pjClass  
                         <<dec<<endl);  
  
    // CASE #1    // CASE #1
    //    className has been loaded previously.    //    className has been loaded previously.
Line 827 
Line 832 
    _objectTable.lookup (className, jProviderInstance);    _objectTable.lookup (className, jProviderInstance);
    _classTable.lookup (className, jClassLoaded);    _classTable.lookup (className, jClassLoaded);
  
    DDD(cout<<"--- JMPIjvm::getProvider: jProviderInstance = "     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                         <<hex<<(long)jProviderInstance         "jProviderInstance = %X, jClassLoaded = %X",
                         <<", jClassLoaded = "         (long)jProviderInstance,(long)jClassLoaded));
                         <<(long)jClassLoaded<<dec  
                         <<endl);  
  
    if (  jProviderInstance    if (  jProviderInstance
       && jClassLoaded       && jClassLoaded
Line 841 
Line 844 
       {       {
          *pjClass = jClassLoaded;          *pjClass = jClassLoaded;
       }       }
         PEG_METHOD_EXIT();
       return jProviderInstance;       return jProviderInstance;
    }    }
  
Line 856 
Line 859 
    jClassLoaded = getGlobalClassRef (env,    jClassLoaded = getGlobalClassRef (env,
                                      (const char*)className.getCString ());                                      (const char*)className.getCString ());
  
    DDD(cout<<"--- JMPIjvm::getProvider: jClassLoaded = "     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                         <<hex<<(long)jClassLoaded         "jClassLoaded = %X",(long)jClassLoaded));
                         <<dec<<endl);  
  
    if (env->ExceptionCheck ())    if (env->ExceptionCheck ())
    {    {
Line 887 
Line 889 
          fixedClassName = className;          fixedClassName = className;
       }       }
  
       DDD(cerr<<"--- JMPIjvm::getProvider: fixedClassName = "        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                            <<fixedClassName<<endl);            "fixedClassName = %s",fixedClassName.getCString()));
  
       jJarName = env->NewStringUTF((const char*)jarName.getCString());       jJarName = env->NewStringUTF((const char*)jarName.getCString());
       jClassName = env->NewStringUTF((const char*)fixedClassName.getCString());       jClassName = env->NewStringUTF((const char*)fixedClassName.getCString());
  
       DDD(cout<<"--- JMPIjvm::getProvider: jJarName = "        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                            <<hex<<(long)jJarName<<dec            "jJarName = %X, jClassName = %X",
                            <<endl);            (long)jJarName,(long)jClassName));
       DDD(cout<<"--- JMPIjvm::getProvider: jClassName = "  
                            <<hex<<(long)jClassName  
                            <<dec  
                            <<endl);  
  
       jClassLoadedLocal = (jclass)env->CallStaticObjectMethod(       jClassLoadedLocal = (jclass)env->CallStaticObjectMethod(
                               JMPIjvm::jv.JarClassLoaderClassRef,                               JMPIjvm::jv.JarClassLoaderClassRef,
Line 907 
Line 905 
                               jJarName,                               jJarName,
                               jClassName);                               jClassName);
  
       DDD(cout<<"--- JMPIjvm::getProvider: jClassLoadedLocal = "        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                            <<hex<<(long)jClassLoadedLocal            "jClassLoadedLocal = %X",(long)jClassLoadedLocal));
                            <<dec  
                            <<endl);  
  
       if (env->ExceptionCheck ())       if (env->ExceptionCheck ())
       {       {
          DDD (env->ExceptionDescribe ());           env->ExceptionDescribe();
  
          DDD(cerr<<"--- Unable to instantiate provider "           PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL2,
                  <<pszProviderName<<endl);                "Unable to instantiate provider %s: "
                 "Can not load Java class %s from jar %s.",
                 pszProviderName,
                 (const char*)fixedClassName.getCString(),
                 (const char*)jarName.getCString()));
  
            PEG_METHOD_EXIT();
          return 0;          return 0;
       }       }
  
       jClassLoaded = (jclass)env->NewGlobalRef (jClassLoadedLocal);       jClassLoaded = (jclass)env->NewGlobalRef (jClassLoadedLocal);
  
       DDD(cout<<"--- JMPIjvm::getProvider: jClassLoaded = "        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
               <<hex<<(long)jClassLoaded<<dec            "jClassLoaded = %X",(long)jClassLoaded));
               <<endl);  
  
       env->DeleteLocalRef (jClassLoadedLocal);       env->DeleteLocalRef (jClassLoadedLocal);
    }    }
Line 938 
Line 938 
  
    if (!jClassLoaded)    if (!jClassLoaded)
    {    {
       DDD(cerr<<"--- Unable to instantiate provider "        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL2,
               <<pszProviderName<<endl);             "Unable to instantiate provider %s: "
              "Can not load Java class.",pszProviderName));
         PEG_METHOD_EXIT();
       return 0;       return 0;
    }    }
  
    jId = env->GetMethodID (jClassLoaded,     jId = env->GetMethodID (jClassLoaded,"<init>","()V");
                            "<init>",  
                            "()V");  
  
    DDD(cout<<"--- JMPIjvm::getProvider: jId = "     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
            <<hex<<(long)jId<<dec          "GetMethodID() jID = %X ",(long)jId));
            <<endl);  
  
    jProviderInstanceLocal = env->NewObject (jClassLoaded,    jProviderInstanceLocal = env->NewObject (jClassLoaded,
                                             jId);                                             jId);
  
    DDD(cout<<"--- JMPIjvm::getProvider: jProviderInstanceLocal = "     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
            <<hex<<(long)jProviderInstanceLocal<<dec          "NewObject() jProviderInstanceLocal = %X ",
            <<endl);          (long)jProviderInstanceLocal));
  
    if (!jProviderInstanceLocal)    if (!jProviderInstanceLocal)
    {    {
       DDD(cerr<<"--- Unable to instantiate provider "        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL2,
               <<pszProviderName<<endl);             "Unable to instantiate provider %s: "
              "No new Java object of provider.",pszProviderName));
         PEG_METHOD_EXIT();
       return 0;       return 0;
    }    }
  
    jProviderInstance = (jobject)env->NewGlobalRef (jProviderInstanceLocal);    jProviderInstance = (jobject)env->NewGlobalRef (jProviderInstanceLocal);
  
    DDD(cout<<"--- JMPIjvm::getProvider: jProviderInstance = "     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
            <<hex<<(long)jProviderInstance<<dec<<endl);          "NewGlobalRef() jProviderInstance = %X ",
           (long)jProviderInstance));
  
    if (!jProviderInstance)    if (!jProviderInstance)
    {    {
       DDD(cerr<<"--- Unable to instantiate provider "         PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL2,
               <<pszProviderName<<endl);              "Unable to instantiate provider %s: "
               "No global reference to provider object.",pszProviderName));
         PEG_METHOD_EXIT();
       return 0;       return 0;
    }    }
  
    _classTable.insert (className, jClassLoaded);    _classTable.insert (className, jClassLoaded);
    _objectTable.insert (className, jProviderInstance);    _objectTable.insert (className, jProviderInstance);
  
      PEG_METHOD_EXIT();
    return jProviderInstance;    return jProviderInstance;
 } }
  
Line 992 
Line 994 
    jobject gProv = NULL;    jobject gProv = NULL;
    jclass scls = NULL;    jclass scls = NULL;
  
    DDD(cout<<"--- JMPIjvm::getProvider: cn = "<<cn<<", cls = "     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIjvm::getProvider");
            <<cls<<endl);  
      PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
           "cn = %s, cls = %X",cn,(long)cls));
  
    _objectTable.lookup(cln,gProv);    _objectTable.lookup(cln,gProv);
    _classTable.lookup(cln,scls);    _classTable.lookup(cln,scls);
    DDD(cout<<"--- JMPIjvm::getProvider: gProv = "  
            <<hex<<(long)gProv<<", scls = "<<(long)scls     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
            <<dec<<endl);          "gProv = %X, scls = %X",(long)gProv,(long)scls));
  
    if (gProv)    if (gProv)
    {    {
Line 1010 
Line 1014 
    scls = getGlobalClassRef(env,cn);    scls = getGlobalClassRef(env,cn);
    if (env->ExceptionCheck())    if (env->ExceptionCheck())
    {    {
       DDD(cerr<<"--- JMPIjvm::getProvider: Provider "        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL2,
               <<cn<<" not found"<<endl);             "Provider %s not found: No global reference.",cn));
       DDD(env->ExceptionDescribe());        PEG_METHOD_EXIT();
   
       return NULL;       return NULL;
    }    }
    *cls = scls;    *cls = scls;
  
    if (scls)    if (scls)
    {    {
       DDD(cout<<"--- JMPIjvm::getProvider: scls = "         PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
               <<hex<<(long)scls              "Inserting global reference %X into class table.",scls));
               <<dec<<endl);  
       _classTable.insert(cln,scls);       _classTable.insert(cln,scls);
    }    }
  
Line 1031 
Line 1033 
    gProv = (jobject)env->NewGlobalRef(lProv);    gProv = (jobject)env->NewGlobalRef(lProv);
    if (env->ExceptionCheck())    if (env->ExceptionCheck())
    {    {
       DDD(cerr<<"--- Unable to instantiate provider "<<cn        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL2,
               <<endl);             "Unable to instantiate provider %s.",cn));
         PEG_METHOD_EXIT();
       return NULL;       return NULL;
    }    }
  
    if (gProv)    if (gProv)
    {    {
       DDD(cout<<"--- JMPIjvm::getProvider: gProv = "        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
               <<hex<<(long)gProv             "Inserting provider reference %X into object table.",gProv));
               <<dec<<endl);  
       _objectTable.insert(cln,gProv);       _objectTable.insert(cln,gProv);
    }    }
  
      PEG_METHOD_EXIT();
    return gProv;    return gProv;
 } }
  
Line 1073 
Line 1076 
    jobjectArray stackTrace = 0;    jobjectArray stackTrace = 0;
    String       rc;    String       rc;
  
    DDD (cerr << "getExceptionInfo: err = "     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"getExceptionInfo");
                            << hex  
                            << (jlong)err     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                            << dec          "err =  %X ",(jlong)err));
                            << endl);  
  
    if (!err)    if (!err)
      {
          PEG_METHOD_EXIT();
       return rc;       return rc;
      }
   
  
    stackTrace = (jobjectArray)env->CallObjectMethod(    stackTrace = (jobjectArray)env->CallObjectMethod(
                     err,                     err,
                     JMPIjvm::jv.ThrowableGetStackTrace);                     JMPIjvm::jv.ThrowableGetStackTrace);
  
    DDD (cerr << "getExceptionInfo: stackTrace = "     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                            << hex          "stackTrace =  %X ",(jlong)stackTrace));
                            << (jlong)stackTrace  
                            << dec  
                            << endl);  
  
    if (!stackTrace)    if (!stackTrace)
      {
          PEG_METHOD_EXIT();
       return rc;       return rc;
      }
  
    DDD (cerr << "getExceptionInfo: stackTrace length = "     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                            << env->GetArrayLength (stackTrace)          "stackTrace length =  %d",(jlong)env->GetArrayLength(stackTrace)));
                            << endl);  
  
    jobject jFirstST = 0;    jobject jFirstST = 0;
    jstring jClass   = 0;    jstring jClass   = 0;
Line 1107 
Line 1112 
  
    jFirstST = env->GetObjectArrayElement (stackTrace, 0);    jFirstST = env->GetObjectArrayElement (stackTrace, 0);
  
    DDD (cerr << "getExceptionInfo: jFirstST = "     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                            << hex          "jFirstST = %X",(jlong)jFirstST));
                            << (jlong)jFirstST  
                            << dec  
                            << endl);  
  
    if (!jFirstST)    if (!jFirstST)
      {
          PEG_METHOD_EXIT();
       return rc;       return rc;
      }
  
    jClass  = (jstring)env->CallObjectMethod(    jClass  = (jstring)env->CallObjectMethod(
                  jFirstST,                  jFirstST,
Line 1129 
Line 1134 
                  jFirstST,                  jFirstST,
                  JMPIjvm::jv.StackTraceElementGetLineNumber);                  JMPIjvm::jv.StackTraceElementGetLineNumber);
  
    DDD (cerr << "getExceptionInfo: jClass = "     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                            << hex         "jClass = %X, jFile = %X, jMethod = %X, jLine = %X",
                            << (jlong)jClass         (jlong)jClass,(jlong)jFile,(jlong)jMethod,jLine));
                            << ", jFile = "  
                            << (jlong)jFile  
                            << ", jMethod = "  
                            << (jlong)jMethod  
                            << ", jLine = "  
                            << jLine  
                            << dec  
                            << endl);  
  
    const char *pszClass  = 0;    const char *pszClass  = 0;
    const char *pszFile   = 0;    const char *pszFile   = 0;
Line 1175 
Line 1172 
       env->ReleaseStringUTFChars (jMethod, pszMethod);       env->ReleaseStringUTFChars (jMethod, pszMethod);
    }    }
  
    DDD (cerr << "getExceptionInfo: oss = "     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                            << oss.str ()          "oss = %s",(const char*)oss.str().c_str()));
                            << endl);  
  
    rc = oss.str ().c_str ();    rc = oss.str ().c_str ();
  
Line 1191 
Line 1187 
    jthrowable err = env->ExceptionOccurred ();    jthrowable err = env->ExceptionOccurred ();
    String     rc;    String     rc;
  
    DDD (cerr << "getExceptionInfo: err = "     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"getExceptionInfo");
                            << hex  
                            << (jlong)err     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                            << dec          "err =  %X ",(jlong)err));
                            << endl);  
  
    if (!err)    if (!err)
      {
          PEG_METHOD_EXIT();
       return rc;       return rc;
      }
   
  
    // ByteArrayOutputStream baos = new ByteArrayOutputStream ();    // ByteArrayOutputStream baos = new ByteArrayOutputStream ();
    // PrintStream           ps   = new PrintStream (baos);    // PrintStream           ps   = new PrintStream (baos);
Line 1211 
Line 1210 
    jBAOS = env->NewObject (JMPIjvm::jv.ByteArrayOutputStreamClassRef,    jBAOS = env->NewObject (JMPIjvm::jv.ByteArrayOutputStreamClassRef,
                            JMPIjvm::jv.ByteArrayOutputStreamNew);                            JMPIjvm::jv.ByteArrayOutputStreamNew);
  
    DDD (cerr << "getExceptionInfo: jBAOS = "     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                            << hex          "jBAOS = %X ",(jlong)jBAOS));
                            << (jlong)jBAOS  
                            << dec  
                            << endl);  
  
    if (!jBAOS)    if (!jBAOS)
    {    {
       DDD(env->ExceptionDescribe ());        env->ExceptionDescribe ();
  
         PEG_METHOD_EXIT();
       return rc;       return rc;
    }    }
  
Line 1228 
Line 1225 
                          JMPIjvm::jv.PrintStreamNewOb,                          JMPIjvm::jv.PrintStreamNewOb,
                          jBAOS);                          jBAOS);
  
    DDD (cerr << "getExceptionInfo: jPS = "     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                            << hex          "jPS = %X ",(jlong)jPS));
                            << (jlong)jPS  
                            << dec  
                            << endl);  
  
    if (!jPS)    if (!jPS)
      {
          PEG_METHOD_EXIT();
       return rc;       return rc;
      }
  
    env->CallVoidMethod (err,    env->CallVoidMethod (err,
                         JMPIjvm::jv.ThrowablePrintStackTrace,                         JMPIjvm::jv.ThrowablePrintStackTrace,
Line 1247 
Line 1244 
              jBAOS,              jBAOS,
              JMPIjvm::jv.ByteArrayOutputStreamToString);              JMPIjvm::jv.ByteArrayOutputStreamToString);
  
    DDD (cerr << "getExceptionInfo: jST = "     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                            << hex          "jST = %X ",(jlong)jST));
                            << (jlong)jST  
                            << dec  
                            << endl);  
  
    const char *pszST = 0;    const char *pszST = 0;
  
Line 1259 
Line 1253 
  
    if (pszST)    if (pszST)
    {    {
       DDD (cerr << "getExceptionInfo: pszST = "        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                               << pszST             "pszST = %s ",pszST));
                               << endl);  
  
       rc = pszST;       rc = pszST;
  
       env->ReleaseStringUTFChars (jST, pszST);       env->ReleaseStringUTFChars (jST, pszST);
    }    }
  
      PEG_METHOD_EXIT();
    return rc;    return rc;
 } }
  
Line 1275 
Line 1269 
  
 void JMPIjvm::checkException (JNIEnv *env) void JMPIjvm::checkException (JNIEnv *env)
 { {
      PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIjvm::checkException");
   
    if (!env->ExceptionCheck ())    if (!env->ExceptionCheck ())
      {
          PEG_METHOD_EXIT();
       return;       return;
      }
  
    jstring     jMsg = NULL,    jstring     jMsg = NULL,
                jId  = NULL;                jId  = NULL;
Line 1286 
Line 1285 
    String      id;    String      id;
    jthrowable  err  = env->ExceptionOccurred ();    jthrowable  err  = env->ExceptionOccurred ();
  
 ///DDD (cerr << "JMPIjvm::checkException: err = "  //   PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
 ///                        << hex  //        "err =  %X ",(jlong)err));
 ///                        << (jlong)err  
 ///                        << dec  
 ///                        << endl);  
  
    if (!err)    if (!err)
      {
          PEG_METHOD_EXIT();
       return;       return;
      }
  
    DDD(cerr<<"--- Provider caused an exception!"     PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2,
                         <<endl);          "Provider caused an exception!");
  
    DDD(env->ExceptionDescribe ());     env->ExceptionDescribe ();
  
    if (env->IsInstanceOf (err, JMPIjvm::jv.CIMExceptionClassRef))    if (env->IsInstanceOf (err, JMPIjvm::jv.CIMExceptionClassRef))
    {    {
Line 1328 
Line 1327 
          env->ReleaseStringUTFChars (jMsg, cp);          env->ReleaseStringUTFChars (jMsg, cp);
       }       }
  
       DDD(cerr<<"--- throwing Pegasus exception: "        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL2,
                            <<code<<" "<<id<<" ("<<msg<<")"             "throwing Pegasus exception: %d %s (%s)",
                            <<endl);             code,(const char*)id.getCString(),(const char*)msg.getCString()));
  
         PEG_METHOD_EXIT();
       throw CIMException ((CIMStatusCode)code, id+" ("+msg+")");       throw CIMException ((CIMStatusCode)code, id+" ("+msg+")");
    }    }
    else    else
Line 1340 
Line 1340 
  
       env->ExceptionClear ();       env->ExceptionClear ();
  
         PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL2,
              "Java caused an exception: %s",(const char*)info.getCString()));
   
         PEG_METHOD_EXIT();
   
       throw PEGASUS_CIM_EXCEPTION_L(       throw PEGASUS_CIM_EXCEPTION_L(
           CIM_ERR_FAILED,           CIM_ERR_FAILED,
           MessageLoaderParms(           MessageLoaderParms(
Line 3815 
Line 3820 
  
       for (Uint32 i = 0; i < keyNames.size (); i++)       for (Uint32 i = 0; i < keyNames.size (); i++)
       {       {
          DDD(cout << "finding key " << keyNames[i].getString () << endl);           PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                 "finding key %s ",
                 (const char*)keyNames[i].getString().getCString()));
  
          for (Uint32 j = 0; j < ci->getPropertyCount (); j++)          for (Uint32 j = 0; j < ci->getPropertyCount (); j++)
          {          {
Line 3823 
Line 3830 
  
             if (cp.getName () == keyNames[i])             if (cp.getName () == keyNames[i])
             {             {
                DDD(cout << "adding key (" << j << ") "                 PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                         << keyNames[i].getString () << endl);                      "adding key (%d) %s ",
                       (const char*)keyNames[i].getString().getCString()));
  
                CIMProperty *cpRef  = new CIMProperty (cp);                CIMProperty *cpRef  = new CIMProperty (cp);
                jlong jCpRef = DEBUG_ConvertCToJava (CIMProperty*, jlong, cpRef);                jlong jCpRef = DEBUG_ConvertCToJava (CIMProperty*, jlong, cpRef);
Line 5604 
Line 5612 
    CIMObjectPath ref (ind->getPath ());    CIMObjectPath ref (ind->getPath ());
  
    ref.setNameSpace (ns);    ref.setNameSpace (ns);
    DDD(cerr<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent () ref = "  
            <<ref.toString ()<<endl);     PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
    DDD(cerr<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent () ind = "         "Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent(): ref = %s",
            <<ind->getPath ().toString ()<<endl);         (const char*)ref.toString().getCString()));
      PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
          "Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent(): ind = %s",
          (const char*)ind->getPath().toString().getCString()));
  
    ind->setPath (ref);    ind->setPath (ref);
  
    DDD(cerr<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent () ind = "     PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
            <<ind->getPath ().toString ()<<endl);         "Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent(): ind = %s",
          (const char*)ind->getPath().toString().getCString()));
  
    JMPIProviderManager::indProvRecord *prec = NULL;    JMPIProviderManager::indProvRecord *prec = NULL;
    String sPathString = ind->getPath ().toString ();    String sPathString = ind->getPath ().toString ();
Line 5623 
Line 5635 
       AutoMutex lock (JMPIProviderManager::mutexProvTab);       AutoMutex lock (JMPIProviderManager::mutexProvTab);
  
       fResult = JMPIProviderManager::provTab.lookup (name, prec);       fResult = JMPIProviderManager::provTab.lookup (name, prec);
         PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
       DDD(cerr<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent"            "Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent(): "
                     " () fResult = "            "fResult = %d, name = %s",
               <<fResult<<", name = "<<name<<endl);            fResult,(const char*)name.getCString()));
    }    }
  
    if (fResult)    if (fResult)
Line 5642 
Line 5654 
    }    }
    else    else
    {    {
       DDD (cerr<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent"        PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL2,
                      " () provider name \""            "Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent(): "
                <<name<<"\" not found"<<endl);            "provider name \"%s\" not found",
             (const char*)name.getCString()));
    }    }
 } }
  
Line 7920 
Line 7933 
    String              query (pszQuery);    String              query (pszQuery);
  
    wql_stmt = new WQLSelectStatement (queryLanguage, query);    wql_stmt = new WQLSelectStatement (queryLanguage, query);
    DDD (cout<<"--- Java_org_pegasus_jmpi_SelectExp__1newSelectExp: wql_stmt = "  
             <<hex<< (long)wql_stmt<<dec<<endl);     PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
          "Java_org_pegasus_jmpi_SelectExp__1newSelectExp: wql_stmt = %X",
          (long)wql_stmt));
  
    try    try
    {    {
Line 7929 
Line 7944 
    }    }
    catch (const Exception &e)    catch (const Exception &e)
    {    {
       cerr << "Java_org_pegasus_jmpi_SelectExp__1newSelectExp: Caught: "        PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
            << e.getMessage () << endl;            "Java_org_pegasus_jmpi_SelectExp__1newSelectExp: Caught: %s",
             (const char*)e.getMessage().getCString()));
    }    }
  
    jEnv->ReleaseStringUTFChars (jQuery, pszQuery);    jEnv->ReleaseStringUTFChars (jQuery, pszQuery);


Legend:
Removed from v.1.78  
changed lines
  Added in v.1.79

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2